2010-03-26 67 views
4

我知道如何创建.po文件以及如何生成.mo文件,然后在我的Codeigniter支持的站点上使用它们进行翻译。但是,我不太确定如何从网站GUI更改语言。我想坚持codeigniter的默认网址调用架构:www.domain.com/controllername/method/param1/param2。使用getign和codeigniter进行多语言支持,最佳实践?

调用这样的服务器是一个没有脑子:www.domain.com/controllername?lang=en

这样做,对于使用默认网址架构中的每个控制器,需要我去实现每一个同样的方法控制器,只是将lang参数传递给setlocale()函数,然后绑定到我的.po域名。感觉尴尬...

ANy想法你们如何使用codeigniter中的gettext?是的,我确实想使用gettext。

回答

1

我检查用户的语言钩住“post_controller_constructor”处的检测,并将其设置为全局可用(例如,在运行时更改配置文件中的语言)。控制器只需使用该值。

在回退

  1. 以下检查已经通过GET参数(例如?LANG = EN)设定被检测的语言?
  2. 它被设置在cookie中?
  3. 什么是浏览器建议的语言?
  4. 使用配置

如果语言不支持默认语言,但是,使用默认值。 使用新数据设置或刷新cookie。

所以你平时不如果用户点击某处改变语言

+0

“钩住'post_controller_constructor'处的检测”是什么意思? – DanMan 2012-07-22 16:22:15

+0

我的意思是“我给hook'post_controller_constructor”添加了一个回调函数。请参阅http://codeigniter.com/user_guide/general/hooks.html。你需要在你的代码在控制器类被实例化之后运行,但是在你的具体控制器方法被调用之前,你需要运行代码 – 2012-07-23 09:19:33

+0

。谢谢。 – DanMan 2012-07-23 09:59:29

2

我只是做一个库,它可以自动翻译横置之间的所有文字和{需要使用GET参数,evenctuallly只是一个时间/ T】在视图中,我张贴在这里情况下,一些人想用它代替调用视图了gettext功能:

http://www.chuongduong.net/page/15/codeigniter-gettext-with-smarty-or-parser-template-without-php-code-in-view.html

视图代码可能是:

<html> 
<head> 
<title>{blog_title}</title> 
</head> 
<body> 

<h3>{blog_heading}</h3> 
{blog_entries} 

<h5>{t}Title is{/t} {title}</h5> 

<p>{t 1="<b>" 2="</b>"}Click here %1to see%2 me{/t}{body}</p> 

<p>{t 1="{id}" 2="author"}The id is: %1 wrote by %2{/t}</p> 

<p>{t 1="<a href=\"link here\">" 2="</a>"}Please lick on me%2{/t}</p> 

{/blog_entries} 

</body> 

</html>