blob: 8f7a7c2fc61c7d93b6ff052f5e6eeb105b3c8aed [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
This directory contains a java program that can be used to flag possible
problems in the translation of the localized message files.
This program can be run at any time, for instance, to identify where
the localized files are lagging behind their English counterparts.
But, it is anticipated to be run before a check-in of changes to one of
the localization files, or before a release.
It is intended to be run on the source of the messages; as such, there is
no point in including this into any runtime jar file.
The output of the program requires manual perusal, because many aspects
checked may be acceptable in a particular language, or translation, or for
a specific message. As such, it is not part of the full build.
Files in this directory
=======================
LocCompare.java
This file is the source code used to generate a test class for
translated messages.
build.xml
This file will build the class into the svnroot/classes directory
README
This file
Syntax
======
java [-Dderbysvntop=<svntop>] [-Dtranslations=<newloc>] LocCompare [<territories>][?|-h]
where
svntop = top of derby svn tree for branch or trunk
default is current dir is the top
newloc = temporary location for translated files
drda locale files are expected in a subdir 'drda'
default is same file structure as for the english files
territories = one translated territories, or 'all'
where all means:
{cs,de_DE,es,fr,hu,it,ja_JP,ko_KR,pl,pt_BR,ru,zh_CN,zh_TW}
?|-h = you can pass on -h or ? to get this message
you can also pass -Dtvtdebug=true in to see more comments.
Examples:
--------------------
compares french:
java -Dderbysvntop=c:/derby/trunk LocCompare fr
compares unexisting french french:
java -Dderbysvntop=c:/derby/trunk LocCompare fr
compares all territories listed in program:
java -Dderbysvntop=c:/derby/trunk LocCompare
compares all territories listed in program in 'chatty' mode:
java -Dtvtdebug=true -Dderbysvntop=c:/derby/trunk LocCompare
gets usage message
java LocCompare -h
--------------------
Files accessed by the program
=============================
always: English:
svnroot/java/engine/org/apache/derby/loc/messages_en.properties
svnroot/java/tools/org/apache/derby/loc/toolsmessages.properties
svnroot/java/tools/org/apache/derby/loc/sysinfoMessages.properties
svnroot/java/drda/org/apache/derby/loc/drda/messages_en.properties
svnroot/java/drda/org/apache/derby/loc/drda/servlet_messages.properties
translated files in the following languages:
cs - Czech
de_DE - German
es - Spanish
fr - French
hu - Hungarian
it - Italian
ja_JP - Japanese
ko_KR - Korean
pl - Polish
pt_BR - Portuguese
ru - Russian
zh_CN - Chinese
zh_TW - Traditional Chinese
By default, the translated files are expected to be in the same location
as the English files indicated above, i.e. for German engine messages the
file is expected to be:
svnroot/java/engine/org/apache/derby/loc/messages_de_DE.properties
(For convenience, it is also possible to specify a temporary location, using
the -Dtranslations= property. In this case, it is necessary to place
the network server files in a subdirectory because the main file server file
has the same name as the engine messages file.)
Details about the program
=========================
The program has two modes, a 'chatty' mode, which shows a lot of information,
and a normal mode, which only flags possible problems and Failures.
The chatty mode is initialized by specifying the property -Dtvtdebug=true.
In the chatty mode, every message string in the English message files is
printed out with - if existing - its localized counterpart.
In the normal mode, only messages that have been identified with a possible
problem will be printed.
The messages are printed with a < for English, and > for the localization:
Example:
--------------------
*********************************************
*********************************************
Now comparing
< c:/p4/p4main/opensource/java/engine/org/apache/derby/loc/messages_en.properties
> c:/p4/p4main/opensource/java/engine/org/apache/derby/loc/messages_fr.properties
===============
en: < 07009=No input parameters.
fr: > 07009=Aucun param\u00e8tre d'entr\u00e9e.
WARNING - found single single quotes - quotes need to be doubled
===============
--------------------
The program will flag the following problems:
- missing file
- missing message
- message containing characters outside the range 0x00-0x1f (which are ASCII) and 0x7f-0xff - message requiring double quotes but having only one
- message not having same number of parameters as English
- unmatched curly braces ('{' and '}')
- unmatched number of uppercased strings
and warn about the following:
- if the number of the following characters in the translated message is
different from the English:
'%', ';', ':', '_', '=', '(', ')', '+', '/', '[', ']', '\'
- if the strings or parameters, or their sequence within curly braces is different
- for file toolsmessages*.properties, if there are double single quotes in a string
without replacements
- if there are single quotes where they should be doubled up
- different uppercased strings
In addition, the chatty mode will describe successful comparisons.