Używam biblioteki ember-i18n do tłumaczenia ciągów statycznych używanych w mojej aplikacji. Ponieważ pliki językowe są dość duże, nie chcę ładować przy uruchamianiu aplikacji wszystkich możliwych słowników językowych. Dlatego chcę dynamicznie ładować słownik, gdy użytkownik zdecyduje się zmienić język. Zrobiłem pierwsze wdrożenie, które działa raczej dobrze.Ember: dynamiczne przełączenie na wybrany język (przy użyciu biblioteki i18n)
Patrz http://jsfiddle.net/cyclomarc/RYbNG/7/
Po uruchomieniu aplikacji, jest wykonane w języku angielskim. Możesz teraz wybrać jeden z widoków (Informacje lub Informacje), a te są również renderowane w języku angielskim. Po kliknięciu przycisku "Holenderski" ładowany jest słownik języka holenderskiego, a aplikacja jest przekierowywana do trasy indeksu w odpowiednim języku.
Wygląda na to, że nowe ciągi językowe są używane tylko wtedy, gdy przechodzisz na fałszywą trasę, a następnie z powrotem na wybraną trasę (w mojej próbce jest to zawsze "indeks").
updateLanguage: function (lang) {
var _self = this;
//Load correct dictionary and transition to index route
$.getScript("http://libraries.azurewebsites.net/locales/dictionary_" + lang + ".js", function() {
CLDR.defaultLanguage = lang;
_self.transitionToRoute('I18redirect');
});
}
App.I18redirectRoute = Ember.Route.extend({
activate: function() {
this.transitionTo('index');
}
});
Moje pytania:
Jest to najlepszy sposób, aby przeładować view.template (przejście do manekina trasę i potem w Aktywuj przejścia do indeksu)?
Czy istnieje sposób przejścia z powrotem na trasę, na której zażądano zmiany języka (trzeba użyć czegoś z get (ścieżka) lub tak)?
Chciałbym również przetłumaczyć struny "na zewnątrz" czerwonego div (gniazda aplikacji). Wracam do indeksu, ale w takim przypadku szablon aplikacji nie jest przerysowywany ... Jaki mógł być powód?
Czy oczekiwane zachowanie polega na tym, że po odejściu od szablonu i ponownym wprowadzeniu szablonu szablon sam się odbudowuje za pomocą wszystkich ciągów językowych, czy jest to tylko wtedy, gdy w międzyczasie zmieni się język? W jaki sposób można przebudować taki szablon z nowymi ciągami w logu konsoli?
Jakieś inne pomysły, aby uczynić to solidnym rozwiązaniem przełączającym?
Dobre sugestie. Przeanalizuję, jaki jest wpływ definiowania języka jako trasy najwyższego poziomu. Nie jestem pewien, czy nie spowoduje to tarcia w innym miejscu ... – cyclomarc