2021/05/10 13:58 JST

Geeklog Japan Forums

多言語環境でのロケールの設定


状態: オフライン

yn

Forum User
Chatty
登録日: 2011/02/23
投稿数: 37
お世話になっております。 書籍『導入ガイド』やウェブの記述を拝読していても,多言語環境における「ロケール」の「具体的な設定法」がどうしても分かりません。 助けてくださいますでしょうか? 書籍 p.100 には, $_CONF['locale_en'] = 'en_GB'; $_CONF['locale_en'] = 'de_DE'; をサイトのconfig.php を追加せよ,とありますが,これは siteconfig.php のことでしょうか。 また,en_GB や de_DE といったものは「どこで定義」されているのでしょうか。 最後に,上記の言語別のロケール設定をするだけで,phpblock_switch_language プラグインと「連動」して,言語を切り替えたときには自動的にロケールも適切なものに切り替えてくれるのでしょうか。 宜しくお願いいたします。

状態: オフライン

Ivy

Site Admin
管理者
登録日: 2004/01/01
投稿数: 5967
場所:Tokyo
書籍ご購入ありがとうございますm--m 書籍の正誤表をご覧ください。 http://wiki.geeklog.jp/index.php?title=Guide コンフィギュレーションで設定するように、仕組みが変わりました。 多言語のロケールは、コンフィギュレーションでは設定する仕組みがありません。 siteconfig.phpに、追記すると良いかもしれません。 記述方法は、くわしくはWiki ロケール設定を切り替えるをどうぞ。 $_CONF['date_de'] = '%A, %d. %B %Y, %R Uhr'; といったふうに、_de _en などを追記してみてください。 やったことがありませんが、たぶんうごくかと・・・

状態: オフライン

yn

Forum User
Chatty
登録日: 2011/02/23
投稿数: 37
Ivy 様,ご教示有難うございます。 とりあえず,以下を siteconfig.php に追記したところ,英・独・日は(細部まで詳細にチェックしたわけではありませんが),大丈夫のようです。 ただ,いくつかの「ブロックタイトル」が日本語のままだったりとか(japanaize インストール以前でも同様),Mycaljp の月・曜日箇所が日本語のままだったりとか,「アレ?」と思う箇所が残ります。 Mycaljp を無効にして Mycal をインストールもしてみたのですが,こちらは,うまくインストールできません・・・・ orz どこかの線で妥協しないと(大らかにならないと)ダメなのかもしれません,自分でGeeklog の内部まで触れない限りは。 -------------------------------------------------------------------------------------------------- $_CONF['locale'] = 'en_GB.UTF-8'; $_CONF['date'] = '%A, %B %d %Y @ %I:%M %p %Z'; $_CONF['daytime'] = '%m/%d %I:%M%p'; $_CONF['shortdate'] = '%x'; $_CONF['dateonly'] = '%d-%b'; $_CONF['timeonly'] = '%I:%M %p %Z'; $_CONF['week_start'] = 'Sun'; $_CONF['hour_mode'] = '12'; $_CONF['thousand_separator'] = ','; $_CONF['decimal_separator'] = '.'; $_CONF['locale_ja'] = 'ja_JP.UTF-8'; $_CONF['date_ja'] = '%Y年%B%e日(%a) %H:%M %Z'; $_CONF['daytime_ja'] = '%m/%d %H:%M %Z'; $_CONF['shortdate_ja'] = '%Y年%B%e日'; $_CONF['dateonly_ja'] = '%B%e日'; $_CONF['timeonly_ja'] = '%H:%M %Z'; $_CONF['week_start_ja'] = 'Sun'; $_CONF['hour_mode_ja'] = '12'; $_CONF['thousand_separator_ja'] = ','; $_CONF['decimal_separator_ja'] = '.'; $_CONF['locale_de'] = 'de_DE.UTF-8'; $_CONF['date_de'] = '%A, %d. %B %Y, %R Uhr'; $_CONF['daytime_de'] = '%d. %b, %R Uhr'; $_CONF['shortdate_de'] = '%x'; $_CONF['dateonly_de'] = '%d.%m.'; $_CONF['timeonly_de'] = '%R Uhr'; $_CONF['week_start_de'] = 'Sun'; $_CONF['hour_mode_de'] = '24'; $_CONF['thousand_separator_de'] = '.'; $_CONF['decimal_separator_de'] = ','; -------------------------------------------------------------------------------------------------------

状態: オフライン

Ivy

Site Admin
管理者
登録日: 2004/01/01
投稿数: 5967
場所:Tokyo
ブロックタイトルの多言語化は、 ブロックを、 blockname blockname_ja blockname_en というかんじで 作成して多言語化します。 多言語対応していないconf値は、 言語によって、site_name site_slogan など 静的ページをPHPモードで言語別に出力を変えるよう作成。 自動タグの staticpage_content を活用して 対応させてください。 header.thtml:
PHP Formatted Code
<title>[staticpage_conmtent:_header_title]</title>
とすればよいですよね。 _header_titleは、静的ページPHPで言語別に表示を変更。 COM_getLanguageId() を使います。

状態: オフライン

Ivy

Site Admin
管理者
登録日: 2004/01/01
投稿数: 5967
場所:Tokyo

状態: オフライン

yn

