Skip to content

Commit

Permalink
Improving default locale selection.
Browse files Browse the repository at this point in the history
  • Loading branch information
cezarsa committed Nov 13, 2010
1 parent a0c2ab0 commit 0d66091
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
3 changes: 3 additions & 0 deletions _locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -664,5 +664,8 @@
},
"l_default_locale": {
"message": "Default Locale:"
},
"automatic": {
"message": "Same as browser"
}
}
27 changes: 20 additions & 7 deletions lib/locales.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,37 @@ LocaleTable.prototype = {
}, chrome.extension.getURL('manifest.json'));
},

parsePlaceholders: function(localeData) {
for(var key in localeData) {
var localizedEntry = localeData[key];
if(localizedEntry.placeholders) {
localizedEntry.parsedPlaceholders = [];
for(var placeEntry in localizedEntry.placeholders) {
var placeholder = localizedEntry.placeholders[placeEntry];
var position = parseInt(placeholder.content.substring(1), 10) - 1;
localizedEntry.parsedPlaceholders.push({position: position, key: '$' + placeEntry + '$'});
}
}
}
},

loadLocaleMessages: function(callback) {
var remainingLocalesMap = {};
for(var k = 0, codesLen = LocaleTable.availableLocaleCodes.length; k < codesLen; ++k) {
remainingLocalesMap[LocaleTable.availableLocaleCodes[k]] = true;
}
var locales = {};
var _this = this;
var updateLocaleCallback = function(localeCode, data) {
delete remainingLocalesMap[localeCode];
if(data) {
locales[localeCode] = data;
_this.parsePlaceholders(data);
}
if(Util.isEmptyObject(remainingLocalesMap)) {
callback(locales);
}
};
var _this = this;
for(var i = 0, len = LocaleTable.availableLocaleCodes.length; i < len; ++i) {
var localeCode = LocaleTable.availableLocaleCodes[i];
(function(localeCode) {
Expand Down Expand Up @@ -113,13 +128,11 @@ chrome.i18n.getMessage = function(message, params) {
return chrome.i18n.originalGetMessage(message, params);
}
var messageStr = messageData.message;
if(messageData.placeholders) {
for(var key in messageData.placeholders) {
var placeholder = messageData.placeholders[key];
var position = parseInt(placeholder.content.substring(1), 10) - 1;
messageStr = messageStr.replace('$' + key + '$', params[position]);
if(messageData.parsedPlaceholders) {
for(var i = 0, len = messageData.parsedPlaceholders.length; i < len; ++i) {
var placeholder = messageData.parsedPlaceholders[i];
messageStr = messageStr.replace(placeholder.key, params[placeholder.position]);
}
}
//TODO: string substitution
return messageStr;
};
2 changes: 1 addition & 1 deletion options.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
}
$(".__hourly_limit").text(hourlyLimit);

$("select[name='default_locale']").append($("<option>").attr('value', 'auto').text('Auto'));
$("select[name='default_locale']").append($("<option>").attr('value', 'auto').text(chrome.i18n.getMessage('automatic')));
for(var localeCode in LocaleTable.instance.locales) {
$("select[name='default_locale']").append($("<option>").attr('value', localeCode).text(localeCode));
}
Expand Down

0 comments on commit 0d66091

Please sign in to comment.