First question on stack, so hurray to me! I'm trying to develop a new way (apparently, since I've seen no solution to this online, perhaps cos it's not possible) to change the language of HTML written elements using JS and the lang property.
Basically, I have created multiple tags with the lang property in each of them, so that giving the certain lang a display value of -none-, hides it, and a value of -inherit- to show it. In that way, using the line:
a:lang(en),p:lang(en) { display : none }
a:lang(it),p:lang(it) { display : inherit }
I can see one language at a time. And that works!
Now, I have created an
<a href="" lang="en" id="en"> word </a>
tag around the english text, and the same with any other language with their own lang property. I have tried to use:
$("#en").click(function(){
$('a:lang(en)').css('display', 'inherit');
$('a:lang(it)').css('display', 'none');
};
Which doesn't seem to work.
Any ideas?
Thanks a bunch, Shay
In a nutshell Always add a lang attribute to the html tag to set the default language of your page. If this is XHTML 1. x or an HTML5 polyglot document served as XML, you should also use the xml:lang attribute (with the same value). If your page is only served as XML, just use the xml:lang attribute.
The HTML lang attribute is used to identify the language of text content on the web. This information helps search engines return language specific results, and it is also used by screen readers that switch language profiles to provide the correct accent and pronunciation.
How to fix. Identify the page's primary language. Add a lang attribute to the <html> element using the correct language tag for the value that represents the primary language of the page. If a lang attribute is already specified, make sure its value is spelled correctly.
When load your page come with a <body class="it">
, and all the :lang(en)
tags will be hidden.
body.en :lang(it) {
display: none;
}
body.it :lang(en) {
display: none;
}
And when you need to change the language, simply change the className
of <body>
.
$("#en").click(function(){
document.body.className = 'en';
};
Which is more elegant, and way faster.
demo: http://jsfiddle.net/Gw4eQ/
Use :not
selector to make it work with more languages. demo
body:not(.en) :lang(en),
body:not(.it) :lang(it),
body:not(.fr) :lang(fr) {
display: none;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With