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

Php 使用gettext和codeigniter的多语言支持,最佳实践?,php,codeigniter,multilingual,gettext,Php,Codeigniter,Multilingual,Gettext,我知道如何创建.po文件,以及如何生成.mo文件,然后在我的Codeigniter网站上使用它们进行翻译。但是,我不太清楚如何从站点GUI更改语言。我想坚持使用codeigniter的默认url调用模式:www.domain.com/controllername/method/param1/param2 像这样调用服务器是很容易的:www.domain.com/controllername?lang=en 对于使用默认url模式的每个控制器,这样做需要在每个控制器中实现相同的方法,只需将lang

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

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

对于使用默认url模式的每个控制器,这样做需要在每个控制器中实现相同的方法,只需将lang参数传递给setlocale()函数,然后绑定到my.po域名。感觉很尴尬


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

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

通过以下签入回退检测到该语言

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


    因此,您通常不需要使用GET参数,如果用户单击某个地方来更改语言,甚至只需要使用一次,我只是创建了一个库,它可以自动翻译视图中{t}和{/t}之间的所有文本,我在这里发布,以防有人想使用它,而不是调用视图中的gettext函数:

    视图代码可能是:

    <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>
    
    
    {blog_title}
    {博客标题}
    {blog_条目}
    {t} 标题为{/t}{Title}
    {t1=”“2=”“}单击此处%1查看%2 me{/t}{body}

    {t 1=“{id}”2=“author”}id是由%2{/t}编写的:%1

    {t1=”“}请舔我%2{/t}

    {/blog_条目}
    你说的“在‘post\u controller\u构造函数’上挂接检测”是什么意思?我的意思是“我向挂接‘post\u controller\u构造函数’添加回调”。看见您需要在控制器类实例化之后但在调用特定控制器方法之前运行代码