angular-translate-变量和插值在同一转换键中

时间:2019-06-11 17:54:23

标签: angularjs angular-translate

我可以在同一个翻译键中包含变量和插值吗?

类似这样的东西:

"notice" : "{{subject}} {RES, select, is{is} are{are} other{are}}",

在网络浏览器控制台上给了我错误:

  

对象{消息:“预期[\ t \ n \ r]或[0-9a-zA-Z $ _],但\“ {\”   找到。”,期望值:(8)[…],找到:“ {”,位置:{…},名称:   “ SyntaxError”,堆栈:“”}

删除{{subject}}后,它就会起作用。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您尝试结合使用角平移多元插值消息格式和普通变量插值,则可以采用其他方法。来自docs

  

缺点

     

实际上,我们能够使用MessageFormat作为我们的产品非常酷   插值引擎。不幸的是,当替换MessageFormat时   使用angular-translate的默认插值进行插值   一个大问题。看一下下面的代码:您看到了吗   差异?

{   
   "DEFAULT_INTERPOLATION": "This is a translation that uses default
   interpolation with a dynamic value: {{value}}",   

  "MF_INTERPOLATION": "This is a translation that uses MessageFormat
   interpolation with a dynamic value: {value}" 
}
     

完全正确。 MessageFormat对插值使用不同的语法。   这意味着,当使用MessageFormat插值时,您必须摇摆   在所有翻译中,检查它们是否使用任何类型的变量   替换并更新它们以匹配正确的插值语法。   这不是一件很酷的事情。