Мне нужно локализовать приложение angular-7. Для этого мы уже создали модуль локализации, который импортирует все необходимые зависимости из '@ngx-translate/core';
. Также я импортировал userService
, на котором выбранный язык будет установлен для перевода приложения.
Я перевел все html
страницы, но сообщения, написанные в .ts
файле, нужно преобразовать.
У меня нет никакого способа добиться этого.
Может ли кто-нибудь помочь мне выбраться из этого?
Вы должны использовать TranslateService
из @ngx-translate/core
.
У вас есть два пути:
translate.instant
with просто переведет слово на указанный язык напрямую.translate.get
которые получают значение из наблюдаемого.Вот небольшой пример, как его использовать:
import { TranslateService } from '@ngx-translate/core';
yourTranslatedText : string;
yourTranslatedObservableText : string;
constructor(
private translateService: TranslateService,
) {
yourTranslatedText = this.translateService.instant('your.key.string');
this.translateService.get('your.key.string').subscribe((translatedString) => {
yourTranslatedObservableText = translatedString;
});
}
Обратите внимание, что вы можете передать Множество ключей, чтобы вы могли перевести все слова, которые вы хотите, сразу.
Если вы перевели html
, вы знаете, что у вас есть такие ключи, как: «cartComponent.toaster». Это ключ, который вы должны использовать в translateService. Например: let msg =this.translateService.instant('cartComponent.toaster');
(обратите внимание, что это строка)
Да, вам нужно добавить «Пожалуйста, загрузите pdf-файл» в файл json, а затем использовать ключ в translateService.
Эй .. Даниэль ... теперь я столкнулся с проблемой, например, когда я вошел в систему, html загружается на выбранном языке, но когда я обновляю страницу, все меняется на английский, а не на выбранный язык. Вы можете помочь мне?
Вероятно, this.translateService.instant
называется до, вы меняете язык с помощью this.translateService.use(lang)
. Это одна из причин, по которой использование translateService.get
немного лучше, оно разрешается на фактический язык независимо от того, когда вы меняете язык..
В каждом угловом компоненте мне нужно использовать этот синтаксис this.translateService.use(lang)
, это то, что вы говорите?
Нет, что в вашем коде вы должны сделать this.translateService.use перед всем. (например, служба, которая предшествует ngOnInit()
, и только одна служба, а не в каждом компоненте) или используйте решение translateService.get()
Как мы можем передать им массив ключей? Как я буду использовать эти ключи в разных местах?
this.toastCtrl.errorToast("Please upload pdf file");
этот текст я должен изменить. Вы имеете в виду, что мне нужно создать переменную с этой строкой во французском файле json, например,"cartComponent":{"toaster":"Étiquette d'expédition téléchargée avec succès."}
, а затем получить к ней доступ из файла .ts, например,let msg =this.translateService.instant( toaster);
, но это не работает..