2016-12-09 5 views
0

У меня есть приложение Angular 2, которое в настоящее время использует ng2-translate для управления несколькими языками для графического интерфейса. Он взаимодействует с API, который отвечает на запросы, используя комбинацию кодов состояния HTTP и пользовательских кодов API.Angular 2 i18n: Динамическая обратная связь

Так что я могу, например, получить это обратно на HTTP запрос к нему:

{ 
    success = true, 
    code = 'A00001' 
} 

У меня есть документ, который объясняет, что означает «A00001», так что я знаю, что перевод загрузить.

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

Посмотрите на документацию for i18n on angular.io, она выглядит довольно прямолинейно, но единственное, что меня удерживает, это то, как я буду обрабатывать ответы API.

Поскольку все строки заменены/переведены во время компиляции, как я могу восстановить переведенную строку и показать ее только тогда, когда я обнаруживаю конкретный код из API?

Это в основном то, что я делаю сейчас:

switch(response.code) { 
    case 'A00001': 
     feedback = this._translateService.instant('translationKey'); 
    break; 
} 

Затем я представляю обратную связь для пользователя в GUI.

Как решить эту проблему с помощью решения Angulars i18n?

ответ

0

Я пытался понять это сам.

A) Что сделал коллега, просто перевести все строки в DOM и получить сервис, чтобы получить содержимое этих элементов html, не отображайте никого из них.

B) В качестве альтернативы вы можете иметь случай переключения на вашем DOM для всех возможных ошибок и показать соответственно, используя * ngIf.

C) Комбинация A и B, вы можете создать это как отдельный компонент + сервис. Что вы можете использовать в любом месте, где вам нужен динамический обмен сообщениями об ошибках - таким образом, ваш скомпилированный вид не всегда будет содержать ненужный перевод.

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