テーマ翻訳

閲覧数: 23(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)タグ, ,
管理画面を制限する

このサイトではネット上のさまざまな攻撃からの防御のため、Wordfenceプラグインの無料版を使用し  続きを読む

子テーマ化詳細
blank

子テーマ化にあたって具体的に修正した部分の説明をします。まずは「header.php」から。サイトの  続きを読む

ページナビ
blank

いわゆるトップページで一覧表示する時や、シングルページで個別記事を表示する時に、ページ下部に「新しい  続きを読む

Simple Author Box
blank

「この記事を書いた人」を表示するプラグイン。これまでは「Fancier Author Box」を使用  続きを読む

SudachiとElasticsearc...
blank

検索に関する初稿は2015年10月の「検索に悩む」でした。当時はWordPress標準の検索機能(S  続きを読む

ページナビのテキスト
blank

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

スポンサーリンク

コメントを残す

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