【问题标题】:Angular translate UTF8 characters (pascalprecht.translate)角度翻译 UTF8 字符 (pascalprecht.translate)
【发布时间】:2016-05-07 10:03:41
【问题描述】:

我在使用 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

【问题讨论】:

  • 我看不到问题。 “Type domů”对我来说看起来不错,并且“Křestní”是正确的 HTML 转义。或者它是否显示为“Křestní”在实际的 UI 中?!
  • @deceze 它确实以转义形式出现在文本中

标签: javascript angularjs utf-8 angular-translate


【解决方案1】:

对于即使在{{interpolations}} 中也想方设法使 UTF-8 字符正常化的任何人,可以这样做:

$translateProvider.useSanitizeValueStrategy('sanitizeParameters');

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

【讨论】:

    【解决方案2】:

    你有两个选择:

    1. 使用策略 sanitizeParameters,它只会清理动态参数,而不是实际的翻译(模板)。如果您控制了翻译(但不是动态值),这将起作用。
    2. 使用不使用清理而是转义的策略转义(或转义参数)。

    对我来说,当我将 SanitizeValueStrategy 设置为 null 时问题就解决了

    $translateProvider.useSanitizeValueStrategy(null);
    

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2014-11-30
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多