【多言語化】ウィジェットを英語/日本語で分けたい。

いつもお世話になっております。

現在、サブサイトを使用して英語サイトを作成中です。
テーマは日英別々にしておりますが、ブログ機能のウィジェットは共通化されているようなので、一方のタイトルを変更すると、もう一方も変更されてしまうようです。

また、アーカイブや(現在は使用していませんが)カレンダーの年月表記も英語にできればと思っております。

お手数ですが、修正すべきファイルの場所と、方法をご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

テンプレートを英語サイト用に別に作って運用されていて、ブログ機能のウィジェットは共通化されているとのコメントですので、おそらくブログは、元サイト(日本語)のエイリアスで運用されるということですよね?
英語サイト用のテーマは、元サイトのテーマを一旦コピーして作成されている前提であれば、おそらく
英語サイト用のテーマ内のElements/widgetsフォルダ内のphpを直に編集すれば、英語サイトのみに反映されるはずです。

1 Like

GUSSANさま、

早速のご返答ありがとうございます。
テーマフォルダ内を確認してみましたところ、Elements/widget というフォルダが見つかりませんでしたので、他のところを参照していないか探してみております。

進捗ございましたら再度投稿いたします。
取り急ぎのお礼までにて失礼いたします。

英語サイト用のテーマ内のElementsフォルダ内にwidgetsフォルダがないということであれば、元サイト用のテーマ内のElements/widgetsフォルダをコピーされてはどうでしょうか?

1 Like

たびたびご返信いただきましてありがとうございます。

実は、元サイトのテンプレートの中にも、Elements/widgetsフォルダが見つかりませんでした。
もしかすると、テンプレートによってフォルダ構成がかなり異なるのかもしれません。

もう少し探してみたいと思います。分かりましたらご連絡いたしますね。

そうですね、テーマごとに違うんだろうと思います。
ちなみにどのテーマをお使いですか?

すいません、私もうっかりテンプレートと言ってしまいました(本来は、テーマと申し上げないといけませんでした。先述のコメント内の誤記は訂正済みです。)が、ふと思ったのですが、fritasさんのコメントにある「テンプレートは日英別々にしておりますが。。。」のテンプレートとは、何を指しておられますか?

bc_sampleテーマであれば、以下のようにwidgetsフォルダがあります。参考にしてください。
lib/Baser/Config/theme/bc_sample/Elements/widgets/

1 Like

ご返信遅くなりましてすみません。コメントいただきありがとうございます。

「テンプレート」ではなく、「テーマ」の誤りでした。申し訳ございません。
テーマは、"bccolumn"というものです。現在baserのマーケットには表示されていませんが、管理画面の中からは見られると思います。

であれば、先ほどお知らせしたbc_sampleテーマのwidgetsフォルダを英語用サブサイトのbccolumnテーマのElementsフォルダ内にコピーして、 当該フォルダ内の各phpを適宜編集されれば、意図するようなことはできると思います。
あと、日付を英語表記したいとのご意向ですが、具体的にどのように表示したいのでしょうか?
パン屑の「2020年04月」の表示を「2020/04」と表示されれば良いということであれば、以前のトピックでお話ししたようにブラウザの言語設定が英語優先モードであれば、そのように表示されるはずです。

1 Like

フォルダの場所、ご教示いただきありがとうございました。
無事見つけることができました。
bccolumnは、bc_sampleから派生したテーマということなのですね。

ファイルの中身を確認して、どのように対応できるか考えてみたいと思います。

また、日付の英語表記につきましては、できれば 「April XX, 2020」などにできればと思っておりました。「2020/04」の表記でもわからなくはないと思いますので、しばらくはこのままで大丈夫かと思います。

ブラウザ設定を英語に変更すると、エラーメッセージだけでなく、ほかの部分も英語化されるのですね。構築中のサイトではブログタグも使っており、「タグ:」の文言を消そうと思っていて、該当モジュールを探しておりますが、こちらも「Tag: 」と変換されておりました。

下記のファイルでかなりの部分がブラウザ設定により出し分けられるようになっているのですね。日付の表記も見つけました。
これまで、.phpファイルの書き換えで対応しておりましたが、こちらでコントロールできるものはこちらで対応したいと思います。
/lib/Baser/Locale/eng/LC_MESSAGES/default.po

また進捗ありましたら投稿いたします。いつもサポートいただき、ありがとうございます。

GUSSANさま、

その後、制作を担当いただいているデザイナーの方ともご相談して、下記の方法で解決することにしました。

