#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({});
}
}