在Symfony2的URL中使用区域设置(语言+国家/地区)

时间:2013-03-28 17:20:10

标签: symfony localization locale

我正在Symfony2建立一个国际网站。我的网址看起来像这样:

www.test.com/en_HK

这应该以香港美元显示英文文本和价格。英文文本部分已经开始工作了。是否有可用于从区域设置获取国家/地区代码的Symfony函数?

语言环境包含“languagecode_COUNTRYCODE”。或者我应该编写一些代码行来分散国家代码与区域设置的关注吗?

1 个答案:

答案 0 :(得分:1)

不,没有直接执行此操作的功能,因为语言环境可以是2个字母:

ex。 en,fr,de

SonataIntlBundle提供了一些ISO代码扩展,但不是您正在寻找的

http://sonata-project.org/bundles/intl/master/doc/reference/locale.html

Locale组件接近,您可以这样做:

$countryCodes = Locale::getCountries('en_HK');

编写服务来执行此操作应该是相当简单的:

class CountryCodeExtractor
{
    function fromLocale($locale)
    {
        if(strlen($locale) == 4){
            return substr($locale, -2);
        }
        else throw new \Exception("Invalid locale passed");
    }

类似的东西。显然,您需要更好地验证输入区域设置。