Я использую ngx-translate вместе с Angular 8. В моем приложении
У меня все настроено для испанского / английского перевода. У меня также есть готовые файлы JSON, и приложение отлично работает с обоими языками.
Теперь возникает большой вопрос:
У меня есть компонент для добавления новых ролей в приложение. Этими ролями могут быть: пользователь-администратор, пользователь-редактор, обычный пользователь и т. Д.
Предположим, у меня уже есть администратор и обычный пользователь.
Они появляются в базе данных так же, как:
ID |Роль
1 |Admin
2 |Обычный
Теперь я хочу добавить «редактора пользователя». У меня также есть компонент для этого, содержащий форму с полем «Имя роли».
Пользователь пишет «Редактор» и сохраняет его в базе данных. Теперь в базе данных появилась новая запись: 3 |Редактор.
Если я перечислю все роли в раскрывающемся списке, полезном, например, в компоненте для редактирования всех существующих ролей, я найду что-то вроде этого:
<mat-form-field>
<mat-select placeholder="{{ 'users.role' | translate }}" name="role" [(ngModel)]="role" required>
<mat-option *ngFor="let role of roles" [value]="role.id">
<span translate>users.{{ role.name }}</span>
</mat-option>
</mat-select>
</mat-form-field>
Как видите,Я использую эту строку, чтобы динамически перевести роль, основываясь на ее названии:
<span translate>users.{{ role.name }}</span>
Вот сложная часть:
Как динамически добавлять новые переводы, поэтому новые роли также имеютперевод на другие языки?
Мой файл es.json выглядит так до и после создания нового термина:
{
"users": {
"Admin": "Administrador",
"Normal": "Normal",
"role": "Rol"
}
}
Прямо сейчас, единственный способ решить эту проблему,загружать переводы из базы данных, предварительно сохранив их там, и каждый раз, когда пользователь создает новую роль, добавить запрос в таблицу перевода.
Есть ли другой способ? Или я что-то упустил из документации, что облегчает эту работу?
Спасибо!