【问题标题】:How to get all translations configured in Angular project by i18n?如何通过 i18n 获取 Angular 项目中配置的所有翻译?
【发布时间】:2019-04-17 09:46:26
【问题描述】:

我在 Angular 7 中使用 i18n(国际化)和以下语言:en、es、fr、it、pl、pt 和 ru。

我需要在项目中配置所有语言,以设置带有它们的值的下拉列表。如何获取这些设置在 JSON 文件中的语言,以便在下拉列表中使用它们?

我至少可以循环文件夹中的文件并恢复文件名吗?

【问题讨论】:

  • 您正在尝试在下拉列表中获取翻译列表,然后在执行点击时将更改为所选语言?
  • @Spritzig 是的,我正在尝试。 :)。
  • 到目前为止,我已经手动创建了一个列表,我已经添加了翻译,但为了获得它们,我没有尝试过,我将创建一个新项目,并尝试获得这将是一个挑战给我。
  • @Spritzig 了不起的人...你是最棒的

标签: angular pipe angular7 angular-i18n


【解决方案1】:

您无法访问 i18n 文件夹以获取角度文件列表。

您需要创建 API 来阅读它。我在项目中实现的这种方式,我为谁关注。

[Route("api/webconfiguration/getlanguages")]
        [AcceptVerbs("GET")]
        public dynamic GetLanguages()
        {    
            string path = ConfigurationManager.AppSettings["LanguageFolder"];

            DirectoryInfo dir = new DirectoryInfo(path);
            FileInfo[] files = dir.GetFiles("*.json");
            if (files.Length > 0)
            {
                var languages = files.Select(file => Path.GetFileNameWithoutExtension(file.Name));
                return languages.Select(c => new { code = c, name = new CultureInfo(c).DisplayName }).ToList();
            }

            return null;
        }

在 web.config 中配置

<add key="LanguageFolder" value="C:\src\assets\i18n"/>

创建服务以获取语言列表并在组件中使用。

getLanguages() {
    return this.httpClient.get<any>('/api/webconfiguration/getlanguages').pipe(
      map(response => <any>response));
  }

【讨论】:

    【解决方案2】:

    到目前为止,我可以为您提供的就是这样的。 直到我实现你正在寻找的希望这会奏效。 这只是一个例子。

    <ng-container *ngFor="let language of languageList">
     <a href="/{{language.code}}/">
     <button class="button">{{language.label}}</button>
     </a>
    </ng-container>
    

    这是.TS中声明的列表

    languageList = [
       { code: 'en', label: 'English' },
       { code: 'de', label: 'German' },
       { code: 'es', label: 'Espanol' }
    ];
    

    【讨论】:

    • 嗯,不完全是……我正在寻找一种代码,它可以自动识别在 i18n 中翻译的语言并将它们发布在 html 中。之后,您可以选择默认语言作为翻译 html 中使用的单词的语言。谢谢队友:)
    • 我正在尝试找到有关您问题的解决方案。我有个问题。你想识别浏览器语言吗?
    • 非常好的问题...感谢您回答我 Spritzig,抱歉之前没有回复您。好吧,由你决定。识别 i18n 中的所有可用语言(用于填充组合)并识别浏览器语言以在组合中默认设置它会很棒......这将是最好的场景......但只要你得到所有语言就可以工作只是......谢谢伙计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2017-04-28
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多