2015-04-16 4 views
0

Можно ли передать переменную в файл перевода и перевести ее в файл перевода?angular-translate translate in translation file

// translation.json

"country":{ 
    "CHINA":"中国", 
    "US":"United States" 
} 

"text":"I live in $translate('country.{{country}}'), {{ someOtherVar }}. 
+0

Не могли бы вы сообщить нам, почему ** не ** ** вы хотите перевести предложение «Я живу в ...» (это, очевидно, английский) даже для китайского пользователя? – yazaki

+0

Китайский файл перевода будет находиться в китайском языке для части «Я живу ...». Проблема заключается в том, что название страны исходит из свойства объекта, которое находится на английском языке, то есть {страна: «КИТАЙ»}. При повторении этих объектов страны название страны должно быть переведено на выбранный язык пользователя. Поэтому я не хочу «КИТАЙ», и я не хочу ключа для каждой страны. – neridaj

+0

Спасибо за ваше объяснение. Вы имеете в виду «Я живу в ...», которую всегда не нужно переводить, даже если выбранный вами язык является китайским? Если вы имеете в виду так, почему бы вам не написать часть «Я живу в ...» просто на вашем HTML вместо translation.json? – yazaki

ответ

0

Вы всегда могли предобработки файл перевода (например, с помощью $httpProvider.interceptors).

Но у вас есть переменная country, доступная для вас (видимо) сфера охвата. Таким образом, вы должны написать что-то вроде этого:

var country = ...; 
country = $translate(country); 
$scope.translatedText = $translate('text', { country: country, someOtherVar: 'value' }); 

где ваш text должен быть:

"text":"I live in {{country}}, {{ someOtherVar }}." 

Здесь вы получили документацию для dynamic translation.

1

Я считаю, что эта структура ниже поможет вам достичь того, чего вы хотите.

В переводе файла английский

"country": { 
    "CHINA": "China", 
    "US": "United States", 
    ... 
}, 
"text":"I live in {{country}}, {{ someOtherVar }}." 

В китайском файле перевода

"country": { 
    "CHINA": "中国", 
    "US": "美国", 
    ... 
}, 
"text":"我住在{{country}}, {{ someOtherVar }}." 

В HTML

<span translate="text" translate-values="{country: translated_country_name, someOtherVar: someothervar}"></span> 

В контроллере

$scope.someothervar = // some value 
var countrykey = //CHINA or US... 
$translate('country.' + countrykey).then(function(trans){ 
    $scope.translated_country_name = trans; 
})