From 696044b0f89347690ac2323670a7edf2ad4d2b2a Mon Sep 17 00:00:00 2001 From: "cira@chromium.org" Date: Thu, 17 Dec 2009 18:30:53 +0000 Subject: 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 --- chrome/common/extensions/extension_l10n_util.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'chrome/common/extensions/extension_l10n_util.cc') 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; -- cgit v1.1