我已经开始使用gettext翻译我的网站了。到目前为止,我已将关键菜单和标题翻译成法语,西班牙语和葡萄牙语。
我的文件夹结构如下所示:
Select name, COUNT(*) AS cnt
FROM candidate
GROUP by name
ORDER BY COUNT(*) DESC
LIMIT 1
我可以像这样获得用户的默认浏览器区域设置:
.../locale
/en_GB.utf8
/LC_MESSAGES
messages.po
messages.mo
/fr_FR.utf8
/LC_MESSAGES
messages.po
messages.mo
/es_ES.utf8
/LC_MESSAGES
messages.po
messages.mo
/pt_PT.utf8
/LC_MESSAGES
messages.po
messages.mo
如果他们的语言区域为$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
,en_GB
,fr_FR
或es_ES
这完全有效,我只需在pt_PT
附加区域设置即可。我很高兴。
但可能根本没有设置区域设置。嗯,好的,所以我们加上这个:
.utf8
但我知道某个区域设置可能只是if (!$locale) {
$locale = 'en_GB';
}
(也许是fr
?)。没问题,这将抓住大部分:
FR
好的,好的。但是代码开始增加,现在我看到显然if (strlen($locale)==2) {
$locale = strtolower($locale).'_'.strtoupper($locale);
}
是一个有效的语言环境。可能还有无数其他奇怪的边缘情况,我不知道。
正确的方法是什么?
在查看文档后,人们可能会认为french
会得到答案,但遗憾的是没有:
Locale::lookup