Forum User
Chatty
登録日: 2011/02/23
投稿数: 37
Ivy 様, いつも有難うございます。別のスレッドにも記したことですが,「多言語サイト」に関しては,様々な方から頂戴した色々な(技術的)情報・コメント・ソースコードを良く理解する必要があることを痛感しています。 さしあたってこのスレッドは,私の方からは,これで解決とさせてください。

状態: オフライン

dengen

Site Admin
管理者
登録日: 2006/11/23
投稿数: 191
こんにちは、dengenです。 Mycaljpの多言語化について、説明させていただきます。 コンフィギュレーション/Mycaljp/Mycaljpのメイン設定を参照し、 テンプレート名を次のいずれかから選択してください。 black_multi_language, default_multi_language, glossy_multi_language, simple_multi_language 以下、black_multi_language を選択した場合で説明します。 Mycaljpは多言語をサポートするとはいえ、日本語と英語しか対応していません。(言語が多すぎるので) そこで、ドイツ語へ対応させてやります。 公開領域/mycaljp/templates/black_multi_language/config.php を開きます。
PHP Formatted Code
switch ( COM_getLanguageId() ) {
case 'ja': // Japanese
    $_MYCALJP2_CONF['headertitleyear'] = 'Y年';
    $_MYCALJP2_CONF['headertitlemonth'] = 'm月';
    $_MYCALJP2_CONF['titleorder'] = true;
    $_MYCALJP2_CONF['sunday']    = '日';
    $_MYCALJP2_CONF['monday']    = '月';
    $_MYCALJP2_CONF['tuesday']   = '火';
    $_MYCALJP2_CONF['wednesday'] = '水';
    $_MYCALJP2_CONF['thursday']  = '木';
    $_MYCALJP2_CONF['friday']    = '金';
    $_MYCALJP2_CONF['saturday']  = '土';
    break;
   
case 'en': // English
    $_MYCALJP2_CONF['headertitleyear'] = 'Y';
    $_MYCALJP2_CONF['headertitlemonth'] = 'F';
    $_MYCALJP2_CONF['titleorder'] = false;
    $_MYCALJP2_CONF['sunday']    = 'Su';
    $_MYCALJP2_CONF['monday']    = 'M';
    $_MYCALJP2_CONF['tuesday']   = 'Tu';
    $_MYCALJP2_CONF['wednesday'] = 'W';
    $_MYCALJP2_CONF['thursday']  = 'Th';
    $_MYCALJP2_CONF['friday']    = 'F';
    $_MYCALJP2_CONF['saturday']  = 'Sa';
    break;
}
上記コードはPHP言語のCase文で、COM_getLanguageId()が返す値で配列変数$_MYCALJP2_CONFの値を設定しています。 日本語と英語の設定が把握できるかと思います。 同様にドイツ語のパターンを作成してください。 コンフィギュレーションで他のテンプレートを選択した場合も同様に変更してください。

状態: オフライン

yn

Forum User
Chatty
登録日: 2011/02/23
投稿数: 37
dengen 様, お世話になります。 お示しくださった箇所は,「曜日見出し」に関わる箇所のみでしょうか? さらに,「月名」その他も当該言語に変更したい場合,どのファイルをカスタマイズするのでしょうか? 具体的には,例えばドイツ語の場合ですと,March 2011 ではなく März 2011 としたいということです。また,ポップアップされる next Month 等の箇所も当該言語に変更したいと思います。宜しくお願いいたします。

状態: オフライン

dengen

Site Admin
管理者
登録日: 2006/11/23
投稿数: 191
お示しくださった箇所は,「曜日見出し」に関わる箇所のみでしょうか?
年名、月名、年・月の表示順、曜日名です。 しかし年名や月名は、数値か英語による書式しか設定できません。 Oops! http://jp2.php.net/manual/ja/function.date.php ドイツ語の月名に対応するには、現状、ハックするしかないので、以下に例示します。 Mycaljpプラグインのバージョン2.1.3の場合で説明します。 /plugins/mycaljp/functions.incの最下行あたりに以下のフィルタ関数を追加します。
PHP Formatted Code
function filter_month($str) {
    global $_CONF;
    if (substr($_CONF['locale'],0,2) == "de") {
        $english = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
        $german = array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
        return str_replace($english, $german, $str);
    }
    return $str;
}
次に、/plugins/mycaljp/functions.incの469行目は
PHP Formatted Code
        $headertitlemonth = date( $_MYCALJP2_CONF['headertitlemonth'], $base );
となっているので、これを次のように書き換えます。
PHP Formatted Code
        $headertitlemonth = filter_month(date( $_MYCALJP2_CONF['headertitlemonth'], $base ));
これでうまくいくと思うのですが、いかがでしょうか。

状態: オフライン

yn

Forum User
Chatty
登録日: 2011/02/23
投稿数: 37
dengen 様, 迅速なご回答を頂戴しながら,私からのレスポンスが今になってし まいましたことを,お許しください。 お蔭さまで,月名に関して,望むとおりの結果になりました。有難う ございました。 また,ポップアップ箇所等は,mycaljp/language ディレクトリ内 の english_utf-8.php などを参照して,たとえば german_formal_utf-8.php を作ってやれば,うまく機能するようです。 dengen さん作の諸プラグインは,有難く使わせていただいて います。お礼申し上げます。 ところで,mycaljp_2.1.2 はあるようですが,2.1.3 はどこから ダウンロードできるのでしょうか?

時刻はすべて JST , 現在の時刻は 01:58 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック