2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license
\r
8 var loadedLangs = {};
\r
13 * The list of languages available in the editor core.
\r
16 * alert( CKEDITOR.lang.en ); // "true"
\r
80 * Loads a specific language file, or auto detect it. A callback is
\r
81 * then called when the file gets loaded.
\r
82 * @param {String} languageCode The code of the language file to be
\r
83 * loaded. If "autoDetect" is set to true, this language will be
\r
84 * used as the default one, if the detect language is not
\r
85 * available in the core.
\r
86 * @param {Boolean} autoDetect Indicates that the function must try to
\r
87 * detect the user language and load it instead.
\r
88 * @param {Function} callback The function to be called once the
\r
89 * language file is loaded. Two parameters are passed to this
\r
90 * function: the language code and the loaded language entries.
\r
93 load : function( languageCode, defaultLanguage, callback )
\r
95 // If no languageCode - fallback to browser or default.
\r
96 // If languageCode - fallback to no-localized version or default.
\r
97 if ( !languageCode || !CKEDITOR.lang.languages[ languageCode ] )
\r
98 languageCode = this.detect( defaultLanguage, languageCode );
\r
100 if ( !this[ languageCode ] )
\r
102 CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
\r
103 '_source/' + // @Packager.RemoveLine
\r
104 'lang/' + languageCode + '.js' ),
\r
107 callback( languageCode, this[ languageCode ] );
\r
112 callback( languageCode, this[ languageCode ] );
\r
116 * Returns the language that best fit the user language. For example,
\r
117 * suppose that the user language is "pt-br". If this language is
\r
118 * supported by the editor, it is returned. Otherwise, if only "pt" is
\r
119 * supported, it is returned instead. If none of the previous are
\r
120 * supported, a default language is then returned.
\r
121 * @param {String} defaultLanguage The default language to be returned
\r
122 * if the user language is not supported.
\r
123 * @returns {String} The detected language code.
\r
125 * alert( CKEDITOR.lang.detect( 'en' ) ); // e.g., in a German browser: "de"
\r
127 detect : function( defaultLanguage, probeLanguage )
\r
129 var languages = this.languages;
\r
130 probeLanguage = probeLanguage || navigator.userLanguage || navigator.language;
\r
132 var parts = probeLanguage
\r
134 .match( /([a-z]+)(?:-([a-z]+))?/ ),
\r
138 if ( languages[ lang + '-' + locale ] )
\r
139 lang = lang + '-' + locale;
\r
140 else if ( !languages[ lang ] )
\r
143 CKEDITOR.lang.detect = lang ?
\r
144 function() { return lang; } :
\r
145 function( defaultLanguage ) { return defaultLanguage; };
\r
147 return lang || defaultLanguage;
\r