我已经研究了好几个小时,但我找不到一个清晰、有效的方法来解决我的问题。
我有 2 个阿拉伯语和法语模板(页眉 + 内容 + 页脚)。对于每种语言,我的控制器中有不同的页面和不同的功能。如何制作多语种网站?
传递我的链接?lang=fr
或?lang=ar
不损害我的链接,类似于:localhost/site/controleur/method/id
Ps:我正在使用 mysql db 。
我已经研究了好几个小时,但我找不到一个清晰、有效的方法来解决我的问题。
我有 2 个阿拉伯语和法语模板(页眉 + 内容 + 页脚)。对于每种语言,我的控制器中有不同的页面和不同的功能。如何制作多语种网站?
传递我的链接?lang=fr
或?lang=ar
不损害我的链接,类似于:localhost/site/controleur/method/id
Ps:我正在使用 mysql db 。
是的,您可以创建一个单独的lang
文件夹(针对每种语言),其中包含具有相似键的文件,但值(文本)将根据语言类型而定。然后根据标识符的请求包含该特定语言文件(文件夹)。
为什么不根据语言为控制器使用子文件夹?
controllers/ar/my_controller.php
controllers/fr/my_controller.php
http://www.example.com/fr/home
http://www.example.com/ar/home
为什么您的网站需要不同的页面?IMO,您需要根据语言切换模板或加载不同的控制器
以防万一,如果你刚刚开始你的项目,你可能会发现Bonfire更适合这个。它以更简单的方式支持模板化和国际化。
Codeigniter 已经提供了多语言工具,它的国际化支持,
您只需要一个控制器、语言文件和视图。
根据选择的语言,您的控制器将加载相应的语言文件,视图文件将显示语言文件中编写的模板。
您的语言文件将如下所示
$lang['language_key'] = "The actual message to be shown";
您的控制器,siteLang 的值可以从 url 中检索,或者您可以将其作为 cookie 存储在浏览器中。
function home(){
$this->lang->load('home', $this->siteLang);
}
您的视图看起来像这样,通过这个,language_key 的值将显示在该控制器上。
<?php echo $this->lang->line('language_key'); ?>
一些关键点,例如 lang 文件的命名法等,您可以在以下链接 http://ellislab.com/codeigniter/user-guide/libraries/language.html找到更多相关信息