GpsGate Server JavaScript API

Iter  1.0.0

GpsGate Server JavaScript API > Iter > language.js (source view)
Search:
 
Filters
/**
 * Copyright Franson Technology AB, Sweden, 2009
 * http://gpsgate.com, http://franson.com
 *
 * author Fredrik Blomqvist
 *
 * @module Language
 *
 */

var Franson = Franson || {};
/**
 * namespace
 * @class Franson.Language
 * @static
 */
Franson.Language = Franson.Language || {};

/**
 * initially empty phrase dictionary
 * @type Map[string->string]
 */
Franson.Language.CurrentLanguage = {};


/**
 * initial startup callback (triggered from pre-injected dictionary code)
 * todo: add to namespace..
 * @method phraseBook_callback
 * @param {object} res
 * @private
 */
function phraseBook_callback(res)
{
	if (res == null || typeof(res.error) != 'undefined')
	{
		if (typeof(logWarning) !== 'undefined')
			logWarning('Dictionary transfer error:', res.error);
		return;
	}

	// merge into (possibly) existing dictionary.
	// (newer elements overwrite previous)
	var dict = res.result || {};
	for (var key in dict)
	{
		Franson.Language.CurrentLanguage[key] = dict[key] || '';
	}
}


/**
 * @method localize
 * @param {string} key
 * @return {string}
 */
Franson.Language.localize = function(key)
{
	var ret = Franson.Language.CurrentLanguage[key] || null;
	if (ret === null)
	{
		if (typeof(logWarning) !== 'undefined')
			logWarning('No client translation found for:', '"' + key + '"');
		return 'NO_CLIENT_LANG_KEY: ' + key;
	}
	return ret;
};

// ! export the above to the global namespace since it is such a common operation
localize = Franson.Language.localize;


/**
 * could perhaps be interesting?
 * @method sizeofPharsebook
 * @return {(numElements: integer, keySize: integer, valueSize: integer)}
 */
Franson.Language.sizeofPharsebook = function()
{
	var numElements = 0;
	var keySize = 0;
	var valueSize = 0;

	for (var key in Franson.Language.CurrentLanguage)
	{
		numElements += 1;
		keySize += key.length;
		valueSize += Franson.Language.CurrentLanguage[key].length;
	}

	return {
		numElements: numElements,
		keySize: keySize,
		valueSize: valueSize
	};
};

Copyright © 2009 Franson Technology AB, Sweden. All rights reserved.