首页 > 解决方案 > angular-translate - 同一个翻译键中的变量和插值

问题描述

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

像这样的东西:

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

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

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

当 {{subject}} 被删除时,它可以工作。

提前感谢您的帮助。

标签: angularjsangular-translate

解决方案


如果您尝试将 angular-translate 复数插值消息格式与普通变量插值结合使用,则可以采用不同的方法。从文档

缺点

实际上,我们能够使用 MessageFormat 作为我们的插值引擎非常酷。不幸的是,当用 angular-translate 的默认插值替换 MessageFormat 插值时,出现了一个大问题。看看下面的代码:你发现有什么不同吗?

{   
   "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 插值时,您必须检查所有翻译,检查它们是否使用任何类型的变量替换并更新它们以匹配正确的插值语法。这不是一件很酷的事情。


推荐阅读