diff options
author | cira@chromium.org <cira@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-17 18:30:53 +0000 |
---|---|---|
committer | cira@chromium.org <cira@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-17 18:30:53 +0000 |
commit | 696044b0f89347690ac2323670a7edf2ad4d2b2a (patch) | |
tree | 663da3b9c0bb0cfc7e37950941837c78937ed2e3 /chrome/common/extensions/extension_l10n_util.cc | |
parent | b79d7abdc9e7de5d17beca1ddcbfcd8c20e1cdd4 (diff) | |
download | chromium_src-696044b0f89347690ac2323670a7edf2ad4d2b2a.zip chromium_src-696044b0f89347690ac2323670a7edf2ad4d2b2a.tar.gz chromium_src-696044b0f89347690ac2323670a7edf2ad4d2b2a.tar.bz2 |
Load message catalogs on demand when chrome.i18n.getMessage needs them.
1. Added default locale to the url context
2. Removed old code that was uploading catalogs on load (to renderer)
3. Removed message bundle object from Extension class.
BUG=27361
TEST=Open Chrome with --lang=sr and load src\chrome\common\extensions\docs\examples\api\i18n\getMessage extension from chrome://extensions page. Click on icon and text in popup should be localized.
Review URL: http://codereview.chromium.org/463011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34846 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/extension_l10n_util.cc')
-rw-r--r-- | chrome/common/extensions/extension_l10n_util.cc | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/chrome/common/extensions/extension_l10n_util.cc b/chrome/common/extensions/extension_l10n_util.cc index 9d0510e..f315d92 100644 --- a/chrome/common/extensions/extension_l10n_util.cc +++ b/chrome/common/extensions/extension_l10n_util.cc @@ -37,12 +37,12 @@ void SetProcessLocale(const std::string& locale) { std::string GetDefaultLocaleFromManifest(const DictionaryValue& manifest, std::string* error) { std::string default_locale; - if (!manifest.GetString(keys::kDefaultLocale, &default_locale)) { - *error = errors::kInvalidDefaultLocale; - return ""; - } + if (manifest.GetString(keys::kDefaultLocale, &default_locale)) + return default_locale; + + *error = errors::kInvalidDefaultLocale; + return ""; - return default_locale; } bool ShouldRelocalizeManifest(const ExtensionInfo& info) { @@ -118,17 +118,18 @@ bool LocalizeManifest(const ExtensionMessageBundle& messages, bool LocalizeExtension(Extension* extension, DictionaryValue* manifest, std::string* error) { + DCHECK(manifest); + + std::string default_locale = GetDefaultLocaleFromManifest(*manifest, error); + ExtensionMessageBundle* message_bundle = extension_file_util::LoadExtensionMessageBundle(extension->path(), - *manifest, + default_locale, error); + if (!message_bundle && !error->empty()) return false; - // TODO(cira): remove ExtensionMessageBundle object from Extension class - // after we implement IPC that requests message bundles on demand. - extension->set_message_bundle(message_bundle); - if (message_bundle && !LocalizeManifest(*message_bundle, manifest, error)) return false; |