本地化和语言翻译

时间:2016-07-21 09:15:42

标签: angularjs localization

我使用angular-translate,它的工作正确。我有选择语言的选择框。

.config(['$translateProvider', function($translateProvider) {
    $translateProvider.translations('en', translationsEN);
$translateProvider.translations('hr', translationsCRO);
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
 $translateProvider.useSanitizeValueStrategy('escape');

 $translateProvider.useSanitizeValueStrategy('sanitize'); */
}]); 

这是ctrl for switch language

$scope.changeLanguage = function (langKey) {
$translate.use(langKey);
};

并且在视野中,这是有效的。

<ul class="dropdown-menu">
                <li><a ng-click="changeLanguage('hr')" translate="BUTTON_LANG_CRO"></a></li>
                <li><a ng-click="changeLanguage('en')" translate="BUTTON_LANG_EN"></a></li>
            </ul>

问题是,我想将angular-i18n用于语言环境。并在同一个选择框上更改,与页面上的更改语言相同。如果我选择英语,改变语言和本地化......对于克罗地亚语等也是如此。

我添加.config文件

.config(function(tmhDynamicLocaleProvider) {
tmhDynamicLocaleProvider.localeLocationPattern('bower_components/angular-i18n/angular-locale_{{locale}}.js');
});

并在控制器中添加

$rootScope.availableLocales = {
  'en': 'English',
  'hr': 'Hrvatski'};
$scope.changeLanguage('hr');
$rootScope.model = {selectedLocale: 'en'};
$rootScope.$locale = $locale;
$rootScope.changeLocale = tmhDynamicLocale.set;

    sveKlupeServiceFactory.query(function (res) {
        $scope.klupe = res.smart_benches;
    });

并且,如果我添加此

,在视图中工作
<select ng-model="model.selectedLocale" ng-options="key as value for (key, value) in availableLocales" ng-change="changeLocale(model.selectedLocale)"></select>

但这给了我第二个选择框。 我尝试添加这样的第一个选择框,但这不起作用

<li><a ng-model="model.selectedLocale" ng-click="changeLanguage('hr'); changeLocale(model.selectedLocale)" translate="BUTTON_LANG_CRO"></a></li>
<li><a ng-model="model.selectedLocale" ng-click="changeLanguage('en'); changeLocale(model.selectedLocale)" translate="BUTTON_LANG_EN"></a></li>

如果有人可以帮助我,那么

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,我开始

<li><a ng-model="model.selectedLocale" 
    ng-click="changeLanguage('hr'); 
      changeLocale('hr')"  //here i set 'hr'
         translate="BUTTON_LANG_CRO"></a>    </li>
<li><a ng-model="model.selectedLocale"  
    ng-click="changeLanguage('en'); 
      changeLocale('en')" //here i set 'en'
         translate="BUTTON_LANG_EN"></a></li>