Top > 質問箱 > 247

**[[質問箱/247]] [#h6c86815]
|RIGHT:70|LEFT:410|c
|~サマリ|メニューが日本語になりません|
|~バージョン|1.4.7plus-u2-i18n|
|~投稿者|[[alen]]|
|~状態|完了|
|~投稿日|&new{2007-06-18 (月) 23:08:20};|
***質問 [#hfb69def]
debian etch~
apache2.2.3-4~
PHP 5.2.0-8+etch4~
~
~
# locale
LANG=ja_JP.UTF-8~
LC_CTYPE="ja_JP.UTF-8"~
LC_NUMERIC="ja_JP.UTF-8"~
LC_TIME="ja_JP.UTF-8"~
LC_COLLATE="ja_JP.UTF-8"~
LC_MONETARY="ja_JP.UTF-8"~
LC_MESSAGES="ja_JP.UTF-8"~
LC_PAPER="ja_JP.UTF-8"~
LC_NAME="ja_JP.UTF-8"~
LC_ADDRESS="ja_JP.UTF-8"~
LC_TELEPHONE="ja_JP.UTF-8"~
LC_MEASUREMENT="ja_JP.UTF-8"~
LC_IDENTIFICATION="ja_JP.UTF-8"~
~
別のサーバで動かしていたときは日本語になって
いたのですが、このたびサーバを新調して新規インストール
するとメニューやらメッセージが英語のままになってしまいます。~
~
SELinuxは無効にしています。~

[[質問箱/82]]にのっていた強制的に日本語にする
方法も通用しませんでした。~
一体何が悪いのでしょうか? (T-T~ 
~
***回答 [#bcee7237]
- 一番に考えられる事がlocaleディレクトリが参照できない事でしょうかねぇ…。パーミッションは適切に設定していますか?。 -- [[taru]] &new{2007-06-18 (月) 23:39:23};
-とりあえず、gettextに関するロジックを切り出してみました。実行したらどうなりますか?
#code(php){{
<?php
  $locale='ja_JP';
  putenv( 'LC_ALL=' . $locale);
  $setlocale = setlocale(LC_ALL,  $locale);
  echo 'setlocale='.$setlocale."\n";

  $domain = 'pukiwiki';
  $bindtextdomain = bindtextdomain($domain, './locale');
  echo 'bindtextdomain='.$bindtextdomain."\n";

  $textdomain = textdomain($domain);
  echo 'textdomain='.$textdomain."\n";

  $bind_textdomain_codeset = bind_textdomain_codeset($domain, 'UTF-8');
  echo 'bind_textdomain_codeset='.$bind_textdomain_codeset."\n";

  echo _("Others")."\n";
?>
}}
これを、i18n.php などというファイルにして、pukiwiki を入れたディレクトリに保存して実行してみて下さい。そこには、locale や wiki や lib などのディレクトリがあるところです。問題ない環境だと、
 setlocale=ja_JP
 bindtextdomain=/var/www/html/pukiwiki/locale
 textdomain=pukiwiki
 bind_textdomain_codeset=UTF-8
 その他
のように表示されるんですけどねぇ。-- [[upk]] &new{2007-06-18 (月) 23:42:54};
- 実行してみました。
 setlocale=
 bindtextdomain=/var/www/html/pukiwiki/locale
 textdomain=pukiwiki
 bind_textdomain_codeset=UTF-8
 Others
setlocaleが空です。 -- [[alen]] &new{2007-06-19 (火) 12:39:24};
- 忘れてました (^^;  localeのパーミッションは777です。 -- [[alen]] &new{2007-06-19 (火) 12:52:24};
-それでは、
#code(php){{
<?php
//  $locale='ja_JP';
//  putenv( 'LC_ALL=' . $locale);
//  $setlocale = setlocale(LC_ALL,  $locale);
  $setlocale = setlocale(LC_ALL,  NULL);
  echo 'setlocale='.$setlocale."\n";

  $domain = 'pukiwiki';
  $bindtextdomain = bindtextdomain($domain, './locale');
  echo 'bindtextdomain='.$bindtextdomain."\n";

  $textdomain = textdomain($domain);
  echo 'textdomain='.$textdomain."\n";

  $bind_textdomain_codeset = bind_textdomain_codeset($domain, 'UTF-8');
  echo 'bind_textdomain_codeset='.$bind_textdomain_codeset."\n";

  echo _("Others")."\n";
?>
}}
では、どうなりますか? -- [[upk]] &new{2007-06-19 (火) 19:35:43};
- 実行してみました。 
 setlocale=C
 bindtextdomain=/var/www/html/pukiwiki/locale
 textdomain=pukiwiki
 bind_textdomain_codeset=UTF-8
 Others
setlocaleがCになりました。-- [[alen]] &new{2007-06-19 (火) 20:21:23};
-では、
#code(php){{
<?php
  $locale='ja_JP';
  putenv( 'LANG=' . $locale);
//  $setlocale = setlocale(LC_ALL,  $locale);
  $setlocale = setlocale(LC_ALL,  NULL);
  echo 'setlocale='.$setlocale."\n";

  $domain = 'pukiwiki';
  $bindtextdomain = bindtextdomain($domain, './locale');
  echo 'bindtextdomain='.$bindtextdomain."\n";

  $textdomain = textdomain($domain);
  echo 'textdomain='.$textdomain."\n";

  $bind_textdomain_codeset = bind_textdomain_codeset($domain, 'UTF-8');
  echo 'bind_textdomain_codeset='.$bind_textdomain_codeset."\n";

  echo _("Others")."\n";
?>
}}
の場合は、どうなりますか? -- [[upk]] &new{2007-06-19 (火) 20:45:57};
-いずれにしても、setlocale は、PHP標準の関数を利用していて、gettextのみ、PHPに組み込まれていないような場合は、エミュレートする仕様なので、PHPによる locale の設定がうまくできない環境という認識です。-- [[upk]] &new{2007-06-19 (火) 20:55:44};
- 実行してみました。 
 setlocale=
 bindtextdomain=/var/www/html/pukiwiki/locale
 textdomain=pukiwiki
 bind_textdomain_codeset=UTF-8
 Others
