2011-12-05 67 views
2

我正在开发一个多语种站点。Zend Translate - 为每个用户设置区域设置

我在Zend_Registry中放置了一个Zend_Translate对象,并用它将所有静态文本转换为所选语言环境。

我的问题是如何在用户选择另一种语言时更改语言环境?

如果我从注册表中获得翻译对象,请调用setLocale,并将其重新放入注册表中,它是否仅适用于该用户或整个应用程序?

谢谢。

+0

我发现,使用控制器插件来设置zend翻译在注册表中的区域设置...是唯一的方法吗? – Ran

+0

可能不是*只有一个,但如果您想基于URL参数设置它,那么我会说它至少是最方便的。 – mingos

回答

2

您将需要使用插件了点。

简而言之:创建您的插件并添加routeStartup()routeShutdown()方法。在前者中,将语言环境字符串设置为请求参数,并且如果需要,还将requesr URI设置为包含语言环境字符串。正确的语言环境字符串检测取决于您 - 您可以使用cookie,URL参数,浏览器接受的语言标题或三者的任意组合。在后者中,根据您之前设置的区域创建您的Zend_Translate对象。

这是how it looks like in my CMS

这是tutorial regarding the use of the language parametre in the URL。您也可以检查how I do it in my CMS(请参阅_initRouter方法)。

我希望这个信息是有帮助的。

0

使用poEdit的用于此目的..go通过这个链接了解更多

techie.ayyappadas.com/how-do-use-poeditor 
+0

我有一个翻译文件..我需要一个PHP(zend)代码来给用户一个选项来改变选定的语言。 – Ran