JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.6.6.1
[ckeditor.git] / _source / core / lang.js
index 6ada788..46fe129 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
 For licensing, see LICENSE.html or http://ckeditor.com/license\r
 */\r
 \r
@@ -7,6 +7,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
 {\r
        var loadedLangs = {};\r
 \r
+       /**\r
+        * @namespace Holds language related functions.\r
+        */\r
        CKEDITOR.lang =\r
        {\r
                /**\r
@@ -24,12 +27,13 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                        'bs'    : 1,\r
                        'ca'    : 1,\r
                        'cs'    : 1,\r
+                       'cy'    : 1,\r
                        'da'    : 1,\r
                        'de'    : 1,\r
                        'el'    : 1,\r
                        'en-au' : 1,\r
                        'en-ca' : 1,\r
-                       'en-uk' : 1,\r
+                       'en-gb' : 1,\r
                        'en'    : 1,\r
                        'eo'    : 1,\r
                        'es'    : 1,\r
@@ -49,8 +53,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                        'is'    : 1,\r
                        'it'    : 1,\r
                        'ja'    : 1,\r
+                       'ka'    : 1,\r
                        'km'    : 1,\r
                        'ko'    : 1,\r
+                       'ku'    : 1,\r
                        'lt'    : 1,\r
                        'lv'    : 1,\r
                        'mn'    : 1,\r
@@ -70,6 +76,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                        'sv'    : 1,\r
                        'th'    : 1,\r
                        'tr'    : 1,\r
+                       'ug'    : 1,\r
                        'uk'    : 1,\r
                        'vi'    : 1,\r
                        'zh-cn' : 1,\r
@@ -80,24 +87,26 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                 * Loads a specific language file, or auto detect it. A callback is\r
                 * then called when the file gets loaded.\r
                 * @param {String} languageCode The code of the language file to be\r
-                *              loaded. If "autoDetect" is set to true, this language will be\r
-                *              used as the default one, if the detect language is not\r
-                *              available in the core.\r
-                * @param {Boolean} autoDetect Indicates that the function must try to\r
-                *              detect the user language and load it instead.\r
-                * @param {Function} callback The function to be called once the\r
+                *              loaded. If null or empty, autodetection will be performed. The\r
+                *              same happens if the language is not supported.\r
+                * @param {String} defaultLanguage The language to be used if\r
+                *              languageCode is not supported or if the autodetection fails.\r
+                * @param {Function} callback A function to be called once the\r
                 *              language file is loaded. Two parameters are passed to this\r
                 *              function: the language code and the loaded language entries.\r
                 * @example\r
                 */\r
                load : function( languageCode, defaultLanguage, callback )\r
                {\r
-                       if ( !languageCode )\r
-                               languageCode = this.detect( defaultLanguage );\r
+                       // If no languageCode - fallback to browser or default.\r
+                       // If languageCode - fallback to no-localized version or default.\r
+                       if ( !languageCode || !CKEDITOR.lang.languages[ languageCode ] )\r
+                               languageCode = this.detect( defaultLanguage, languageCode );\r
 \r
                        if ( !this[ languageCode ] )\r
                        {\r
                                CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(\r
+                                       '_source/' +    // @Packager.RemoveLine\r
                                        'lang/' + languageCode + '.js' ),\r
                                        function()\r
                                                {\r
@@ -117,15 +126,18 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                 * supported, a default language is then returned.\r
                 * @param {String} defaultLanguage The default language to be returned\r
                 *              if the user language is not supported.\r
+                * @param {String} [probeLanguage] A language code to try to use,\r
+                *              instead of the browser based autodetection.\r
                 * @returns {String} The detected language code.\r
                 * @example\r
                 * alert( CKEDITOR.lang.detect( 'en' ) );  // e.g., in a German browser: "de"\r
                 */\r
-               detect : function( defaultLanguage )\r
+               detect : function( defaultLanguage, probeLanguage )\r
                {\r
                        var languages = this.languages;\r
+                       probeLanguage = probeLanguage || navigator.userLanguage || navigator.language || defaultLanguage;\r
 \r
-                       var parts = ( navigator.userLanguage || navigator.language )\r
+                       var parts = probeLanguage\r
                                        .toLowerCase()\r
                                        .match( /([a-z]+)(?:-([a-z]+))?/ ),\r
                                lang = parts[1],\r