Dynamiczne ustawianie ustawień regionalnych RequireJS i18n

UżywamWtyczka RequireJS i18n załadować tłumaczenia do mojej aplikacji. Walczę z koncepcjąokreślenie runtime preferowanego języka użytkownika.

Wtyczka działa dobrze, jeśli używasznavigator.language aby określić preferowany język użytkownika, ale w mojej aplikacji język użytkownika jest przechowywany w bazie danych na serwerze. Muszę więc ustawić ustawienia regionalne w czasie wykonywania:

require.config({
    config: {
        i18n: {
            locale: userLocale
        }
    }
});

Potrzebuję więc sprytnego sposobu ustawieniauserLocale przed RequireJS załadował moją aplikację. Czy ktoś wie, jaki byłby najlepszy sposób osiągnięcia tego celu? Możliwości obejmują:

1) UstawienieuserLocale poza moją aplikacją, w sposób inny niż AMD:
//run Ajax call to determine user's localization preferencess
var Localization = Localization || getUserLocalization(); 

//and then...
require.config({
    config: {
        i18n: {
            locale: Localization.userLocale
        }
    }
});

require(['app']);

To sprawia, że ​​jestem trochę smutny, ponieważ oznacza to, że niektóre z moich aplikacji będą poza wymaganiami, a tym samym niechlujne. Oznacza to również, że wszystkie ustawienia lokalizacji użytkownika (strefa czasowa języka, format daty, format liczbowy) będą przechowywane w globalnej przestrzeni nazw.

2) Posiadanie oddzielnego wywołania żądania w celu pobrania ustawień lokalizacji

Nie wiem, jak to działa, ale może:

var Localization = require(['localization']);

require.config({
    config: {
        i18n: {
            locale: Localization.userLocale
        }
    }
});

require(['app']);

Może to nie zadziała z powodu asynchroniczności? Równieżapp nie miałby dostępu doLocalization obiekt, więc nadal musiałby być przechowywany jako zmienna globalna.

Czy ktoś może zobaczyć dobre rozwiązanie tego problemu? Czy ktoś użył wtyczki RequireJS i18n, aby zrobić coś podobnego?

questionAnswers(2)

yourAnswerToTheQuestion