From f9e3e148e32c3bc58d12a984a4a4a0083d874c2e Mon Sep 17 00:00:00 2001 From: amire80 Date: Mon, 24 Sep 2012 16:34:06 -0700 Subject: [PATCH 1/2] Add basic support for dir and lang attributes for autonyms Added a util function for getting the language's direction. Added lang and dir attributes for every language item in the list. --- css/jquery.uls.lcd.css | 26 ++++++++++++++++++++++++++ src/jquery.uls.data.utils.js | 9 +++++++++ src/jquery.uls.lcd.js | 11 +++++++++-- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/css/jquery.uls.lcd.css b/css/jquery.uls.lcd.css index 50f236c..819bcb6 100644 --- a/css/jquery.uls.lcd.css +++ b/css/jquery.uls.lcd.css @@ -5,6 +5,7 @@ .uls-lcd-region-section ul li:hover { background-color: #eaeff7; } + /* Language list */ .uls-language-list { height: 22em; @@ -22,7 +23,32 @@ font-weight: normal; overflow: hidden; white-space: nowrap; + + /* + * Some languages have long names for various reasons and we still want + * them to appear on one line. + * To make it work correctly, the directionality must be set correctly + * on the item level. + */ text-overflow: ellipsis; + + /* + * The directionality (ltr/rtl) for each list item is set dynamically + * as HTML attributes in JavaScript. Setting directionality also applies + * alignment, but a list with mixed alignment is hard to read. + * All items are therefore explicitly aligned to the left, including names + * of right-to-left languages in left-to-right environment and vice versa. + * As long as the directionality of the item is set correctly, the text + * is readable. + */ + text-align: left; + + + /* + * We don't want any visible bullets in this list. + */ + list-style-image: none; + list-style-type: none; } .uls-language-list strong { diff --git a/src/jquery.uls.data.utils.js b/src/jquery.uls.data.utils.js index 4adbb1a..591a6e3 100644 --- a/src/jquery.uls.data.utils.js +++ b/src/jquery.uls.data.utils.js @@ -339,6 +339,15 @@ return $.inArray( $.uls.data.script( language ), $.uls.data.rtlscripts ) !== -1; }; + /** + * Return the direction of the language + * @param string language code + * @return string + */ + $.uls.data.getDir = function( language ) { + return $.uls.data.isRtl( language ) ? 'rtl' : 'ltr'; + }; + /** * Returns the languages spoken in a territory. * @param string Territory code diff --git a/src/jquery.uls.lcd.js b/src/jquery.uls.lcd.js index 1f4a9a0..a6ced8b 100644 --- a/src/jquery.uls.lcd.js +++ b/src/jquery.uls.lcd.js @@ -19,10 +19,9 @@ * @licence MIT License */ -(function( $ ) { +( function( $ ) { "use strict"; - var noResultsTemplate = '\
\

\ @@ -94,6 +93,10 @@ var $li = $( '
  • ' ) .data( 'code', langCode ) + .attr({ + lang: langCode, + dir: $.uls.data.getDir( langCode ) + }) .append( $( '' ).prop( 'href', '#' ).prop( 'title', language ).html( langName ) ); @@ -206,6 +209,10 @@ var langName = $.uls.data.autonym( langCode ) || language || langCode; var $li = $( '
  • ' ) .data( 'code', langCode ) + .attr({ + lang: langCode, + dir: $.uls.data.getDir( langCode ) + }) .append( $( '' ).prop( 'href', '#' ).prop( 'title', language ).html( langName ) ); From 7f16137efcb38c386796038775b830133dc58153 Mon Sep 17 00:00:00 2001 From: amire80 Date: Mon, 24 Sep 2012 16:51:03 -0700 Subject: [PATCH 2/2] Fix whitespace --- src/jquery.uls.data.utils.js | 2 +- src/jquery.uls.lcd.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/jquery.uls.data.utils.js b/src/jquery.uls.data.utils.js index 591a6e3..ee911e6 100644 --- a/src/jquery.uls.data.utils.js +++ b/src/jquery.uls.data.utils.js @@ -346,7 +346,7 @@ */ $.uls.data.getDir = function( language ) { return $.uls.data.isRtl( language ) ? 'rtl' : 'ltr'; - }; + }; /** * Returns the languages spoken in a territory. diff --git a/src/jquery.uls.lcd.js b/src/jquery.uls.lcd.js index a6ced8b..60e0f7d 100644 --- a/src/jquery.uls.lcd.js +++ b/src/jquery.uls.lcd.js @@ -93,10 +93,10 @@ var $li = $( '
  • ' ) .data( 'code', langCode ) - .attr({ + .attr( { lang: langCode, dir: $.uls.data.getDir( langCode ) - }) + } ) .append( $( '' ).prop( 'href', '#' ).prop( 'title', language ).html( langName ) ); @@ -209,10 +209,10 @@ var langName = $.uls.data.autonym( langCode ) || language || langCode; var $li = $( '
  • ' ) .data( 'code', langCode ) - .attr({ + .attr( { lang: langCode, dir: $.uls.data.getDir( langCode ) - }) + } ) .append( $( '' ).prop( 'href', '#' ).prop( 'title', language ).html( langName ) );