使用angularjs进行国际化

Uri*_*Uri 20 templating internationalization angularjs

我正在考虑将我的网站移动到angularjs,并且我希望从非常小的开始,将我的所有静态服务器端纯文本模板从django移动到angular(否则会出现语法问题'{{}}' ).

似乎最好的方法是两种选择之一:

  1. 要进行ajax调用,返回包含我站点所有文本的JSON.文本将存储在一个变量中,该变量绑定到我的HTML元素,因此angular将更新所有内容.
  2. 使用字典存储静态js文件并将其包含在我的HTML中并使用angularjs绑定字典.

这两个选项都允许我在不重新加载页面的情况下在语言之间切换.

哪一个更好?一般来说,这是一个好方法还是有更正确的方法?

JD *_*ith 33

我尝试了一些不同的选项,包括Angular Translate,但到目前为止我最喜欢Angular-gettext.

有一点非常有帮助的是,它有一个工作演示,它们就是TodoMVC,称为angular-gettext-example.

工作流程很简单:

  1. 将"translate"指令添加到模板中
  2. 运行grunt以提取.pot模板
  3. 将.pot移交给您的翻译供应商或使用POEdit或类似软件DIY
  4. 将.po翻译文件放回项目中
  5. 运行grunt来编译.po文件
  6. 在范围中设置默认语言
  7. 观看魔术!

我确定这里发布的其他解决方案也很好,但我还没有看到像angular-gettext-example这样组织得很好的端到端示例.

干杯,JD


pac*_*age 9

首先,有一种方法可以将angular的分隔符更改为其他符号,如下所示:Angular JS自定义分隔符

2.选项更容易.您包含一次,并且您在页面加载时拥有所有翻译.没有异步电话,没有承诺,很好,很容易.

然而我会选择第一个.像$ translate这样的服务真的会让你的生活更轻松.选择1.此外,它还有很多选项可以在LocalStorage和cookies中加载和存储加载的数据,因此有足够的空间进行扩展和自定义.然后,您可以使用$ translate服务,指令或过滤器翻译您的内容.

并且不要忘记2选项禁用缓存请求的任何选项.在每个请求到您的起始页面时,服务器必须读取静态文件并将其包含在html中.使用第一个选项,用户的浏览器可以根据需要缓存.json.