diff options
author | cira@chromium.org <cira@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-28 19:38:49 +0000 |
---|---|---|
committer | cira@chromium.org <cira@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-28 19:38:49 +0000 |
commit | 75e126b937df6fcf5590f607adb460099211fb5a (patch) | |
tree | dea2e8c33b6777b36df3435179fd9e6840b77710 /chrome/test | |
parent | 99a19b7411d408c7471b3ee2c452f06f4d09259d (diff) | |
download | chromium_src-75e126b937df6fcf5590f607adb460099211fb5a.zip chromium_src-75e126b937df6fcf5590f607adb460099211fb5a.tar.gz chromium_src-75e126b937df6fcf5590f607adb460099211fb5a.tar.bz2 |
Implementing chrome.i18n.getMessage call, that loads message from the extension catalog, and if necessary replaces placeholders (up to 9).
I have 3 forms of getMessage call:
getMessage("name") for simple messages without placeholders.
getMessage("name", "one param") for messages with only one placeholder.
getMessage("name", ["one", "two"]) for messages with only one or more placeholders.
getMessage returns string.
BUG=12131
TEST=Load samples/i18n extension (switch Chrome to sr locale) and observe ext. name, description and toolstrip texts should be in Serbian.
Review URL: http://codereview.chromium.org/225009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27393 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
7 files changed, 105 insertions, 6 deletions
diff --git a/chrome/test/data/extensions/api_test/i18n/_locales/en_US/messages.json b/chrome/test/data/extensions/api_test/i18n/_locales/en_US/messages.json new file mode 100644 index 0000000..52b7cbf --- /dev/null +++ b/chrome/test/data/extensions/api_test/i18n/_locales/en_US/messages.json @@ -0,0 +1,30 @@ +{ + "chrome_extension_name": { + "message": "Api test extension" + }, + "simple_message": { + "message": "Simple message" + }, + "message_with_one_placeholder": { + "message": "Number of errors: $NR_OF_ERRORS$", + "placeholders": { + "nr_of_errors": { + "content": "$1" + } + } + }, + "message_with_placeholders": { + "message": "$Cira$ and $Somebody$ work for $GOOGLE$", + "placeholders": { + "cira": { + "content": "$1" + }, + "somebody": { + "content": "$2" + }, + "google": { + "content": "Google" + } + } + } +} diff --git a/chrome/test/data/extensions/api_test/i18n/manifest.json b/chrome/test/data/extensions/api_test/i18n/manifest.json index 3653d29..16e65ac 100644 --- a/chrome/test/data/extensions/api_test/i18n/manifest.json +++ b/chrome/test/data/extensions/api_test/i18n/manifest.json @@ -2,5 +2,6 @@ "name": "chrome.i18n", "version": "0.1", "description": "end-to-end browser test for chrome.i18n API", - "background_page": "test.html" + "background_page": "test.html", + "default_locale": "en_US" } diff --git a/chrome/test/data/extensions/api_test/i18n/test.js b/chrome/test/data/extensions/api_test/i18n/test.js index ab12d90..405de5b 100644 --- a/chrome/test/data/extensions/api_test/i18n/test.js +++ b/chrome/test/data/extensions/api_test/i18n/test.js @@ -1,5 +1,5 @@ // i18n api test -// browser_tests.exe --gtest_filter=ExtensionApiTest.I18N +// browser_tests.exe --gtest_filter=ExtensionApiTest.I18N --lib=browser_tests var testCallback = chrome.test.testCallback; @@ -10,5 +10,18 @@ chrome.test.runTests([ chrome.test.assertEq(results[0], "en-US"); chrome.test.assertEq(results[1], "en"); })); - } + }, + function getMessage() { + var message = chrome.i18n.getMessage("simple_message"); + chrome.test.assertEq(message, "Simple message"); + + message = chrome.i18n.getMessage("message_with_placeholders", + ["Cira", "John"]); + chrome.test.assertEq(message, "Cira and John work for Google"); + + message = chrome.i18n.getMessage("message_with_one_placeholder", "19"); + chrome.test.assertEq(message, "Number of errors: 19"); + + chrome.test.succeed(); + }, ]); diff --git a/chrome/test/data/extensions/samples/i18n/_locales/en_US/messages.json b/chrome/test/data/extensions/samples/i18n/_locales/en_US/messages.json new file mode 100644 index 0000000..9e86443 --- /dev/null +++ b/chrome/test/data/extensions/samples/i18n/_locales/en_US/messages.json @@ -0,0 +1,24 @@ +{ + "chrome_extension_name": { + "message": "AcceptLanguage" + }, + "chrome_extension_description": { + "message": "Returns accept languages of the browser" + }, + "click_here": { + "message": "Left click to list acceptLanguages." + }, + "chrome_accept_languages": { + "message": "$CHROME$ accepts $languages$ languages", + "placeholders": { + "chrome": { + "content": "Chrome", + "example": "Chrome" + }, + "languages": { + "content": "$1", + "example": "en-US,sr,de" + } + } + } +} diff --git a/chrome/test/data/extensions/samples/i18n/_locales/sr/messages.json b/chrome/test/data/extensions/samples/i18n/_locales/sr/messages.json new file mode 100644 index 0000000..30bd958 --- /dev/null +++ b/chrome/test/data/extensions/samples/i18n/_locales/sr/messages.json @@ -0,0 +1,24 @@ +{ + "chrome_extension_name": { + "message": "Прихватљиви језици" + }, + "chrome_extension_description": { + "message": "Језици које прегледач прихвата" + }, + "click_here": { + "message": "Кликните да излистате дозвољене језике." + }, + "chrome_accept_languages": { + "message": "$CHROME$ прихвата $languages$ језике.", + "placeholders": { + "chrome": { + "content": "Chrome", + "example": "Chrome" + }, + "languages": { + "content": "$1", + "example": "en-US,sr,de" + } + } + } +} diff --git a/chrome/test/data/extensions/samples/i18n/manifest.json b/chrome/test/data/extensions/samples/i18n/manifest.json index ec642b1..ca7fefd 100644 --- a/chrome/test/data/extensions/samples/i18n/manifest.json +++ b/chrome/test/data/extensions/samples/i18n/manifest.json @@ -2,5 +2,6 @@ "name": "AcceptLanguage", "description": "Returns accept languages of the browser", "version": "0.1", + "default_locale": "en_US", "toolstrips": ["toolstrip.html"] } diff --git a/chrome/test/data/extensions/samples/i18n/toolstrip.html b/chrome/test/data/extensions/samples/i18n/toolstrip.html index 677535a..970651a 100644 --- a/chrome/test/data/extensions/samples/i18n/toolstrip.html +++ b/chrome/test/data/extensions/samples/i18n/toolstrip.html @@ -7,17 +7,23 @@ LICENSE file. <html> <head> <script> + function init() { + document.getElementById("languageSpan").innerHTML = + chrome.i18n.getMessage("click_here"); + } + function getAcceptLanguages() { chrome.i18n.getAcceptLanguages(function(languageList) { var languages = languageList.join(","); - document.getElementById("languageSpan").innerHTML = languages; + document.getElementById("languageSpan").innerHTML = + chrome.i18n.getMessage("chrome_accept_languages", languages); }) } </script> </head> - <body> + <body onload="init()"> <div class="toolstrip-button" onclick="getAcceptLanguages();"> - <span id="languageSpan">GetAcceptLanguage</span> + <span id="languageSpan"></span> </div> </body> </html> |