![]() |
|||||||||||
|
code table filesFor advanced openCRX administrators there is a fast procedure to create code table files for a new locale xx_YY:
This "manual" management of localized files, however, makes it rather difficult to maintain consistency across multiple locales if code tables are modified/extended. The tools code-merge and code-split exist to help you manage and maintain a large number of locales. With code-merge you can pull together information from several locales and create XML files that are easy to edit, with code-split you can push the relevant information back into the respective locale files. The automated approach with code-merge and code-split offers the following advantages:
Furthermore, code-merge and code-split support locale-migration as follows:
Hence, we strongly encourage you to use the provided tools code-merge and code-split and do not recommend to edit individual files manually unless you know exactly what you are doing. In a first step, you run code-merge to create merged code table files containing place holders for your new locale xx_YY (and optionally other locales in addition to the default locale en_US to have more "examples" available for the translation process). Then you edit the merged code table files to add the translated strings for the new locale xx_YY. Once you are done with the translations you run code-split to extract the relevant files for each locale from the merged code table files. The following steps will guide you through the process of creating the code table files for the new locale xx_YY:
Example 4-5. example output of code-merge C:\temp\opencrx-core-CRX.war\WEB-INF\config\code>ant -f C:\opencrx\core\build.xml code-merge -Darg.sourceDir=%CD% -Darg.targetDir=%CD% -Darg.locale=xx_YY
Buildfile: C:\opencrx\core\build.xml
code-merge:
[java] sourceDir=C:\temp\opencrx-core-CRX.war\WEB-INF\config\code
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\en_US\accountcategory.xml
[java] writing file C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\accountcategory.xml
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\en_US\accountstate.xml
[java] writing file C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\accountstate.xml
...
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\en_US\utcoffset.xml
[java] writing file C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\utcoffset.xml
[java] shutdown
BUILD SUCCESSFUL
Total time: 7 secondscode-merge creates merged code table files in the directory C:\temp\opencrx-core-CRX.war\config\code. These merged files contain all the CodeValueContainers with CodeValueEntries: Example 4-6. example CodeValueEntry containing information for the locale en_US (default, always included) and gaps for the newly created locale xx_YY ...
<CodeValueContainer name="accountCategory">
<CodeValueEntry code="0">
<en_US_short> NA</en_US_short>
<en_US_long> N/A</en_US_long>
<xx_YY_short></xx_YY_short>
<xx_YY_long></xx_YY_long>
</CodeValueEntry>
.
...You can now use any editor suitable to edit UTF-8 encoded files to add the translations for the locale xx_YY. You simply insert the translated string between the opening tag <xx_YY> and the closing tag </xx_YY>. If you have access to an xml editor that features a grid view (e.g. XMLfox or xmlspy) it is almost like filling in a spreadsheet.
As you will realize, there are quite a lot of strings to translate. However, you might get away with translating a subset of the existing code values by making use of the Fallback Mechanism built into openCRX in the case where no code value string exists for a particular locale. The fallback mechanism is explained in detail in Fallback Mechanism.
Once you are done with the translations you need to extract the relevant files for each locale from the merged code table files. This is done with code-split.
Example 4-7. example output of code-split C:\temp\opencrx-core-CRX.war\WEB-INF\config\code>ant -f C:\opencrx\core\build.xml code-split -Darg.sourceDir=%CD% -Darg.targetDir=%CD% -Darg.locale=xx_YY
Buildfile: C:\opencrx\core\build.xml
code-split:
[java] sourceDir=C:\temp\opencrx-core-CRX.war\WEB-INF\config\code
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\en_US\accountcategory.xml
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\accountcategory.xml
[java] writing file C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\xx_YY\accountcategory.xml
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\en_US\accountstate.xml
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\accountstate.xml
[java] writing file C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\xx_YY\accountstate.xml
...
[java] loading C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\utcoffset.xml
[java] writing file C:\temp\opencrx-core-CRX.war\WEB-INF\config\code\xx_YY\utcoffset.xml
[java] shutdown
BUILD SUCCESSFUL
Total time: 7 secondscode-split creates all the required directories and files for the new locale xx_YY. In particular, the directory C:\temp\opencrx-core-CRX.war\config\code should now contain a subdirectory xx_YY with all the code table files specific to locale xx_YY.
|
||||||||||