Aplikacja Durandal (knockout) z obsługą wielu języków

Buduję wielojęzyczną obsługę aplikacji, nad którą pracuję. Po wykonaniu pewnych badań i czytaniu SO (najlepsza praktyka internacjonalizacji) Próbuję zintegrować to w sposób „przyjazny ramom”. To, co zrobiłem w tej chwili, jest następujące:

Utworzono moduły .resource sformatowane tak:

resources.en-US.js

define(function () {
   return {
       helloWorlLabelText: "Hello world!"
   }
});

W app.start otrzymuję moduł zasobów z requirejs i przypisuję wszystkie dane do app.resources. Wewnątrz każdego modułu do obserwowalnych przypisywany jest określony zasób i związany z tekstem wiążącym etykiety i inne rzeczy związane z tekstem. Tak jak:

define(function (require) {
   var app = require('durandal/app'),
       router = require('durandal/plugins/router')
   };
   return{
       helloWorldLabelText: ko.observable(app.resources.helloWorldLabelText),

       canDeactivate: function () { 
      }
   }
});

On the view:

<label for="hello-world" data-bind="text: helloWorldLabelText"></label>

Zasoby są zamieniane tylko przez przypisanie nowego modułu do app.resources.

Teraz problem polega na tym, że język został zmieniony i niektóre widoki zostały już wyrenderowane, wartości poprzedniego języka nadal istnieją. Skończyło się więc na przypisywaniu obserwowalnych wewnątrzAktywuj metoda. Próbowałem również zawinąć app.resources w obserwowalne, ale to też nie zadziałało.

Nie sądzę, że skończyło mi się na najczystszym sposobie i może ktoś inny miał inny sposób, który mógłby się dzielić. Dzięki.

questionAnswers(4)

yourAnswerToTheQuestion