请教大神对AngularJS做多语言站点有些什么好的建议?

最近在用Angular搞一个多语言站点的时候发现各种蛋疼。
我知道Angular有个translation的插件,但是每个标签要加filter感觉并不好使。
总结下来有以下几个问题:

  • 很多英文明明一模一样的标签,中文偏偏要翻得不一样,我就不吐槽客户给的翻译了
  • 有些字段为了美观性,需要在某个单词强制换行,中英文换行的标准不一样,其他使用该字段的则不需要换行。天杀的美工
  • 有些字段当中还需要插入另一个字段,如”欢迎{{ account }}访问我们的网站!“,但是翻译的时候不能用组合的方式的……每碰到这样的得在controller里写$interpolate吗
  • 有些得从后端那边获得数据后拼字段,还有复杂的显示逻辑……如ID为1的要显示“无数据”,其他ID的都显示“有数据”

补充:发现有个叫phaser app的东西,可以多人协作翻译,导出各种格式的翻译文件,包括angular translate的json格式,这样就变得容易很多。

收藏 0分享浏览 5588
6年前
跟帖
贤心
6年前

赞了此话题!

沙发
Owen Chen
6年前

我们在用angular-translate,还算方便啊。 可以给字段加translate filter,或者标签里加translate属性指令。 其实就算后台做全球化,这样的代码也是省不了的。 换行不换行的问题,可以在翻译的文字里加
来实现。 欢迎{{account}}这种一般实在字段中设置成参数来实现的,比如:欢迎{{0}}或欢迎{{account}},translate中也提供这样的支持。 动态的内容可以在service或者controller中使用$translate服务完成。

板凳
Jennie Ji
6年前

@Owen Chen 谢大神。看来我需要再研究下angular-translate。

地板
JinWYP
6年前

关于不同语言样式css不同的问题, 可以用ng-class 制定不同语言的样式名称.

4 楼
Jennie Ji
5年前

@Owen Chen 突然想到一个问题。
不喜欢angular-translate的本质原因是因为不想把内容、HTML标签、以及各国文字放到JS文件里。 然后filter会定时运行的,感觉会影响performance。
除此之外,还有一个问题是整个站点的文字都放在一个对象里,所以需要每个标签都有不同的命名。。。如果站点需要翻译的内容非常多的话,是不是会很难控制?

5 楼
JinWYP
5年前

性能其实是不用操心,因为即使你的字段翻译有2万个,并不是同屏需要显示两万个.

1 有些字段当中还需要插入另一个字段 这个问题没看明白, 一般我是拆成两个翻译字段 中间在插入模板变量, 而且由于双语习惯不同, 翻译拆的越细越好, 这是没办法的事情. 一句话为了显示 语境还有不同的样式和变量组合, 才成好几个模板是常有的事情.

2 其实 模板中翻译的| translate filter的标签 后 还可以 继续接自己的filter, 这样就可以解决 ID为1的要显示“无数据”的问题. 就是你的翻译双语词库文件里面不写具体的翻译文字而写代号,例如1, 然后在你自定义的filter里面在写翻译, 或者 词库文件还是写翻译,把你的自定义fitler写到翻译fitler的前面. 例如 {{xxx | myfitler | translate}} 然后你自己filter 根据xxx的值返回相应的词库字段名称即可.

6 楼
说几句
广告位 点击查看投放指南

我的收藏