国際化

ロケールを用いた文字列のコレーション

Published Thursday June 30th, 2011 | Leave a comment
Posted in リサーチプロジェクト | Tags:

この記事は Qt Blog の “String collation with locales” を翻訳したものです。 執筆: ddenis, 2011年6月14日 Carlos が 数ヶ月前に 書いたように Qt Earth Team では Qt の国際化、ローカライズのサポートを進めてきました。既に以下のいくつかの機能を実装しています。 Linux/Unix で LC_MESSAGES や LC_TIME 等の環境変数を考慮するように変更 QLocale に文字種別のサポートを追加 通貨のサポートを追加(不十分だというフィードバックがあったため、リリース前にさらに機能を追加しようと思っています) アプリケーションの翻訳のために OS から対応言語を取得、週の最初の曜日、ウィークデー、文字列のクォート、複数の文字列の結合、等々 我々の TODO リストにあるもう1つは、コレーション(collation)のサポート(QTBUG-17104)です。(これはとても複雑な話なので)馴染みが無い方のために説明すると、コレーションとは文字列を並べる順番のことです。例えば “coté” と “côte” という2つの文字列があった場合に、フランスのフランス語のロケール(fr-FR)では前者が前になるのに対して、カナダのフランス語のロケール(fr-CA)では、後者が前になります。現在の Qt でもローカライズに対応した文字列比較([qt “QString::localeAwareCompare” l=qstring m=#localeAwareCompare])ができますが、これには2つの問題があります。1つはシステムロケールしか使えないこと(どのロケールのルールかを指定できない)、もう1つは「デフォルト」の比較ルールを使用することで、これは(例えば “file10” と “file2” のような)数字の比較などを設定する方法が無いことを意味します。というわけで、私は QtCollator クラスのドラフトを実装をしてみました。このクラスは ICU ライブラリのラッパで、コレーションの機能を Qt […]

Read More

Qt in depth: Qt の禁則処理

Published Friday January 14th, 2011 | Leave a comment
Posted in Qt in depth | Tags: , ,

最近、ネットで Qt の禁則処理に関連した話題をいくつか見かけたのですが、Qt はヨーロッパ(ノルウェー)が中心となって開発しているためか、禁則処理のような日本語関連の処理が弱いのではないかと誤解されることがあります。この「Qt in depth」シリーズでは日本語関連の処理や Qt の内部処理など、普段は触れられることのない項目を解説していこうと思います。今回は「Qt の禁則処理」をお届けします。 なお、この記事は Qt 4.7 に基づいて作成しています。Qt の API には出てこない内部処理に関する記事のため、バージョンによっては内容が異なる可能性があることに注意してください。 Qt の禁則処理 禁則処理が何かという詳しい解説は Wikipedia でも見ていただくこととして、Qt ではどのような処理を実装しているのでしょうか。Qt で禁則処理が動いているのを確認するには QTextEdit に適当な文字列を入力してリサイズしてみるのが簡単です。 「Qt をはじめよう! 第14回: GUI デザイナでのレイアウトに慣れよう!」を参考に Qt デザイナで QWidget に QTextEdit を置いてレイアウトを設定した後、プレビューを行うのも手ですし、下記のコードを実行してみるのもよいでしょう。 #include <QtGui> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit textEdit; textEdit.show(); return app.exec(); } 禁則処理が働いていることが確認できたでしょうか。文字間隔の微調整までは行わないものの、行頭禁止文字や行末禁止文字が正しく処理されていることが確認できると思います。

Read More

Qt in depth: Qt の禁則処理

Published Friday January 14th, 2011 | 2 Comments on Qt in depth: Qt の禁則処理
Posted in Qt in depth | Tags: , ,

最近、ネットで Qt の禁則処理に関連した話題をいくつか見かけたのですが、Qt はヨーロッパ(ノルウェー)が中心となって開発しているためか、禁則処理のような日本語関連の処理が弱いのではないかと誤解されることがあります。この「Qt in depth」シリーズでは日本語関連の処理や Qt の内部処理など、普段は触れられることのない項目を解説していこうと思います。今回は「Qt の禁則処理」をお届けします。 なお、この記事は Qt 4.7 に基づいて作成しています。Qt の API には出てこない内部処理に関する記事のため、バージョンによっては内容が異なる可能性があることに注意してください。 Qt の禁則処理 禁則処理が何かという詳しい解説は Wikipedia でも見ていただくこととして、Qt ではどのような処理を実装しているのでしょうか。Qt で禁則処理が動いているのを確認するには QTextEdit に適当な文字列を入力してリサイズしてみるのが簡単です。 「Qt をはじめよう! 第14回: GUI デザイナでのレイアウトに慣れよう!」を参考に Qt デザイナで QWidget に QTextEdit を置いてレイアウトを設定した後、プレビューを行うのも手ですし、下記のコードを実行してみるのもよいでしょう。 #include <QtGui> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit textEdit; textEdit.show(); return app.exec(); } 禁則処理が働いていることが確認できたでしょうか。文字間隔の微調整までは行わないものの、行頭禁止文字や行末禁止文字が正しく処理されていることが確認できると思います。

Read More

Qt ドキュメント翻訳者募集 – Call for Babel fishes

Published Thursday October 28th, 2010 | Leave a comment
Posted in Qt | Tags: , , ,

[qt-dev-net] は皆さんご存じでしょうか。今まで分散していたり、Qt では持っていなかったりしたフォーラムや wiki 等をまとめて、Qt を用いた開発に関するポータルとして構築中のサイトです。 さて、このサイトに関連して、 [qt-labs-blogs] の “Call for Babel fishes” にて Qt のドキュメントの翻訳者を募集しております。[qt ‘Getting Started Programming with Qt’ l=gettingstartedqt] や [qt ‘Getting Started Programming with QML’ l=gettingstartedqml] を翻訳して、専用デザインのTシャツをゲットしませんか。 12月1日までに [qt-dev-net-wiki] にて上記の文章を翻訳したページを作成し、 “getting started” タグをつけてください Alexandra Leisse に翻訳したドキュメントの URL と住所、連絡先の電話番号をメッセージで送信してください 全ての翻訳者には Qt DevNet dinosaur t-shirt をプレゼント また、Qt DevNet のポイントを 500 ポイント進呈 さらに、 N900 が当たるチャンスも 詳しくは […]

Read More

Qt ドキュメント翻訳者募集 – Call for Babel fishes

Published Thursday October 28th, 2010 | Leave a comment
Posted in Qt | Tags: , , ,

[qt-dev-net] は皆さんご存じでしょうか。今まで分散していたり、Qt では持っていなかったりしたフォーラムや wiki 等をまとめて、Qt を用いた開発に関するポータルとして構築中のサイトです。 さて、このサイトに関連して、 [qt-labs-blogs] の “Call for Babel fishes” にて Qt のドキュメントの翻訳者を募集しております。[qt ‘Getting Started Programming with Qt’ l=gettingstartedqt] や [qt ‘Getting Started Programming with QML’ l=gettingstartedqml] を翻訳して、専用デザインのTシャツをゲットしませんか。 12月1日までに [qt-dev-net-wiki] にて上記の文章を翻訳したページを作成し、 “getting started” タグをつけてください Alexandra Leisse に翻訳したドキュメントの URL と住所、連絡先の電話番号をメッセージで送信してください 全ての翻訳者には Qt DevNet dinosaur t-shirt をプレゼント また、Qt DevNet のポイントを 500 ポイント進呈 さらに、 N900 が当たるチャンスも 詳しくは […]

Read More

動的な言語切り替え

Published Monday May 10th, 2010 | Leave a comment
Posted in Qt Quarterly, Qt Quarterly 33 | Tags: , ,

この記事は 2010年の第一四半期に公開された [qt-quarterly] 33 から、Dynamic Translation を翻訳したものです。 動的な言語切り替え ユーザーインターフェースの動的な言語の切り替えができるアプリケーションの作り方 執筆: Johan Thelin ユーザーインターフェースの翻訳が簡単にできることは Qt の強みの一つです。最も基本的な部分からのユニコードのサポートと国際化のための簡単な仕組みにより、国際化されたアプリケーションを簡単に作ることができます。 翻訳するためのルールは単純です。エンドユーザーに表示する文字列を [qt QObject tr] 関数に渡し、その結果を表示する文字列として使用してください。tr 関数は単数形、複数形を扱うことが可能です。また、誤訳を避けるために、曖昧な言葉については説明を含めることもできます。 インデックスを指定して取得されるようなメッセージの文字列のリストのように、tr() が使用できない状況で文字列が使われることもあります。この場合は、 [qt “” QT_TR_NOOP l=qtglobal m=#QT_TR_NOOP], [qt “” QT_TRANSLATE_NOOP l=qtglobal m=#QT_TRANSLATE_NOOP]  もしくは [qt “” QT_TRANSLATE_NOOP3 l=qtglobal m=#QT_TRANSLATE_NOOP3] を使用することでその文字列が翻訳対象であることを指定できます。その文字列を tr() 関数に渡して得られた文字列を表示してください。

Read More

動的な言語切り替え

Published Monday May 10th, 2010 | Leave a comment
Posted in Qt Quarterly, Qt Quarterly 33 | Tags: , ,

この記事は 2010年の第一四半期に公開された [qt-quarterly] 33 から、Dynamic Translation を翻訳したものです。 動的な言語切り替え ユーザーインターフェースの動的な言語の切り替えができるアプリケーションの作り方 執筆: Johan Thelin ユーザーインターフェースの翻訳が簡単にできることは Qt の強みの一つです。最も基本的な部分からのユニコードのサポートと国際化のための簡単な仕組みにより、国際化されたアプリケーションを簡単に作ることができます。 翻訳するためのルールは単純です。エンドユーザーに表示する文字列を [qt QObject tr] 関数に渡し、その結果を表示する文字列として使用してください。tr 関数は単数形、複数形を扱うことが可能です。また、誤訳を避けるために、曖昧な言葉については説明を含めることもできます。 インデックスを指定して取得されるようなメッセージの文字列のリストのように、tr() が使用できない状況で文字列が使われることもあります。この場合は、 [qt “” QT_TR_NOOP l=qtglobal m=#QT_TR_NOOP], [qt “” QT_TRANSLATE_NOOP l=qtglobal m=#QT_TRANSLATE_NOOP]  もしくは [qt “” QT_TRANSLATE_NOOP3 l=qtglobal m=#QT_TRANSLATE_NOOP3] を使用することでその文字列が翻訳対象であることを指定できます。その文字列を tr() 関数に渡して得られた文字列を表示してください。

Read More

動的な言語切り替え

Published Monday May 10th, 2010 | Leave a comment
Posted in Qt Quarterly, Qt Quarterly 33 | Tags: , ,

この記事は 2010年の第一四半期に公開された [qt-quarterly] 33 から、Dynamic Translation を翻訳したものです。 動的な言語切り替え ユーザーインターフェースの動的な言語の切り替えができるアプリケーションの作り方 執筆: Johan Thelin ユーザーインターフェースの翻訳が簡単にできることは Qt の強みの一つです。最も基本的な部分からのユニコードのサポートと国際化のための簡単な仕組みにより、国際化されたアプリケーションを簡単に作ることができます。 翻訳するためのルールは単純です。エンドユーザーに表示する文字列を [qt QObject tr] 関数に渡し、その結果を表示する文字列として使用してください。tr 関数は単数形、複数形を扱うことが可能です。また、誤訳を避けるために、曖昧な言葉については説明を含めることもできます。 インデックスを指定して取得されるようなメッセージの文字列のリストのように、tr() が使用できない状況で文字列が使われることもあります。この場合は、 [qt “” QT_TR_NOOP l=qtglobal m=#QT_TR_NOOP], [qt “” QT_TRANSLATE_NOOP l=qtglobal m=#QT_TRANSLATE_NOOP]  もしくは [qt “” QT_TRANSLATE_NOOP3 l=qtglobal m=#QT_TRANSLATE_NOOP3] を使用することでその文字列が翻訳対象であることを指定できます。その文字列を tr() 関数に渡して得られた文字列を表示してください。

Read More
Get started today with Qt Download now