Improved the internationalization of the construction “Insufficient resources” message
This was SVN commit r14988.
This commit is contained in:
parent
0c04b90a2d
commit
c1c10667df
@ -73,6 +73,36 @@ function translatePluralWithContext(context, singularMessage, pluralMessage, num
|
|||||||
return pluralTranslationWithContext;
|
return pluralTranslationWithContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The input object should contain either of the following properties:
|
||||||
|
*
|
||||||
|
* • A ‘message’ property that contains a message to translate.
|
||||||
|
*
|
||||||
|
* • A ‘list’ property that contains a list of messages to translate as a
|
||||||
|
* comma-separated list of translated.
|
||||||
|
*
|
||||||
|
* Optionally, the input object may contain a ‘context’ property. In that case,
|
||||||
|
* the value of this property is used as translation context, that is, passed to
|
||||||
|
* the translateWithContext(context, message) function.
|
||||||
|
*/
|
||||||
|
function translateMessageObject(object)
|
||||||
|
{
|
||||||
|
// the translation function
|
||||||
|
var trans = translate;
|
||||||
|
if (object.context)
|
||||||
|
trans = function(msg) { return translateWithContext(object.context, msg);};
|
||||||
|
|
||||||
|
if (object.message)
|
||||||
|
object = trans(object.message);
|
||||||
|
else if (object.list)
|
||||||
|
{
|
||||||
|
var translatedList = object.list.map(trans);
|
||||||
|
object = translatedList.join(translateWithContext("enumeration", ", "));
|
||||||
|
}
|
||||||
|
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Translates any string value in the specified JavaScript object
|
* Translates any string value in the specified JavaScript object
|
||||||
* that is associated with a key included in the specified keys array.
|
* that is associated with a key included in the specified keys array.
|
||||||
@ -115,32 +145,49 @@ function translatePluralWithContext(context, singularMessage, pluralMessage, num
|
|||||||
* So you see that the keys array can also contain lower-level keys,
|
* So you see that the keys array can also contain lower-level keys,
|
||||||
* And that you can include objects in the keys array to translate
|
* And that you can include objects in the keys array to translate
|
||||||
* them with a context, or to join a list of translations.
|
* them with a context, or to join a list of translations.
|
||||||
|
*
|
||||||
|
* Also, the keys array may be an object where properties are keys to translate
|
||||||
|
* and values are translation contexts to use for each key.
|
||||||
*/
|
*/
|
||||||
function translateObjectKeys(object, keys) {
|
function translateObjectKeys(object, keys) {
|
||||||
for (var property in object)
|
// If ‘keys’ is an array, simply translate.
|
||||||
|
if (keys instanceof Array)
|
||||||
{
|
{
|
||||||
if (keys.indexOf(property) > -1)
|
for (var property in object)
|
||||||
{
|
{
|
||||||
if (typeof object[property] == "string")
|
if (keys.indexOf(property) > -1)
|
||||||
object[property] = translate(object[property]);
|
|
||||||
else if (object[property] instanceof Object)
|
|
||||||
{
|
{
|
||||||
// the translation function
|
if (typeof object[property] == "string")
|
||||||
var trans = translate;
|
object[property] = translate(object[property]);
|
||||||
if (object[property].context)
|
else if (object[property] instanceof Object)
|
||||||
trans = function(msg) { return translateWithContext(object[property].context, msg);};
|
|
||||||
|
|
||||||
if (object[property].message)
|
|
||||||
object[property] = trans(object[property].message);
|
|
||||||
else if (object[property].list)
|
|
||||||
{
|
{
|
||||||
var translatedList = object[property].list.map(trans);
|
object[property] = translateMessageObject(object[property]);
|
||||||
object[property] = translatedList.join(translateWithContext("enumeration", ", "));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (object[property] instanceof Object)
|
||||||
|
translateObjectKeys(object[property], keys);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If ‘keys’ is not an array, it is an object where keys are properties to
|
||||||
|
// translate and values are translation contexts to use for each key.
|
||||||
|
// An empty value means no context.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (var property in object)
|
||||||
|
{
|
||||||
|
if (property in keys)
|
||||||
|
{
|
||||||
|
if (typeof object[property] == "string")
|
||||||
|
if (keys[property])
|
||||||
|
object[property] = translateWithContext(keys[property], object[property]);
|
||||||
|
else
|
||||||
|
object[property] = translate(object[property]);
|
||||||
|
else if (object[property] instanceof Object)
|
||||||
|
object[property] = translateMessageObject(object[property]);
|
||||||
|
}
|
||||||
|
else if (object[property] instanceof Object)
|
||||||
|
translateObjectKeys(object[property], keys);
|
||||||
}
|
}
|
||||||
else if (object[property] instanceof Object)
|
|
||||||
translateObjectKeys(object[property], keys);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ function displayNotifications()
|
|||||||
for each (var n in notifications)
|
for each (var n in notifications)
|
||||||
{
|
{
|
||||||
var parameters = n.parameters || {};
|
var parameters = n.parameters || {};
|
||||||
if (n.translateParameters && n.translateParameters.length)
|
if (n.translateParameters)
|
||||||
translateObjectKeys(parameters, n.translateParameters);
|
translateObjectKeys(parameters, n.translateParameters);
|
||||||
var message = n.message;
|
var message = n.message;
|
||||||
if (n.translateMessage)
|
if (n.translateMessage)
|
||||||
@ -164,7 +164,7 @@ function updateTimeNotifications()
|
|||||||
if (n.translateMessage)
|
if (n.translateMessage)
|
||||||
message = translate(message);
|
message = translate(message);
|
||||||
var parameters = n.parameters || {};
|
var parameters = n.parameters || {};
|
||||||
if (n.translateParameters && n.translateParameters.length)
|
if (n.translateParameters)
|
||||||
translateObjectKeys(parameters, n.translateParameters);
|
translateObjectKeys(parameters, n.translateParameters);
|
||||||
parameters.time = timeToString(n.time);
|
parameters.time = timeToString(n.time);
|
||||||
notificationText += sprintf(message, parameters) + "\n";
|
notificationText += sprintf(message, parameters) + "\n";
|
||||||
|
@ -248,7 +248,12 @@ Player.prototype.SubtractResourcesOrNotify = function(amounts)
|
|||||||
"message": msg,
|
"message": msg,
|
||||||
"parameters": parameters,
|
"parameters": parameters,
|
||||||
"translateMessage": true,
|
"translateMessage": true,
|
||||||
"translateParameters": ["resourceType1", "resourceType2", "resourceType3", "resourceType4"],
|
"translateParameters": {
|
||||||
|
"resourceType1": "withinSentence",
|
||||||
|
"resourceType2": "withinSentence",
|
||||||
|
"resourceType3": "withinSentence",
|
||||||
|
"resourceType4": "withinSentence",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
||||||
cmpGUIInterface.PushNotification(notification);
|
cmpGUIInterface.PushNotification(notification);
|
||||||
|
Loading…
Reference in New Issue
Block a user