テーマ翻訳
ワードプレスの国際化対応はソースコードと翻訳ファイルで行っています。現在のテーマである「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 “%s”', '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 “%s”" msgstr "“%s”へのコメント"
この.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」フォルダとなります。
タイトル画像は「ヘルシンキ ヴァンター空港」の案内表示です。英語の他に、フィンランド語、日本語、中国語、韓国語とロシア語?で表記されていました。