I need some help for change dynamically the lang
attribute of HTML:
<html lang="en">
I'm making a multilanguage web application with AngularJS and rest backend.
Initially I can specify a default lang
attribute, but I want to change it depending on the user browser or change it if the user selects inside the web application some language option.
There is some way to do it?
If you don't want to add controller to your <html>
tag and if you are using angular-translate then you can use a simple directive to achieve the same.
Angular-translates gives an event $translateChangeSuccess
when your translation loaded successfully or when you change the language (I assume you will use $translate.use
to change the current language). We can create a custom directive using that event.
Directive Code Snippet:
function updateLanguage( $rootScope ) {
return {
link: function( scope, element ) {
var listener = function( event, translationResp ) {
var defaultLang = "en",
currentlang = translationResp.language;
element.attr("lang", currentlang || defaultLang );
};
$rootScope.$on('$translateChangeSuccess', listener);
}
};
}
angular.module('app').directive( 'updateLanguage', updateLanguage );
And you have add the same directive in you html attribute.
<html update-language>