2013-12-16 14 views
12

Ich habe angle-translate verwendet. Funktioniert super!angular-translate zeigt den Zeichenakzent oder Umlaut nicht richtig an

Aber ein übersetztes Zeichen wird für Zeichen mit Umlaut oder Akzent oder ... (wie ü oder ú oder ñ) angezeigt. Dieselben Zeichenwerte werden im HTML-Text und als AngularJS-Variablen korrekt angezeigt.

Hier ist eine Beispielausgabe. Die Ausgabe für HTML-Text und Winkelvariable wird korrekt angezeigt. Die Ergebnisse von $ translate filter und directive zeigen nicht das korrekte Umlautzeichen an.

html text - Und sie unterstützt mehr Sprachen!

Winkelvariable - Und sie unterstützt mehr Sprachen!

$ translate filter - Und sie unterstüzt mehrere Sprachen!

$ translate directive - Und sie unterstüzt mehrere Sprachen!

Hier ist der Code:

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

Hier ist der 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> 

Antwort

14

Kurze Frage, aber lohnt sich zu fragen (wie ich diesen Fehler immer tun :)) sind Sie sicher, dass Ihre JS-Datei wird von Ihrem Server im UTF-8-Format gespeichert und bedient? Weil mit Ihrem Code nichts falsch scheint. Ich habe es sogar ohne die here arbeiten lassen. Hoffe es ist nur das.

+0

Das ist genau das Problem. Danke, dass du den Code ausprobiert hast und bestätigt hast, dass es für dich in Ordnung ist. Ich überprüfte und konvertierte den Code in UTF-8, gab die Zeichenfolgen erneut ein, und alles ist gut. – user3108158

+2

Ich habe das gleiche Problem, aber kann nicht verstehen, wie man es löst, können Sie bitte darüber erklären .. – Rohit

+3

Für diejenigen, die weitere Informationen suchen, löste ich dies mit Notepad ++, um die Datei selbst in UTF-8-Codierung zu konvertieren. In meinem Fall war es eine JSON-Datei, in die ich geladen habe, aber Sie könnten versuchen, welche Datei Ihre Übersetzungen enthält. Keine Servereinstellungen erforderlich. Danke, dass Sie mich in die richtige Richtung weisen! – adamdport

1

In meinem Fall war das Problem, dass Eclipse-STS wurden ohne UTF-8-Format, um die JSON-Datei zu speichern. Ich benutzte Notepad ++, um es als JSON-Datei zu speichern. Jetzt werden die Akzente und Sonderzeichen in der Direktive korrekt angezeigt.

Verwandte Themen