・ウィジェットタイトルの出し分け
こちらコアファイルを修正した場合、バージョンアップの際などに管理が難しくなる可能性が高いとのことで、管理画面の 「ユーティリティ>ウィジェットエリア」からウィジェットを追加して、各ブログ側から日英別々のウィジェットを読み込ませることで解決いたしました。

ご教示いただいた方法を、私のほうできちんと消化できずすみませんでした。

・.po ファイルにつきまして
こちら英訳を編集して上書きしたのですが、なぜかキャッシュをクリアしても新しいファイルの内容が反映されませんでした。
もう一度確認して、解決ができなければ別トピックで質問させていただこうと思っております。

今回も、迅速にご回答いただきまして大変助かりました。今後ともどうぞよろしくお願いいたします。

どうも、デザイナーの方は、誤解されているようなのですが、コアファイルを修正するというのではなく、コアファイル内のファイルを英語用サブサイトとして利用されているテーマ内にコピーして利用されることをご提案いたしました。
具体的には、lib/Baser/Config/theme/bc_sample/Elements内のwidgetsフォルダを
英語用サブサイトで利用されているテーマフォルダのElements内にコピーして利用するご提案なんですが。。。
また、「.po ファイルにつきまして」でコメントされている内容も、.po ファイルの適用条件について誤解があるように思います。
.po ファイルは、あくまで、日英の翻訳の場合、ある日本語に対して対応する英訳が記述されているに過ぎず、その翻訳を適用させるためには、php内で該当する文字列の出力部分において、翻訳条件の指定をしなければ適用されないと思います。
具体的には、この辺りに記事をご覧になれば、理解できると思います↓
サブサイト利用の英語言語設定において、一部のシステムが出力するエラーメッセージが日本語のままになる

1 Like

GUSSANさま、

フォローアップいただきましてありがとうございます。

lib/Baser/Config/theme/bc_sample/Elements内のwidgetsフォルダを
英語用サブサイトで利用されているテーマフォルダのElements内にコピーして利用する

なるほど、ではこちらはバージョンアップしても影響はないということなのですね。
こちらのフォルダをDLして、該当すると思われるファイルの記述を拝見してみたのですが、
私の力量ではどの部分の修正で英語表記になるのかが分かりませんでした・・・大変申し訳ございません。

また、poファイルの仕組みについてもご教示いただきましてありがとうございました。poファイルへの文言追加と、phpファイルの記述変更で反映されるか試してみたいと思います。

なお昨日は、poファイル、moファイルも上書きをしてみたのですが、新しい英語文言ではなくデフォルトのファイルの英語文言が変換されて表示されているという不思議な状態になっています・・・もう少し調べてみたいと思います。

色々とお手数をおかけしましてすみません。

まずは、lib/Baser/Config/theme/bc_sample/Elements内のwidgetsフォルダを
英語用サブサイトで利用されているテーマフォルダのElements内にコピーして、表示がどのように変わるかをご確認頂いたらどうでしょうか?
例えば、表示が崩れるようであれば、英語用サブサイトで利用されているテーマフォルダにコピーしたwidgetsフォルダを削除してしまえばすぐに元に戻せますし。
「Latest」「Category」「Archive」などのタイトル表示部分は、コピーしたwidgetsフォルダ内の各phpファイルを直接編集してしまっても、あくまで英語用サブサイトにしか適用されませんので、元のテーマ(日本語)に影響することはありません。

blog_category_archives.phpを例にしますと、46行目あたりのh2タグ内を

<?php echo 'Category' ?>

としてしまってはどうでしょうか?

こちらでも、再度検証してみたところ、結論から申し上げますとご提案した方法では、サブサイト と元サイトでのwidgetsの出し分けはできませんでした。
widgets自体が、サーバーキャッシュに残ってしまいます。ですので、最初に表示した側(サブサイト か元サイトのいずれか)が見かけ上、両サイトに共通して表示されてしまうことになってしまいます(サーバーキャッシュがクリアされるまで)。
別の方の知見をお借りして、別の方法を模索するしかないようです。
結局、お騒がせした形になってしまい大変申し訳ございません。

1 Like

ご提案いただきました内容、検証までしていただき、誠にありがとうございました。
大変お手数をおかけいたしました。

英語用にウィジェットを追加する方法で、日英の出し分けには対応できておりますので、大丈夫です。

.poファイルにつきましては、過去質問の方法に従って、.poファイルに記述された日本語に.php側の記述を直しましたところ、英語が表示されるようになりました。仕組みがわかってよかったです。

ただ、上書きした.poファイルの内容が反映されていない点については、別のファイルを読み込んでいるのか、サーバーキャッシュが原因なのかは不明です。こちら別スレッドでお伺いしてみようと思います。

ご対応いただきましてありがとうございました。