我需要把我的网站翻译成法语,但是它不能翻译。我对代码做了很多修改,但似乎都不起作用。有什么想法吗?
<?php
$langSite = 'fr';
setlocale(LC_ALL, $langSite);
putenv("LANGUAGE=".$langSite);
$langDomain = 'fr';
bindtextdomain($langDomain, 'lang');
bind_textdomain_codeset($langDomain, 'UTF-8');
textdomain($langDomain);
echo _("Password"); // returning Password instead of Mot de passe
?>我在langs/fr/LC_ fr.po中找到的消息文件如下所示:
msgctxt "Password"
msgid "Password"
msgstr "Mot de passe"发布于 2021-01-16 16:07:06
1。)您必须从.po文件创建一个以.mo结尾的编译版本,并将其放在服务器上。
这可以通过Poedit https://poedit.net/来完成
POEDIT非常好-它扫描所有文件的完整目录,将所有翻译字符串放到.po文件中,并提供一个图形用户界面来执行检查和更多操作。付费(一次性)版本甚至更好,如果你将你的语言翻译成外语,它可以使用web服务来翻译你的字符串。
2。)备注:通常你的域名只有'messages‘,然后gettext会使用正确的目录来使用所需的语言。文件名则为messages.po和messages.mo
我很难让它启动,因为我也使用了en.po,直到我检查文件名必须与域名相同。
3。)下面是在我的服务器上配置GETTEXT的包含文件中的代码:(在我检查语言是来自SESSION还是GET之前,但那是另一回事)。
putenv ( "LANG=" . $language );
setlocale (LC_ALL, $language.".UTF8" );
// Set the text domain as "messages"
$domain = "messages";
$domain_path= $_SERVER['DOCUMENT_ROOT'] ."/locale";
bindtextdomain($domain, $domain_path);
bind_textdomain_codeset($domain, "UTF-8" );
textdomain($domain);上面的值反映了我的路径结构:
这是
/locale/
/{language}/
LC_MESSAGES/
messages.po
messages.mo4.你写
bindtextdomain($langDomain,'lang');
我在langs /fr/LC_ fr.po中找到的消息文件如下所示:
binddextdomain的第二个参数必须与路径相同,但您可能有一个输入错误或另一个错误,因为您有一次lang和另一次time langs ??这必须是相同的!
https://stackoverflow.com/questions/65746368
复制相似问题