« AnyDeskも使ってみますかねぇ | トップページ | キーボード操作実装の準備をしましょう… »

2014年8月13日 (水)

多言語対応のその後

少しソースコードの整理をして,Qt5.3.1にバージョンアップしたので、チェックのために再ビルドしました。
その際一部メニューの日本語表記を変更したので、lupdateコマンドを実行後Linguistで修正後lreleaseを実行しました。

すると…メインウィンドウの表記が軒並み英語表記になってしまいました。

いろいろ変更して、何度もlupdateとlreleaseを実行したのですが、うんともすんともいいません…

数時間を費やしても結局理由が分からず、結局最後の手段でソースコード整理前のソースコードを引っ張りだしてきました。

恥ずかしい話ですが、ソースコードの整理前にローカルのgitリポジトリも綺麗さっぱり削除してしまったのです。暫定リポジトリだったので、綺麗にして再登録しようとしたのが仇となりました。そのおかげで修正後差分がすぐ取れない状況だったので…ドツボにハマりました。

結局整理前のディレクトリを別な場所に展開し、ディレクトリごと差分を調べました。すると…

transrations/brynhildr_ja_JP.ts

に怪しい差分がありました。


@@ -2,7 +2,7 @@

<!DOCTYPE TS>

<TS version="2.1" language="ja_JP">

<context>

- <name>brynhildr::Brynhildr</name>

+ <name>Brynhildr</name>

<message>

<location filename="../brynhildr.cpp" line="64"/>

<source>Bootup.</source>

「やや、名前空間の記述が消えている」

名前空間が指定されていないので、グローバル空間のBrynhildrクラスへの指定となってしまっています…
名前空間が違うので反映されるはずがありません。

ソースコードの整理作業が原因でした。

emacsでの編集で、インデントが気に入らなかったので、名前空間の指定記述部分をマクロに置き換えてました。
つまり、

#define QTB_BEGIN_OF_NAMESPACE namespace brynhildr {
#define QTB_END_OF_NAMESPACE }

と定義して、このマクロを使って名前空間を定義していたのです。

lupdateコマンドは、すべてのソースコードを解析し、namespaceを見つけた場合その名前空間も付加して正しい名前空間指定を.tsファイルに出力するのですが、マクロ展開前のソースコードを解析しているのかもしれません…
結果brynhildrという名前空間を見つけられずに、誤った指定を出力してしまったようです。

自業自得といえばそのとおりなんですが…

gitで差分を取ることができれば数分で分かったはずですが、結局半日近く無駄にしてしまいました。
整理が終わるまでgitリポジトリは消すべきではありませんでした。

« AnyDeskも使ってみますかねぇ | トップページ | キーボード操作実装の準備をしましょう… »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 多言語対応のその後:

« AnyDeskも使ってみますかねぇ | トップページ | キーボード操作実装の準備をしましょう… »