検索結果の表示を日本語化するnamzu.moファイル内のメッセージが文字化けしてしまう。ファイルはEUCなのにブラウザではUTF-8に変換され文字化けする。
WEBで検索しても解決方法が見つからない。
しかたなので、表示するメッセージを英語に変更した。

ja.poファイルを変更する。
msgidの内容をmsgstrにそのまま記述する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# cd namazu-2.0.21/po # # cp ja.po ja.po_org # # nkf -w ja.po > ja.po_utf8 # # vi ja.po_utf8 # # nkf -e ja.po_utf8 > ja.po # # diff -c ja.po_org ja.po | nkf -w *** ja.po_org 2025-03-17 20:48:01.381930825 +0900 --- ja.po 2025-03-17 20:55:05.088653180 +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_JP.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>Page:</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" # # rm ja.po_utf8 rm: 通常ファイル 'ja.po_utf8' を削除しますか? y # |
makeを実行する。
poファイルのままでは利用できないので、poファイルをgmoファイルに変換する。
1 2 3 4 |
# make ja.gmo rm -f ja.gmo && /usr/bin/msgfmt -c --statistics -o ja.gmo ja.po 157 個の翻訳メッセージ. # |
gmoファイルをインストールする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 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コマンドの実行結果も英文になってしまった。
個人的には、問題ないと思っている。
1 2 3 |
# mv /usr/local/share/locale/ja/LC_MESSAGES/namazu.mo \ /usr/local/share/locale/ja/LC_MESSAGES/namazu.mo_org # |