2016-10-06 8 views
14

Я ищу способAngular2 язык i18n переключатель

  • устанавливается динамически текущий язык, который будет отображаться: Я следовал за последнюю угловые кулинарную here об интернационализации , но он говорит: "языка пользователя является зашиты в качестве глобальной переменной document.locale в index.html "

Как это может быть установлено динамически в angular2 + машинописи?

Вот моя попытка с официальным Angular2 plunkr: https://plnkr.co/edit/lWV4VhzpWYnCXeDBpzsn?p=preview где я закомментировал

document.locale='en'; 

и попытался восстановить window.document внутри службы машинописи, и изменить региональные настройки, но несмотря на то, что он вызывается и языковой стандарт установлен правильно (отображается в консоли), интерфейс не отображается на выбранном языке при запуске.

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

+0

В то же время я сделал версию, которая считывает document.URL и наборы document.locale внутри файла i18n-providers.ts. Это, конечно, не самый правильный способ, но в то же время я могу продолжать переводы вещей https://plnkr.co/edit/TE7raLGC9pvYfaRu6Syg?p=preview (Этот пример не работает должным образом на plunkr, но работает локально) –

ответ

10

Я спасаю пользователь выбрал ключ языка в локальном хранилище:

//<select name="selectLocate" (change)="onChange($event.target.value)"> 
public onChange(localeId: string): void { 
    localStorage.setItem('localeId', localeId); 
    location.reload(true); 
    } 

Затем заставить перезагрузки, и в i18n.provider.ts

let locale = localStorage.getItem('localeId'); 
+1

простой и большой. Я изменил пример plunkr, и он отлично работает! https://plnkr.co/edit/JyE4l4TjEruuPsrbanmK –

+1

Я не использую systemjs. Можно ли настроить его с помощью webpack? –

+0

@sardarCoder Не знаю, продолжаете ли вы по-прежнему бороться с этим, но если это так. Да, вы можете: просто используйте raw-loader для загрузки xlf-файлов: '{test: /\.xlf/, loader: 'raw-loader'},' – GOB