2017-04-23 11 views
0

私はこのgettext機能を使用して自分のウェブサイトにローカライゼーション機能を追加しようとしています。私はwebdevではないことを覚えておいてください。このフィールドはむしろ私には分かりません。いくつかのチュートリアルの後、私は拡張機能をインストールし、php.iniで有効にしました。また、.poファイルの作成にPoEditを使用しています。私のPHPコードは次のようになります。PHP - Windows 10およびxampサーバーでgettext()を使用

<?php 
$language = "en_US"; 
putenv("LC_ALL={$locale}"); 

$domain = 'messages'; 
bindtextdomain($domain, './locale'); 
bind_textdomain_codeset($domain, 'UTF-8'); 
textdomain($domain); 
?> 

それから私はこのようにそれを呼び出す:私の理解は、 "_" 進むにつれ

<p class="welcome"><?=_('welcome');?></p> 

gettextの方法についてalieasです。どちらもうまくいきません。 メッセージの.poファイルには、次のようになります。どんなに私が表示されている文字列がキーであるように見えるし、何をすべきか

enter image description here

を:

msgid "" 
msgstr "" 
"Project-Id-Version: \n" 
"POT-Creation-Date: 2017-04-23 11:27+0300\n" 
"PO-Revision-Date: 2017-04-23 11:36+0300\n" 
"Language-Team: \n" 
"MIME-Version: 1.0\n" 
"Content-Type: text/plain; charset=UTF-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"X-Generator: Poedit 2.0.1\n" 
"X-Poedit-Basepath: ../../..\n" 
"Plural-Forms: nplurals=2; plural=(n != 1);\n" 
"Last-Translator: \n" 
"Language: en\n" 
"X-Poedit-SearchPath-0: index.php\n" 

#: index.php:63 
msgid "welcome" 
msgstr "Welcome" 

#: index.php:64 
msgid "to-leadersplay" 
msgstr "to Leadersplay" 

私のディレクトリ構造は次のようになりませんファイルからの翻訳ではありません。私の現在の例では、私は歓迎し得るが、私は

答えて

0

私は問題が

$language = "en_US"; 
putenv("LC_ALL={$locale}"); 

ではなく

$locale = "en_US"; 
putenv("LC_ALL={$locale}"); 

でなければならないことだと思う(資本Wで)ようこそ得ることを期待します。

この変更の後、スニペットは私のためにうまく機能します。

+0

これは私のコードのコピーから間違いでした。私は実際にそれを試してみました。私のホスティングプロバイダーでコードをテストすることはうまくいくように思えるので、IDEを接続してそこにファイルを公開します。 Cantはlocalhost上で動作するように見えます。 –

+0

適切なディレクトリを 'bindtextdomain'に入れてください。 – akond

関連する問題