簡體   English   中英

GetText 和 PO 文件不適用於 XAMPP、PHP 7.3

[英]GetText and PO files not working on XAMPP, PHP 7.3

我知道有很多關於同樣問題的帖子,但我真的無法弄清楚。

在 OS X 上運行 XAMPP,使用 PHP 7.3.23

PHP 片段:

<?php
$language = "fr_CA";
putenv("LANGUAGE=".$language);
//if(!defined('LC_ALL')) putenv('LC_ALL=' . $language);
$setlocale = setlocale(LC_ALL, $language);
$domain = "textdomain";
$bindtextdomain = bindtextdomain($domain, realpath(dirname(__FILE__)."/locale"));
$textdomain = textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');

var_dump($setlocale); // Returns : string(5) "fr_CA"
var_dump($bindtextdomain); // Returns : string(57) "/ABSOLUTE_PATH_TO_WEBSITE/locale"
var_dump($textdomain); // Returns : my textdomain

echo _("Ceci est un test"); // Returns : the same (instead of "TEST REUSSI")

采購訂單文件:

"Project-Id-Version: Projet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-29 10:56-0500\n"
"PO-Revision-Date: 2020-11-29 10:57-0500\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr_CA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-KeywordsList: _;__;_e;esc_html__\n"
"X-Poedit-Basepath: ../../..\n"
"X-Poedit-SearchPath-0: .\n"

#: _test.php:7 _test_locale.php:18
msgid "Ceci est un test"
msgstr "TEST REUSSI"

文件夾結構是這樣的:

locale/fr_CA/LC_MESSAGES/textdomain.po  and .mo

語言環境存在(如果我查找語言環境 -a),也嘗試重新啟動 Apache。 我沒主意了。

您需要將文本域添加到您的通話中:

// No good
echo _("Ceci est un test");
// This will work!
echo _($domain . "\004" . "Ceci est un test");

現在將 textdomain 添加為您的 PO 文件中的msgctxt "textdomain"並保存。

#: _test.php:7 _test_locale.php:18
msgctxt "textdomain" # Add this
msgid "Ceci est un test"
msgstr "TEST REUSSI"

請記住, $domain必須與msgctxt值匹配。

此答案改編自“gmail dot com 的 kingjackal”的 PHP 官方文檔評論,可以在此處查看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM