Durandal (nocaute) app com suporte multilíngüe
Estou criando suporte multilíngüe para o aplicativo em que estou trabalhando. Depois de fazer algumas pesquisas e ler SO (melhor prática de internacionalização) Estou a tentar integrar isso de uma forma "amiga do enquadramento". O que eu fiz no momento é o seguinte:
Módulos .resource criados formatados da seguinte forma:
resources.en-US.js
define(function () {
return {
helloWorlLabelText: "Hello world!"
}
});
No app.start, recebo o módulo de recursos com requirejs e designo todos os dados para app.resources. Dentro de cada módulo, um recurso específico é atribuído aos observáveis e vinculado à vinculação de texto a rótulos e outros itens relacionados a textos. Igual a:
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>
Os recursos são trocados apenas pela designação de novo módulo para app.resources.
Agora o problema é quando a linguagem é alterada e algumas das visualizações já foram renderizadas, os valores da linguagem anterior ainda estão lá. Então acabei reatribuindo observáveis dentro deativar método. Também tentei usar o app.resources em observável, mas isso também não funcionou.
Eu não acho que acabei com a maneira mais limpa e talvez qualquer outra pessoa tivesse alguma outra maneira que pudesse compartilhar. Obrigado.