2015-11-02 2 views
2

В настоящее время у меня есть сайт, который поддерживает английский и немецкий языки, где у меня есть английский (en) в качестве резервного языка. Я использую метод definePreferredLanguage() для автоматического перевода сайта, и я также использую useStaticFilesLoader, поэтому каждый язык соответствует json-файлу. Кроме того, я использую метод registerAvailableLanguageKeys с указанием en и de. Я понимаю, что характер этого метода состоит в том, чтобы сопоставить все варианты языкового ключа с унифицированным форматом (т.е. en_UK и en_US для en), но есть ли способ сказать ему отображать все «незарегистрированные» языки, чтобы сказать: en ?angular-translate: definePreferredLanguage and registerAvailableLanguageKeys issue

Вот моя проблема. Если французский пользователь нажимает на мой сайт, он пытается использовать 'fr' (на самом деле вызов $ translate.use() возвращает 'fr'). Сайт появляется на английском языке, потому что нет файла языка fr, но я все еще получаю 404, когда сайт пытается запросить fr.json в каталоге статических файлов. Я надеялся, что registerAvailableLanguageKeys скажет клиенту: «Я могу ТОЛЬКО использовать эти языки». и он никогда не будет проверять какой-либо язык, который не был зарегистрирован. Очевидно, что это не так. У кого-нибудь есть хорошее решение, чтобы избежать этой проблемы? Благодарю.

ответ

2

Похоже, что вы можете иметь символы: https://stackoverflow.com/a/30492315/481812 (Credit Drix)

$translateProvider.useStaticFilesLoader({ 
     prefix: 'locales/locale-', 
     suffix: '.json' 
    }) 

    .registerAvailableLanguageKeys(['en','pt'], { 
     'en_*': 'en', 
     'fr_*': 'fr', 
     'pt_*': 'pt' 
    }) 

    .determinePreferredLanguage() 

    .fallbackLanguage('en');