SANGOテーマを多言語で使うカスタマイズ(1/3)テンプレート編

修正
投稿者のアーカイブの説明文を多言語化追加、
コメント欄、検索の抜けを追加、MultilingualPressプラグインの言語判定ではなく標準のget_localeを使う方式に変更

一応、マルチサイトで英語のサイトもあります(練習で描いたのとゲームの部分)が、SANGOが素敵なテーマなので、同じデザインにするためカスタマイズしちゃいました。

英語用の子テーマを作る方法もありますが、両方メンテナンスするのは面倒になるので同じ子テーマを使うカスタマイズです。
需要があるかわかりませんが、自分の備忘録として記事にしています。

カスタマイズでの条件
  • WordPressマルチサイト
  • SANGO 1.3.1
  • パンくず は、Breadcrumb NavXTプラグインを使うようにカスタマイズ済み
  • ブログの表示部分だけの多言語化(英語のみ)です。
  • 抜けがあったらご愛嬌ということでf^_^;)

記事が長くなるので、テンプレート編、関数とプロフィール編、文字列翻訳編の3部構成としました。

MEMO
言語ファイルを使っていますので、少し表示が遅くなると思います。気になる範囲では無いと思いますけどね。また、日付は多言語で違和感のないyyyy/mm/ddとしています
注意
SANGOテーマは有償になりますので、既存コードのどの部分かわかる程度にしていますので、見難いかもしれませんがご了承願います。

言語ファイルを使うための設定

無料のSimplicity2のテーマが多言語の英語のみに対応していますので、言語ファイルを使うための設定方法を使わせていただいています。

言語ファイルは、子テーマのフォルダーにlangフォルダーを作って、そこに言語ファイルを入れることとします。また、翻訳するときに使うtextdomainをsangoとしています。

子テーマのfunctions.phpに以下を追記します。

// *********************************************************************
// ここから、Wordpressマルチ言語化の設定
//言語の最初の文字がenだったら全てen.moを呼び出す
global $locale;
if (strpos($locale,'en') !== false) {
  $locale = 'en';
}
add_action( 'after_setup_theme', function () {
    load_child_theme_textdomain( 'sango', get_stylesheet_directory() . '/lang' );
});
// ここまで、Wordpressマルチ言語化の設定
// *********************************************************************

テンプレートファイルでのカスタマイズ

カスタマイズというか、日本語の部分を翻訳できるように修正していきます。

基本的には、翻訳する文字列を__(‘翻訳文字列’,’sango’)、または<?php _e(‘翻訳文字列’,’sango’);?>と変更していきます。また、日付の年月日をyyyy/mm/ddに変更します。

MEMO
`__()`は、文字列を取得する場合、`_e()`は、表示(echo付き)だと考えてください。

翻訳する文字列が、どのようにコーディングされてるかによって修正方法が変わりますので、
記事が長くなりますが、各ファイルの修正部分を全て記述します。

先に、翻訳対象にするファイルを親テーマから子テーマにコピーします。
/wp-content/themes/sango-theme/comments.php
/wp-content/themes/sango-theme/content-not-found.php
/wp-content/themes/sango-theme/search.php
/wp-content/themes/sango-theme/parts/archive/archive-header.php
/wp-content/themes/sango-theme/parts/single/prev-next-entry.php

↓コピーします

/wp-content/themes/sango-theme-child/comments.php
/wp-content/themes/sango-theme-child/content-not-found.php
/wp-content/themes/sango-theme-child/search.php
/wp-content/themes/sango-theme-child/parts/archive/archive-header.php
/wp-content/themes/sango-theme-child/parts/single/prev-next-entry.php

確認
各テンプレートの修正毎に、問題なくブログが表示されることを確認してください。

comments.phpのカスタマイズ

