如何将浏览器区域设置映射到我的一个php gettext i18n语言环境?

时间:2015-12-01 15:38:41

标签: php internationalization locale

我已经开始使用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_GBfr_FRes_ES这完全有效,我只需在pt_PT附加区域设置即可。我很高兴。

但可能根本没有设置区域设置。嗯,好的,所以我们加上这个:

.utf8

但我知道某个区域设置可能只是if (!$locale) { $locale = 'en_GB'; } (也许是fr?)。没问题,这将抓住大部分:

FR
好的,好的。但是代码开始增加,现在我看到显然if (strlen($locale)==2) { $locale = strtolower($locale).'_'.strtoupper($locale); } 是一个有效的语言环境。可能还有无数其他奇怪的边缘情况,我不知道。

正确的方法是什么?

在查看文档后,人们可能会认为french会得到答案,但遗憾的是没有:

Locale::lookup

0 个答案:

没有答案