1

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 の戻り値をエコーすると、ロケールへのフル パスが表示されます。

助言がありますか?

4

2 に答える 2

0

チャットで Network Solutions に連絡したところ、彼らの共有ホスティングではロケールを使用できないとのことでした。特にサーバー用の特定の.htaccess構文にも問題があり、これはa **の苦痛です。共有サーバーのホスティングは絶対にお勧めしません. とにかく、助けてくれた@jacob-budinと@mikeに感謝します。

于 2014-01-16T16:59:28.757 に答える