つくねの手帳

C++およびAndroidアプリ開発メインで何か書きたい

Qt 同じ単語に複数の翻訳をあてるのに少し頑張った話2

前回からの続きです。
例によって、Qtのバージョンは4.8.4です。


.tsファイルと.qmファイルを自動的に作れるようにexcelのマクロを組みます。
excelのシート上に、enum(識別子)として使うID、対応する表示文言を列挙します。
マクロでヘッダファイルにenumと文字列を出力。
さらに、.tsファイルも作成しますが、lupdateを使うと不都合があるため、べた書きします。


もし、.tsファイル作成時にlupdateを使うと、

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0">
<context>
    <name>QWidget</name>

クラス化されていないファイルへQT_TR_NOOP()で文字列を記載していると、QWidgetとして.tsが作成されます。
しかし、の部分は実際にtr()で文字列をシステムに渡すクラスを指定する必要があります。
前回の記事であれば、setStringIdを実装しているクラスとなります。


.tsファイルができたら、lreleaseコマンドをたたいて.qmファイルを作成しておしまいです。


すごーくざっくりしている上に、コードサンプルがないのでひどくわかりにくい感じになってしまった…