New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 9 users

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: Oct 2009
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Feature
M-4

Restricted
  • Only users with EditIssue permission may comment.



Sign in to add a comment

Implement I18N support for extensions

Project Member Reported by aa@chromium.org, May 17 2009 Back to list

Issue description

Implement APIs to support I18N of extensions. This includes:

- Strings in HTML
- Strings in the manifest
- APIs to get strings dynamically from JavaScript (eg for use in alerts)

 

Comment 1 by aa@chromium.org, May 17 2009

Labels: -Pri-2 Pri-3

Comment 2 by xlyuan@chromium.org, May 20 2009

Labels: I18N

Comment 3 by aa@chromium.org, May 21 2009

Comment 4 by aa@chromium.org, Jun 9 2009

Labels: -Pri-3 Pri-2 Mstone-4
More details:
There are 5 parts to internationalize:
*Manifest (name, description...)
*HTML files (toolstrips, popups...)
*JS code (alerts, dynamically generated HTML...)
*Local resources (images...)
*Server side resources (fetching different urls based on locale)

The international files should likely be organized in a separate sub-directory to
minimize clutter.

Question: do we need extensions to support multiple locales, in addition to multiple
languages?

Comment 6 by cira@chromium.org, Jun 24 2009

We can use lang_ALL convention, so that if developer wants to cover all english 
speaking locales he implements only en_ALL. Somebody else can pitch in with en_in later 
on it would just work...

Comment 7 by cira@chromium.org, Jun 24 2009

Status: Assigned

Comment 8 by js...@chromium.org, Jun 24 2009

Cira, I'm assuming that you wanted to assign this to yourself. Otherwise, the status 
shouldn't be set to assigned :-)

Should we put 'the global default' in all_ALL or is it kinda redundant? 

BTW, CSS stylesheets may have to be localizable as well. 

RE:locales, the answer is yes, we should support them. From Christos:

"I believe some type of extensions, especially geo-location dependent ones, locale
will be important, not just language. [...] Also any extension that relies on let's
say media content for which the owner may have  limited rights to a specific
geographic area will require the same thing."
Labels: Channel-Beta
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=23739 

------------------------------------------------------------------------
r23739 | cira@chromium.org | 2009-08-19 13:45:14 -0700 (Wed, 19 Aug 2009) | 16 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util.cc?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util.h?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util_unittest.cc?r1=23739&r2=23738
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.h
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util_unittest.cc
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome.gyp?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.cc?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.h?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_constants.cc?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_constants.h?r1=23739&r2=23738
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_unittest.cc?r1=23739&r2=23738

This change enables Chrome to load locale information for the extension. It detects default locale, and filters out all locales not supported
by Chrome or with invalid names/missing messages.

It also checks for folders that start with _ and are not in the reserved list.

We don't validate messages file with this CL.

Added support for loading supplied locale information to the extension_file_util, and detecting default locale.
Added new constants to extension class (_locales directory name, messages filename).
Added new error messages to _constants.
Added new unittests.

BUG= 12131 
TEST=There should be no visible changes, except in case of error when loading extension (e.g. create empty _locales folder and try loading).

Review URL: http://codereview.chromium.org/170015
------------------------------------------------------------------------

Comment 12 by aa@chromium.org, Sep 9 2009

Labels: -Channel-Beta
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=26609 

------------------------------------------------------------------------
r26609 | cira@chromium.org | 2009-09-18 14:07:39 -0700 (Fri, 18 Sep 2009) | 24 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util.cc?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util.h?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util_unittest.cc?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.cc?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.h?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util_unittest.cc?r1=26609&r2=26608
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_message_bundle.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_message_bundle.h
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_message_bundle_unittest.cc
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_ui_unittest.cc?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome.gyp?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.cc?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.h?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_unittest.cc?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/good/Extensions/behllobkkfkfnphdnhnkndlbkcpglgmj/1.0.0.0/_locales/en_US/messages.json?r1=26609&r2=26608
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/good/Extensions/behllobkkfkfnphdnhnkndlbkcpglgmj/1.0.0.0/_locales/sr/messages.json?r1=26609&r2=26608

CL is the same as http://codereview.chromium.org/173487, but had to be moved to new CL number because I switched machines.

Implemented the rest of loading/parsing logic for extension i18n:

