CodeIgniter Modular Extensions& i18n库

时间:2013-11-27 04:02:57

标签: php codeigniter internationalization codeigniter-routing modularization

我一直在使用JérômeJaglale(http://maestric.com/en/doc/php/codeigniter_i18n)的CodeIgniter i18n库,这对我的项目非常有用。

但由于我需要编写单独的模块,我最近添加了CodeIgniter Modular Extensions(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc)和导航中断。

我怎么能解决这个问题,我很乐意同时使用i18n库和模块化扩展。

我认为我的应用程序导航无法正常工作,因为i18n库引入了在网站url中添加了一个语言段,在我的情况下,我的url是localhost / index.php / en / home,在添加Modular Extensions后,我的导航/链接停止工作

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

最近,我尝试将HMVC与i18n一起使用并遇到类似的问题。以下是我的解决方案。

1.首先你需要到这里HMVC选择“分支”来下载HMVC扩展,不要在github上下载它可能不起作用。

2.解压缩文件夹内的HMVC扩展名将“MY_Loader.php”和“MY_Router.php”从核心文件夹复制到Codeigniter的“应用程序/核心”,然后将“MX”文件夹从“third_party”复制到Codeigniter的“应用程序” /第三方”。此时你的HMVC已经安装,但它无法正常工作,因为i18n会导致问题所以如果你运行你的网站它可能不会显示。

3.你需要获得支持HMVC和没有HMVC的新版i18n,旧版本的i18n似乎不支持HMVC。转到此处i18n下载并花些时间阅读github上的说明。

4.在此步骤之前,我建议您备份“application / core / MY_Config.php”和“application / core / MY_Lang.php”,万一出现问题,您可以退回。将文件夹复制文件“language.php”中的i18n从配置文件夹解压缩到Codeigniter的“application / config”,将两个文件“MY_Config.php”和“MY_Lang.php”从核心文件夹复制到Codeigniter的“应用程序/核心”,最后复制“ MY_language_helper.php“从帮助文件夹到Codeigniter的”应用程序/帮助程序“。到目前为止,您已安装新的i18n,但您需要对其进行配置以使其正常工作,否则您可能会收到错误消息。

5.打开“application / core / MY_Config.php”并将行require_once APPPATH . "libraries/MX/Config.php";替换为require_once APPPATH . "third_party/MX/Config.php";,然后打开“application / core / MY_Lang.php”将行require APPPATH . "libraries/MX/Lang.php";替换为require APPPATH . "third_party/MX/Lang.php";。为什么?因为它指向错误的目录,MX文件夹位于“third_party”而不是“库”,如果您不知道,如果您不更改它,您可能会收到错误消息。

6.要添加新语言(不创建语言文件),您需要打开“application / config / language.php”。你可以在顶部找到带有注释的代码块说“支持的语言”,已经有英语和俄语配置,只需要复制模板并更改为你想要的语言,这很容易。请注意文件夹的名称必须与“application / language”中的文件夹完全相同。

7.根据i18n github描述,你需要添加这些行

$route['^(en|de|fr|nl)/(.+)$'] = "$2";

$route['^(en|de|fr|nl)$'] = $route['default_controller'];

到“application / config / routes.php”。请注意旧版i18n中的这一行$route['^(en|de|fr|nl)/(.+)$'] = "$2";可能是$route['^(en|de|fr|nl)/(.+)$'] = "$1";,差异是“$ 1”必须更改为“$ 2”,否则您将遇到问题。

8.创建语言文件与您在旧版i18n中执行的方法相同。现在用多语言测试您的网站,以确保一切正常。

9.创建您的模块。怎么样?在Codeigniter的应用程序文件夹中创建文件夹名称“modules”,在modules文件夹中可以开始创建模块。也就是说你要创建一个模块调用foo,你只需要创建一个文件夹名称“foo”然后在foo文件夹中你可以创建三个文件夹控制器,模型和视图。使用下面的代码创建名为foo的php文件

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 class Foo extends MX_Controller 
 {

     public function index()
     {
         echo "<h1>class foo this is module test</h1>";
     }
 }

输入url来运行您的模块,如果您看到“class foo这是模块测试”,那么它可以工作。 记住模块类必须从MX_Controller扩展。

如果您仍然遇到任何问题,请询问。