Многоязыковая функция в Angular 7

#javascript #angular #render #google-translate #google-translation-api

#javascript #angular #визуализация #google-translate #google-translation-api

Вопрос:

Я создал веб-приложение, в котором есть события, которые динамически отображаются, когда администратор / пользователь загружает данные.

Я хочу добавить языковую функцию в свое веб-приложение.

Читая все статьи, которые я вижу, я должен создавать файлы JSON для каждого отдельного языка. Но это было бы хорошо только для жестко закодированных элементов (например, заголовков).

Как я могу / должен иметь дело с «неизвестным текстом», который вводится / загружается ad-hoc. Как бы я справился с этой проблемой

ТЕХНОЛОГИИ: ANGULAR 7 .Net core API

Комментарии:

1. Вы можете попробовать использовать ngx-translate . Это позволит вам загружать переводы динамически и не заставлять вас перекомпилировать проект. В базовом руководстве используются json файлы, но поскольку в нем используется ссылка, вы можете направить ее на веб-API.

2. Пожалуйста, уточните: вы стремитесь к автоматическому переводу через Google API? Или это просто цель — иметь возможность создавать / использовать динамические переводы, которые заранее неизвестны (без использования API Google)

3. @jcuypers Я хочу добавить выпадающий список , который может иметь другой язык . Поэтому, когда я выбираю, мой текст меняется. Я тоже могу купить Google transalte api. Пожалуйста, помогите

4. @Oram, Но в ngx-перевести . Я должен сделать по-другому. файлы json на разных языках .

5. Я думаю, для вас было бы хорошим началом подробно описать один очень конкретный вариант использования / требование (экран / действие / взаимодействие … ), где вы не могли бы использовать стандартную библиотеку, такую как ngx-translate, i18n, i10n, … и показать, что вы пытались сделать и каким должен быть точный результат.

Ответ №1:

вы могли бы написать свой собственный загрузчик, чтобы делать все, что вам нравится. то, на что вы ссылаетесь, скорее всего, является стандартным httploader с json. Если вы посмотрите на исходный код ngx-translate, вы увидите, что он ничего не делает: (если вы проверите код httploader, он загрузит файлы json с сервера и т.д.). вы создаете свой собственный пользовательский код, чтобы делать все, что вам нравится.

 import {Injectable} from "@angular/core";
import {Observable, of} from "rxjs";

export abstract class TranslateLoader {
  abstract getTranslation(lang: string): Observable<any>;
}

/**
 * This loader is just a placeholder that does nothing, in case you don't need a loader at all
 */
@Injectable()
export class TranslateFakeLoader extends TranslateLoader {
  getTranslation(lang: string): Observable<any> {
    return of({});
  }
}