Top > 質問箱 > 247

質問箱/247

サマリメニューが日本語になりません
バージョン1.4.7plus-u2-i18n
投稿者alen?
状態完了
投稿日2007-06-18 (月) 23:08:20

質問

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~

回答

  • 一番に考えられる事がlocaleディレクトリが参照できない事でしょうかねぇ…。パーミッションは適切に設定していますか?。 -- taru 2007-06-18 (月) 23:39:23
  • とりあえず、gettextに関するロジックを切り出してみました。実行したらどうなりますか?
      0
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
    
    <?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 2007-06-18 (月) 23:42:54
  • 実行してみました。
    setlocale=
    bindtextdomain=/var/www/html/pukiwiki/locale
    textdomain=pukiwiki
    bind_textdomain_codeset=UTF-8
    Others
    setlocaleが空です。 -- alen? 2007-06-19 (火) 12:39:24
  • 忘れてました (^^;  localeのパーミッションは777です。 -- alen? 2007-06-19 (火) 12:52:24
  • それでは、
      0
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
    
    <?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 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? 2007-06-19 (火) 20:21:23
  • では、
      0
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
    
    <?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 2007-06-19 (火) 20:45:57
  • いずれにしても、setlocale は、PHP標準の関数を利用していて、gettextのみ、PHPに組み込まれていないような場合は、エミュレートする仕様なので、PHPによる locale の設定がうまくできない環境という認識です。-- upk 2007-06-19 (火) 20:55:44
  • 実行してみました。
    setlocale=
    bindtextdomain=/var/www/html/pukiwiki/locale
    textdomain=pukiwiki
    bind_textdomain_codeset=UTF-8
    Others
    またもや空に (..; -- alen? 2007-06-19 (火) 21:14:44
  • 確信に近づいてきたような (^-^
      0
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
    
    <?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? 2007-06-19 (火) 21:37:30
  • いけましたーー (^_-  locale.aliasのja_JPがja_JP.eucJPになってたんですが、ja_JP.utf8にすると日本語に (T-T ←感涙。 upk様長々とお付き合いくださりありがとうございました。。。おかげで少しスキルアップできました<(_ _)> -- alen? 2007-06-19 (火) 21:49:55
  • おぉ、良かったですね。locale.alias ね。昔、a.out の当時、libc6 で locale の実装が入るということで、喜んでいたのを思い出しました。 -- upk 2007-06-19 (火) 21:58:33

重新載入   新增 Lower page making 編輯 封鎖 差異 上傳 複製 更名   首頁 頁面列表 搜尋 最新更動 備份 逆向連結   求助   最新更動的 RSS
Last-modified: Mon, 07 Jan 2008 13:57:18 CST (973d)