使用带有codeigniter的gettext的多语言支持,最佳实践?

时间:2010-03-26 22:07:23

标签: php codeigniter multilingual gettext

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

像这样调用服务器是明智的:www.domain.com/controllername?lang=en

使用默认的url架构为每个控制器执行此操作,要求我在每个控制器中实现相同的方法,只是将lang参数传递给setlocale()函数,然后绑定到我的.po域名。感觉很尴尬......

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

2 个答案:

答案 0 :(得分:2)

我只是创建了一个可以在视图中自动翻译{t}和{/ 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>

答案 1 :(得分:1)

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

使用后备检查检测语言

  1. 它是通过GET参数设置的(例如?lang = en)?
  2. 它是用cookie设置的吗?
  3. 浏览器建议的语言是什么?
  4. 使用配置的默认语言
  5. 但是,如果不支持某种语言,请使用默认语言。 使用新数据设置或刷新cookie。

    因此,如果用户点击某处更改语言,通常不需要使用GET参数,即使只是一次,