⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i18n.html

📁 QT参考文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<p>虽然这些工具提供了生成.qm文件的方便途径,可任何能编写.qm文件的系统也都够用。你可以制做一个应用,以利用<a href="qtranslator.html#insert">QTranslator::insert</a>()把译文加入到<a href="qtranslator.html">QTranslator</a>中,接着再利用<a href="qtranslator.html#save">QTranslator::save</a>()写出一个.qm文件。用这种办法可以从任何你选择的源文件中产生译文。<p> <a name="qt-itself"></a>Qt本身包含有大约400个也需要翻译为目标语言的字符串。在<tt>$QTDIR/translations</tt>下,你会找到French和German的译文文件,也可以作为翻译为其他语言的模板。<p>典型地,你的应用的main()函数会类似这样:<pre>    int main( int argc, char **argv )    {        <a href="qapplication.html">QApplication</a> app( argc, argv );        // translation file for Qt        <a href="qtranslator.html">QTranslator</a> qt( 0 );        qt.<a href="qtranslator.html#load">load</a>( QString( "qt_" ) + QTextCodec::locale(), "." );        app.<a href="qapplication.html#installTranslator">installTranslator</a>( &amp;qt );        // translation file for application strings        <a href="qtranslator.html">QTranslator</a> myapp( 0 );        myapp.<a href="qtranslator.html#load">load</a>( QString( "myapp_" ) + QTextCodec::locale(), "." );        app.<a href="qapplication.html#installTranslator">installTranslator</a>( &amp;myapp );        ...        return app.<a href="qapplication.html#exec">exec</a>();    }</pre> <p> <h3>编码支持</h3><a name="1-6"></a><p><a href="qtextcodec.html">QTextCodec</a>类和<a href="qtextstream.html">QTextStream</a>中的工具,方便你支持很多对于用户数据的输入输出编码。当应用启动时,机器的地区(locale)决定了处理8-bit数据——例如对于字体选择、文本显示、8-bit文本I/O和字符输入——所用的8-bit编码。<p>应用有时会需要不同于缺省本地8-bit编码的编码。例如,一个Cyrillic KOI8-R locale(俄罗斯的事实标准locale)的应用可能需要以ISO 8859-5编码输出Cyrillic。这样的代码可能会是:<p> <pre>    <a href="qstring.html">QString</a> string = ...; // some Unicode text    <a href="qtextcodec.html">QTextCodec</a>* codec = QTextCodec::<a href="qtextcodec.html#codecForName">codecForName</a>( "ISO 8859-5" );    <a href="qcstring.html">QCString</a> encoded_string = codec-&gt;<a href="qtextcodec.html#fromUnicode">fromUnicode</a>( string );    ...; // use encoded_string in 8-bit operations</pre><p>对于把Unicode转换为本地8-bit编码,有一个快捷办法:<a href="qstring.html">QString</a>的<a href="qstring.html#local8Bit">local8Bit</a>()方法返回的就是这样的8-bit数据。另一个有用的快捷办法是<a href="qstring.html#utf8">utf8</a>()方法,它以8-bit的UTF-8编码返回文本——有趣之处在于,如果Unicode完全是US-ASCII的话,它可以完全保留Unicode信息,而看起来又是一般的US-ASCII。<p>至于其他方式的转换,有<a href="qstring.html#fromUtf8">QString::fromUtf8</a>()和<a href="qstring.html#fromLocal8Bit">QString::fromLocal8Bit</a>()两个方便的函数,或者通用的代码,按下面从ISO 8859-5 Cyrillic到Unicode所演示:<p> <pre>    <a href="qcstring.html">QCString</a> encoded_string = ...; // Some ISO 8859-5 encoded text.    <a href="qtextcodec.html">QTextCodec</a>* codec = QTextCodec::<a href="qtextcodec.html#codecForName">codecForName</a>("ISO 8859-5");    <a href="qstring.html">QString</a> string = codec-&gt;<a href="qtextcodec.html#toUnicode">toUnicode</a>(encoded_string);    ...; // Use string in all of Qt's QString operations.</pre> <p>理想状态下应该使用Unicode的I/O,因为这最大地提高了世界各地的用户之间的文档兼容性。可实际上,支持所有适当的你的用户为处理已存在的文档而会需要用到的编码,也是有用的。通常,Unicode(UTF16或者UTF8)最适于在任何人之间传递信息,然而在同一语言或者民族群体内部,一种本地标准一般更为合适。要支持的最重要的编码是由<a href="qtextcodec.html#codecForLocale">QTextCodec::codecForLocale</a>()所返回的那个,因为这是用户最可能需要用来与其他人和应用(这是local8Bit()所使用的编码器)通讯的一个。<p>考虑到大多数Unix系统对本地8-bit编码和Unicode之间的转换没有内建支持,可能有必要编写你自己的<a href="qtextcodec.html">QTextCodec</a>子类。视紧迫程度而定,可以联系Trolltech的技术支持或者询问qt-interest邮件列表以看看是否已经有别人已经致力于支持某种编码。一个有用的过渡办法是,可以使用<a href="qtextcodec.html#loadCharmapFile">QTextCodec::loadCharmapFile</a>()函数以构造一个数据驱动的编码器,虽然这种办法会有内存和速度上的恶化,尤其是带有动态装载库。关于编写自己的QTextCodec详情,参见QTextCodec主类的文档。<p> <!-- index localization --><a name="localization"></a><p> <h3>本地化</h3><a name="1-7"></a><p>本地化是适应本地习惯比如日期时间表达方式的过程。这样的本地化可以使用适当的tr()字符串完成,即使是"magic" words,像这个有些做作的例子所示意的:<p> <pre>    void Clock::setTime(const <a href="qtime.html">QTime</a>&amp; t)    {        if ( tr("AMPM") == "AMPM" ) {            // 12-hour clock        } else {            // 24-hour clock        }    }</pre><p>图象本地化不推荐。请选择清晰的适用于任何地区的图标,而不要依赖于当地的双关语或者引申的暗喻。<p> <h2>系统支持</h2><a name="2"></a><p>支持Unicode的操作系统和窗口系统还处于开发初期。底层系统所能得到的支持程度会影响Qt在该平台上所提供的支持,但是以Qt编写的应用一般不必太关心实际限制。<p> <h3>Unix/X11</h3><a name="2-1"></a><p> <ul><li>本地导向的(Locale-oriented)字体和输入法。Qt隐藏了这些,而代之以Unicode输入和输出。<li>在一些Unix变种的文件系统中的约定,例如<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>,正在开发中。所有Qt的文件函数都认可Unicode,但把所有的文件名转换为本地8-bit编码,因为这是Unix的惯例(研究代用的编码,参见<a href="qfile.html#setEncodingFunction">QFile::setEncodingFunction</a>())。<li>文件I/O缺省为本地8-bit编码,在<a href="qtextstream.html">QTextStream</a>中带有Unicode选项。</ul><p> <h3>Windows 95/98/NT</h3><a name="2-2"></a><p> <ul><li>Qt提供完整的Unicode支持,包括输入法、字体、剪贴板、拖放和文件名。<li>文件I/O缺省为Latin-1,在QTextStream中带有Unicode选项。注意,有的Windows程序并不能领会高位在前(big-endian)的Unicode文本文件,即使这是没有更高级的协议时Unicode标准所规定的次序。<li>不像使用MFC或者一般winlib的程序,Qt程序可以在Windows 95/98和Windows NT之间移植。<em>你不需要不同的二进制码以支持Unicode。</em></ul><p> <h2>支持更多的输入法</h2><a name="3"></a><p>Trolltech并没有那么多资源或者专门技术,可以在Qt里立即加入世界上所有语言的支持。所以我们很期待与有这些专门技术的人一起工作。在下几个次版本号中,我们希望能对你选择的语言加入支持,直到任何人都可以使用Qt和以Qt开发的所有程序,而不管他们使用什么语言。<p>单字节编码(European Latin-1和KOI8-R等)和多字节编码(East Asian EUC-JP等)的语言都已支持。对于那些“复杂”的编码——需要从右至左输入或者复杂字符组成的编码(例如Arabic、Hebrew和Thai script)——已经实现,但是Indic script的范畴(Hindi、Devanagari、Bengali等)还在开发中。现在的情况是:<p> <center><table cellpadding="4" cellspacing="2" border="0"><tr bgcolor="#a2c511"> <th valign="top">编码<th valign="top">状态<tr bgcolor="#f0f0f0"> <td valign="top">Windows上的所有编码<td valign="top">本地的编码总是支持。<tr bgcolor="#d0d0d0"><td valign="top">ISO标准编码ISO 8859-1、ISO 8859-2、ISO 8859-3、ISO 8859-4、ISO 8859-5、ISO 8859-7、ISO 8859-9和ISO 8859-15<td valign="top">完全支持。<tr bgcolor="#f0f0f0"><td valign="top">KOI8-R<td valign="top">完全支持。<tr bgcolor="#d0d0d0"><td valign="top">eucJP、JIS和ShiftJIS<td valign="top">完全支持。在X11上对于XIM协议使用eucJP,在Japanese Windows NT上使用IME Windows NT。Serika Kurusugawa和其他人正在介入这个工作。<a href="ftp://ftp.sra.co.jp/pub/x11/kinput2/">kinput2</a>是X11上测试过的输入法。<tr bgcolor="#f0f0f0"><td valign="top">eucKR<td valign="top">支持。Mizi Research正在介入这个工作。<a href="http://www.mizi.com">hanIM</a>是测试过的输入法。<tr bgcolor="#d0d0d0"><td valign="top">Big5<td valign="top">Qt包含着一个由Ming Che-Chuang开发的Big5编解码器。正在xcin (2.5.x) XIM server上展开测试。<tr bgcolor="#f0f0f0"><td valign="top">eucTW<td valign="top">外部开发中。</table></center><p>关于Qt中对不同的writing system的支持,更多信息参见<a href="scripts.html">关于writing systems的文档</a>。<p>如果你有兴趣参与已有的成果,或是支持以上提到的之外的新编码,你的工作可以被考虑包括在Qt官方发布中,或者只是与你的应用打包在一起。<p>最后,我们希望能帮助Unix成为面向Unicode(Unicode-oriented),正如Windows正在做的那样。这就意味着,在字体服务器中使用新的进展而带来的更好的字体支持,例如<a href="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">xfsft</a>、<a href="ftp://sunsite.unc.edu/pub/Linux/X11/fonts/">xfstt</a>和x-tt;同时还有<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>(一种Unicode编码)文件名,比如使用<a href="http://www.sun.com/software/white-papers/wp-unicode/">Solaris 7上的Unicode支持</a>。<p> <h2>关于X11上的Locale的注意事项</h2><a name="4"></a><p>对于有的locale,很多Unix发布版只包括部分支持。例如,如果你有<tt>/usr/share/locale/ja_JP.EUC</tt>目录,这并不一定意味着你可以显示Japanese文本;你还需要JIS编码的字体(或者Unicode字体),以及<tt>/usr/share/locale/ja_JP.EUC</tt>目录,才能够达到目的。要达到最好的结果,使用你的系统提供商那里来的完全locale。<p> <h2>有关的Qt类</h2><a name="5"></a><p>这些类同国际化Qt应用有关。<p><table width="100%"><tr bgcolor=#f0f0f0><td><b><a href="qeucjpcodec.html">QEucJpCodec</a></b><td>从和到EUC-JP字符集的转换<tr bgcolor=#f0f0f0><td><b><a href="qeuckrcodec.html">QEucKrCodec</a></b><td>从和到EUC-KR字符集的转换<tr bgcolor=#f0f0f0><td><b><a href="qgb18030codec.html">QGb18030Codec</a></b><td>从和到Chinese GB18030/GBK/GB2312编码的转换<tr bgcolor=#f0f0f0><td><b><a href="qgbkcodec.html">QGbkCodec</a></b><td>从和到Chinese GBK编码的转换<tr bgcolor=#f0f0f0><td><b><a href="qhebrewcodec.html">QHebrewCodec</a></b><td>从和到visually ordered Hebrew的转换<tr bgcolor=#f0f0f0><td><b><a href="qjiscodec.html">QJisCodec</a></b><td>从和到JIS字符集的转换<tr bgcolor=#f0f0f0><td><b><a href="qsjiscodec.html">QSjisCodec</a></b><td>从和到Shift-JIS的转换<tr bgcolor=#f0f0f0><td><b><a href="qtextcodec.html">QTextCodec</a></b><td>文本编码之间的转换<tr bgcolor=#f0f0f0><td><b><a href="qtextdecoder.html">QTextDecoder</a></b><td>基于状态(State-based)的解码器<tr bgcolor=#f0f0f0><td><b><a href="qtextencoder.html">QTextEncoder</a></b><td>基于状态的编码器<tr bgcolor=#f0f0f0><td><b><a href="qtranslator.html">QTranslator</a></b><td>文本输出的国际化支持<tr bgcolor=#f0f0f0><td><b><a href="qtranslatormessage.html">QTranslatorMessage</a></b><td>Translator的信息及其属性<tr bgcolor=#f0f0f0><td><b><a href="qtsciicodec.html">QTsciiCodec</a></b><td>从和到Tamil TSCII编码的转换</table><!-- eof --><p><address><hr><div align=center><table width=100% cellspacing=0 border=0><tr><td>Copyright &copy; 2002 <a href="http://www.trolltech.com">Trolltech</a><td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a><td><a href="zh_CN.html">译者:farfareast</a><td align=right><div align=right>Qt 3.0.5版</div></table></div></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -