diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-08 12:31:36 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-08 12:31:36 -0600 |
commit | d796c9dd933ab96ec83b9a634feedd5d32e1ba3f (patch) | |
tree | 6e3dcca4f77e20ec8966c666aac7c35bd4704053 /doc/html/i18n.html | |
download | tqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.tar.gz tqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.zip |
Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731
Diffstat (limited to 'doc/html/i18n.html')
-rw-r--r-- | doc/html/i18n.html | 570 |
1 files changed, 570 insertions, 0 deletions
diff --git a/doc/html/i18n.html b/doc/html/i18n.html new file mode 100644 index 000000000..51772b7f0 --- /dev/null +++ b/doc/html/i18n.html @@ -0,0 +1,570 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/doc/i18n.doc:36 --> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Internationalization with TQt</title> +<style type="text/css"><!-- +fn { margin-left: 1cm; text-indent: -1cm; } +a:link { color: #004faf; text-decoration: none } +a:visited { color: #672967; text-decoration: none } +body { background: #ffffff; color: black; } +--></style> +</head> +<body> + +<table border="0" cellpadding="0" cellspacing="0" width="100%"> +<tr bgcolor="#E5E5E5"> +<td valign=center> + <a href="index.html"> +<font color="#004faf">Home</font></a> + | <a href="classes.html"> +<font color="#004faf">All Classes</font></a> + | <a href="mainclasses.html"> +<font color="#004faf">Main Classes</font></a> + | <a href="annotated.html"> +<font color="#004faf">Annotated</font></a> + | <a href="groups.html"> +<font color="#004faf">Grouped Classes</font></a> + | <a href="functions.html"> +<font color="#004faf">Functions</font></a> +</td> +<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Internationalization with TQt</h1> + + +<p> <!-- index internationalization --><a name="internationalization"></a><!-- index i18n --><a name="i18n"></a> +<p> The internationalization of an application is the process of making +the application usable by people in countries other than one's own. +<p> <!-- toc --> +<ul> +<li><a href="#1"> Step by Step +</a> +<ul> +<li><a href="#1-1"> Use TQString for all User-visible Text +</a> +<li><a href="#1-2"> Use tr() for all Literal Text +</a> +<li><a href="#1-3"> Use TQKeySequence() for Accelerator Values +</a> +<li><a href="#1-4"> Use TQString::arg() for Dynamic Text +</a> +<li><a href="#1-5"> Produce Translations +</a> +<li><a href="#1-6"> Support for Encodings +</a> +<li><a href="#1-7"> Localize +</a> +</ul> +<li><a href="#2"> Dynamic Translation +</a> +<li><a href="#3"> System Support +</a> +<ul> +<li><a href="#3-1"> Unix/X11 +</a> +<li><a href="#3-2"> Windows +</a> +</ul> +<li><a href="#4"> Note about Locales on X11 +</a> +<li><a href="#5"> Relevant TQt Classes +</a> +</ul> +<!-- endtoc --> + +<p> In some cases internationalization is simple, for example, making a US +application accessible to Australian or British users may retquire +little more than a few spelling corrections. But to make a US +application usable by Japanese users, or a Korean application usable +by German users, will retquire that the software operate not only in +different languages, but use different input techniques, character +encodings and presentation conventions. +<p> TQt tries to make internationalization as painless as possible for +developers. All input widgets and text drawing methods in TQt offer +built-in support for all supported languages. The built-in font engine +is capable of correctly and attractively rendering text that contains +characters from a variety of different writing systems at the same +time. +<p> TQt supports most languages in use today, in particular: +<ul> +<li> All East Asian languages (Chinese, Japanese and Korean) +<li> All Western languages (using Latin script) +<li> Arabic +<li> Cyrillic languages (Russian) +<li> Greek +<li> Hebrew +<li> Thai and Lao +<li> All scripts in Unicode 3.2 that do not retquire special processing +</ul> +<p> On Windows NT/2000/XP and Unix/X11 with Xft (client side font support) +the following languages are also supported: +<ul> +<li> Bengali +<li> Devanagari +<li> Dhivehi (Thaana) +<li> Gujarati +<li> Gurmukhi +<li> Kannada +<li> Khmer +<li> Malayalam (X11 only) +<li> Myanmar (X11 only) +<li> Syriac +<li> Tamil +<li> Telugu +<li> Tibetan (X11 only) +</ul> +<p> Many of these writing systems exhibit special features: +<p> <ul> +<p> <li> <b>Special line breaking behavior.</b> Some of the Asian languages are +written without spaces between words. Line breaking can occur either +after every character (with exceptions) as in Chinese, Japanese and +Korean, or after logical word boundaries as in Thai. +<p> <li> <b>Bidirectional writing.</b> Arabic and Hebrew are written from right to +left, except for numbers and embedded English text which is written +left to right. The exact behavior is defined in the <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Technical Report +#9</a>. +<p> <li> <b>Non spacing or diacritical marks</b> (accents or umlauts in European +languages). Some languages such as Vietnamese make extensive use of +these marks and some characters can have more than one mark at the +same time to clarify pronunciation. +<p> <li> <b>Ligatures.</b> In special contexts, some pairs of characters get +replaced by a combined glyph forming a ligature. Common examples are +the fl and fi ligatures used in typesetting US and European books. +<p> </ul> +<p> TQt tries to take care of all the special features listed above. You +usually don't have to worry about these features so long as you use +TQt's input widgets (e.g. <a href="qlineedit.html">TQLineEdit</a>, <a href="qtextedit.html">TQTextEdit</a>, and derived classes) +and TQt's display widgets (e.g. <a href="qlabel.html">TQLabel</a>). +<p> Support for these writing systems is transparent to the programmer +and completely encapsulated in TQt's text engine. This means that you +don't need to have any knowledge about the writing system used in a +particular language, except for the following small points: +<ul> +<p> <li> <a href="qpainter.html#drawText">TQPainter::drawText</a>( int x, int y, const <a href="qstring.html">TQString</a> &str ) will always +draw the string with it's left edge at the position specified with +the x, y parameters. This will usually give you left aligned strings. +Arabic and Hebrew application strings are usually right +aligned, so for these languages use the version of drawText() that +takes a <a href="qrect.html">TQRect</a> since this will align in accordance with the language. +<p> <li> When you write your own text input controls, use <a href="qfontmetrics.html#charWidth">TQFontMetrics::charWidth</a>() to determine the width of a character in a +string. In some languages (e.g. Arabic or languages from the Indian +subcontinent), the width and shape of a glyph changes depending on the +surrounding characters. Writing input controls usually retquires a +certain knowledge of the scripts it is going to be used in. Usually +the easiest way is to subclass <a href="qlineedit.html">TQLineEdit</a> or <a href="qtextedit.html">TQTextEdit</a>. +<p> </ul> +<p> The following sections give some information on the status +of the internationalization (i18n) support in TQt. +<p> See also the <a href="linguist-manual.html">TQt Linguist</a> manual. +<p> <h2> Step by Step +</h2> +<a name="1"></a><p> Writing multi-platform international software with TQt is a gentle, +incremental process. Your software can become internationalized in +the following stages: +<p> <h3> Use <a href="qstring.html">TQString</a> for all User-visible Text +</h3> +<a name="1-1"></a><p> Since TQString uses the Unicode encoding internally, every +language in the world can be processed transparently using +familiar text processing operations. Also, since all TQt +functions that present text to the user take a TQString as a +parameter, there is no char* to TQString conversion overhead. +<p> Strings that are in "programmer space" (such as <a href="qobject.html">TQObject</a> names +and file format texts) need not use TQString; the traditional +char* or the <a href="qcstring.html">TQCString</a> class will suffice. +<p> You're unlikely to notice that you are using Unicode; +TQString, and <a href="qchar.html">TQChar</a> are just like easier versions of the crude +const char* and char from traditional C. +<p> <h3> Use tr() for all Literal Text +</h3> +<a name="1-2"></a><p> Wherever your program uses <tt>"quoted text"</tt> for text that will +be presented to the user, ensure that it is processed by the <a href="qapplication.html#translate">TQApplication::translate</a>() function. Essentially all that is necessary +to achieve this is to use <a href="qobject.html#tr">TQObject::tr</a>(). For example, assuming the +<tt>LoginWidget</tt> is a subclass of TQWidget: +<p> <pre> + LoginWidget::LoginWidget() + { + <a href="qlabel.html">TQLabel</a> *label = new <a href="qlabel.html">TQLabel</a>( tr("Password:"), this ); + ... + } +</pre> + +<p> This accounts for 99% of the user-visible strings you're likely to +write. +<p> If the quoted text is not in a member function of a +<a href="qobject.html">TQObject</a> subclass, use either the tr() function of an +appropriate class, or the <a href="qapplication.html#translate">TQApplication::translate</a>() function +directly: +<p> <pre> + void some_global_function( LoginWidget *logwid ) + { + <a href="qlabel.html">TQLabel</a> *label = new <a href="qlabel.html">TQLabel</a>( + LoginWidget::tr("Password:"), logwid ); + } + + void same_global_function( LoginWidget *logwid ) + { + <a href="qlabel.html">TQLabel</a> *label = new <a href="qlabel.html">TQLabel</a>( + qApp-><a href="qapplication.html#translate">translate</a>("LoginWidget", "Password:"), + logwid ); + } +</pre> + +<p> If you need to have translatable text completely +outside a function, there are two macros to help: QT_TR_NOOP() +and QT_TRANSLATE_NOOP(). They merely mark the text for +extraction by the <em>lupdate</em> utility described below. +The macros expand to just the text (without the context). +<p> Example of QT_TR_NOOP(): +<pre> + TQString FriendlyConversation::greeting( int greet_type ) + { + static const char* greeting_strings[] = { + QT_TR_NOOP( "Hello" ), + QT_TR_NOOP( "Goodbye" ) + }; + return tr( greeting_strings[greet_type] ); + } +</pre> + +<p> Example of QT_TRANSLATE_NOOP(): +<pre> + static const char* greeting_strings[] = { + QT_TRANSLATE_NOOP( "FriendlyConversation", "Hello" ), + QT_TRANSLATE_NOOP( "FriendlyConversation", "Goodbye" ) + }; + + TQString FriendlyConversation::greeting( int greet_type ) + { + return tr( greeting_strings[greet_type] ); + } + + <a href="qstring.html">TQString</a> global_greeting( int greet_type ) + { + return qApp-><a href="qapplication.html#translate">translate</a>( "FriendlyConversation", + greeting_strings[greet_type] ); + } +</pre> + +<p> If you disable the const char* to <a href="qstring.html">TQString</a> automatic conversion +by compiling your software with the macro QT_NO_CAST_ASCII +defined, you'll be very likely to catch any strings you are +missing. See <a href="qstring.html#fromLatin1">TQString::fromLatin1</a>() for more information. +Disabling the conversion can make programming a bit cumbersome. +<p> If your source language uses characters outside Latin-1, you +might find <a href="qobject.html#trUtf8">TQObject::trUtf8</a>() more convenient than +<a href="qobject.html#tr">TQObject::tr</a>(), as tr() depends on the +<a href="qapplication.html#defaultCodec">TQApplication::defaultCodec</a>(), which makes it more fragile than +TQObject::trUtf8(). +<p> <h3> Use <a href="qkeysequence.html">TQKeySequence</a>() for Accelerator Values +</h3> +<a name="1-3"></a><p> Accelerator values such as Ctrl+Q or Alt+F need to be +translated too. If you hardcode <tt>CTRL+Key_Q</tt> for "Quit" in +your application, translators won't be able to override +it. The correct idiom is +<p> <pre> + <a href="qpopupmenu.html">TQPopupMenu</a> *file = new <a href="qpopupmenu.html">TQPopupMenu</a>( this ); + file-><a href="qmenudata.html#insertItem">insertItem</a>( tr("&Quit"), this, SLOT(tquit()), + TQKeySequence(tr("Ctrl+Q", "File|Quit")) ); +</pre> + +<p> <h3> Use <a href="qstring.html#arg">TQString::arg</a>() for Dynamic Text +</h3> +<a name="1-4"></a><p> The TQString::arg() functions offer a simple means for substituting +arguments: +<pre> + void FileCopier::showProgress( int done, int total, + const <a href="qstring.html">TQString</a>& current_file ) + { + label.setText( tr("%1 of %2 files copied.\nCopying: %3") + .arg(done) + .arg(total) + .arg(current_file) ); + } +</pre> + +<p> In some languages the order of arguments may need to change, and this +can easily be achieved by changing the order of the % arguments. For +example: +<pre> + <a href="qstring.html">TQString</a> s1 = "%1 of %2 files copied. Copying: %3"; + <a href="qstring.html">TQString</a> s2 = "Kopierer nu %3. Av totalt %2 filer er %1 kopiert."; + + <a href="qapplication.html#qDebug">qDebug</a>( s1.<a href="qstring.html#arg">arg</a>(5).arg(10).arg("somefile.txt").ascii() ); + <a href="qapplication.html#qDebug">qDebug</a>( s2.<a href="qstring.html#arg">arg</a>(5).arg(10).arg("somefile.txt").ascii() ); +</pre> + +<p> produces the correct output in English and Norwegian: +<pre> +5 of 10 files copied. Copying: somefile.txt +Kopierer nu somefile.txt. Av totalt 10 filer er 5 kopiert. +</pre> + +<p> <h3> Produce Translations +</h3> +<a name="1-5"></a><p> Once you are using tr() throughout an application, you can start +producing translations of the user-visible text in your program. +<p> <a href="linguist-manual.html">TQt Linguist</a>'s manual provides +further information about TQt's translation tools, <em>TQt Linguist</em>, <em>lupdate</em> and <em>lrelease</em>. +<p> Translation of a TQt application is a three-step process: +<p> <ol type=1> +<p> <li> Run <em>lupdate</em> to extract translatable text from the C++ source +code of the TQt application, resulting in a message file for +translators (a <tt>.ts</tt> file). The utility recognizes the tr() construct +and the QT_*_NOOP macros described above and produces <tt>.ts</tt> files +(usually one per language). +<p> <li> Provide translations for the source texts in the <tt>.ts</tt> file, using +<em>TQt Linguist</em>. Since <tt>.ts</tt> files are in XML format, you can also +edit them by hand. +<p> <li> Run <em>lrelease</em> to obtain a light-weight message file (a <tt>.qm</tt> +file) from the <tt>.ts</tt> file, suitable only for end use. Think of the <tt>.ts</tt> files as "source files", and <tt>.qm</tt> files as "object files". The +translator edits the <tt>.ts</tt> files, but the users of your application +only need the <tt>.qm</tt> files. Both kinds of files are platform and +locale independent. +<p> </ol> +<p> Typically, you will repeat these steps for every release of your +application. The <em>lupdate</em> utility does its best to reuse the +translations from previous releases. +<p> Before you run <em>lupdate</em>, you should prepare a project file. Here's +an example project file (<tt>.pro</tt> file): +<p> <pre> + HEADERS = funnydialog.h \ + wackywidget.h + SOURCES = funnydialog.cpp \ + main.cpp \ + wackywidget.cpp + FORMS = fancybox.ui + TRANSLATIONS = superapp_dk.ts \ + superapp_fi.ts \ + superapp_no.ts \ + superapp_se.ts +</pre> + +<p> When you run <em>lupdate</em> or <em>lrelease</em>, you must give the name of the +project file as a command-line argument. +<p> In this example, four exotic languages are supported: Danish, Finnish, +Norwegian and Swedish. If you use <a href="qmake-manual.html">qmake</a>, you usually don't need an extra project +file for <em>lupdate</em>; your <tt>qmake</tt> project file will work fine once +you add the <tt>TRANSLATIONS</tt> entry. +<p> In your application, you must <a href="qtranslator.html#load">TQTranslator::load</a>() the translation +files appropriate for the user's language, and install them using <a href="qapplication.html#installTranslator">TQApplication::installTranslator</a>(). +<p> If you have been using the old TQt tools (<tt>findtr</tt>, <tt>msg2qm</tt> and <tt>mergetr</tt>), you can use <em>qm2ts</em> to convert your old <tt>.qm</tt> files. +<p> <em>linguist</em>, <em>lupdate</em> and <em>lrelease</em> are installed in the <tt>bin</tt> +subdirectory of the base directory TQt is installed into. Click Help|Manual +in <em>TQt Linguist</em> to access the user's manual; it contains a tutorial +to get you started. +<p> While these utilities offer a convenient way to create <tt>.qm</tt> files, +any system that writes <tt>.qm</tt> files is sufficient. You could make an +application that adds translations to a <a href="qtranslator.html">TQTranslator</a> with +<a href="qtranslator.html#insert">TQTranslator::insert</a>() and then writes a <tt>.qm</tt> file with +<a href="qtranslator.html#save">TQTranslator::save</a>(). This way the translations can come from any +source you choose. +<p> <a name="qt-itself"></a> +TQt itself contains over 400 strings that will also need to be +translated into the languages that you are targeting. You will find +translation files for French and German in <tt>$QTDIR/translations</tt> as +well as a template for translating to other languages. (This directory +also contains some additional unsupported translations which may be +useful.) +<p> Typically, your application's main() function will look like this: +<pre> + int main( int argc, char **argv ) + { + <a href="qapplication.html">TQApplication</a> app( argc, argv ); + + // translation file for TQt + <a href="qtranslator.html">TQTranslator</a> qt( 0 ); + qt.<a href="qtranslator.html#load">load</a>( TQString( "qt_" ) + TQTextCodec::locale(), "." ); + app.<a href="qapplication.html#installTranslator">installTranslator</a>( &qt ); + + // translation file for application strings + <a href="qtranslator.html">TQTranslator</a> myapp( 0 ); + myapp.<a href="qtranslator.html#load">load</a>( TQString( "myapp_" ) + TQTextCodec::locale(), "." ); + app.<a href="qapplication.html#installTranslator">installTranslator</a>( &myapp ); + + ... + + return app.<a href="qapplication.html#exec">exec</a>(); + } +</pre> + +<p> <h3> Support for Encodings +</h3> +<a name="1-6"></a><p> The <a href="qtextcodec.html">TQTextCodec</a> class and the facilities in <a href="qtextstream.html">TQTextStream</a> make it easy to +support many input and output encodings for your users' data. When an +application starts, the locale of the machine will determine the 8-bit +encoding used when dealing with 8-bit data: such as for font +selection, text display, 8-bit text I/O and character input. +<p> The application may occasionally retquire encodings other than the +default local 8-bit encoding. For example, an application in a +Cyrillic KOI8-R locale (the de-facto standard locale in Russia) might +need to output Cyrillic in the ISO 8859-5 encoding. Code for this +would be: +<p> <pre> + <a href="qstring.html">TQString</a> string = ...; // some Unicode text + + <a href="qtextcodec.html">TQTextCodec</a>* codec = TQTextCodec::<a href="qtextcodec.html#codecForName">codecForName</a>( "ISO 8859-5" ); + <a href="qcstring.html">TQCString</a> encoded_string = codec-><a href="qtextcodec.html#fromUnicode">fromUnicode</a>( string ); + + ...; // use encoded_string in 8-bit operations +</pre> + +<p> For converting Unicode to local 8-bit encodings, a shortcut is +available: the <a href="qstring.html#local8Bit">local8Bit</a>() method +of <a href="qstring.html">TQString</a> returns such 8-bit data. Another useful shortcut is the +<a href="qstring.html#utf8">utf8</a>() method, which returns text in the +8-bit UTF-8 encoding: this perfectly preserves Unicode information +while looking like plain US-ASCII if the text is wholly US-ASCII. +<p> For converting the other way, there are the <a href="qstring.html#fromUtf8">TQString::fromUtf8</a>() and +<a href="qstring.html#fromLocal8Bit">TQString::fromLocal8Bit</a>() convenience functions, or the general code, +demonstrated by this conversion from ISO 8859-5 Cyrillic to Unicode +conversion: +<p> <pre> + <a href="qcstring.html">TQCString</a> encoded_string = ...; // Some ISO 8859-5 encoded text. + + <a href="qtextcodec.html">TQTextCodec</a>* codec = TQTextCodec::<a href="qtextcodec.html#codecForName">codecForName</a>("ISO 8859-5"); + <a href="qstring.html">TQString</a> string = codec-><a href="qtextcodec.html#toUnicode">toUnicode</a>(encoded_string); + + ...; // Use string in all of TQt's TQString operations. +</pre> + +<p> Ideally Unicode I/O should be used as this maximizes the portability +of documents between users around the world, but in reality it is +useful to support all the appropriate encodings that your users will +need to process existing documents. In general, Unicode (UTF-16 or +UTF-8) is best for information transferred between arbitrary people, +while within a language or national group, a local standard is often +more appropriate. The most important encoding to support is the one +returned by <a href="qtextcodec.html#codecForLocale">TQTextCodec::codecForLocale</a>(), as this is the one the user +is most likely to need for communicating with other people and +applications (this is the codec used by local8Bit()). +<p> TQt supports most of the more frequently used encodings natively. For a +complete list of supported encodings see the <a href="qtextcodec.html">TQTextCodec</a> +documentation. +<p> In some cases and for less frequently used encodings it may be +necessary to write your own <a href="qtextcodec.html">TQTextCodec</a> subclass. Depending on the +urgency, it may be useful to contact Trolltech technical support or +ask on the <tt>qt-interest</tt> mailing list to see if someone else is +already working on supporting the encoding. A useful interim measure +can be to use the <a href="qtextcodec.html#loadCharmapFile">TQTextCodec::loadCharmapFile</a>() function to build a +data-driven codec, although this approach has a memory and speed +penalty, especially with dynamically loaded libraries. For details of +writing your own TQTextCodec, see the main TQTextCodec class +documentation. +<p> <!-- index localization --><a name="localization"></a> +<p> <h3> Localize +</h3> +<a name="1-7"></a><p> Localization is the process of adapting to local conventions, for +example presenting dates and times using the locally preferred +formats. Such localizations can be accomplished using appropriate tr() +strings. +<p> <pre> + void Clock::setTime(const <a href="qtime.html">TQTime</a>& t) + { + if ( tr("AMPM") == "AMPM" ) { + // 12-hour clock + } else { + // 24-hour clock + } + } +</pre> + +<p> In the example, for the US we would leave the translation of "AMPM" as +it is and thereby use the 12-hour clock branch; but in Europe we would +translate it as something else (anything else, e.g. "EU") and this +will make the code use the 24-hour clock branch. +<p> Localizing images is not recommended. Choose clear icons that are +appropriate for all localities, rather than relying on local puns or +stretched metaphors. +<p> <h2> Dynamic Translation +</h2> +<a name="2"></a><p> Some applications, such as TQt Linguist, must be able to support changes +to the user's language settings while they are still running. To make +widgets aware of changes to the system language, implement a public +slot called <tt>languageChange()</tt> in each widget that needs to be notified. +In this slot, you should update the text displayed by widgets using the +<a href="qobject.html#tr">TQObject::tr</a>(){tr()} function in the usual way; for example: +<p> <pre> +void MyWidget::languageChange() +{ + titleLabel->setText(tr("Document Title")); + ... + okPushButton->setText(tr("&OK")); +} +</pre> + +<p> The default event handler for <a href="qwidget.html">TQWidget</a> subclasses responds to the +<a href="qevent.html#Type-enum">LanguageChange</a> event, and will call this slot +when necessary; other application components can also connect signals +to this slot to force widgets to update themselves. +<p> <h2> System Support +</h2> +<a name="3"></a><p> Some of the operating systems and windowing systems that TQt runs on +only have limited support for Unicode. The level of support available +in the underlying system has some influence on the support that TQt can +provide on those platforms, although in general TQt applications need +not be too concerned with platform-specific limitations. +<p> <h3> Unix/X11 +</h3> +<a name="3-1"></a><p> <ul> +<li> Locale-oriented fonts and input methods. TQt hides these and +provides Unicode input and output. +<li> Filesystem conventions such as +<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a> +are under development +in some Unix variants. All TQt file functions allow Unicode, +but convert filenames to the local 8-bit encoding, as +this is the Unix convention +(see <a href="qfile.html#setEncodingFunction">TQFile::setEncodingFunction</a>() +to explore alternative encodings). +<li> File I/O defaults to the local 8-bit encoding, +with Unicode options in <a href="qtextstream.html">TQTextStream</a>. +</ul> +<p> <h3> Windows +</h3> +<a name="3-2"></a><p> <ul> +<li> TQt provides full Unicode support, including input methods, fonts, +clipboard, drag-and-drop and file names. +<li> File I/O defaults to Latin-1, with Unicode options in TQTextStream. +Note that some Windows programs do not understand big-endian +Unicode text files even though that is the order prescribed by +the Unicode Standard in the absence of higher-level protocols. +<li> Unlike programs written with MFC or plain winlib, TQt programs +are portable between Windows 95/98 and Windows NT. +<em>You do not need different binaries to support Unicode.</em> +</ul> +<p> <h2> Note about Locales on X11 +</h2> +<a name="4"></a><p> Many Unix distributions contain only partial support for some locales. +For example, if you have a <tt>/usr/share/locale/ja_JP.EUC</tt> directory, +this does not necessarily mean you can display Japanese text; you also +need JIS encoded fonts (or Unicode fonts), and the <tt>/usr/share/locale/ja_JP.EUC</tt> directory needs to be complete. For best +results, use complete locales from your system vendor. +<p> <h2> Relevant TQt Classes +</h2> +<a name="5"></a><p> These classes are relevant to internationalizing TQt applications. + +<p><table width="100%"> +<tr bgcolor=#f0f0f0><td><b><a href="qbig5codec.html">TQBig5Codec</a></b><td>Conversion to and from the Big5 encoding +<tr bgcolor=#f0f0f0><td><b><a href="qeucjpcodec.html">TQEucJpCodec</a></b><td>Conversion to and from EUC-JP character sets +<tr bgcolor=#f0f0f0><td><b><a href="qeuckrcodec.html">TQEucKrCodec</a></b><td>Conversion to and from EUC-KR character sets +<tr bgcolor=#f0f0f0><td><b><a href="qgb18030codec.html">TQGb18030Codec</a></b><td>Conversion to and from the Chinese GB18030/GBK/GB2312 encoding +<tr bgcolor=#f0f0f0><td><b><a href="qgb2312codec.html">TQGb2312Codec</a></b><td>Conversion to and from the Chinese GB2312 encoding +<tr bgcolor=#f0f0f0><td><b><a href="qgbkcodec.html">TQGbkCodec</a></b><td>Conversion to and from the Chinese GBK encoding +<tr bgcolor=#f0f0f0><td><b><a href="qhebrewcodec.html">TQHebrewCodec</a></b><td>Conversion to and from visually ordered Hebrew +<tr bgcolor=#f0f0f0><td><b><a href="qjiscodec.html">TQJisCodec</a></b><td>Conversion to and from JIS character sets +<tr bgcolor=#f0f0f0><td><b><a href="qsjiscodec.html">TQSjisCodec</a></b><td>Conversion to and from Shift-JIS +<tr bgcolor=#f0f0f0><td><b><a href="qtextcodec.html">TQTextCodec</a></b><td>Conversion between text encodings +<tr bgcolor=#f0f0f0><td><b><a href="qtextdecoder.html">TQTextDecoder</a></b><td>State-based decoder +<tr bgcolor=#f0f0f0><td><b><a href="qtextencoder.html">TQTextEncoder</a></b><td>State-based encoder +<tr bgcolor=#f0f0f0><td><b><a href="qtranslator.html">TQTranslator</a></b><td>Internationalization support for text output +<tr bgcolor=#f0f0f0><td><b><a href="qtranslatormessage.html">TQTranslatorMessage</a></b><td>Translator message and its properties +<tr bgcolor=#f0f0f0><td><b><a href="qtsciicodec.html">TQTsciiCodec</a></b><td>Conversion to and from the Tamil TSCII encoding +</table> +<!-- eof --> +<p><address><hr><div align=center> +<table width=100% cellspacing=0 border=0><tr> +<td>Copyright © 2007 +<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a> +<td align=right><div align=right>TQt 3.3.8</div> +</table></div></address></body> +</html> |