Angular 和 angular-translate :在配置中获取 proposedLanguage

Angular and angular-translate : Get proposedLanguage in config

我正在开发 ui 一个 angular 应用程序。一种可以更快地启动未来项目的模板。这是一个开源项目,因此您可以在此处找到整个项目:https://github.com/maxime1992/webTemplate

我正在使用 ui-路由器和 angular-翻译。我希望用户能够使用其中的当前语言共享 url。正如你所看到的 here,在 ui-router 的默认重定向中,我使用了一个默认的语言变量,它首先被设置:

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

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

到目前为止,还不错。 现在我想检测用户的语言。我在 angular-translate doc.

中找到了 this

但是在我的 angular 配置中,如果我要求库自动设置语言并获取新语言,它 returns 未定义。

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

我可以在我的控制器中检测到它:

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

但是为时已晚。我需要在配置中检测它。否则,如果 lang 参数不在 url ...

中,我不知道将用户重定向到哪里

你有什么想法吗?我真的需要尽快为我的工作找到解决方案。如果我不清楚,请告诉我,我会 add/edit 我的问题。

谢谢!

用法如下。

  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});