テーマの日本語化

閲覧数: 30(0)

今回は単なる「翻訳」とかではなくて「文化的」な面での日本語化についての対応。今回の元になったテーマ「Fotografie」は英語圏の文化で作られているので、例えば日付のフォーマットなどは日本的とは言い難いものがある。WordPressそのものとしてはもちろん国際化対応されているので「2018年4月30日」などの日本的なフォーマットでも表示可能ではあるのだが。テーマの作りとしてそこまで意識されていないと、単なる「テーマ翻訳」ではいろいろと不都合が生じる事がある。

前回「テーマ翻訳」では、用意されていたテンプレートをベースに「日本語」用の翻訳ファイルを用意することで「日本語」対応可能と書いた。概ね間違いではないが冒頭で書いたように、単に翻訳ファイルを用意しただけでは「日本語」の文化的な対応がされないということ。

投稿日をクリック」するとその月のアーカイブを表示する仕掛けを導入しているが、テーマ標準のフォーマットでは「April 2018」を日本語化した「4月 2018」と表示される。日本人としてはやはり「2018年4月」と表示して欲しいところ。この程度は翻訳ファイルで対応可能。

ところが翻訳ファイルのみの対応ではテーマが持っている「パンくずリスト」機能で不具合が発生することが判明。「2018」と表示する変数「’Y’」に対して「’Y年’」と翻訳ファイルを設定することで「2018年」と表示させることは可能。この翻訳結果を「パンくずリスト」がアーカイブに対してそのまま使用するので「/2018」というアーカイブに対して「/2018年」を表示しようとして「404エラー」を出してしまう。原因は「パンくずリスト」側の記述。英語圏であれば問題無いソースコードも国際化すると不具合が出る典型的な例。

パンくずリストではアーカイブ「2018年4月」を「ホーム >> 2018年 >> 4月」と表示して欲しいが、リンク先は「2018/04」でなければならなず、置換えた文字をそのままアーカイブ先としては使用できない。この「パンくずリスト」の表示部分を抜き出したのがこれ。

( is_month() ) {
echo sprintf( $link, esc_url( get_year_link( get_the_time( __( 'Y', 'fotografie' ) ) ) ), get_the_time( __( 'Y', 'fotografie' ) ) ) ;

「get_year_link()」の引数は「2018」であるべきところ「2018年」となってしまっている。ここは翻訳する必要が無い。なので以下のように修正する。

( is_month() ) {
echo sprintf( $link, esc_url( get_year_link( get_the_time( 'Y' ) ) ), get_the_time( __( 'Y', 'fotografie' ) ) ) ;

これで表示は「ホーム >> 2018年 >> 4月」であるが「2018年」のリンク先は「2018」となり、正しく年別アーカイブのページへリンクされるようになる。投稿日をクリックすると月別アーカイブページへリンクする際にも「2018年4月30日」という表示に対して、実際のリンク先としては「2018/04」と指定しているのは言うまでもない。

「breadcrumb.php」はテーマの「inc/」フォルダにファイルとして存在している。その中で「fotografie_breadcrumb()」関数として定義されているが、親テーマでも同じ関数名が定義されているので、子テーマ側では別の名前に変更して定義する。「fotografie_breadcrumb2()」などの単純な名前で十分である。この「breadcrumb.php」を親テーマ側では「functions.php」内でインクルードすることで関数として使用できるようにしているが、子テーマの場合はやり方が少し違う。子テーマの「functions.php」の中ほどに「get_template_part( ‘inc/template’, ‘tags’ )」という記述があり、ここで「inc/template-tags.php」を読込んでいる。

...
get_template_part( 'inc/template', 'tags' );
...

「fotografie_breadcrumb2()」関数が含まれた子テーマの「inc/breadcrumb.php」はこの「inc/template-tags.php」の中で読込む指定をする。指定方法は以下の通り。

...
get_template_part( 'inc/breadcrumb' );
...

「fotografie_breadcrumb2()」関数は「components/features/breadcrumb/breadcrumb.php」の「fotografie_breadcrumb()」関数を置換えて使用するので、以下のように書き換える。これで新しく作った関数で「パンくずリスト」が表示されるようになる。

...
if ( $enable_breadcrumb ) :
        fotografie_breadcrumb2();
...

英語圏のテーマに「日本的な」何かを期待するのは間違っているとしても、その英語圏のテーマを選択してしまった「責任」はあるので、出来るだけ「日本的な」何かに近づける努力は必要だと思う。単に翻訳して終わりでは無かった教訓として。

タイトル画像は「成田に帰ってきたJL414」から見えるボーディングブリッジ。ドアが開いたら「日本」であるw

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

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

テーマリニューアル2017
blank
2017年7月21日

すっかりご無沙汰してしまいました。 復帰記念に久しぶりにテーマを変更しました。今回使用するのは「ob  続きを読む

パンくずリスト
blank
2015年11月10日

英語だと、Breadcrumb、パンくずって訳すしかないわなぁ。でもどうもしっくりこない。個人のサイ  続きを読む

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

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

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

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

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

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

コメントを残す

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