検索結果の表示を日本語化するnamzu.moファイル内のメッセージが文字化けしてしまう。ファイルはEUCなのにブラウザではUTF-8に変換され文字化けする。
WEBで検索しても解決方法が見つからない。
しかたなので、表示するメッセージを英語に変更した。
ja.poファイルを変更する。
msgidの内容をmsgstrにそのまま記述する。
# namazu-2.0.21/po # vi ja.po # diff -c ja.po_org ja.po | nkf -w *** ja.po_org 2009-09-23 03:26:27.000000000 +0900 --- ja.po 2024-05-13 09:06:32.654070587 +0900 *************** *** 13,18 **** --- 13,19 ---- "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=EUC-JP\n" "Content-Transfer-Encoding: 8bit\n" + "Language: ja.eucJP\n" #: nmz/util.c:536 msgid "Fatal error occurred!" *************** *** 52,58 **** #: nmz/util.c:563 msgid "can't open the index" ! msgstr "インデックスが開けませんでした" #: nmz/util.c:566 msgid "can't open the result format file" --- 53,59 ---- #: nmz/util.c:563 msgid "can't open the index" ! msgstr "can't open the index" #: nmz/util.c:566 msgid "can't open the result format file" *************** *** 89,100 **** #: src/output.c:561 msgid "\t<strong>Page:</strong> " ! msgstr "\t<strong>ペイジ:</strong> " #: src/output.c:606 #, c-format msgid "Current List: %d" ! msgstr "現在のリスト: %d" #: src/output.c:656 #, c-format --- 90,101 ---- #: src/output.c:561 msgid "\t<strong>Page:</strong> " ! msgstr "\t<strong>Pages:</strong> " #: src/output.c:606 #, c-format msgid "Current List: %d" ! msgstr "Current List: %d" #: src/output.c:656 #, c-format *************** *** 103,116 **** #: src/output.c:671 msgid "\t<p><strong> Total " ! msgstr "\t<p><strong>検索式にマッチする " #: src/output.c:678 msgid "" "\t documents matching your query.</strong></p>\n" "\n" msgstr "" ! "\t 個の文書が見つかりました。</strong></p>\n" "\n" #: src/output.c:738 --- 104,117 ---- #: src/output.c:671 msgid "\t<p><strong> Total " ! msgstr "\t<p><strong>Total " #: src/output.c:678 msgid "" "\t documents matching your query.</strong></p>\n" "\n" msgstr "" ! "\t documents matching your query.</strong></p>\n" "\n" #: src/output.c:738 *************** *** 124,135 **** #: src/output.c:772 msgid "\t<h2>Results:</h2>\n" ! msgstr "\t<h2>検索結果</h2>\n" #: src/output.c:779 #, c-format msgid "References: " ! msgstr "参考ヒット数: " #: src/output.c:829 msgid "\t<p>No document matching your query.</p>\n" --- 125,136 ---- #: src/output.c:772 msgid "\t<h2>Results:</h2>\n" ! msgstr "\t<h2>Results:</h2>\n" #: src/output.c:779 #, c-format msgid "References: " ! msgstr "References: " #: src/output.c:829 msgid "\t<p>No document matching your query.</p>\n" #
makeを実行する。
poファイルのままでは利用できないので、poファイルをgmoファイルに変換する。
# make ja.gmo rm -f ja.gmo && /usr/bin/msgfmt -c --statistics -o ja.gmo ja.po 157 個の翻訳メッセージ. #
gmoファイルをインストールする。
# make install /bin/sh .././mkinstalldirs /usr/local/share installing ja.gmo as /usr/local/share/locale/ja/LC_MESSAGES/namazu.mo installing ja_JP.SJIS.gmo as /usr/local/share/locale/ja_JP.SJIS/LC_MESSAGES/namazu.mo installing es.gmo as /usr/local/share/locale/es/LC_MESSAGES/namazu.mo installing fr.gmo as /usr/local/share/locale/fr/LC_MESSAGES/namazu.mo installing de.gmo as /usr/local/share/locale/de/LC_MESSAGES/namazu.mo installing pl.gmo as /usr/local/share/locale/pl/LC_MESSAGES/namazu.mo if test "namazu" = "gettext-tools"; then \ /bin/sh .././mkinstalldirs /usr/local/share/gettext/po; \ for file in Makefile.in.in remove-potcdate.sin Makevars.template; do \ /usr/bin/install -c -m 644 ./$file \ /usr/local/share/gettext/po/$file; \ done; \ for file in Makevars; do \ rm -f /usr/local/share/gettext/po/$file; \ done; \ else \ : ; \ fi #
動作を確認する。
閑話休題
英文メッセージを対応する日本語に変換するnamazu.moファイルが無い状態にすれば、英文を出力されるのではないか。
と思い以下のコマンドを入力後再テストしたら同じ動きになった。
色々悩まずに、最初からこの操作すればよかった。
ただし、cronatbで実行している、mknmzコマンドの実行結果も英文になってしまった。
個人的には、問題ないと思っている。
# mv /usr/local/share/locale/ja/LC_MESSAGES/namazu.mo \ /usr/local/share/locale/ja/LC_MESSAGES/namazu.mo_org #