1. Loading message catalogs for default and application locale.
2. Parsing JSON and replacing placeholders with actual content within a message.
3. Creating unified dictionary (union of default and application dictionaries,
where application dict. has priority for common messages).

New class ExtensionMessageBundle holds new dictionary, and parses data. It's
injected into Extension.

ExtensionMessageHandler::ReplaceVariablesInString can replace both
$placeholders$ and __MSG_messages__ in given string (HTML, manifest, actual
message string...).

Implemented actual manifest name/description replacement too, as an example.

Extension is now pretty agnostic about localization, and this makes it easier to use message bundles
with things that are not extensions...

BUG= 12131 

Review URL: http://codereview.chromium.org/202063
------------------------------------------------------------------------

The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=27393 

------------------------------------------------------------------------
r27393 | cira@chromium.org | 2009-09-28 12:38:49 -0700 (Mon, 28 Sep 2009) | 14 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.cc?r1=27393&r2=27392
   D /trunk/src/chrome/browser/extensions/extension_message_bundle.cc
   D /trunk/src/chrome/browser/extensions/extension_message_bundle.h
   D /trunk/src/chrome/browser/extensions/extension_message_bundle_unittest.cc
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_process_manager.cc?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome.gyp?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/extension_api.json?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/i18n.html?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/static/i18n.html?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.h?r1=27393&r2=27392
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_message_bundle.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_message_bundle.h
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_message_bundle_unittest.cc
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/render_messages_internal.h?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/extensions/extension_api_client_unittest.cc?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/extensions/extension_process_bindings.cc?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/extensions/extension_process_bindings.h?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_thread.cc?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/render_thread.h?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extension_process_bindings.js?r1=27393&r2=27392
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/i18n/_locales
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/i18n/_locales/en_US
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/i18n/_locales/en_US/messages.json
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/i18n/manifest.json?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/i18n/test.js?r1=27393&r2=27392
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/_locales
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/_locales/en_US
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/_locales/en_US/messages.json
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/_locales/sr
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/_locales/sr/messages.json
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/manifest.json?r1=27393&r2=27392
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/samples/i18n/toolstrip.html?r1=27393&r2=27392

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
------------------------------------------------------------------------

The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=28333 

------------------------------------------------------------------------
r28333 | cira@chromium.org | 2009-10-07 15:49:10 -0700 (Wed, 07 Oct 2009) | 12 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/crx_installer.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/execute_code_in_tab_function.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/execute_code_in_tab_function.h?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_disabled_infobar_delegate.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.h?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util_unittest.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_protocols.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extensions_service_unittest.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extensions_ui.cc?r1=28333&r2=28332
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/file_reader.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/file_reader.h
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/file_reader_unittest.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/image_loading_tracker.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/image_loading_tracker.h
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/user_script_master.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/gtk/location_bar_view_gtk.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/gtk/location_bar_view_gtk.h?r1=28333&r2=28332
   D /trunk/src/chrome/browser/image_loading_tracker.cc
   D /trunk/src/chrome/browser/image_loading_tracker.h
   D /trunk/src/chrome/browser/net/file_reader.cc
   D /trunk/src/chrome/browser/net/file_reader.h
   D /trunk/src/chrome/browser/net/file_reader_unittest.cc
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/views/browser_actions_container.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/views/location_bar_view.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/views/location_bar_view.h?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome.gyp?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension.h?r1=28333&r2=28332
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_resource.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_resource.h
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_resource_unittest.cc
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_unittest.cc?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/user_script.h?r1=28333&r2=28332
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/user_script_unittest.cc?r1=28333&r2=28332

Loads local resources from current locale subtree if available, if not it falls back to extension subtree.

We look for ext_root/foo/bar.js under ext_root/_locales/fr/foo/bar.js if current locale is fr. If there is no fr specific resource we load ext_root/foo/bar.js instead.

Lots of small refactoring to replace FilePath with ExtensionResource.


BUG= 12131 
TEST=See unittest for sample tree.


Review URL: http://codereview.chromium.org/256022
------------------------------------------------------------------------

The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=29684 

