提交 cc5b37eb authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 9ddb5d5f
......@@ -107,7 +107,7 @@ This database supports the following transaction isolation levels:
</p>
<ul>
<li><b>Read Committed</b><br />
This is the default level.
This is the default level.
Read locks are released immediately.
Higher concurrency is possible when using this level.<br />
To enable, execute the SQL statement 'SET LOCK_MODE 3'<br />
......@@ -640,7 +640,7 @@ This method does not require a watchdog thread actively polling (reading) the sa
file every second. The problem with this method is, if the file is stored on a network
share, two processes (running on different computers) could still open the same
database files, if they do not have a direct TCP/IP connection.
<p>
</p>
<br /><a name="sql_injection"></a>
<h2>Protection against SQL Injection</h2>
......@@ -649,16 +649,20 @@ database files, if they do not have a direct TCP/IP connection.
This database engine provides a solution for the security vulnerability known as 'SQL Injection'.
Here is a short description of what SQL injection means.
Some applications build SQL statements with embedded user input such as:
</p>
<pre>
String sql = "SELECT * FROM USERS WHERE PASSWORD='"+pwd+"'";
ResultSet rs = conn.createStatement().executeQuery(sql);
</pre>
<p>
If this mechanism is used anywhere in the application, and user input is not correctly filtered or encoded,
it is possible for a user to inject SQL functionality or statements by using specially built input
such as (in this example) this password: ' OR ''='. In this case the statement becomes:
</p>
<pre>
SELECT * FROM USERS WHERE PASSWORD='' OR ''='';
</pre>
<p>
Which is always true no matter what the password stored in the database is.
For more information about SQL Injection, see Glossary and Links.
</p>
......@@ -667,18 +671,22 @@ For more information about SQL Injection, see Glossary and Links.
<p>
SQL Injection is not possible if user input is not directly embedded in SQL statements.
A simple solution for the problem above is to use a PreparedStatement:
</p>
<pre>
String sql = "SELECT * FROM USERS WHERE PASSWORD=?";
PreparedStatement prep = conn.prepareStatement(sql);
prep.setString(1, pwd);
ResultSet rs = prep.executeQuery();
</pre>
<p>
This database provides a way to enforce usage of parameters when passing user input
to the database. This is done by disabling embedded literals in SQL statements.
To do this, execute the statement:
</p>
<pre>
SET ALLOW_LITERALS NONE;
</pre>
<p>
Afterwards, SQL statements with text and number literals are not allowed any more.
That means, SQL statement of the form WHERE NAME='abc' or WHERE CustomerId=10 will fail.
It is still possible to use PreparedStatements and parameters as described above. Also, it is still possible to generate
......@@ -695,12 +703,14 @@ Disabling literals also means disabling hard-coded 'constant' literals. This dat
defining constants using the CREATE CONSTANT command. Constants can be defined only
when literals are enabled, but used even when literals are disabled. To avoid name clashes
with column names, constants can be defined in other schemas:
</p>
<pre>
CREATE SCHEMA CONST AUTHORIZATION SA;
CREATE CONSTANT CONST.ACTIVE VALUE 'Active';
CREATE CONSTANT CONST.INACTIVE VALUE 'Inactive';
SELECT * FROM USERS WHERE TYPE=CONST.ACTIVE;
</pre>
<p>
Even when literals are enabled, it is better to use constants instead
of hard-coded number or text literals in queries or views. With constants, typos are found at compile
time, the source code is easier to understand and change.
......@@ -709,10 +719,10 @@ time, the source code is easier to understand and change.
<h3>Using the ZERO() Function</h3>
<p>
It is not required to create a constant for the number 0 as there is already a built-in function ZERO():
</p>
<pre>
SELECT * FROM USERS WHERE LENGTH(PASSWORD)=ZERO();
</pre>
</p>
<br /><a name="security_protocols"></a>
<h2>Security Protocols</h2>
......
......@@ -31,6 +31,8 @@ Frequently Asked Questions
Is it Reliable?</a><br />
<a href="#gcj">
Is the GCJ version stable? Faster?</a><br />
<a href="#translate">
How to Translate this Project?</a><br />
<br /><a name="known_bugs"></a>
<h3>Are there any known bugs? When is the next release?</h3>
......@@ -151,4 +153,15 @@ Currently, the GCJ version is also slower than when using the Sun VM.
However, the startup of the GCJ version is faster than when using a VM.
</p>
<br /><a name="translate"></a>
<h3>How to Translate this Project?</h3>
<p>
The following files can be translated at the moment:
<pre>
src/main/org/h2/server/web/res/_text_*.properties
src/main/org/h2/res/_messages_*.properties
src/docsrc/text/_docs_*.utf8.txt
</pre>
</p>
</div></td></tr></table></body></html>
\ No newline at end of file
......@@ -41,21 +41,21 @@ Hypersonic SQL or HSQLDB. H2 is built from scratch.
<h3>Version 1.0 / TODO (Build xx)</h3><ul>
<li>Improved error messages: some tools can't show the root cause of an exception.
Adding the message of the root cause to the message of the thrown exception now where it makes sense.
Adding the message of the root cause to the message of the thrown exception now where it makes sense.
</li><li>The H2 Console can now connect to databases using JNDI. The driver class name must be a javax.naming.Context,
(for example javax.naming.InitialContext), and the URL the resource name (for example java:comp/env/jdbc/Test).
This should also work for linked tables.
(for example javax.naming.InitialContext), and the URL the resource name (for example java:comp/env/jdbc/Test).
This should also work for linked tables.
</li><li>Google translate did not work for the H2 homepage. It should be fixed now.
</li><li>The CONVERT function did not work with views when using UNION.
</li><li>The build now issues a warning if the source code is switched to the wrong version.
</li><li>The default lock mode is now read committed instead of serialized.
</li><li>PG server: data was truncated when reading large VARCHAR columns and decimal columns.
</li><li>PG server: when the same database was accessed multiple times using the PostgreSQL ODBC driver,
the pg_catalog schema update failed, and connecting to the database was not possible. Fixed.
the pg_catalog schema update failed, and connecting to the database was not possible. Fixed.
</li><li>Some file operations didn't work for files in the root directory. Fixed.
</li><li>In the Restore tool, the parameter -file did not work. Fixed.
</li><li>Two-phase commit: commit with transaction name was only supported in the recovery scan.
Now it is always supported.
Now it is always supported.
</li><li>The column name C_CURRENT_TIMESTAMP did not work in the last release.
</li><li>OpenOffice compatibility: support database name in column names.
</li></ul>
......@@ -1119,7 +1119,7 @@ Hypersonic SQL or HSQLDB. H2 is built from scratch.
</li><li>Access rights: Finer grained access control (grant access for specific functions)
</li><li>Support N'text'
</li><li>Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
</li><li>Support DESCRIPT like MySQL or Oracle (DESC[RIBE] {[schema.]object[@connect_identifier]})
</li><li>Support DESCRIBE like MySQL or Oracle (DESC|DESCRIBE {[schema.]object[@connect_identifier]})
</li></ul>
<h3>Not Planned</h3>
......
......@@ -14,10 +14,10 @@ function loadFrameset() {
}
function frameMe(frame) {
if(location.host.indexOf('h2database') < 0) {
// allow translation
return;
}
if(location.host.indexOf('h2database') < 0) {
// allow translation
return;
}
var frameset = "frame.html"; // name of the frameset page
if(frame == null) {
frame = 'main';
......
......@@ -1171,129 +1171,138 @@ Is it Reliable?
@faq_1009_a
Is the GCJ version stable? Faster?
@faq_1010_h3
@faq_1010_a
How to Translate this Project?
@faq_1011_h3
Are there any known bugs? When is the next release?
@faq_1011_p
@faq_1012_p
Usually, bugs get fixes as they are found. There is a release every few weeks. Here is the list of known and confirmed issues as of 2007-08-02:
@faq_1012_li
@faq_1013_li
Some problems have been found with right outer join. Internally, it is converted to left outer join, which does not always produce the same results as other databases when used in combination with other joins.
@faq_1013_h3
@faq_1014_h3
Is this Database Engine Open Source?
@faq_1014_p
@faq_1015_p
Yes. It is free to use and distribute, and the source code is included. See also under license.
@faq_1015_h3
@faq_1016_h3
My query is slow
@faq_1016_p
@faq_1017_p
Slow SELECT (or DELETE, UPDATE, MERGE) statement can have multiple reasons. Follow this checklist:
@faq_1017_li
@faq_1018_li
Run ANALYSE (see documentation for details).
@faq_1018_li
@faq_1019_li
Run the query with EXPLAIN and check if indexes are used (see documentation for details).
@faq_1019_li
@faq_1020_li
If required, create additional indexes and try again using ANALYZE and EXPLAIN.
@faq_1020_li
@faq_1021_li
If it doesn't help please report the problem.
@faq_1021_h3
@faq_1022_h3
How to Create a New Database?
@faq_1022_p
@faq_1023_p
By default, a new database is automatically created if it does not yet exist.
@faq_1023_h3
@faq_1024_h3
How to Connect to a Database?
@faq_1024_p
@faq_1025_p
The database driver is <code>org.h2.Driver</code> , and the database URL starts with <code>jdbc:h2:</code> . To connect to a database using JDBC, use the following code:
@faq_1025_h3
@faq_1026_h3
Where are the Database Files Stored?
@faq_1026_p
@faq_1027_p
When using database URLs like jdbc:h2:~/test, the database is stored in the user directory. For Windows, this is usually C:\Documents and Settings\&lt;userName&gt;. If the base directory is not set (as in jdbc:h2:test), the database files are stored in the directory where the application is started (the current working directory). When using the H2 Console application from the start menu, this is [Installation Directory]/bin. The base directory can be set in the database URL. A fixed or relative path can be used. When using the URL jdbc:h2:file:data/sample, the database is stored in the directory data (relative to the current working directory). The directory must exist. It is also possible to use the fully qualified directory (and for Windows, drive) name. Example: jdbc:h2:file:C:/data/test
@faq_1027_h3
@faq_1028_h3
What is the Size Limit (maximum size) of a Database?
@faq_1028_p
@faq_1029_p
The theoretical limit is currently 256 GB for the data. This number is excluding BLOB and CLOB data: Every CLOB or BLOB can be up to 256 GB as well. The size limit of the index data is 256 GB as well.
@faq_1029_p
@faq_1030_p
The maximum file size for FAT or FAT32 file systems is 4 GB. So if you use FAT or FAT32, the limit is 4 GB for the data.
@faq_1030_h3
@faq_1031_h3
Is it Reliable?
@faq_1031_p
@faq_1032_p
That is not easy to say. It is still a quite new product. A lot of tests have been written, and the code coverage of these tests is very high. Randomized stress tests are run regularly. But as this is a relatively new product, there are probably some problems that have not yet been found. Areas that are not 100% tested:
@faq_1032_li
@faq_1033_li
Platforms other than Windows XP and the Sun JVM 1.4 and 1.5
@faq_1033_li
@faq_1034_li
Data types BLOB, CLOB, VARCHAR_IGNORECASE, OTHER
@faq_1034_li
@faq_1035_li
Cluster mode, 2-Phase Commit, Savepoints
@faq_1035_li
@faq_1036_li
Server mode (well tested, but not as well as Embedded mode)
@faq_1036_li
@faq_1037_li
Multi-Threading and using multiple connections
@faq_1037_li
@faq_1038_li
Updatable result sets
@faq_1038_li
@faq_1039_li
Referential integrity and check constraints, Triggers
@faq_1039_li
@faq_1040_li
ALTER TABLE statements, Views, Linked Tables, Schema, UNION
@faq_1040_li
@faq_1041_li
Not all built-in functions are completely tested
@faq_1041_li
@faq_1042_li
The Optimizer may not always select the best plan
@faq_1042_li
@faq_1043_li
24/7 operation and large databases (500 MB and up)
@faq_1043_li
@faq_1044_li
Wide indexes with large VARCHAR or VARBINARY columns and / or with a lot of columns
@faq_1044_p
@faq_1045_p
Areas considered Experimental:
@faq_1045_li
@faq_1046_li
ODBC driver and the GCJ native version on Windows
@faq_1046_li
@faq_1047_li
Linear Hash Index
@faq_1047_li
@faq_1048_li
Compatibility modes for other databases (only some features are implemented)
@faq_1048_li
@faq_1049_li
The ARRAY data type and related functionality.
@faq_1049_h3
@faq_1050_h3
Is the GCJ version stable? Faster?
@faq_1050_p
@faq_1051_p
The GCJ version is not as stable as the Java version. When running the regression test with the GCJ version, sometimes the application just stops at what seems to be a random point without error message. Currently, the GCJ version is also slower than when using the Sun VM. However, the startup of the GCJ version is faster than when using a VM.
@faq_1052_h3
How to Translate this Project?
@faq_1053_p
The following files can be translated at the moment:
@features_1000_h1
Features
......@@ -2750,10 +2759,10 @@ Version 1.0 (Current)
Version 1.0 / TODO (Build xx)
@history_1010_li
Improved error messages: some tools can't show the root cause of an exception. Adding the message of the root cause to the message of the thrown exception now where it makes sense.
Improved error messages: some tools can't show the root cause of an exception. Adding the message of the root cause to the message of the thrown exception now where it makes sense.
@history_1011_li
The H2 Console can now connect to databases using JNDI. The driver class name must be a javax.naming.Context, (for example javax.naming.InitialContext), and the URL the resource name (for example java:comp/env/jdbc/Test). This should also work for linked tables.
The H2 Console can now connect to databases using JNDI. The driver class name must be a javax.naming.Context, (for example javax.naming.InitialContext), and the URL the resource name (for example java:comp/env/jdbc/Test). This should also work for linked tables.
@history_1012_li
Google translate did not work for the H2 homepage. It should be fixed now.
......@@ -2771,7 +2780,7 @@ The default lock mode is now read committed instead of serialized.
PG server: data was truncated when reading large VARCHAR columns and decimal columns.
@history_1017_li
PG server: when the same database was accessed multiple times using the PostgreSQL ODBC driver, the pg_catalog schema update failed, and connecting to the database was not possible. Fixed.
PG server: when the same database was accessed multiple times using the PostgreSQL ODBC driver, the pg_catalog schema update failed, and connecting to the database was not possible. Fixed.
@history_1018_li
Some file operations didn't work for files in the root directory. Fixed.
......@@ -2780,7 +2789,7 @@ Some file operations didn't work for files in the root directory. Fixed.
In the Restore tool, the parameter -file did not work. Fixed.
@history_1020_li
Two-phase commit: commit with transaction name was only supported in the recovery scan. Now it is always supported.
Two-phase commit: commit with transaction name was only supported in the recovery scan. Now it is always supported.
@history_1021_li
The column name C_CURRENT_TIMESTAMP did not work in the last release.
......@@ -4751,7 +4760,7 @@ Support N'text'
Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
@history_1677_li
Support DESCRIPT like MySQL or Oracle (DESC[RIBE] {[schema.]object[@connect_identifier]})
Support DESCRIBE like MySQL or Oracle (DESC|DESCRIBE {[schema.]object[@connect_identifier]})
@history_1678_h3
Not Planned
......
......@@ -131,7 +131,7 @@
90108=Stack\u00FCberlauf (Rekursive Abfrage oder Funktion?)
90109=View {0} ist ung\u00FCltig\: {1}
90110={0} ausserhalb des Bereichts
90111=\Fehler beim Zugriff auf eine verkn\u00FCpfte Tabelle mit SQL Befehl {0}, Grund\: {1}
90111=Fehler beim Zugriff auf eine verkn\u00FCpfte Tabelle mit SQL Befehl {0}, Grund\: {1}
90112=Zeile nicht gefunden beim L\u00F6schen von Index {0}
90113=Datenbank-Verbindungs Option {0} nicht unterst\u00FCtzt
90114=Konstante {0} besteht bereits
......
......@@ -29,9 +29,9 @@
90006=Pole nie moze byc puste {0}
90007=Objekt jest zamkniety
90008=Nieprawidlowa wartosc {0} parametru {1}
90009=\#Cannot parse date constant {0}, cause\: {1} \#Nie mozna parsowac stalej daty {0}
90010=\#Cannot parse time constant {0}, cause\: {1} \#Nie mozna parsowac stalej czasu {0}
90011=\#Cannot parse timestamp constant {0}, cause\: {1} \#Nie mozna parsowac stalej stepla czasu {0}
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=Parametr o numerze {0} nie jest ustalony
90013=Baza danych {0} nie znaleziona
90014=Blad parsowania {0}
......@@ -46,15 +46,15 @@
90023=Kolumna Column {0} nie moze zawierac wartosci pustej
90024=Blad w zmianie nazwy pliku {0} na {1}
90025=Nie mozna skasowac pliku {0}
90026=\#Serialization failed, cause\: {0} \#Blad serializacji
90027=\#Deserialization failed, cause\: {0} \#Blad deserializacji
90026=\#Serialization failed, cause\: {0}
90027=\#Deserialization failed, cause\: {0}
90028=Blad wejscia/wyjscia\: {0}
90029=Aktualny rekord nie pozwala na aktualizacje
90030=Uszkodzenie pliku podczas wczytywania rekordu\: {0}
90031=Polaczenie nie zostalo zamkniete
90032=Uzytkownik {0} nie istnieje
90033=Uzytkownik {0} juz istnieje
90034=\#Log file error\: {0}, cause\: {1} \#Blad pliku logu\: {0}
90034=\#Log file error\: {0}, cause\: {1}
90035=Sekwencja {0} juz istnieje
90036=Sekwencja {0} nie istnieje
90037=Widok {0} nie istnieje
......@@ -63,8 +63,8 @@
90040=Uprawnienia administratora sa wymagane do wykonania tej operacji
90041=Wyzwalacz {0} juz istnieje
90042=Wyzwalacz {0} nie istnieje
90043=\#Error creating or initializing trigger {0} object, class {1}, cause\: {2}; see root cause for details \#\#Blad tworzenia wyzwalacza, obiekt {0}, klasa {1}
90044=\#Error executing trigger {0}, class {1}, cause \: {2}; see root cause for details \#\#Blad wykonania wyzwalacza, obiekt {0}, klasa {1}
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=Ograniczenie {0} juz istnieje
90046=Bledny format URL; powinno byc {0} a jest {1}
90047=Niezgodna wersja sterownika, aktualna werjsa to {0} a wersja serwera to {1}
......@@ -81,7 +81,7 @@
90058=Zduplikowana tabela lub alias tabeli {0}
90059=Niejednoznaczna nazwa kolumny {0}
90060=Niewspierana metoda blokowania pliku {0}
90061=\#Exception opening port {0} (port may be in use), cause\: {1} \#Blad otwarcia portu {0} (prawdopodobnie port jest w uzyciu)
90061=\#Exception opening port {0} (port may be in use), cause\: {1}
90062=Blad tworzenia pliku {0}
90063=Zakladka jest nieprawidlowa\: {0}
90064=Zakladka jest bez nazwy
......@@ -119,7 +119,7 @@
90096=Brak wystarczajacych praw do obiektu {0}
90097=Baza danych jest w trybie tylko do odczytu
90098=Baza danych zostala zamknieta
90099=\#Error setting database event listener {0}, cause\: {1} \#Blad ustawienia sluchacza zdarzen bazy danych {0}
90099=\#Error setting database event listener {0}, cause\: {1}
90100=Brak miejsca na dysku
90101=Zly format XID\: {0}
90102=Nie wspierana opcja kompresji\: {0}
......@@ -131,7 +131,7 @@
90108=Przepelnienie stosu (rekursywna kwerenda lub funkcja?)
90109=Widok {0} jest nieprawidlowy
90110={0} poza zakresem
90111=\#Error accessing linked table with SQL statement {0}, cause\: {1} \#Blad dostepu do podlaczonej tabeli w wyrazeniu SQL {0}
90111=\#Error accessing linked table with SQL statement {0}, cause\: {1}
90112=Rekord nie znaleziony przy probie kasowania z indeksu {0}
90113=Ni ewspierana opcja polaczenia {0}
90114=Stala {0} juz istnieje
......
......@@ -79,7 +79,7 @@ resultEdit.editResult=Editer
resultEdit.save=Enregistrer
toolbar.all=Tous
toolbar.autoCommit=Validation automatique (auto commit)
toolbar.autoComplete=\#Auto-Complete
toolbar.autoComplete=\#Auto complete
toolbar.autoComplete.full=\#Full
toolbar.autoComplete.normal=\#Normal
toolbar.autoComplete.off=\#Off
......
......@@ -79,7 +79,7 @@ resultEdit.editResult=\u7F16\u8F91\u7ED3\u679C\u96C6
resultEdit.save=\u4FDD\u5B58
toolbar.all=\u5168\u90E8
toolbar.autoCommit=\u81EA\u52A8\u63D0\u4EA4
toolbar.autoComplete=\#Auto-Complete
toolbar.autoComplete=\#Auto complete
toolbar.autoComplete.full=\#Full
toolbar.autoComplete.normal=\#Normal
toolbar.autoComplete.off=\#Off
......
......@@ -25,7 +25,7 @@ INSERT INTO ITEM VALUES(26,
</li><li>The per session undo log can now be disabled.
</li><li>Referential integrity can now be disabled.
</li><li>To avoid memory problems when using large transactions,
h2.defaultMaxMemoryUndo is now 50000.
h2.defaultMaxMemoryUndo is now 50000.
</li><li>DEFAULT_MAX_LENGTH_INPLACE_LOB is now 1024.
</li><li>The cache size is now measured in KB.
</li><li>Optimization for NOT, boolean columns, and certain joins.
......
......@@ -59,10 +59,15 @@ public class CheckTextFiles {
}
}
if(name.endsWith(".html") && name.indexOf("_ja") > 0) {
int todoRemoveJapaneseFiles;
// Japanese html files are UTF-8 at this time
check = false;
ignore = true;
}
if(name.endsWith(".utf8.txt")) {
check = false;
ignore = true;
}
for(int i=0; i<suffixIgnore.length; i++) {
if(suffix.equals(suffixIgnore[i])) {
ignore = true;
......
......@@ -28,9 +28,9 @@ public class SpellChecker {
private static final String[] SUFFIX = new String[]{
"html", "java", "sql", "txt", "xml", "jsp", "css", "bat", "csv", "xml", "js", "Driver", "properties", "task", "php", "" };
private static final String[] IGNORE = new String[]{
"cpp", "h", "win", "dev", "def", "nsi",
"gif", "png", "odg", "ico", "sxd", "zip", "bz2", "rc", "layout", "res", "dll", "jar"};
"dev", "nsi", "gif", "png", "odg", "ico", "sxd", "zip", "bz2", "rc", "layout", "res", "dll", "jar"};
private static final String PREFIX_IGNORE = "abc";
private static final String IGNORE_FILE = "mainWeb.html";
public static void main(String[] args) throws IOException {
String dir = "src";
......@@ -103,6 +103,9 @@ public class SpellChecker {
break;
}
}
if(fileName.endsWith(IGNORE_FILE)) {
ignore = true;
}
if(ignore) {
return;
}
......
......@@ -498,4 +498,6 @@ plpgsql interrupting spring oids plperl regex newest
xhtml transactionally remotly jnlp launch mirror subversion matcher hoohoho matching bulk
prorettype pronamespace groname inlining nopmd openfire joda fastutil ibatis igniterealtime unimi dsi
irstv trac iict geosysin fukushima yusuke msi odbcad recent viewed calculation installs embedding relation
resizing translator liqui prepends liquibase typo restarting refactorings manage review
\ No newline at end of file
resizing translator liqui prepends liquibase typo restarting refactorings manage review
mathematicians instantiation homepage supporter grained tilde subscribe baseline wrapped bundle finer relying dangerous
finalizer textbase newsfeeds quicksort
\ No newline at end of file
......@@ -60,8 +60,8 @@ public class Doclet {
writer.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
String language = "en";
writer.println("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\""+language+"\" xml:lang=\""+language+"\">");
writer.println(className);
writer.println("<head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" /><title>");
writer.println(className);
writer.println("</title><link rel=\"stylesheet\" type=\"text/css\" href=\"../../../stylesheet.css\" /></head><body>");
writer.println("<table class=\"content\"><tr class=\"content\"><td class=\"content\"><div class=\"contentDiv\">");
......
......@@ -48,7 +48,7 @@ public class PrepareTranslation {
buildHtml("src/docsrc/text", "docs/html", "de");
buildHtml("src/docsrc/text", "docs/html", "ja");
// convert the properies files back to utf8 text files, including the main lanuage (to be used as a template)
// convert the properties files back to utf8 text files, including the main language (to be used as a template)
PropertiesToUTF8.propertiesToTextUTF8("src/docsrc/text/_docs_en.properties", "src/docsrc/text/_docs_en.utf8.txt");
PropertiesToUTF8.propertiesToTextUTF8("src/docsrc/text/_docs_de.properties", "src/docsrc/text/_docs_de.utf8.txt");
PropertiesToUTF8.propertiesToTextUTF8("src/docsrc/text/_docs_ja.properties", "src/docsrc/text/_docs_ja.utf8.txt");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论