玩用户的语言
2008年10月16日·发表的法比安效力
我已经讲了sfFormExtraPlugin
在之前的文章中,人们非常惊讶于一些插件提供的小部件。
今天,我将谈论sfFormLanguage
,还提供的一种形式sfFormExtraPlugin
插件。
让用户改变他的语言
sfFormLanguage
允许用户改变当前的语言:
创建一个sfFormLanguage
形式,您需要通过symfony用户对象(ob娱乐下载sfUser
)和一个数组支持的语言:
类mainActions扩展sfActions{公共函数executeChangeLanguage(美元的请求){这个美元- >形式=新sfFormLanguage(这个美元- >getUser(),数组(“语言”= >数组(“en”,“fr”)));}}
相关模板非常简单:
<表单动作=“< ?php echo url_for (@change_language) ? > "方法=“职位”> <标签为=“语言”> >选择语言:< /标签< ? php回声美元的形式(“语言”]? >< ? php回声美元的形式- >renderHiddenFields()? >< input type =“提交”值=“ok”> < /形式>
当用户提交表单(帖子
),我们需要处理:
类mainActions扩展sfActions{公共函数executeChangeLanguage(美元的请求){这个美元- >形式=新sfFormLanguage(这个美元- >getUser(),数组(“语言”= >数组(“en”,“fr”)));如果(美元的请求- >isMethod(“职位”)){这个美元- >形式- >过程(美元的请求);返回这个美元- >重定向(“@homepage”);}}}
的sfFormLanguage::过程()
方法以当前请求参数,结合的形式提供的数据请求,验证表单,表单,如果有效,自动改变用户的文化。
上面的代码并不管理形式错误,因为它不能发生,除非用户假货的选择值。在这种情况下,我们不关心是否显示一个错误。但如果你想过程()
方法返回真正的
如果文化改变了假
否则(如果有一个错误在验证为例):
类mainActions扩展sfActions{公共函数executeChangeLanguage(美元的请求){这个美元- >形式=新sfFormLanguage(这个美元- >getUser(),数组(“语言”= >数组(“en”,“fr”)));如果(这个美元- >形式- >过程(美元的请求)){/ /文化改变了返回这个美元- >重定向(“@homepage”);}/ /表单无效(不可能发生…但你永远不知道)返回这个美元- >重定向(“@homepage”);}}
sfFormLanguage
使用简单,为国际化的网站非常有用。
如何猜测用户的语言?
当用户第一次来到你的网站,它有时需要显示主页“首选”的语言。symfob娱乐下载ony的请求
对象提供了一个getPreferredCulture ()
方法,为你工作。所以,这只是一种改变当前用户文化的首选:
$ user- >setCulture(美元的请求- >getPreferredCulture(数组(“en”,“fr”)));
的getPreferredCulture ()
方法以一个数组的有序文化你支持在你的网站上。
这猜测最好的文化,基于HTTP_ACCEPT_LANGUAGE
HTTP报头。它返回的拳头匹配HTTP头和数组之间的语言。如果没有匹配,方法返回第一个支持文化(在
在本例中)。
发表在#教程
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
10月走了一半,我要nevrouse,等待版本1.2,)
语言:fr
文化:fr_CH
如果我用法文在文化、数字是逗号。在瑞士,分隔符是点(.)。
如何正确地管理它?
“英语、法语”
而不是“英语、法语”?