またもや空に (..; -- [[alen]] &new{2007-06-19 (火) 21:14:44};
- 確信に近づいてきたような (^-^  
#code(php){{
<?php
  $locale='ja_JP.UTF-8';
  putenv( 'LC_ALL=' . $locale);
  $setlocale = setlocale(LC_ALL,  $locale);
  echo 'setlocale='.$setlocale."\n";

  $domain = 'pukiwiki';
  $bindtextdomain = bindtextdomain($domain, './locale');
  echo 'bindtextdomain='.$bindtextdomain."\n";

  $textdomain = textdomain($domain);
  echo 'textdomain='.$textdomain."\n";

  $bind_textdomain_codeset = bind_textdomain_codeset($domain, 'UTF-8');
  echo 'bind_textdomain_codeset='.$bind_textdomain_codeset."\n";

  echo _("Others")."\n";
?>
}}
ja_JPをja_JP.UTF-8これだと上手くいきます。~
あとはなぜja_JPで上手くいかないかを調べるだけ (..;  -- [[alen]] &new{2007-06-19 (火) 21:37:30};
- いけましたーー (^_-  locale.aliasのja_JPがja_JP.eucJPになってたんですが、ja_JP.utf8にすると日本語に (T-T ←感涙。 upk様長々とお付き合いくださりありがとうございました。。。おかげで少しスキルアップできました<(_ _)>  -- [[alen]] &new{2007-06-19 (火) 21:49:55};
- おぉ、良かったですね。locale.alias ね。昔、a.out の当時、libc6 で locale の実装が入るということで、喜んでいたのを思い出しました。 -- [[upk]] &new{2007-06-19 (火) 21:58:33};

#comment
//#comment

重新載入   新增 Lower page making 編輯 封鎖 差異 上傳 複製 更名   首頁 頁面列表 搜尋 最新更動 備份 逆向連結   求助   最新更動的 RSS