angular-translate不能正确显示字符重音或变音符号

use*_*158 13 translation internationalization angularjs

我开始使用angular-translate.效果很好!

但是翻译的字符 显示为具有变音符号或重音符号的字符或...(如ü或ú或ñ).这些相同的字符值在HTML文本和AngularJS变量中正确显示.

这是一个示例输出.html文本和角度变量的输出正确显示.$ translate filter和directive的结果不会显示正确的变音字符.

html text - UndsieuntersütztmehrereSprachen!

角度变量 - UndsieuntersütztmehrereSprachen!

$ translate filter - Undsieunters tztmehrereSprachen!

$ translate指令 - Undsieunters tztmehrereSprachen!

这是代码:

'use strict';

var translations =
{
    "TEST_DE": "Und sie untersützt mehrere Sprachen!",
    "TEST_ES": "Menú Señor"
};

angular.module('testApp', ['testApp.controllers', 'pascalprecht.translate'])
  .config(['$translateProvider', function($translateProvider) {

      $translateProvider.translations({
        TEST_DE: "Und sie untersützt mehrere Sprachen!",
        TEST_ES: "Menú Señor"
      });

}]);

angular.module('testApp.controllers', ['ui.bootstrap']);
Run Code Online (Sandbox Code Playgroud)

这是HTML:

<!doctype html>
<html lang="en" ng-app="testApp">
   <head>
     <meta charset="utf-8">

     <title>Test angular-translate</title>

   </head>

   <body ng-controller="testAppController">

     <!-- Declare the view/controller router -->
     <div ng-view></div>

     <!-- angular files -->
     <script src="angular.js"></script>
     <script src="angular-translate.js"></script>
     <script src="ui-bootstrap-tpls-0.4.0.js"></script>

     <!-- Application routing file -->
     <script src="app.js"></script>

     <!-- Application Controller -->
     <script src="testAppController.js"></script>


     <!-- Test translations -->
     <br />
     html text - Und sie untersützt mehrere Sprachen!
     <br />
     angular variable - {{ testPhraseDE }}
     <br />
     $translate filter - {{ 'TEST_DE' | translate }}
     <br />
     $translate directive - <a translate="TEST_DE"> </a>

     <br />

     <br />
     html text - Menú Señor
     <br />
     angular variable - {{ testPhraseES }}
     <br />
     $translate filter - {{ 'TEST_ES' | translate }}
     <br />
     $translate directive - <a translate="TEST_ES"> </a>

   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Nic*_*RIC 16

快速问题,但值得问(因为我总是这样做:) :)你确定你的JS文件是由UTF-8格式的服务器保存和提供的吗?因为您的代码似乎没有任何问题.我连上了没有工作在这里.希望只是这样.

  • 还要检查你的角度消毒策略:**`sanitize`**:`使用$ sanitize`**`escape`来清理翻译文本中的HTML**:`在翻译中转义HTML`**`sanitizeParameters`**:使用$ sanitize`**`escapeParameters`**清除插值参数值中的HTML:`在插值参数的值中转义HTML`http://angular-translate.github.io/docs/#/guide/ 19_security如果你使用变音符号,你可能需要使用转义策略. (8认同)
  • 对于那些寻找更多信息的人,我通过使用Notepad ++将文件本身转换为UTF-8编码来解决这个问题.在我的情况下,它是我加载的json文件,但您可以尝试包含您的翻译的任何文件.无需服务器设置.谢谢你指点我正确的方向! (3认同)
  • 我有同样的问题,但无法理解如何解决它,你能解释一下吗? (2认同)

Raf*_*des 5

就我而言,问题是 Eclipse STS 保存的 JSON 文件没有 UTF-8 格式。我使用 Notepad++ 将其另存为 JSON 文件。现在,重音符号和特殊字符可以在指令中正确显示。