it-swarm.com.de

Angular Js Unterstützung für die Lokalisierung

Ich habe versucht, in AngularJS eine Dokumentation zu finden, in der mehrere Sprachen ohne Erfolg unterstützt werden. Wird die Lokalisierung unterstützt?

66
Chen Kinnrot

Werfen Sie einen Blick auf angle-translate: https://github.com/angular-translate/angular-translate

für alle Heimwerker:

Sie finden lokalisierte Dateien für angle: hier

Diese Dateien helfen Ihnen bei den eingebauten Winkelfiltern: Datum , Währung und Nummer . Erstaunlich ... bisher. 

Jetzt möchten Sie Ihre eigenen Texte verwenden, dann brauchen Sie nur noch die Kraft der Injektion von angle.js-Abhängigkeit .. _. Erstellen Sie eine neue Datei wie: "myTexts_en_us.js" und verwenden Sie wie folgt: 

$provide.value("myTexts", {firstText : "This is my localized text"});

Für Details:
http://jsfiddle.net/4tRBY/24/

Für den Einsatz in der realen Welt sollten Sie einen Filter hinzufügen: http://jsfiddle.net/4tRBY/41/

Tipps:

  • Stellen Sie sicher, dass Sie Ihre neue Lokalisierungsdatei von Hand, JS oder Server in Ihre HTML-Datei einfügen. (Server ist hier die beste Wahl!)
  • wenn Sie eine der angle-local-Dateien einschließen, müssen Sie sie nicht in Ihrem App-Modul einrichten. (Sie erhalten automatisch $ locale - sehen Sie die Geige)
  • fügen Sie Ihrem $ Bereitschaftswert einen ID-Schlüssel hinzu - und setzen Sie den Wert auf einen Sprachcode, den Sie in Ihrer Datei verwenden -, dies ist zum Testen praktisch. 
72
Thomas Deutsch

Was Sie suchen, ist $ locale .

Es gibt tatsächlich ein Beispiel über auf halbem Weg auf der Homepage von anglejs .

Ein Ausschnitt aus ihrem Beispiel:

function BeerCounter($scope, $locale) {
  $scope.beers = [0, 1, 2, 3, 4, 5, 6];
  if ($locale.id == 'en-us') {
    $scope.beerForms = {
      0: 'no beers',
      one: '{} beer',
      other: '{} beers'
    };
  } else {
    $scope.beerForms = {
      0: 'žiadne pivo',
      one: '{} pivo',
      few: '{} pivá',
      other: '{} pív'
    };
  }
}

Ich bin mir nicht sicher, ob es ein "Standard" ist ... aber es ist ein Anfang. Wenn Sie eine lot -Lokalisierung zu erledigen haben, denke ich, würde ich einfach einen Dienst erstellen, um meine Controller einzufügen ... etwas wie dieser Pseudo-Code:

app.service('myLocalization', ['$locale', function($locale) {
    var res = {
       'help' : { 
           'en-us': 'help',
           'es-mx': 'ayudame'
       },
       'beer' : {
            'en-us': 'beer',
            'es-mx': 'cerveza'
       }
    }

    return {
       getString: function(key) {
          return res[key][$locale.id];
       }
    }
});
17
Ben Lesh

Ich habe ein Modul speziell für Lokalisierungszwecke erstellt - https://github.com/4vanger/angular-l10n Es unterstützt die Nachrichtenlokalisierung, das Ersetzen von Parametern, das Ändern der Ländereinstellung während des Fluges und bietet eine Reihe praktischer Möglichkeiten Verwenden Sie es - Filter, Anweisungen usw.

7
4vanger

Aus Gründen der Vollständigkeit der Informationen - irgendwo im AngularJS 1.4-Stream beginnend - wird es eine weitere i18n-Implementierung geben, die aus dem Kern heraus entsteht. Bitte schau nach https://github.com/angular/i18n

2
Yosh

Wenn Sie nach i18n-Unterstützung suchen, können Sie auf das untenstehende Projekt verweisen, das die volle Mehrsprachigkeit bietet und auch leicht zu implementieren ist. Schauen Sie sich das github-Projekt an

anglejs-localizationservice

0
kds

sie können dies auch überprüfen:

https://github.com/angular-ui/ui-utils/pull/173

die Leistung ist besser als die der derzeit verfügbaren i18n-Bibliotheken.

0
timothyswt