ng2-translate в Ionic 2.2.3, текст не меняется на разных языках

Мне нужна помощь с ng2-translate в приложении Ionic 2 (.2.3). Я следовал этому руководству: https://www.techdiary.io/internationalization-of-ionic2-apps/ и это сработало.

Я создал файл en.json и небольшой «словарь». Слова, которые я пометил с помощью {{"Example"|translate}}, были переведены в соответствующее слово.

Но если я изменю свой initTranslation() на "de" вместо en

initTranslation() {
    var userLang = navigator.language.split('-')[0]; // use navigator lang if available
    userLang = /(de|en)/gi.test(userLang) ? userLang : 'de';

    // this language will be used as a fallback when a translation isn't found in the current language
    this.translate.setDefaultLang('en');

    // the lang to use, if the lang isn't available, it will use the current loader to get them
    this.translate.use(userLang);
  }

ничего не случится. Что мне не хватает? Я создал файл de.json с теми же словами, что и файл en.json.

И можно ли использовать отмеченные теги ({{"Пример"|translate}}) в качестве языка по умолчанию? Или мне теперь всегда нужно переводить теги?

Спасибо

Изменить: ясно, что это:

userLang = /(fr|en|es|in|zh)/gi.test(userLang) ? userLang : 'en';

не работает для меня. Он изменит язык только в том случае, если я изменю язык по умолчанию. И это будет работать, только если я использую «en». Очень запутанно.

Редактировать2:

Да, если я использую что-то вроде

userLang = 'de'

оно работает. Но все же, возможно ли использовать фактический текст html в качестве языка по умолчанию?


person user3793935    schedule 18.05.2017    source источник


Ответы (1)


// Но все же, возможно ли использовать фактический текст html в качестве языка по умолчанию?

Вы имеете в виду язык браузера пользователя?

если это так, используйте это.

let browserLang = translate.getBrowserLang();
        translate.use(browserLang.match(/en|es/) ? browserLang: 'en')

else initially {{"Example"|translate}} Пример должен появиться позже вам нужно выбрать язык? если да, добавьте раскрывающийся список в свой html

<ul class="dropdown-menu" role="menu">
                  <li>
                      <a (click)="changeLanguage('en')">English</a>
                  </li>
                  <li>
                      <a (click)="changeLanguage('es')">Spanish</a>
                  </li>
              </ul>

.ts-файл

changeLanguage(lang) {
        this.translate.use(lang);
    }
person k11k2    schedule 25.05.2017
comment
Спасибо, было полезно ;-) - person user3793935; 26.05.2017