More trip planner testing with colors
[busui.git] / labs / openlayers / lib / OpenLayers / Lang.js
blob:a/labs/openlayers/lib/OpenLayers/Lang.js -> blob:b/labs/openlayers/lib/OpenLayers/Lang.js
  /* 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;