2015-05-19 3 views
0

Каковы наилучшие практики для текстовых переводов в Angular 1.3.15? Эта версия Angular имеет только частичную поддержку локализации с плюрализацией и форматированием, но без текстовых переводов. Есть некоторые внешние библиотеки, такие как angular-translate и официальная библиотека i18n для будущих версий Angular.Угловые и переводы

  1. Какова нынешняя передовая практика для переводов?
  2. Что делать, если планируется модернизация с 1.3.15 до 1.4 в будущем?

ответ

2

решение было использовать angular-translate для файлов перевода и angular-dynamic-locale для локализации фил эс. Механизм перевода на угловом переводе предоставляет некоторые очень полезные функции, которые помогут вам в различных сценариях, и, похоже, это очень зрелая библиотека. Не нужно мигрировать в следующую версию углового. Угловая динамическая локализация использует файлы локализации, предоставляемые the angular-i18 library, поэтому в основном это расширение, позволяющее программно изменить локализацию.

Установите библиотеки с помощью скриптов и скриптов загрузки в index.html. Угловой-перевод видов применения angular-translate-loader-static-files модуля для загрузки JSON-файлов:

<script src="bower_components/angular/angular.js"></script> 
<script src="bower_components/angular-translate/angular-translate.js"></script> 
<script src="bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script> 
<script src="bower_components/angular-dynamic-locale/tmhDynamicLocale.min.js"></script> 

нагрузки углового перевода и угловая динамическая локаль модули и инициализируют поставщик в конфигурации для загрузки переводов и файлов локали из localization каталога:

var app = angular.module('app', ['pascalprecht.translate', 'tmh.dynamicLocale']) 
     .config(function ($translateProvider, tmhDynamicLocaleProvider) { 

     $translateProvider 
       .useStaticFilesLoader({ 
        prefix: 'localization/translations-', 
        suffix: '.json' 
       }) 
       .preferredLanguage('en-US') 
       .useSanitizeValueStrategy('escaped') // Security for escaping variables 
       .usePostCompiling(true); // Post compiling angular filters 

     tmhDynamicLocaleProvider 
       .localeLocationPattern('/localization/angular-locale_{{locale}}.js'); 

    )}; 

INJECT услуга контроллер и ресурсы загрузки файлов:

app.controller('Ctrl', ['$scope', 'tmhDynamicLocale', '$translate', 
    function ($scope, tmhDynamicLocale, $translate) { 
     $translate.use('en-US'); // translations-en-US.json 
     tmhDynamicLocale.set('en-US'); // angular-locale_en-US.js 
}]); 

Теперь переводы и локал Wo rks на шаблоне:

// angular-locale_en-US.js 
{{ 100 | currency }} // $100.00 

// translations-en-US.json 
// "NAME" : "John" 
<label translate>NAME</label> 
<input type="text" ng-model="name" placeholder="{{ 'NAME' | translate }}"> 
0

У меня также возникли трудности при попытке интернализировать одностраничные приложения, созданные с угловым. Как вы правильно указали, будущие версии обещают хорошую поддержку i18n.

В моем случае я использовал фильтры для перевода текста. В зависимости от того, сколько контента у вас есть в приложении, это может быть или не быть хорошим решением.

После статье описывается решение очень близко к тому, что я реализовал вместе с несколькими другими сладкими уловок

http://blog.trifork.com/2014/04/10/internationalization-with-angularjs/

Я бы очень хотел услышать от вас, какой подход вы взяли в решении этой вопрос

Приветствия

Смежные вопросы