在Symfony2的URL中使用locale(语言+国家)



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

www.test.com/en_HK

这应该显示英文文本和以港元表示的价格。英语文本部分已经工作。是否有一个Symfony函数可以从地区获取国家代码?

区域设置包含"languagecode_COUNTRYCODE"。或者我应该写几行代码来分散国家代码和地区?

不,没有函数可以直接这样做,因为locale可以是2个字母:

交货。 enfr 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");
    }

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

最新更新