Die Lokalisierung mit Vorlagen require.js, backbone und underscore

Diese Frage ist über das templating und die Lokalisierung mit require.js und Unterstrich Vorlagen durch backbone.js. Die Anwendung muss lokalisiert werden on-the-fly.

Bevor Sie sich auf einen Weg, der sich später als problematisch erweisen, gibt es eine bessere Lösung als die, die ich überlege mir, - ich bin besorgt über die Geschwindigkeit und der Speicher mit immer wieder Zusammenführen, aufbereiten und die Sprache-array. Davon ausgehen, dass ein 2-3 tausend Zeichenketten.

Aktuellen Ansatz (funktioniert, sieht aber Prozessor-heavy):

  1. Mit der I18N Bündelung AnsatzSprache anlegen "enthält", die im wesentlichen enthalten die übersetzten Elemente für alle Vorlagen
  2. Verschmelzen diese Objekt/array von Elementen mit model-Attributen (von Rückgrat) und übergeben Sie die zusammengeführte Menge in die Unterstrich-Vorlage

.

define(['backbone', 'models/model', 'text!template.html', 'i18n!my/nls/translatedbits'],
  function(Backbone, MyModel, TemplateText, TranslationObject) {
  var View = Backbone.View.extend({
    model: {},

    initialize : function(params) {
      this.model = new MyModel();
    },

    render : function(callBack) {
      //Get the model attributes
      var templateParams = _.clone(this.model.attributes);
      //Bolt on the tranlsated elements (established from require.js I18N plugin)
      templateParams.t = TranslationObject;
      //Pass the lot ot the template
      var template = _.template(TemplateText, this.model.attributes);
      $(this.el).html( template );
      return this;
    }

  });
  return View;
  }
);

Dann die Vorlage gelesen

<%= modelAttribute1 %> <%= t.translationString1 %>

Gibt es eine bessere Lösung oder eine bessere Template-engine? [Besser für diesen Zweck - Schnurrbart haben vielleicht andere Vorteile, aber kann es lokalisieren leichter, oder kann es cache lokalisiert Ergebnisse erlauben von Modell-Parametern, die übergeben werden, in späteren?]

Beachten Sie, dass Sprachen möglicherweise geändert werden müssen "on the fly" - und das ist eine weitere Sorge, die ich habe mit dem I18N-plugin. Ich kann am Ende immer die transations von JSON-Anforderung durch einen template-Modell, aber dies erfordert ein Zusammenführen von Objekten, die ist, was ich versuche zu vermeiden.

InformationsquelleAutor der Frage Robbie | 2012-10-10

Schreibe einen Kommentar