提交 2c2b7c23 authored 作者: Thomas Mueller's avatar Thomas Mueller

Detect changes in messages again.

上级 6688cdb1
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
.translator=Thomas Mueller
02000=No data is available
07001=Invalid parameter count for {0}, expected count\: {1}
08000=Error opening database\: {0}
07001=Invalid parameter count for {0}, expected count: {1}
08000=Error opening database: {0}
08004=Wrong user name or password
21S02=Column count does not match
22003=Numeric value out of range
22012=Division by zero\: {0}
22025=Error in LIKE ESCAPE\: {0}
23000=Check constraint violation\: {0}
23001=Unique index or primary key violation\: {0}
23002=Referential integrity constraint violation\: {0}
23003=Referential integrity constraint violation\: {0}
40001=Deadlock detected. The current transaction was rolled back. Details\: {0}
22012=Division by zero: {0}
22025=Error in LIKE ESCAPE: {0}
23000=Check constraint violation: {0}
23001=Unique index or primary key violation: {0}
23002=Referential integrity constraint violation: {0}
23003=Referential integrity constraint violation: {0}
40001=Deadlock detected. The current transaction was rolled back. Details: {0}
42000=Syntax error in SQL statement {0}
42001=Syntax error in SQL statement {0}; expected {1}
42S01=Table {0} already exists
......@@ -24,15 +24,15 @@
90000=Function {0} must return a result set
90001=Method is not allowed for a query. Use execute or executeQuery instead of executeUpdate
90002=Method is only allowed for a query. Use execute or executeUpdate instead of executeQuery
90003=Hexadecimal string with odd number of characters\: {0}
90004=Hexadecimal string contains non-hex character\: {0}
90005=Value too long for column {0}\: {1}
90003=Hexadecimal string with odd number of characters: {0}
90004=Hexadecimal string contains non-hex character: {0}
90005=Value too long for column {0}: {1}
90006=NULL not allowed for column {0}
90007=The object is already closed
90008=Invalid value {0} for parameter {1}
90009=Cannot parse date constant {0}, cause\: {1}
90010=Cannot parse time constant {0}, cause\: {1}
90011=Cannot parse timestamp constant {0}, cause\: {1}
90009=Cannot parse date constant {0}, cause: {1}
90010=Cannot parse time constant {0}, cause: {1}
90011=Cannot parse timestamp constant {0}, cause: {1}
90012=Parameter {0} is not set
90013=Database {0} not found
90014=Error parsing {0}
......@@ -41,21 +41,21 @@
90017=Attempt to define a second primary key
90018=The connection was not closed by the application and is garbage collected
90019=Cannot drop the current user
90020=Database may be already in use\: {0}. Possible solutions\: close all other connection(s); use the server mode
90020=Database may be already in use: {0}. Possible solutions: close all other connection(s); use the server mode
90021=Data conversion error converting {0}
90022=Function {0} not found
90023=Column {0} must not be nullable
90024=Error while renaming file {0} to {1}
90025=Cannot delete file {0}
90026=Serialization failed, cause\: {0}
90027=Deserialization failed, cause\: {0}
90028=IO Exception\: {0}
90026=Serialization failed, cause: {0}
90027=Deserialization failed, cause: {0}
90028=IO Exception: {0}
90029=Currently not on an updatable row
90030=File corrupted while reading record\: {0}. Possible solution\: use the recovery tool
90031=IO Exception\: {0}; {1}
90030=File corrupted while reading record: {0}. Possible solution: use the recovery tool
90031=IO Exception: {0}; {1}
90032=User {0} not found
90033=User {0} already exists
90034=Log file error\: {0}, cause\: {1}
90034=Log file error: {0}, cause: {1}
90035=Sequence {0} already exists
90036=Sequence {0} not found
90037=View {0} not found
......@@ -64,14 +64,14 @@
90040=Admin rights are required for this operation
90041=Trigger {0} already exists
90042=Trigger {0} not found
90043=Error creating or initializing trigger {0} object, class {1}, cause\: {2}; see root cause for details
90044=Error executing trigger {0}, class {1}, cause \: {2}; see root cause for details
90043=Error creating or initializing trigger {0} object, class {1}, cause: {2}; see root cause for details
90044=Error executing trigger {0}, class {1}, cause : {2}; see root cause for details
90045=Constraint {0} already exists
90046=URL format error; must be {0} but is {1}
90047=Version mismatch, driver version is {0} but server version is {1}
90048=Unsupported database file version or invalid file header in file {0}
90049=Encryption error in file {0}
90050=Wrong password format, must be\: file password <space> user password
90050=Wrong password format, must be: file password <space> user password
90051=Statement was canceled or the session timed out
90052=Subquery is not a single column query
90053=Scalar subquery contains more than one row
......@@ -82,19 +82,19 @@
90058=Commit or rollback is not allowed within a trigger
90059=Ambiguous column name {0}
90060=Unsupported file lock method {0}
90061=Exception opening port {0} (port may be in use), cause\: {1}
90061=Exception opening port {0} (port may be in use), cause: {1}
90062=Error while creating file {0}
90063=Savepoint is invalid\: {0}
90063=Savepoint is invalid: {0}
90064=Savepoint is unnamed
90065=Savepoint is named
90066=Duplicate property {0}
90067=Connection is broken\: {0}
90067=Connection is broken: {0}
90068=Order by expression {0} must be in the result list in this case
90069=Role {0} already exists
90070=Role {0} not found
90071=User or role {0} not found
90072=Roles and rights cannot be mixed
90073=Matching Java methods must have different parameter counts\: {0} and {1}
90073=Matching Java methods must have different parameter counts: {0} and {1}
90074=Role {0} already granted
90075=Column is part of the index {0}
90076=Function alias {0} already exists
......@@ -110,29 +110,29 @@
90086=Class {0} not found
90087=Method {0} not found
90088=Unknown mode {0}
90089=Collation cannot be changed because there is a data table\: {0}
90089=Collation cannot be changed because there is a data table: {0}
90090=Schema {0} cannot be dropped
90091=Role {0} cannot be dropped
90092=This Java version is not supported (Java 1.4 is required)
90093=Clustering error - database currently runs in standalone mode
90094=Clustering error - database currently runs in cluster mode, server list\: {0}
90095=String format error\: {0}
90094=Clustering error - database currently runs in cluster mode, server list: {0}
90095=String format error: {0}
90096=Not enough rights for object {0}
90097=The database is read only
90098=The database has been closed
90099=Error setting database event listener {0}, cause\: {1}
90099=Error setting database event listener {0}, cause: {1}
90100=No disk space available
90101=Wrong XID format\: {0}
90102=Unsupported compression options\: {0}
90103=Unsupported compression algorithm\: {0}
90101=Wrong XID format: {0}
90102=Unsupported compression options: {0}
90103=Unsupported compression algorithm: {0}
90104=Compression error
90105=Exception calling user-defined function
90106=Cannot truncate {0}
90107=Cannot drop {0} because {1} depends on it
90108=Out of memory.
90109=View {0} is invalid\: {1}
90109=View {0} is invalid: {1}
90110={0} out of range
90111=Error accessing linked table with SQL statement {0}, cause\: {1}
90111=Error accessing linked table with SQL statement {0}, cause: {1}
90112=Row not found when trying to delete from index {0}
90113=Unsupported connection setting {0}
90114=Constant {0} already exists
......@@ -142,27 +142,27 @@
90118=Cannot drop table {0}
90119=User data type {0} already exists
90120=User data type {0} not found
90121=Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT\=FALSE" to the db URL)
90122=Operation not supported for table {0} when there are views on the table\: {1}
90121=Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL)
90122=Operation not supported for table {0} when there are views on the table: {1}
90123=Cannot mix indexed and non-indexed parameters
90124=File not found\: {0}
90124=File not found: {0}
90125=Invalid class, expected {0} but got {1}
90126=Database is not persistent
90127=The result set is not updatable. The query must select all columns from a unique key. Only one table may be selected.
90128=The result set is not scrollable and can not be reset. You may need to use conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ..).
90129=Transaction {0} not found
90130=This method is not allowed for a prepared statement; use a regular statement instead.
90131=Concurrent update in table {0}\: another transaction has updated or deleted the same row
90131=Concurrent update in table {0}: another transaction has updated or deleted the same row
90132=Aggregate {0} not found
90133=Cannot change the setting {0} when the database is already open
90134=Access to the class {0} is denied
90135=The database is open in exclusive mode; can not open additional connections
90136=Unsupported outer join condition\: {0}
90137=Can only assign to a variable, not to\: {0}
90138=Invalid database name\: {0}
90139=The public static Java method was not found\: {0}
90136=Unsupported outer join condition: {0}
90137=Can only assign to a variable, not to: {0}
90138=Invalid database name: {0}
90139=The public static Java method was not found: {0}
90140=The result set is readonly. You may need to use conn.createStatement(.., ResultSet.CONCUR_UPDATABLE).
HY000=General error\: {0}
HY004=Unknown data type\: {0}
HYC00=Feature not supported\: {0}
HY000=General error: {0}
HY004=Unknown data type: {0}
HYC00=Feature not supported: {0}
HYT00=Timeout trying to lock table {0}
......@@ -34,7 +34,7 @@ adminTranslateStart=Translate
helpAction=Action
helpAddAnotherRow=Add another row
helpAddDrivers=Adding Database Drivers
helpAddDriversText=Additional database drivers can be registered by adding the Jar file location of the driver to the the environment variables H2DRIVERS or CLASSPATH. Example (Windows)\: to add the database driver library C\:\\Programs\\hsqldb\\lib\\hsqldb.jar, set the environment variable H2DRIVERS to C\:\\Programs\\hsqldb\\lib\\hsqldb.jar.
helpAddDriversText=Additional database drivers can be registered by adding the Jar file location of the driver to the the environment variables H2DRIVERS or CLASSPATH. Example (Windows): to add the database driver library C:/Programs/hsqldb/lib/hsqldb.jar, set the environment variable H2DRIVERS to C:/Programs/hsqldb/lib/hsqldb.jar.
helpAddRow=Add a new row
helpCommandHistory=Shows the Command History
helpCreateTable=Create a new table
......
......@@ -48,6 +48,8 @@ public class PrepareTranslation {
private void run() throws Exception {
String baseDir = "src/docsrc/textbase";
prepare(baseDir, "src/main/org/h2/res", true);
prepare(baseDir, "src/main/org/h2/server/web/res", true);
// convert the txt files to properties files
PropertiesToUTF8.textUTF8ToProperties("src/docsrc/text/_docs_de.utf8.txt",
......@@ -59,7 +61,7 @@ public class PrepareTranslation {
extractFromHtml("docs/html", "src/docsrc/text");
// add missing translations and create a new baseline
prepare(baseDir, "src/docsrc/text");
prepare(baseDir, "src/docsrc/text", false);
// create the translated documentation
buildHtml("src/docsrc/text", "docs/html", "en");
......@@ -88,12 +90,12 @@ public class PrepareTranslation {
new File(targetDir).mkdirs();
// load the main 'translation'
String propName = templateDir + "/_docs_" + MAIN_LANGUAGE + ".properties";
Properties prop = SortedProperties.loadProperties(propName);
Properties prop = load(propName, false);
propName = templateDir + "/_docs_" + language + ".properties";
if (!(new File(propName)).exists()) {
throw new IOException("Translation not found: " + propName);
}
Properties transProp = SortedProperties.loadProperties(propName);
Properties transProp = load(propName, false);
for (Object k : transProp.keySet()) {
String key = (String) k;
String t = transProp.getProperty(key);
......@@ -345,9 +347,9 @@ public class PrepareTranslation {
}
new File(target).mkdirs();
String propFileName = target + "/_docs_" + MAIN_LANGUAGE + ".properties";
Properties old = SortedProperties.loadProperties(propFileName);
Properties old = load(propFileName, false);
prop.putAll(old);
prop.store(propFileName);
store(prop, propFileName, false);
String t = template.toString();
if (templateIsCopy && !t.equals(xml)) {
for (int i = 0; i < Math.min(t.length(), xml.length()); i++) {
......@@ -388,32 +390,52 @@ public class PrepareTranslation {
prop.setProperty(document, s);
}
private void prepare(String baseDir, String path) throws IOException {
private void prepare(String baseDir, String path, boolean utf8) throws IOException {
String suffix = utf8 ? ".prop" : ".properties";
File dir = new File(path);
File main = null;
ArrayList<File> translations = new ArrayList<File>();
for (File f : dir.listFiles()) {
if (f.getName().endsWith(".properties") && f.getName().indexOf('_') >= 0) {
if (f.getName().endsWith("_" + MAIN_LANGUAGE + ".properties")) {
if (f.getName().endsWith(suffix) && f.getName().indexOf('_') >= 0) {
if (f.getName().endsWith("_" + MAIN_LANGUAGE + suffix)) {
main = f;
} else {
translations.add(f);
}
}
}
SortedProperties p = SortedProperties.loadProperties(main.getAbsolutePath());
Properties base = SortedProperties.loadProperties(baseDir + "/" + main.getName());
p.store(main.getAbsolutePath());
SortedProperties p = load(main.getAbsolutePath(), utf8);
Properties base = load(baseDir + "/" + main.getName(), utf8);
store(p, main.getAbsolutePath(), utf8);
for (File trans : translations) {
String language = trans.getName();
language = language.substring(language.lastIndexOf('_') + 1, language.lastIndexOf('.'));
prepare(p, base, trans);
prepare(p, base, trans, utf8);
}
p.store(baseDir + "/" + main.getName());
store(p, baseDir + "/" + main.getName(), utf8);
}
private void prepare(Properties main, Properties base, File trans) throws IOException {
SortedProperties p = SortedProperties.loadProperties(trans.getAbsolutePath());
private static SortedProperties load(String fileName, boolean utf8) throws IOException {
if (utf8) {
String s = new String(IOUtils.readBytesAndClose(new FileInputStream(fileName), -1), "UTF-8");
return SortedProperties.fromLines(s);
}
return SortedProperties.loadProperties(fileName);
}
private static void store(SortedProperties p, String fileName, boolean utf8) throws IOException {
if (utf8) {
String s = p.toLines();
FileOutputStream f = new FileOutputStream(fileName);
f.write(s.getBytes("UTF-8"));
f.close();
} else {
p.store(fileName);
}
}
private void prepare(Properties main, Properties base, File trans, boolean utf8) throws IOException {
SortedProperties p = load(trans.getAbsolutePath(), utf8);
Properties oldTranslations = new Properties();
for (Object k : base.keySet()) {
String key = (String) k;
......@@ -478,7 +500,7 @@ public class PrepareTranslation {
p.remove(key);
}
}
p.store(trans.getAbsolutePath());
store(p, trans.getAbsolutePath(), utf8);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论