| サマリ | メニューが日本語になりません |
|---|
| バージョン | 1.4.7plus-u2-i18n |
|---|
| 投稿者 | alen? |
|---|
| 状態 | 完了 |
|---|
| 投稿日 | |
|---|
質問
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にのっていた強制的に日本語にする
方法も通用しませんでした。
一体何が悪いのでしょうか?
~
回答
- 一番に考えられる事がlocaleディレクトリが参照できない事でしょうかねぇ…。パーミッションは適切に設定していますか?。 -- taru
- とりあえず、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
- 実行してみました。
setlocale=
bindtextdomain=/var/www/html/pukiwiki/locale
textdomain=pukiwiki
bind_textdomain_codeset=UTF-8
Others
setlocaleが空です。 -- alen?
- 忘れてました
localeのパーミッションは777です。 -- alen?
- それでは、
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
- 実行してみました。
setlocale=C
bindtextdomain=/var/www/html/pukiwiki/locale
textdomain=pukiwiki
bind_textdomain_codeset=UTF-8
Others
setlocaleがCになりました。-- alen?
- では、
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
- いずれにしても、setlocale は、PHP標準の関数を利用していて、gettextのみ、PHPに組み込まれていないような場合は、エミュレートする仕様なので、PHPによる locale の設定がうまくできない環境という認識です。-- upk
- 実行してみました。
setlocale=
bindtextdomain=/var/www/html/pukiwiki/locale
textdomain=pukiwiki
bind_textdomain_codeset=UTF-8
Others
またもや空に
-- alen?
- 確信に近づいてきたような
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?
- いけましたーー
locale.aliasのja_JPがja_JP.eucJPになってたんですが、ja_JP.utf8にすると日本語に
←感涙。 upk様長々とお付き合いくださりありがとうございました。。。おかげで少しスキルアップできました<(_ _)> -- alen?
- おぉ、良かったですね。locale.alias ね。昔、a.out の当時、libc6 で locale の実装が入るということで、喜んでいたのを思い出しました。 -- upk