php
  • localization
  • xampp
  • gettext
  • 2017-04-23 35 views 0 likes 
    0

    我一直在嘗試使用gettext功能將本地化功能添加到我的網站。請記住,我不是一個webdev,而且這個領域對我來說是相當陌生的。在遵循幾個教程之後,我安裝了擴展,並在php.ini中啓用了它。我也使用PoEdit來創建.po文件。我的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文件看起來是這樣的:

    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" 
    

    我的目錄結構是這樣的:

    enter image description here

    不管我做什麼,正在顯示的字符串似乎是鑰匙和而不是來自文件的翻譯。在我目前的例子中,我得到歡迎,但我希望得到歡迎(用大寫字母W)

    回答

    0

    我認爲這個問題是

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

    應該

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

    代替。

    因爲在這個改變後,片段對我來說工作得很好。

    +0

    這是我在複製代碼時犯的一個錯誤。我其實就是這樣試過的。測試我的託管服務提供商的代碼似乎工作,所以我只是將我的IDE連接到那裏,我將在那裏發佈文件。似乎無法讓它在本地主機上工作。 –

    +0

    確保你把正確的目錄放到'bindtextdomain'中。 – akond

    相關問題