Ngx-translate: как динамически добавлять новые термины? - PullRequest
0 голосов
/ 21 октября 2019

Я использую 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"
    }
}

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

Есть ли другой способ? Или я что-то упустил из документации, что облегчает эту работу?

Спасибо!

...