日本語の文字列で行が判断できるので、修正行のみ記述します。

    <h3 id="comments-title" class="h2 dfont"><?php comments_number(__('コメントはありません','sango'), '<span>1</span> Comment','<span>%</span> Comments');?></h3>
      <?php $reply_string = __('返信する','sango');
        wp_list_comments( array(
          'style'             => 'div',
          'short_ping'        => true,
          'avatar_size'       => 40,
          'callback'          => 'sng_comments',
          'type'              => 'all',
          'reply_text'        => $reply_string,
        <div class="comment-nav-prev"><?php previous_comments_link('<i class="fa fa-chevron-left"></i> '.__('過去のコメントを表示','sango')); ?></div>
        <div class="comment-nav-next"><?php next_comments_link(__('新しいコメントを表示','sango').' <i class="fa fa-chevron-right"></i> '); ?></div>
        <p class="no-comments"><?php echo __('現在コメントは受け付けておりません。','sango'); ?></p>

content-not-found.phpのカスタマイズ

  <div class="nofound-title"><?php if(is_search()||is_archive()){echo '<i class="fa fa-tint fa-lg"></i> '.__('記事が見つかりませんでした。','sango');} else {echo '<i class="fa fa-tint fa-lg"></i> '.__('お探しのページが見つかりませんでした。','sango');}?></div>
      <p><?php _e('指定されたキーワードでは記事が見つかりませんでした。別のキーワード、もしくはカテゴリーから記事をお探しください。','sango');?></p>
      <p><?php _e('まだ記事が投稿されていません。以下でキーワードやカテゴリーから記事を探すことができます。','sango');?></p>
      <p><?php _e('お探しのページは「すでに削除されている」、「アクセスしたアドレスが異なっている」などの理由で見つかりませんでした。以下でキーワードやカテゴリーから記事を探すことができます。','sango');?></p>
    <p><?php _e('以下のカテゴリー一覧から記事を探すこともできます。','sango');?></p>
      <span><?php _e('カテゴリー','sango');?></span>
      <a class="raised accent-bc" href="<?php echo esc_url( home_url( '/' ) ); ?>""><i class="fa fa-home"></i> <?php _e('ホームに戻る','sango');?></a>

content-not-found.phpのカスタマイズ

            <h1 class="search-title"><i class="fa fa-search accent"></i>「<?php echo esc_attr(get_search_query()); ?>」<?php _e('の検索結果','sango');?></h1>

archive-header.phpのカスタマイズ

            echo __('「','sango'); the_archive_title(); echo __('」の記事一覧','sango');

もし、カスタム投稿のカスタマイズをしている場合は以下となります。

          if(is_tax()) {
            echo __('「','sango'); single_term_title(); echo __('」の記事一覧','sango');
          } else {
            echo __('「','sango'); the_archive_title(); echo __('」の記事一覧','sango');
          }

投稿者のアーカイブの場合に、プロフィール表示の多言語化

        if(!is_paged()){//説明文(2ページ目以降には非表示)
            if(is_author()) {
                $archive_string = explode(";", get_the_archive_description());
                if (blog_short_lang() !== 'ja' && count($archive_string) > 1){
                    echo '<div class="taxonomy-description entry-content">'.$archive_string[1].'</div>';
                } else {
                    echo '<div class="taxonomy-description entry-content">'.$archive_string[0].'</div>';
                }
            } else {
                the_archive_description( '<div class="taxonomy-description entry-content">', '</div>' );
            }
        }

prev-next-entry.phpのカスタマイズ

      <p><i class="fa fa-angle-left"></i> <?php _e('前の記事','sango');?></p>
      <p><?php _e('次の記事','sango');?> <i class="fa fa-angle-right"></i></p>

以上、テンプレート編でした。

Monappy: MBDQ39VHypMQwfyR8SshuHvfPNUz321F6B

Monacoinを投げる
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?

2 Comments

匿名

sangoの英語化をしている先駆者を探して、この一連の記事に辿り着いたのですが
かゆいところに手が届かない記事でした。。修正部分を見つけて結局何をすればいいのか、分かりにくかったです。

返信する

コメントを残す

メールアドレスが公開されることはありません。

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