テーマ翻訳

閲覧数: 20(0)

ワードプレスの国際化対応はソースコードと翻訳ファイルで行っています。現在のテーマである「Fotografie」ではテンプレートファイルが提供されいていて、それを元に自分で翻訳ファイルを作成すれば、ソースコードの変更無しに「日本語対応」可能です(もちろん日本語以外も)。テンプレートには下のような内容が記載されています。「msgid」がソースコードに書かれるオリジナル言語でのメッセージで、通常「英語」です。ちなみにテンプレートは翻訳対応記述されたソースコードから生成します。例えば、下のソースコードからは、

                                printf(
                                        /* translators: 1: number of comments, 2: post title */
                                        esc_html(
                                                _nx(
                                                        '%1$s Reply to “%2$s”',
                                                        '%1$s Replies to “%2$s”',
                                                        $comments_number,
                                                        'comments title',
                                                        'fotografie'
                                                )

⬇️このようなテンプレートが生成されるわけです。この例は「記事に対するコメント数」です。日本語では「3件の”テーマ翻訳”へのコメント」などと訳されます。

#: ../comments.php:39
#, php-format
msgctxt "comments title"
msgid "%1$s Reply to “%2$s”"
msgid_plural "%1$s Replies to “%2$s”"
msgstr[0] ""
msgstr[1] ""

この流れで「翻訳結果」を確認していたところ、コメントが1件の場合に日本語へ翻訳されていない事が発覚!ソースコード上はちゃんと翻訳対応しているので、翻訳ファイルの方にメッセージが無いことが原因でした。ソースコードは下のように対応済みでした。

                        <?php
                        $comments_number = get_comments_number();
                        if ( '1' === $comments_number ) {
                                /* translators: %s: post title */
                                printf( esc_html_x( 'One Reply to &ldquo;%s&rdquo;', 'comments title', 'fotografie' ), get_the_title() );
                        } else {

「’One Reply to “%s”’」に対応した翻訳メッセージを以下のように用意することで日本語化されることが確認できました。英語では「1件の、、、コメント」となりますが、日本語の場合「1件の」とわざわざ書くと違和感があるので、ここでは日本語らしく件数は省略して「、、、へのコメント」としています。

#: ../comments.php:33
#, php-format
msgctxt "comments title"
msgid "One Reply to &ldquo;%s&rdquo;"
msgstr "&ldquo;%s&rdquo;へのコメント"

この.poファイルを.moファイルへコンパイルするには、「POEDIT」などのGUIツールを使うか、「gettext」を使ってコマンドラインで実行する必要があります。「gettext」がインストールされていない場合、「yum」などを使ってインストールしておきます。コマンドは以下の通りです。

[root@linux-ec2 languages]# msgfmt -o ja.mo ja.po
[root@linux-ec2 languages]# dir
合計 40K
-rw-r--r-- 1 apache 5.5K  6月  1 19:47 2018 ja.mo
-rw-r--r-- 1 apache  30K  6月  1 19:41 2018 ja.po
[root@linux-ec2 languages]# 

前回の記事で書いた通り、子テーマのフォルダから読み込んでいるので、このファイルの配置先は子テーマの「languages」フォルダとなります。

タイトル画像は「ヘルシンキ ヴァンター空港」の案内表示です。英語の他に、フィンランド語、日本語、中国語、韓国語とロシア語?で表記されていました。

【最終更新日: 2019年5月20日】
カテゴリーIT閑話, 公開タグ, ,
関連記事
パンくずリスト詳細
2020年5月12日

テーマの「マイナーチェンジ」に伴って「パンくずリスト」の仕様を若干変更しました。一つ前のテーマではパ  続きを読む

カテゴリーを制限する
blank
2020年5月11日

過去に何度も書いた「カテゴリー制限」の話、元はと言えば初期に書かれた「非公開」の記事が原因です。トッ  続きを読む

マイナーチェンジ
blank
2020年3月23日

かれこれ一年近くほったらかしだったので、気合をいれて「テーマ変更」と思っていたのですが、、、いろいろ  続きを読む

6月の検索ワードまとめ
blank
2019年6月30日

6月の検索ワードのまとめです。 意外なところで「zabbixダウングレード」が複数回検索され、単独の  続きを読む

アクセシビリティ対策
blank
2019年6月23日

テーマカスタマイズの一環で、トップページに一覧表示されている「写真を左右交互に表示する」ようにした際  続きを読む

dockerとproxy
blank
2019年6月18日

dockerやdocker-composeをプロキシ環境下で使うのに苦労したので忘れないようにメモし  続きを読む

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください