テーマの日本語化
今回は単なる「翻訳」とかではなくて「文化的」な面での日本語化についての対応。今回の元になったテーマ「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
最終更新日: 2021年2月27日