|
/* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for |
|
* full list of contributors). Published under the Clear BSD license. |
|
* See http://svn.openlayers.org/trunk/openlayers/license.txt for the |
|
* full text of the license. */ |
|
|
|
/** |
|
* @requires OpenLayers/Console.js |
|
*/ |
|
|
|
/** |
|
* Namespace: OpenLayers.Lang |
|
* Internationalization namespace. Contains dictionaries in various languages |
|
* and methods to set and get the current language. |
|
*/ |
|
OpenLayers.Lang = { |
|
|
|
/** |
|
* Property: code |
|
* {String} Current language code to use in OpenLayers. Use the |
|
* <setCode> method to set this value and the <getCode> method to |
|
* retrieve it. |
|
*/ |
|
code: null, |
|
|
|
/** |
|
* APIProperty: defaultCode |
|
* {String} Default language to use when a specific language can't be |
|
* found. Default is "en". |
|
*/ |
|
defaultCode: "en", |
|
|
|
/** |
|
* APIFunction: getCode |
|
* Get the current language code. |
|
* |
|
* Returns: |
|
* The current language code. |
|
*/ |
|
getCode: function() { |
|
if(!OpenLayers.Lang.code) { |
|
OpenLayers.Lang.setCode(); |
|
} |
|
return OpenLayers.Lang.code; |
|
}, |
|
|
|
/** |
|
* APIFunction: setCode |
|
* Set the language code for string translation. This code is used by |
|
* the <OpenLayers.Lang.translate> method. |
|
* |
|
* Parameters- |
|
* code - {String} These codes follow the IETF recommendations at |
|
* http://www.ietf.org/rfc/rfc3066.txt. If no value is set, the |
|
* browser's language setting will be tested. If no <OpenLayers.Lang> |
|
* dictionary exists for the code, the <OpenLayers.String.defaultLang> |
|
* will be used. |
|
*/ |
|
setCode: function(code) { |
|
var lang; |
|
if(!code) { |
|
code = (OpenLayers.Util.getBrowserName() == "msie") ? |
|
navigator.userLanguage : navigator.language; |
|
} |
|
var parts = code.split('-'); |
|
parts[0] = parts[0].toLowerCase(); |
|
if(typeof OpenLayers.Lang[parts[0]] == "object") { |
|
lang = parts[0]; |
|
} |
|
|
|
// check for regional extensions |
|
if(parts[1]) { |
|
var testLang = parts[0] + '-' + parts[1].toUpperCase(); |
|
if(typeof OpenLayers.Lang[testLang] == "object") { |
|
lang = testLang; |
|
} |
|
} |
|
if(!lang) { |
|
OpenLayers.Console.warn( |
|
'Failed to find OpenLayers.Lang.' + parts.join("-") + |
|
' dictionary, falling back to default language' |
|
); |
|
lang = OpenLayers.Lang.defaultCode; |
|
} |
|
|
|
OpenLayers.Lang.code = lang; |
|
}, |
|
|
|
/** |
|
* APIMethod: translate |
|
* Looks up a key from a dictionary based on the current language string. |
|
* The value of <getCode> will be used to determine the appropriate |
|
* dictionary. Dictionaries are stored in <OpenLayers.Lang>. |
|
* |
|
* Parameters: |
|
* key - {String} The key for an i18n string value in the dictionary. |
|
* context - {Object} Optional context to be used with |
|
* <OpenLayers.String.format>. |
|
* |
|
* Returns: |
|
* {String} A internationalized string. |
|
*/ |
|
translate: function(key, context) { |
|
var dictionary = OpenLayers.Lang[OpenLayers.Lang.getCode()]; |
|
var message = dictionary[key]; |
|
if(!message) { |
|
// Message not found, fall back to message key |
|
message = key; |
|
} |
|
if(context) { |
|
message = OpenLayers.String.format(message, context); |
|
} |
|
return message; |
|
} |
|
|
|
}; |
|
|
|
|
|
/** |
|
* APIMethod: OpenLayers.i18n |
|
* Alias for <OpenLayers.Lang.translate>. Looks up a key from a dictionary |
|
* based on the current language string. The value of |
|
* <OpenLayers.Lang.getCode> will be used to determine the appropriate |
|
* dictionary. Dictionaries are stored in <OpenLayers.Lang>. |
|
* |
|
* Parameters: |
|
* key - {String} The key for an i18n string value in the dictionary. |
|
* context - {Object} Optional context to be used with |
|
* <OpenLayers.String.format>. |
|
* |
|
* Returns: |
|
* {String} A internationalized string. |
|
*/ |
|
OpenLayers.i18n = OpenLayers.Lang.translate; |
|
|