text: ﻿/*
  
  Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
  
  For licensing, see LICENSE.html or http://ckeditor.com/license
  
  */
  
  
  
  (function()
  
  {
  
  	var loadedLangs = {};
  
  
  
  	/**
  
  	 * @namespace Holds language related functions.
  
  	 */
  
  	CKEDITOR.lang =
  
  	{
  
  		/**
  
  		 * The list of languages available in the editor core.
  
  		 * @type Object
  
  		 * @example
  
  		 * alert( CKEDITOR.lang.en );  // "true"
  
  		 */
  
  		languages :
  
  		{
  
  			'af'	: 1,
  
  			'ar'	: 1,
  
  			'bg'	: 1,
  
  			'bn'	: 1,
  
  			'bs'	: 1,
  
  			'ca'	: 1,
  
  			'cs'	: 1,
  
  			'cy'	: 1,
  
  			'da'	: 1,
  
  			'de'	: 1,
  
  			'el'	: 1,
  
  			'en-au'	: 1,
  
  			'en-ca'	: 1,
  
  			'en-gb'	: 1,
  
  			'en'	: 1,
  
  			'eo'	: 1,
  
  			'es'	: 1,
  
  			'et'	: 1,
  
  			'eu'	: 1,
  
  			'fa'	: 1,
  
  			'fi'	: 1,
  
  			'fo'	: 1,
  
  			'fr-ca'	: 1,
  
  			'fr'	: 1,
  
  			'gl'	: 1,
  
  			'gu'	: 1,
  
  			'he'	: 1,
  
  			'hi'	: 1,
  
  			'hr'	: 1,
  
  			'hu'	: 1,
  
  			'is'	: 1,
  
  			'it'	: 1,
  
  			'ja'	: 1,
  
  			'ka'	: 1,
  
  			'km'	: 1,
  
  			'ko'	: 1,
  
  			'ku'	: 1,
  
  			'lt'	: 1,
  
  			'lv'	: 1,
  
  			'mn'	: 1,
  
  			'ms'	: 1,
  
  			'nb'	: 1,
  
  			'nl'	: 1,
  
  			'no'	: 1,
  
  			'pl'	: 1,
  
  			'pt-br'	: 1,
  
  			'pt'	: 1,
  
  			'ro'	: 1,
  
  			'ru'	: 1,
  
  			'sk'	: 1,
  
  			'sl'	: 1,
  
  			'sr-latn'	: 1,
  
  			'sr'	: 1,
  
  			'sv'	: 1,
  
  			'th'	: 1,
  
  			'tr'	: 1,
  
  			'ug'	: 1,
  
  			'uk'	: 1,
  
  			'vi'	: 1,
  
  			'zh-cn'	: 1,
  
  			'zh'	: 1
  
  		},
  
  
  
  		/**
  
  		 * Loads a specific language file, or auto detect it. A callback is
  
  		 * then called when the file gets loaded.
  
  		 * @param {String} languageCode The code of the language file to be
  
  		 *		loaded. If null or empty, autodetection will be performed. The
  
  		 *		same happens if the language is not supported.
  
  		 * @param {String} defaultLanguage The language to be used if
  
  		 *		languageCode is not supported or if the autodetection fails.
  
  		 * @param {Function} callback A function to be called once the
  
  		 *		language file is loaded. Two parameters are passed to this
  
  		 *		function: the language code and the loaded language entries.
  
  		 * @example
  
  		 */
  
  		load : function( languageCode, defaultLanguage, callback )
  
  		{
  
  			// If no languageCode - fallback to browser or default.
  
  			// If languageCode - fallback to no-localized version or default.
  
  			if ( !languageCode || !CKEDITOR.lang.languages[ languageCode ] )
  
  				languageCode = this.detect( defaultLanguage, languageCode );
  
  
  
  			if ( !this[ languageCode ] )
  
  			{
  
  				CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
  
  					'_source/' +	// @Packager.RemoveLine
  
  					'lang/' + languageCode + '.js' ),
  
  					function()
  
  						{
  
  							callback( languageCode, this[ languageCode ] );
  
  						}
  
  						, this );
  
  			}
  
  			else
  
  				callback( languageCode, this[ languageCode ] );
  
  		},
  
  
  
  		/**
  
  		 * Returns the language that best fit the user language. For example,
  
  		 * suppose that the user language is "pt-br". If this language is
  
  		 * supported by the editor, it is returned. Otherwise, if only "pt" is
  
  		 * supported, it is returned instead. If none of the previous are
  
  		 * supported, a default language is then returned.
  
  		 * @param {String} defaultLanguage The default language to be returned
  
  		 *		if the user language is not supported.
  
  		 * @param {String} [probeLanguage] A language code to try to use,
  
  		 *		instead of the browser based autodetection.
  
  		 * @returns {String} The detected language code.
  
  		 * @example
  
  		 * alert( CKEDITOR.lang.detect( 'en' ) );  // e.g., in a German browser: "de"
  
  		 */
  
  		detect : function( defaultLanguage, probeLanguage )
  
  		{
  
  			var languages = this.languages;
  
  			probeLanguage = probeLanguage || navigator.userLanguage || navigator.language || defaultLanguage;
  
  
  
  			var parts = probeLanguage
  
  					.toLowerCase()
  
  					.match( /([a-z]+)(?:-([a-z]+))?/ ),
  
  				lang = parts[1],
  
  				locale = parts[2];
  
  
  
  			if ( languages[ lang + '-' + locale ] )
  
  				lang = lang + '-' + locale;
  
  			else if ( !languages[ lang ] )
  
  				lang = null;
  
  
  
  			CKEDITOR.lang.detect = lang ?
  
  				function() { return lang; } :
  
  				function( defaultLanguage ) { return defaultLanguage; };
  
  
  
  			return lang || defaultLanguage;
  
  		}
  
  	};
  
  
  
  })();
  
  