2013-12-16 60 views
12

我开始使用角度平移。很棒!angular-translate不能正确显示字符重音或元音变音

但是,对于带变音符号或重音符号或...(如ü或ú或ñ)的字符,会显示翻译后的字符 。这些相同的字符值在HTML文本和AngularJS变量中正确显示。

下面是一个示例输出。 HTML文本和角度变量的输出正确显示。 $ translate过滤器和指令的结果不显示正确的元音变音字符。

html text - Und sieuntersütztmehrere Sprachen!

角变量 - Und sieuntersütztmehrere Sprachen!

$ translate filter - Und sieunters tztmehrere Sprachen!

$ translate directive - Und sieunters tztmehrere Sprachen!

下面的代码:

'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']); 

这里的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> 

回答

14

简单的问题,但值得一问的(因为我总是做这样的错误:))你确定你的JS文件以UTF-8格式保存并由服务器提供服务?因为你的代码没有任何问题。我甚至在没有的情况下工作。希望只有这样。

+0

这正是问题所在。感谢您尝试代码并确认它对您而言是好的。我检查并将代码转换为UTF-8,重新输入字符串,一切正常。 – user3108158

+2

我有同样的问题,但无法理解如何解决它,请你解释一下.. – Rohit

+3

对于那些寻找更多信息,我解决了这个问题,通过使用Notepad ++将文件本身转换为UTF-8编码。在我的情况下,这是一个我加载的json文件,但你可以尝试任何文件包含你的翻译。无需服务器设置。感谢您指点我正确的方向! – adamdport

1

在我的情况下,问题是Eclipse STS保存了没有UTF-8格式的JSON文件。我用Notepad ++将它保存为JSON文件。现在,重音符号和特殊符号在指令中正确显示。