2015-07-28 3 views
1

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

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

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

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

До сих пор, так хорошо. Теперь я хотел бы определить язык пользователя. Я узнал this в документе с угловым переводом.

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

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

я могу обнаружить его в мой контроллер с:

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

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

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

Спасибо!

+0

Я действительно застрял здесь, какая-то помощь будет потрясающей! :) – Maxime

ответ

2

Использование следующее.

  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}); 
Смежные вопросы