【问题标题】:Multi-lang feature in Angular 7Angular 7 中的多语言功能
【发布时间】:2019-09-11 11:28:02
【问题描述】:

我创建了一个 Web 应用程序,它具有在管理员/用户上传数据时动态显示的事件。

我想在我的网络应用中添加语言功能。

通过阅读所有文章,我发现我必须为每种不同的语言创建 JSON 文件。但这仅适用于硬编码项目(如标题)。

我可以/应该如何处理临时输入/上传的“未知文本”。 我该如何解决这个问题

技术:Angular 7 .Net 核心 API

【问题讨论】:

  • 您可以尝试使用ngx-translate。它将允许您动态加载翻译,而不是强制您重新编译项目。基础教程使用json 文件,但由于它使用链接,您可以将其定向到 Web API。
  • 请澄清:您的目标是通过 google API 进行自动翻译吗?或者仅仅是为了能够制作/使用预先不知道的动态翻译(不使用谷歌 API)
  • @jcuypers 我想添加一个下拉菜单,它可以有不同的语言。因此,当我选择我的文本更改时。我也可以购买 google transalte api。请帮忙
  • @Oram 但在 ngx-translate 中。我必须将不同的 .json 文件制作成不同的语言。
  • 我认为您可以详细描述一个非常具体的用例/需求(屏幕/动作/交互...),而您无法使用标准像 ngx-translate、i18n、i10n 等库,并展示您尝试过的操作以及需要的确切结果。

标签: javascript angular render google-translate google-translation-api


【解决方案1】:

您可以编写自己的自定义加载器来做任何您喜欢的事情。您所指的很可能是带有json的标准httploader。如果您查看 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({});
  }
}

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2015-09-23
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多