【问题标题】:in Angular How to Dynamically Load javascript file depending of user language在 Angular 如何根据用户语言动态加载 javascript 文件
【发布时间】:2015-09-03 13:47:49
【问题描述】:

我正在为德语、英语、西班牙语、法语和意大利语用户使用 Angular 如何根据用户的语言设置动态加载本地文件?举个例子 : 对于德国用户应该 Angular 加载: https://code.angularjs.org/1.4.3/i18n/angular-locale_de-de.js 对于意大利用户应该 Angular 加载 https://code.angularjs.org/1.4.3/i18n/angular-locale_it-it.js

我正在考虑使用 $local.id 来定义用户语言,然后基于我加载本地文件,但我不知道如何或是否有任何其他解决方案来动态加载 JS 文件也很感激. 问候

【问题讨论】:

  • 我只能推荐 ocLazyLoad 这允许您仅在需要时加载 js 文件,所以基本上用户登录到您的站点,在您获得他们的语言后,您可以加载特定文件检查文档@ 987654323@
  • 嗨@stackg91我能够加载js文件,但是在执行angular脚本后看起来添加了,因为我看不到本地js文件定义的新格式(例如:angular- local_de-de.js 应该将数字显示为“,”)有什么帮助吗?
  • 所以基本上您的文件已加载但未执行?也许您实际上需要在该 javascript 中调用一个函数才能使其运行,但我从来没有遇到过这样的延迟加载问题

标签: javascript angularjs internationalization


【解决方案1】:

如果您有办法在加载 Angular 版本之前找到语言,您可以使用地图找到正确的 url,然后在正文末尾附加一个新的脚本标签。添加脚本标签将自动获取该脚本并运行它。

var language = 'someLanguage',
    url = {
        'someLanguage' : 'languageURL',
        'otherLanguage' : 'otherlanguageURL'
    }[language],
    script = document.createElement('script');
script.setAttribute('src', url);
document.body.appendChild(script);

也许 Angular 有一个特定于角度的国际化解决方案,但可惜我帮不了你。

【讨论】:

    【解决方案2】:

    您只需要使用 $http 加载文件。为了检查用户区域设置,您可以查看 angular-translate 调用 preferredLanguage。它从用户浏览器中找出。值得一看。

    【讨论】:

    • 嗨杰拉德,你有什么例子可以提供吗?非常感谢
    • var l = getLocale(); if (l=='en_EN') { $http.get('url.en-EN.json').then(...)} ...抱歉在移动端
    • 但在我的情况下,我的文件是 javascript 文件,例如如果用户是 'de-de',则应动态添加此脚本:code.angularjs.org/1.4.3/i18n/angular-locale_it-it.js 再次感谢您的帮助
    • 看来你可以使用 $.getScript(url) 代替。在正文结束标记之前加载所有其他角度文件后创建一个脚本标记。
    【解决方案3】:

    你可以为它使用 angular.translate 模块..

    https://angular-translate.github.io/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      相关资源
      最近更新 更多