summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornewt@chromium.org <newt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-16 17:54:42 +0000
committernewt@chromium.org <newt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-16 17:54:42 +0000
commit8f097c2739f3ff5099cea0c64a9e18943b16d419 (patch)
tree76db5a7ee81b04f27730d6de47923dd13f96dba7
parent5061d15833c78f4e13b64c9133e556954bc3f7e4 (diff)
downloadchromium_src-8f097c2739f3ff5099cea0c64a9e18943b16d419.zip
chromium_src-8f097c2739f3ff5099cea0c64a9e18943b16d419.tar.gz
chromium_src-8f097c2739f3ff5099cea0c64a9e18943b16d419.tar.bz2
Re-land "[Android] Generate localized strings.xml files at build time."
This generates localized strings.xml files (e.g. values-fr/strings.xml) from grd and xtb files at build time. This means we no longer need to check in localized strings.xml files. Note: the xtb files are empty until translations are available. Benefits: - 41 fewer extraneous results when grepping Java string IDs - Switching from maintaining strings in strings.xml over to using a grd file is One Trivial CL* away: just include English in the list of languages for which we generate strings.xml files. *Restrictions may apply Originally landed as https://codereview.chromium.org/11659006/ This can be re-landed as of https://codereview.chromium.org/11880050/ BUG=167248 TBR=yfriedman@chromium.org,thakis,jam@chromium.org,cjhopman,shashishekhar@chromium.org Review URL: https://codereview.chromium.org/11967005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177170 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--build/java.gypi36
-rw-r--r--build/java_apk.gypi53
-rw-r--r--chrome/chrome.gyp1
-rw-r--r--content/content.gyp1
-rw-r--r--ui/ui.gyp1
5 files changed, 78 insertions, 14 deletions
diff --git a/build/java.gypi b/build/java.gypi
index f958132..bd3976c 100644
--- a/build/java.gypi
+++ b/build/java.gypi
@@ -44,6 +44,8 @@
# R_package - The java package in which the R class (which maps resources to
# integer IDs) should be generated, e.g. org.chromium.content.
# R_package_relpath - Same as R_package, but replace each '.' with '/'.
+# java_strings_grd - The name of the grd file from which to generate localized
+# strings.xml files, if any.
{
'dependencies': [
@@ -65,17 +67,20 @@
'generated_R_dirs': [],
'additional_R_files': [],
'has_java_resources%': 0,
+ 'java_strings_grd%': '',
},
'conditions': [
['has_java_resources == 1', {
'variables': {
'res_dir': '<(java_in_dir)/res',
- 'crunched_res_dir': '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/res',
+ 'out_res_dir': '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/res',
'R_dir': '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/java_R',
'R_file': '<(R_dir)/<(R_package_relpath)/R.java',
'R_text_file': '<(R_dir)/R.txt',
'generated_src_dirs': ['<(R_dir)'],
'additional_input_paths': ['<(R_file)'],
+ # grit_grd_file is used by grit_action.gypi, included below.
+ 'grit_grd_file': '<(java_in_dir)/strings/<(java_strings_grd)',
},
'all_dependent_settings': {
'variables': {
@@ -87,15 +92,40 @@
# Dependent APKs include this target's resources via
# additional_res_dirs and additional_res_packages.
- 'additional_res_dirs': ['<(crunched_res_dir)', '<(res_dir)'],
+ 'additional_res_dirs': ['<(out_res_dir)', '<(res_dir)'],
'additional_res_packages': ['<(R_package)'],
},
},
+ 'conditions': [
+ ['java_strings_grd != ""', {
+ 'actions': [
+ {
+ 'action_name': 'generate_localized_strings_xml',
+ 'variables': {
+ 'grit_out_dir': '<(out_res_dir)',
+ # resource_ids is unneeded since we don't generate .h headers.
+ 'grit_resource_ids': '',
+ },
+ 'includes': ['../build/grit_action.gypi'],
+ },
+ ],
+ }],
+ ],
'actions': [
# Generate R.java and crunch image resources.
{
'action_name': 'process_resources',
'message': 'processing resources for <(package_name)',
+ 'conditions': [
+ ['java_strings_grd != ""', {
+ 'inputs': [
+ # TODO(newt): replace this with .../values/strings.xml once
+ # the English strings.xml is generated as well? That would be
+ # simpler and faster and should be equivalent.
+ '<!@pymod_do_main(grit_info <@(grit_defines) --outputs "<(out_res_dir)" <(grit_grd_file))',
+ ],
+ }],
+ ],
'inputs': [
'<(DEPTH)/build/android/process_resources.py',
'<!@(find <(res_dir) -type f)',
@@ -110,7 +140,7 @@
'--R-package', '<(R_package)',
'--R-dir', '<(R_dir)',
'--res-dir', '<(res_dir)',
- '--crunched-res-dir', '<(crunched_res_dir)',
+ '--crunched-res-dir', '<(out_res_dir)',
],
},
],
diff --git a/build/java_apk.gypi b/build/java_apk.gypi
index 841a469..a887663 100644
--- a/build/java_apk.gypi
+++ b/build/java_apk.gypi
@@ -57,6 +57,8 @@
# resource_dir - The directory for resources.
# R_package - A custom Java package to generate the resource file R.java in.
# By default, the package given in AndroidManifest.xml will be used.
+# java_strings_grd - The name of the grd file from which to generate localized
+# strings.xml files, if any.
{
'variables': {
@@ -76,6 +78,8 @@
'additional_res_dirs': [],
'additional_res_packages': [],
'is_test_apk%': 0,
+ 'java_strings_grd%': '',
+ 'grit_grd_file%': '',
},
'sources': [
'<@(native_libs_paths)'
@@ -109,6 +113,36 @@
],
},
],
+ 'conditions': [
+ ['R_package != ""', {
+ 'variables': {
+ # We generate R.java in package R_package (in addition to the package
+ # listed in the AndroidManifest.xml, which is unavoidable).
+ 'additional_res_dirs': ['<(DEPTH)/build/android/ant/empty/res'],
+ 'additional_res_packages': ['<(R_package)'],
+ 'additional_R_text_files': ['<(PRODUCT_DIR)/<(package_name)/R.txt'],
+ },
+ }],
+ ['java_strings_grd != ""', {
+ 'variables': {
+ 'out_res_dir': '<(SHARED_INTERMEDIATE_DIR)/<(package_name)_apk/res',
+ 'additional_res_dirs': ['<(out_res_dir)'],
+ # grit_grd_file is used by grit_action.gypi, included below.
+ 'grit_grd_file': '<(java_in_dir)/strings/<(java_strings_grd)',
+ },
+ 'actions': [
+ {
+ 'action_name': 'generate_localized_strings_xml',
+ 'variables': {
+ 'grit_out_dir': '<(out_res_dir)',
+ # resource_ids is unneeded since we don't generate .h headers.
+ 'grit_resource_ids': '',
+ },
+ 'includes': ['../build/grit_action.gypi'],
+ },
+ ],
+ }],
+ ],
'actions': [
{
'action_name': 'ant_<(package_name)_apk',
@@ -129,6 +163,14 @@
['resource_dir!=""', {
'inputs': ['<!@(find <(java_in_dir)/<(resource_dir) -name "*")']
}],
+ ['java_strings_grd != ""', {
+ 'inputs': [
+ # TODO(newt): replace this with .../values/strings.xml once
+ # the English strings.xml is generated as well? That would be
+ # simpler and faster and should be equivalent.
+ '<!@pymod_do_main(grit_info <@(grit_defines) --outputs "<(out_res_dir)" <(grit_grd_file))',
+ ],
+ }],
['is_test_apk == 1', {
'variables': {
'additional_res_dirs=': [],
@@ -181,15 +223,4 @@
]
},
],
- 'conditions': [
- ['R_package != ""', {
- 'variables': {
- # We generate R.java in package R_package (in addition to the package
- # listed in the AndroidManifest.xml, which is unavoidable).
- 'additional_res_dirs': ['<(DEPTH)/build/android/ant/empty/res'],
- 'additional_res_packages': ['<(R_package)'],
- 'additional_R_text_files': ['<(PRODUCT_DIR)/<(package_name)/R.txt'],
- },
- }],
- ],
}
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index 4b9c83c..f05fee7 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -1082,6 +1082,7 @@
'has_java_resources': 1,
'R_package': 'org.chromium.chrome',
'R_package_relpath': 'org/chromium/chrome',
+ 'java_strings_grd': 'android_chrome_strings.grd',
},
'includes': [
'../build/java.gypi',
diff --git a/content/content.gyp b/content/content.gyp
index cb1f23b..ae5334a4 100644
--- a/content/content.gyp
+++ b/content/content.gyp
@@ -303,6 +303,7 @@
'has_java_resources': 1,
'R_package': 'org.chromium.content',
'R_package_relpath': 'org/chromium/content',
+ 'java_strings_grd': 'android_content_strings.grd',
},
'conditions': [
['android_build_type == 0', {
diff --git a/ui/ui.gyp b/ui/ui.gyp
index 0f1e392..f074cdb 100644
--- a/ui/ui.gyp
+++ b/ui/ui.gyp
@@ -889,6 +889,7 @@
'has_java_resources': 1,
'R_package': 'org.chromium.ui',
'R_package_relpath': 'org/chromium/ui',
+ 'java_strings_grd': 'android_ui_strings.grd',
},
'dependencies': [
'../base/base.gyp:base_java',