Angular и angular-translate : получить предложенный язык в конфигурации

Я создаю угловое приложение. Этакий шаблон для быстрого старта будущих проектов. Это проект с открытым исходным кодом, поэтому вы можете найти весь проект здесь: https://github.com/maxime1992/webTemplate

Я использую ui-router и angular-translate. Я хотел, чтобы пользователи могли делиться URL-адресом с текущим языком. Как вы можете видеть здесь, в перенаправление по умолчанию ui-router я использую языковую переменную по умолчанию, которая должна быть установлена ​​​​первой:

// define default language code
var default_lang = 'fr';

// default redirection
$urlRouterProvider.otherwise('/'+default_lang+'/home');

Все идет нормально. Теперь я хотел бы определить язык пользователя. Я обнаружил это в угловом переводе док.

Но в моей конфигурации angular, если я попрошу библиотеку автоматически установить язык и получить новый язык, он вернет значение undefined.

$translateProvider.determinePreferredLanguage();
console.log($translateProvider.use()); // return undefined

Я могу обнаружить это в своем контроллере с помощью:

console.log($translate.proposedLanguage()); // return 'en'

НО уже слишком поздно. Мне нужно обнаружить это в config. В противном случае я не знаю, куда перенаправить пользователя, если аргумент lang не указан в URL-адресе...

Есть ли у вас какие-либо идеи ? Мне действительно нужно найти решение как можно быстрее для моей работы. Если я не понял, просто скажите мне, и я добавлю/отредактирую свой вопрос.

Спасибо !


person maxime1992    schedule 28.07.2015    source источник
comment
Я действительно застрял здесь, некоторая помощь была бы потрясающей! :)   -  person maxime1992    schedule 29.07.2015


Ответы (1)


Использование заключается в следующем.

  1. На этапе настройки

    // call to try to find out browser locale
    $translateProvider.determinePreferredLanguage();
    
  2. После этапа настройки

    // If determinePreferredLanguage was successful preferredLanguage
    // will return the browser locale. Eg 'en_EN'
    // Otherwise it will return empty string.
    var preferredLanguage = $translate.preferredLanguage(); // returns browser locale
    

После этого вы можете просто перейти к нужному URL-адресу, например:

$state.go('home', {lang: preferredLanguage});
person Gerard Sans    schedule 31.08.2015