/**
* 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
};
};