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 我的问题。
谢谢!
用法如下。
配置阶段
// call to try to find out browser locale
$translateProvider.determinePreferredLanguage();
配置阶段后
// 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});
我正在开发 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 我的问题。
谢谢!
用法如下。
配置阶段
// call to try to find out browser locale $translateProvider.determinePreferredLanguage();
配置阶段后
// 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});