How to add a string
How to add an Android/Java stringIf you are contributing code to the Google Chrome version of Chromium, then this is all you need to do. The process of translating the string from en-US to the other languages will be handled by Google's translation team.
If you are adding a string to Chromium that you want for a different version of Chromium and you want to have translation in other languages, you need to add translations to the .xtb files in /src/chrome/app/resources. These files have a translation id that is based on a hash of the en-US string (see /src/tools/grit/grit/extern/FP.py for details on the hash).
Overview of files
Strings for the main UI language (en-US) get added to these files. If the string is used in webkit (i.e., shows up in content), then add the string to webkit_strings.grd. Otherwise, add the string to generated_resources.grd. These grd files are the "pivot" format on which everything else is based.
These files contain translations in each language of the en-US strings in the grd files.
GRIT (Google Resource and Internationalization Tool) is a script that that runs during the build that combines the grd files with the xtb files to generate a C++ header file with string IDs and a Windows resource file (.rc) containing the strings.
Similar to the generated_resources.grd and webkit_strings.grd but these files allow for having strings that refer to Google Chrome vs Chromium. These files should define strings for the same IDs, they just have different translations. Visual Studio will build the correct file based on an environment variable.
This file contains values that vary by locale, but are not sent to translators (i.e., they are used by developers). For example, the default font size depends on locale, so we put it in this file. We put the en-US value in locale_settings.grd and for all other locales, we put values in the locale_settings*.xtb files. You must provide a value for all locales for the grd file to build properly.
Tool that tries to find unused strings. This tool does not currently take <if> statements into consideration.
Workflow for how strings get translated for Google Chrome
Strings are included on all platforms by default and will needlessly increase the download size if not used. It's important to judiciously surround strings with an appropriate <if> clauses to ensure that they are only included on the platforms where they're actually used.