------------------------------------------------------------------------
r29684 | cira@chromium.org | 2009-10-21 12:08:23 -0700 (Wed, 21 Oct 2009) | 20 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_file_util.cc?r1=29684&r2=29683
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.cc?r1=29684&r2=29683
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.h?r1=29684&r2=29683
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util_unittest.cc?r1=29684&r2=29683
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_message_bundle.cc?r1=29684&r2=29683
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_message_bundle.h?r1=29684&r2=29683
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_message_bundle_unittest.cc?r1=29684&r2=29683
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/good/Extensions/behllobkkfkfnphdnhnkndlbkcpglgmj/1.0.0.0/_locales/en
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/good/Extensions/behllobkkfkfnphdnhnkndlbkcpglgmj/1.0.0.0/_locales/en/messages.json
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/good/Extensions/behllobkkfkfnphdnhnkndlbkcpglgmj/1.0.0.0/_locales/en_US/messages.json?r1=29684&r2=29683

Implementing better fallback algorithm.

Before:
 current_locale->default_locale

Now:
 current_locale->chain_of_parent_locales->default_locale

If default_locale is de, and current locale en_US, we follow:
en_US -> en -> de

en is not a Chrome locale (only en_US, en_GB are), but we fake it to allow this kind of fallback.

Developers can implement common locale root with most of the messages (like en) and put locale specifics in en_GB (color->colour) or en_US. You can even symlink en and en_US and save on work.

I am planning on fixing loading local resources too, to use this child->parent fallback.

BUG= 12131 

Review URL: http://codereview.chromium.org/293037
------------------------------------------------------------------------

Comment 17 by js...@chromium.org, Oct 22 2009

Cira, would it be possible to break this "meta" bug into sub-issues? That way, we may 
have a better sense of what's done and what remains to do. BTW, thank you for your 
great work !

Comment 18 by cira@chromium.org, Oct 22 2009

I've just sent list of unsolved problems to Aaron. I can convert that list into 3 new 
bugs, and close this one.
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=29815 

------------------------------------------------------------------------
r29815 | cira@chromium.org | 2009-10-22 13:56:18 -0700 (Thu, 22 Oct 2009) | 13 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.cc?r1=29815&r2=29814
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util.h?r1=29815&r2=29814
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_l10n_util_unittest.cc?r1=29815&r2=29814
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_resource.cc?r1=29815&r2=29814
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/extension_resource_unittest.cc?r1=29815&r2=29814

Loading local resources uses improved fallback algorithm.

Before:
 _locales/current_locale/rel_path, then extension root/rel_path

Now:
 _locales/{current_locale, parents}/rel_path, then extension root/rel_path

This change syncs local resource loading with catalog loading algo.

BUG= 12131 

Review URL: http://codereview.chromium.org/316013
------------------------------------------------------------------------

Comment 20 by cira@chromium.org, Oct 28 2009

Status: Fixed
I'll open 3 new bugs with details that need to be addressed, and close this mega bug.
Not ready for Mstone-4.
Labels: Feature-Extensions

Comment 22 by god...@gmail.com, May 29 2010

Could you please add the issue numbers for the sub issues you created?

I am looking for the blessed way to internationalize user-visible strings in HTML 
without resorting to JavaScript (ideally).

I'm also waiting to see if resources such as  *.html and *.jpg can be loaded as the 
localized resource with involving javascript. The i18n documents lack any notices of 
development direction.

Please advise the sub issue #'s that were created.
Sorry, the above should read "... _without_ involving javascript."

Comment 25 by cira@chromium.org, Jun 4 2010

I did a quick search for "owner:cira" for all bugs, and got some of the sub-issues:

26144, 39899, 35208, 27361, 27360, 27359...
Labels: -I18N bulkmove Feature-I18N
Implement APIs to support I18N of extensions. This includes:

- Strings in HTML
- Strings in the manifest
- APIs to get strings dynamically from JavaScript (eg for use in alerts)
Project Member

Comment 28 by bugdroid1@chromium.org, Oct 13 2012

Labels: Restrict-AddIssueComment-Commit
This issue has been closed for some time. No one will pay attention to new comments.
If you are seeing this bug or have new data, please click New Issue to start a new bug.
Project Member

Comment 29 by bugdroid1@chromium.org, Mar 10 2013

Labels: -Mstone-4 -Feature-Extensions -Feature-I18N Cr-Platform-Extensions M-4 Cr-UI-I18N
Project Member

Comment 30 by bugdroid1@chromium.org, Mar 13 2013

Labels: -Restrict-AddIssueComment-Commit Restrict-AddIssueComment-EditIssue
Project Member

Comment 31 by bugdroid1@chromium.org, Mar 20 2013

Labels: -Cr-UI-I18N Cr-UI-Internationalization

Sign in to add a comment