2016-05-09 135 views
1

我正在使用AngularJS 1.4.x編寫一個Web應用程序,我正在使用「angular-translate」作爲本地化庫。角度翻譯:用不同的語言翻譯頁面的不同部分

該應用程序支持2種語言:英語和法語。

用戶可以在這兩種語言之間進行切換,並且應用程序可以進行本地化。

現在我有以下要求:我需要使用「主要語言」本地化所有應用程序,比方說英語,但我需要使用其他語言(法語)本地化應用程序的一小部分。

這兩種語言必須共存,因此,例如應用程序的標題是英語,但頁面內容是法語,請參閱所附圖片:

enter image description here

哪有我這樣做?這個庫有可能嗎?

回答

1

做到這一點的一種方法是製作自己的翻譯過濾器,它將包裝角度翻譯。

app.filter('mytranslation', ['$translate', '$filter', function($translate, $filter) { 
return function(input, lang) { 
    input = input || ''; 
    var currentLanguage = $translate.use(); 
    $translate.use(lang); 
    var result = $filter("translate")(input); 
    $translate.use(currentLanguage); 
    return result; 

} }])

然後在HTML頁面,您可以使用它作爲:

<p>German section</p> 

{{ 'HELLO' | mytranslation:「德」}}

這裏是一個工作示例:https://plnkr.co/edit/pYFo3Wapz12Q6686zrqn?p=preview

+0

我接受你的答案,因爲它解決了我的問題。我只想強調'$ translate.use(lang);'是一個異步操作,它可能需要一段時間。所以下一行'var result = $ filter(「translate」)(input);'可以在語言改變之前執行。爲了解決這個問題,'$ translate.use(lang);'方法返回一個可以用來知道語言何時成功更改的承諾。 – Andrea