[5.6]自動実行ジョブ処理で各ページの言語設定に沿った処理

2017年1月14日 at 4:29

お世話になります。

使用Version:5.6.3.4

多言語対応サイトを組み込んだconcrete5上の各ページに、
外部サーバーからデータを読み込み、処理した値を属性へセットするように
自動実行ジョブで処理を行おうとしております。

読み込まれたデータをページの言語に合わせて処理を行い、ページの属性へセットするのですが
その際に「t()」のトランレースと用い各ページの言語へローカライズしてセットしたいと考えています。

同様の処理を通常のテンプレート描画時などに組み込んだ際は「t( )」でトランスレートした
各言語の文字列に変わっているようなのですが、ジョブで処理した際は
すべて日本語で処理されてしまい、他言語ページでの表示に問題が発生しています。

ジョブをページに設定された言語に基づいて処理させることは可能でしょうか?

よろしくお願いいたします。

タグ: ジョブ, 多言語

Re: [5.6]自動実行ジョブ処理で各ページの言語設定に沿った処理

2017年1月14日 at 16:11
そもそもで申し訳ないのですが、
5.6.3.4 で属性の値を多言語対応する無料アドオンが出ています。
http://www.concrete5.org/marketplace/addons/localizer
ですので、これを入れて、ページ属性の登録は英語のままで行うという手もあります。


自動実行ジョブであれば、言語セクションを読み込まないようになっているようですね。
サイトのデフォルト言語のみで実行されているように思えます。
(ご提示されているような方法で行った経験がないので・・・)

その場合は、自動実行ジョブに、該当ページの言語セクションを取得し、サイト言語を一時的に変更するという処理が必要ですね。


私であれば、前者のアドオンを使うかなと思います。
 

Re: [5.6]自動実行ジョブ処理で各ページの言語設定に沿った処理

2017年1月14日 at 16:34
Katz さん返信ありがとうございます。

説明が具体的でなかったですね。。。。。

localizerは組み込み済みです^^

具体的には、
1.外部サーバーよりjson取得
2.内部のページに設定された選択型属性のリスト値を取得(a
3.a)の並び順にjson情報を整形
4.a)の表示文字列とjson情報を合成しページのTEXT型属性へserialize

と言う処理を行っています。

その際、4の処理を行うときに"$hoge->getSelectAttributeOptionValue()"の値を
ページの言語で取得する方法があればご教授いただけないでしょうか?

現状Katzさんの仰るとおり、サイトのメイン言語設定(日本語)で取得されてしまいます。
日・英のみであれば、
$ms = MultilingualSection::getBySectionOfSite($page);
if (is_object($ms)) {
$locale = $ms->getLocale();
}
の処理で$locale=ja_JPかen_ENで判断し、
"getSelectAttributeOptionValue()"か"getSelectAttributeValue()"を
使い分ける方法もあるのですが、、

まぁ、設計そのものを失敗している気もしますが。。。

もしページの言語毎に取得する方法があればと思い質問させていただきました。

よろしくお願いいたします。