我的目标是拥有:
.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的发展做出贡献。
答案 0 :(得分:1)
有几种不同的方法可以解决这个问题。
参数化主机名。有关如何设置的详细信息,请参阅指南:http://www.yiiframework.com/doc/guide/1.1/en/topics.url#parameterizing-hostnames
根据所使用的域名,将环境变量设置为Web服务器的一部分。
我过去做过#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贡献!