Web サイトの再設計に使用せざるを得ないサーバーで gettext に奇妙な問題が発生しています。お客様はネットワーク ソリューションをプロバイダーとして使用することに慣れているため、現在、プロバイダーを変更することはできません。とにかく問題は次のとおりです。
gettext がインストールされていない可能性があると思ったので、phpinfo を確認したところ、有効になっています。
gettext GetText のサポートが有効
私も使用して確認しました
if (!function_exists("gettext")) { echo "gettext がインストールされていません\n"; } else { echo "gettext はサポートされています\n"; }
出力は言うgettext is supported
次に、サーバーがネイティブの gettext に問題があるのではないかと考えたので、これを使用してみましたhttps://launchpad.net/php-gettext/。サーバーにアップロードしましたが、どちらも機能していません。
私のヘッダーの設定は
putenv("LC_ALL=".$locale.".utf8");
putenv("LANGUAGE=".$locale."utf8");
setlocale(LC_ALL, $locale.".utf8");
bindtextdomain($domain, "./locale");
bind_textdomain_codeset($domain, "UTF-8");
textdomain($domain);`
$locale
および$domain
サーバーは関数の前に割り当てられます。
gettext を使用した同じコードが、ローカルの Apache サーバーで正常に機能しました。
問題は何ですか?サイトはそれほど大きくないので、翻訳にデータベースストレージを使用することを検討していますが、そのアイデアにはあまり興味がありませんが、なぜこれが起こっているのかわかりません.
ロケール ファイルが正しく配置されて./locale/language_code/LC_MESSAGES/file.po
おりfile.mo
、bindtextdomain の戻り値をエコーすると、ロケールへのフル パスが表示されます。
助言がありますか?