Angular翻译UTF8字符(pascalprecht.translate)

时间:2016-01-29 15:45:29

标签: javascript angularjs utf-8 angular-translate

使用SanitizeValueStrategy('sanitize')时,我遇到UTF8字符问题。我必须使用它,因为客户端使用语言文件来编辑文本,他可能会使用<b><i>等标签...

我需要使用 json文件进行翻译。客户端不会触摸应用程序代码来更改任何文本。 JSON文件:

{
    "H1": "Typy domů",
    "NAME": "Křestní"
}

只有在使用角度插值时才会出现问题:

<h1 translate>houseTypes.H1</h1>
Typy domů

我可以使用此方法将文本放入元素的正文中,但属性仍会出现此问题。

<input placeholder="'houseTypes.NAME'|translate"></h1>
K&#345;estn&#237;

问题是:
如何正确编写UTF8字符,同时仅在插值中使用JSON静态文件加载器,或在placeholder中使用属性中的任何其他方式。

2 个答案:

答案 0 :(得分:12)

对于任何想要找到如何使UTF-8角色正常的人,即使在{{interpolations}}中也是如此,这是做到这一点的方法:

$translateProvider.useSanitizeValueStrategy('sanitizeParameters');

这样,即使在插值中也会始终进行清理。

答案 1 :(得分:4)

您有两种选择:

  1. 使用策略sanitizeParameters,它只会清理动态参数,而不是实际的转换(模板)。如果你控制了翻译(但不是动态值),这将有效。
  2. 使用策略转义(或escapeParameters),它不使用清理但转义。
  3. 对我来说,当我将SanitizeValueStrategy设置为null

    时,问题就解决了
    $translateProvider.useSanitizeValueStrategy(null);