Angularjs和$ locale

And*_*rin 43 localization angularjs

我可以手动为某些应用程序设置$ locale吗?

是否有可能只支持本地人的方法是在角度库中包含当前语言环境的本地化文件.如果有多种文化怎么办?在那种情况下,我必须动态加载本地化文件?我错过了什么?

wil*_*ell 31

您可以加载所需的区域设置localStorage,然后刷新页面.让下面的脚本加载您需要的i18n文件.尚不支持动态更改语言环境.

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script>
var locale = JSON.parse(localStorage.getItem('locale'));
if (locale) {
    document.write('<script src="scripts/i18n/angular-locale_'+locale+'.js"><\/script>');
}
</script>
Run Code Online (Sandbox Code Playgroud)


Pas*_*cht 31

我已经建立了一个关注i18n的角度模块.AngularJS对i18n的支持是相当原始的,如果你想要更多的控制并且更灵活,checkout angular-translate - http://angular-translate.github.io/

让我知道,如果我能帮忙的话!

  • 它实际上根本不处理日期.angular-translate是关于翻译内容(不是特定日期),支持异步加载和正确复数. (3认同)
  • 它如何处理日期? (2认同)

mak*_*enz 23

对于那些寻求动态本地化的人来说,角度动态的语言环境做得很好.


u_b*_*u_b 23

我努力解决同样的问题,在这里阅读所有答案,并在我的项目中介绍了i18n/l10n.这是我的结果:

所以解决方案是使用两个项目,角度转换角度动态区域设置.


Ben*_*esh 15

老实说,角度的$ locale服务仍然非常原始.这真的很好,但似乎在这方面缺乏灵活性.最大的问题是,即使您通过动态重新加载正确的语言环境文件来切换语言环境,日期过滤器之类的东西也不会知道您已经更改了它,因为它们在设置时会注册其语言环境信息.因此,您目前有几个选择:1.使用选定的区域设置重新加载页面...或2.编写您自己的区域设置提供程序和使用它的过滤器.

也许可以创建一个将动态地加载正确的脚本文件,重新初始化所有受影响的过滤器和服务,然后刷新意见的服务,但我真的不知道这将涉及在这一点上有些什么.

  • @MariusSoutier是您可以分享的自定义区域设置提供商吗?我正在看同样的问题 (5认同)