我知道这个问题已经在这里被问了很多次了,但我真的看了所有的问题并尝试了所有的方法,但仍然没有运气。
我正在尝试使用 PHP gettext 将我的应用程序从法语翻译成英语。我正在解析 gettext 字符串并将它们存储在 traduction.po 中,以便稍后使用 POEdit 进行翻译。 问题是每次它都只是输出原始输入。
我的设置:
gettext设置代码:
define('LOCALE_DIR', realpath($_SERVER['DOCUMENT_ROOT']). '/locale');
$locale = "en-US";
$domain = 'traduction';
putenv("LC_ALL={$locale}");
setlocale(LC_ALL, $locale);
bindtextdomain($domain, LOCALE_DIR);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
echo _("Bonjour");
翻译路径: C:\wamp\www\myapp\locale n-US\LC_MESSAGES raduction.po
翻译.po
msgid ""
msgstr ""
"Project-Id-Version: Trad Project Anglais\n"
"POT-Creation-Date: 2023-04-14 14:54+0200\n"
"PO-Revision-Date: 2023-04-14 14:54+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
"X-Poedit-Basepath: ../../..\n"
"X-Poedit-KeywordsList: _\n"
"X-Poedit-SearchPath-0: .\n"
#: index.php:17
msgid "Bonjour"
msgstr "Hello"
我还验证了我得到了正确的本地人(因为如果语言环境是 en_US 而不是 en-US,setlocale() 返回 false)
这里是我的 Windows 中安装的本地列表:
PS C:\Users\me> Get-WinUserLanguageList
LanguageTag : en-US
Autonym : English (United States)
EnglishName : English
LocalizedName : Anglais (États-Unis)
ScriptName : Latin
InputMethodTips : {0409:00020409}
Spellchecking : True
Handwriting : False
LanguageTag : fr-FR
Autonym : Français (France)
EnglishName : French
LocalizedName : Français (France)
ScriptName : Latin
InputMethodTips : {040C:0000040C}
Spellchecking : True
Handwriting : False
我也不确定是否有一个,但由于我没有收到错误消息,如果有一种方法可以显示 gettext 的日志,那就太好了