使用gettext时的区域设置配置及PHP多语言翻译故障排查
gettext无法完成翻译,PHP 8.2.1环境下排查思路求助
我严格按照教程操作,但gettext始终无法完成翻译。当前环境是Linux虚拟主机,PHP版本8.2.1,phpinfo显示gettext已启用,无法定位问题所在。另外想请教,gettext是否并非多语言网站的理想解决方案?
PO文件内容
msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: 2014-03-22 14:45+0100\n" "PO-Revision-Date: 2023-01-28 12:39+0100\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" "X-Poedit-KeywordsList: _;gettext;gettext_noop\n" "X-Poedit-Basepath: .\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Generator: Poedit 3.2.2\n" # Test 1 msgid "SCHOOL" msgstr "School"
PHP代码
$language = "en_US.utf8"; putenv("LANG=".$language); setlocale(LC_ALL, $language); $domain = "messages"; bindtextdomain($domain, "Locale"); textdomain($domain); if (!function_exists("gettext")){echo "gettext is not installed<br>";} echo gettext("SCHOOL") . " (Works if small letters)<br>"; echo "<br><br>"; echo "Current locale: " . setlocale(LC_ALL, 0); echo "<br><br>"; var_dump(system('locale -a'));
输出结果
SCHOOL (Works if small letters) Current locale: en_US.utf8 C C.UTF-8 en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IL en_IL.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW.utf8 POSIX sv_SE.utf8 string(10) "sv_SE.utf8"
我使用PoEdit创建了message.po文件,并放置在en_US/LC_MESSAGES/message.po路径下。已花费数日搜索尝试仍未解决,恳请提供解决思路。
内容的提问来源于stack exchange,提问作者johnjohn22
相关产品推荐
相关产品推荐

