【问题标题】:How to change ts file based on language using angular localization如何使用角度本地化根据语言更改 ts 文件
【发布时间】:2018-05-14 11:24:56
【问题描述】:

我有文件errors.tscontent.ts 的英文内容与errorsEs.tscontentEs.ts 的西班牙文内容相同。等等。我正在做JIT compiler angular localization 翻译语言。我在整个应用程序中导入了errors.tscontent.ts

截至目前,我正在将翻译后的语言(西班牙语、意大利语)内容替换为英语 content.tserrors.ts,以将其作为不同的语言运行。有没有其他方法可以在不替换文件的情况下做到这一点?

【问题讨论】:

    标签: angular localization internationalization angular-i18n


    【解决方案1】:

    当然,创建名称中包含语言环境的翻译文件(为了示例,我将创建一个):

    error.en-US.ts

    export const errors = {
      http: {
        e404: `Error: resource not found on the server`
      }
    };
    

    接下来,创建一个错误服务。在构造函数中,获取用户语言环境,加载文件,然后使用它:

    constructor() {
      if (window.navigator.languages) { this.language = window.navigator.languages[0]; } 
      else { this.language = window.navigator.userLanguage || window.navigator.language; }
    
      this.errors = require(`errors.${this.language}`).errors;
    }
    

    编辑

    console.log(window.navigator.languages);
    console.log(window.navigator.userLanguage);
    console.log(window.navigator.language);

    【讨论】:

    • (我必须声明我是凭记忆做的,您必须根据自己的代码进行调整,但这是完全可行的)
    • 该语言数组包含什么?
    • 语言环境,用户通常有几个,每个一个英镑。例如,我的是["fr-FR", "fr", "en-US", "en"]
    • “导航器”类型上不存在属性“语言”。 “Navigator”类型上不存在属性“userLanguage”。我收到此错误?
    • 你没有使用我的代码。如果你这样做了,if (window.navigator.languages) 会阻止这种情况。条件不是很漂亮……
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多