多言語対応のその後
少しソースコードの整理をして,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も使ってみますかねぇ | トップページ | キーボード操作実装の準備をしましょう… »
コメント