Configurando o Código de Idioma RequireJS i18n Dinamicamente

Estou usando oRequireJS i18n plugin para carregar traduções no meu aplicativo. Estou lutando com o conceito dedeterminação do tempo de execução do idioma preferido de um usuário.

O plug-in funciona bem se você estiver usandonavigator.language para determinar o idioma preferido do usuário, mas no meu aplicativo, o idioma do usuário é mantido em um banco de dados no servidor. Então, eu preciso definir o código do idioma em tempo de execução:

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

Então, o que eu preciso é uma maneira inteligente de definiruserLocale antes RequireJS carregou meu aplicativo. Alguém sabe qual seria a melhor maneira de conseguir isso? As possibilidades incluem:

1) ConfiguraçãouserLocale fora do meu aplicativo, de maneira não 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']);

Isso me deixa um pouco triste, pois significa que alguns dos meus aplicativos estarão fora do RequireJS e, portanto, desarrumados. Isso também significa que todas as configurações de localização do usuário (fuso horário do idioma, formato da data, formato numérico) serão mantidas no espaço para nome global.

2) Ter uma chamada requerida separada para recuperar as configurações de localização

Não tenho certeza de como isso funciona, mas talvez:

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

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

require(['app']);

Talvez isso não funcione devido à assíncrona? Também oapp não teria acesso aoLocalization objeto, portanto, ele ainda precisará ser armazenado como uma variável global.

Alguém pode ver uma boa solução para esse problema? Alguém já usou o plugin RequireJS i18n para fazer algo semelhante?

questionAnswers(2)

yourAnswerToTheQuestion