Yii框架多语言,多顶级域名

时间:2014-09-17 02:51:53

标签: yii localization multilingual

我的目标是拥有:

.com / english-urls - 英语(美国)

.com.br / portuguess-urls - Portuguess(巴西)

.com.mx / spanish-urls - 西班牙语(墨西哥)

...

我已经使用此语言切换器实现了多语言功能:http://www.yiiframework.com/wiki/293/manage-target-language-in-multilingual-applications-a-language-selector-widget-i18n/

使用以下网址进行网址定位:http://www.yiiframework.com/wiki/55/i18n-subdomains-and-url-rules/

关于如何拥有多级域名功能的任何想法?

提前感谢为Yii的发展做出贡献。

2 个答案:

答案 0 :(得分:1)

有几种不同的方法可以解决这个问题。

  1. 参数化主机名。有关如何设置的详细信息,请参阅指南:http://www.yiiframework.com/doc/guide/1.1/en/topics.url#parameterizing-hostnames

  2. 根据所使用的域名,将环境变量设置为Web服务器的一部分。

  3. 我过去做过#1并且效果很好。如果您的网站使用SSL运行但您的开发人员使用非SSL计算机,则会出现一个令人讨厌的副作用。参数化主机名需要完整的http://或https://作为URL规则的一部分,除非您扩展CUrlManager。

    如果您使用参数化主机名 AND baseUrl(https://github.com/yiisoft/yii/issues/3520),我最近遇到的另一个错误就出现了。可能没有什么可担心的,但是它就是那里的一个FYI。

    这就是为什么使用环境变量的想法引起了我的兴趣。您可能只能加载符合您给定语言的规则集等,但我还没有亲自使用该方法构建系统。

答案 1 :(得分:1)

最后我得到了一个解决方案!

使用此课程:http://www.yiiframework.com/wiki/55/i18n-subdomains-and-url-rules/

1.-定义您的顶级域名列表。

public $ domainList = array(' www.example.com.mx' =>' es',' www.example.com' => '恩&#39);

2.-评论不必要的代码。

3.-检测SERVER_NAME并另存为activeLanguage。

$ languageCode = $ this-> domainList [$ _ SERVER [' SERVER_NAME']];

$ this-> activeLanguage = $ this-> isSupportedLanguage($ languageCode);

3.-在标题或主页中创建链接。

感谢twitter.com/atrandafir和acorncom贡献!