2016-05-26 5 views
0

Ich habe eine App, die Angular verwendet. Ich lade eine JSON-Datei, um Daten auf der Seite in verschiedenen Sprachen anzuzeigen. Dies funktioniert mit allen anderen Sprachen bisher, aber ich bekomme einen Fehler, wenn die Variablenwerte in Bengali sind. Der Fehler ist "SyntaxError: Unerwartetes Token in JSON an Position 38".Wie kann ich Bengali in einem AngularJS-Skript verwenden?

Ich habe bereits sichergestellt, dass die Serverantwort in UTF-8 ist. Wenn ich nacktes JavaScript verwende (auch keine Bibliotheken oder Frameworks), kann das JSON-Objekt ohne Probleme analysiert werden.

app.js

var App = angular.module('myApp', []); 

App.controller('myCtrl', function($scope, $http) { 
    $scope.setLang = function(language) { 
     document.getElementById("rootElement").lang = language; 

     $http.get('_customizable/languages/' + language + '.js', {header: {"Content-Type":"application/json; charset:utf-8"}}) 
      .then(function(res){ 
       $scope.translated = res.data;     
      } 
     ); 
    } 
    $scope.setLang(document.getElementById("rootElement").lang); 
}); 

bn.js

{ 
    "Applications":"অ্যাপ্লিকেশন", 
   "AccountSettings": "অ্যাকাউন্ট সেটিংস", 
   "AuthorizationManager": "অনুমোদন ম্যানেজার ", 
   "DCCMaintenance": "ডিসিসি রক্ষণাবেক্ষণ", 
   "MastercardClearing": "মাস্টারকার্ড ক্লিয়ারিং", 
   "ParticipantManager": "অংশগ্রহণকারীর ম্যানেজার", 
   "PropertiesManager": "বৈশিষ্ট্যাবলী ম্যানেজার", 
   "VisaClearing": "ভিসা ক্লিয়ারিং", 
   "WorkflowManager": "কর্মপ্রবাহ ম্যানেজার", 
   "Users": "ব্যবহারকারী", 
   "Groups": "দল", 
   "RecordsSearch": "রেকর্ডস অনুসন্ধান", 
   "UserName": "ব্যবহারকারীর নাম", 
   "Search": "খোঁজো", 
   "Reset": "রিসেট", 
   "UserRecords": "ব্যবহারকারীর রেকর্ডস", 
   "Delete": "মুছে ফেলুন", 
   "AllRightsReserved": "সমস্ত অধিকার সংরক্ষিত." 
} 

Hinweis: Diese selbst gibt einen Fehler auf mehrere Online-JSON-Editoren, wie http://www.jsoneditoronline.org/

+0

Ich kopierte das Ding in die JSON Validator URL, die Sie zur Verfügung gestellt haben, und es funktioniert für mich. Öffnen Sie den JSON mit einem Hex-Editor und prüfen Sie, ob Sie nichts Verdächtiges finden. –

+0

Haben Sie die Regelsätze der Sprache Bangladesch aufgenommen? (Https://docs.angularjs.org/guide/i18n + https://github.com/angular/bower-angular-i18n/blob/master/angular-locale_bn- bd.js) vielleicht hilft dir das irgendwie –

+0

Auch, wie lädst du den JSON in die App? Verwenden Sie $ HTTP? Geben Sie ein Code-Snippet vielleicht –

Antwort

3

So. ..... es brauchte die originale Datei zu finden anstatt die hier angefügte Datei (benef es funktioniert), aber das Problem wurde gefunden.

Der erste Hinweis, etwas war seltsam, dass das Kopieren der Version hier in eine JSON-Validierungs-Site funktioniert.

Also, als ich die ursprüngliche Datei mit der hier in einem Hexeditor gepostet wurde, konnten wir den Unterschied erkennen. Wenn die ursprüngliche englische Version der Datei in Google Translate eingefügt wurde, um sie in Bengali zu konvertieren, wurden die 3 führenden Leerzeichen vor jeder Zeile von 0x20 0x20 0x20 in 0xC2 0xA0 0xC2 0xA0 0x20 geändert.

Also .... die Moral der Geschichte, übersetzen Sie nicht alles in Ihrer Datei, übersetzen Sie einfach die kleineren Teile, die übersetzt werden müssen.

Verwandte Themen