【a-blog cms】テーマを変えずにサイト多言語化

CMS

通常サイトを他言語化しようすると

  • site2015/admin/entry/【unit_language.html】を【unit.html】へリネーム
  • 編集画面のユニットが多言語化かされているか確認
  • 【en@site2015】など他言語化用のテーマを作成
  • site2015/include/【unit_language.html 】を【unit.html】にリネームして多言語化用テーマの同じ階層に移動
  • エイリアスの作成
  • エイリアスIDを指定してルールを作成
  • ルール内のコンフィグを多言語化用テーマに変更

ざっというとこのような流れです。

今回紹介するやり方は上のようにテーマを分けずに同テーマないで多言語化する方法です。
PC ー 多言語間ですと上記のやり方がベストと言えますが、スマホ対応もといった場合には今から紹介する方法がおすすめです。

通常のやりかたでスマホ対応、多言語対応をしようとすると
【site2015】【sp@site2015】【en@site2015】【en@sp@site2015】
と4つのテーマができてしまいますが、同テーマ内で切り替えることで
【site2015】【sp@site2015】
の2つでできるのでテーマの管理は楽です。また、英語だけでなく中国語、韓国語と言語が増えた場合にもテーマを複数作らず、ルールも複数作らずに済みます。

なので今回の同テーマ内で多言語対応するやりかたの利点としては

  • テーマを複数作らずに済む
  • 言語が増えた場合にもルールを増やす必要がない

という利点が挙げられます。

多言語対応

site2015を同テーマないで他言語化するという過程で紹介します。
まずは

site2015/admin/entry/【unit_language.html】を【uniti.html】へリネーム
編集画面のユニットが多言語化かされているか確認
site2015/include/【unit_language.html 】を【unit[エイリアスID].html】にリネーム
エイリアスの作成

編集画面のユニットが多言語化かされているか確認

site2015/admin/entry/【unit_language.html】を【uniti.html】へリネームするとエントリーを作成、エントリーの編集画面に飛ぶとユニットにタブが増えているはずです。



エイリアスの作成


管理画面/エイリアス/エイリアスの作成 からエイリアスを作成します。

  • 名前:自分がわかりやすい名前
  • ドメイン:使用中のドメイン
  • コードネーム:【en】など(URLで表示されます)


ここで作成したエイリアスのIDはのちほど使用するのでメモしておきます。


多言語対応テンプレートの作成

もともとある日本語のテンプレート(【header.html】【footer.html】など)を複製して作っていく形になります。
先ほど作ったエイリアスIDは【1】だったので【◯◯1.html】というテンプレートを作成します。
例:【header.html】の多言語をする場合は【header1.html】

複製して作った他言語対応テンプレートは静的な部分は英語に書きかえておきます。
動的な部分は英語が入力・出力できるように設定をします。
例:【エントリータイトル】エントリーのカスタムフィールドで英語タイトルの入力欄{title_en}を作成。モジュール内の{title}の部分を{title_en}に変更する

include文の変更

他言語化用のテンプレートを用意した部分のinclude文を変更します。

<!--例-->
<!--#include file="/include/header.html"-->

から

<!--例-->
<!--#include file="/include/header%{ALIAS_ID}.html"-->

に変更します。
こうすることで、エイリアスが指定されていない時(日本語のとき)は通常のテンプレートが読まれ、エイリアスID=1の時は【header1.html】、エイリアスID=2の時は【header2.html】のように言語が増えた場合も柔軟に対応できます。

言語変更リンクの作成

日本語から英語に変更したい場合は

<a href="%{HOME_URL}en/" hreflang="en">English</a>

の一文でエイリアスを英語(エイリアスID)に変更でき、言語が変更されます。
【href="%{HOME_URL}en/"】の【en】の部分にはエイリアス作成時に入力したコードネームが入ります。

あとがき

同テーマないでの他言語対応の方法でした。ざっくりとした説明ですいません。
間違っている記述がありましたらぜひご指摘ください。


この記事の読んだ方におすすめ