0

我一直在使用JérômeJaglale的CodeIgniter i18n库(http://maestric.com/en/doc/php/codeigniter_i18n),该工具对我的项目非常有用。CodeIgniter模块化扩展和i18n库

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

我该如何解决这个问题,我很乐意使用i18n库&模块化扩展。

我认为我的应用程序导航无法正常工作,因为i18n库引入在站点url中添加语言段,在我的情况下,我的url是localhost/index.php/en/home,添加模块化扩展后,我的导航/链接停止工作。

预先感谢您。

回答

0

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

1.首先你需要去这里HMVC选择“分支”下载HMVC扩展名,不要下载github上的那个,它可能无法工作。

2.将“MX”文件夹从“third_party”复制到Codeigniter的“文件夹”后,解压缩文件夹中的HMVC扩展名将两个文件“MY_Loader.php”和“MY_Router.php”从核心文件夹复制到Codeigniter的“应用程序/核心”应用程序/ THIRD_PARTY”。通过这一点你的HMVC被安装,但它不会工作,因为i18n导致的问题,所以如果你运行你的网站它可能不会显示。

3.您需要获得支持HMVC和无HMVC的i18n新版本,旧版本的i18n似乎不支持HMVC。去这里i18n下载它,并花时间阅读github上的描述。

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

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

6.要添加新的语言(不创建语言文件),你需要打开“application/config/language.php”。您可以在代码块的顶部看到带有注释的代码块,其中说明“支持的语言”已经为您配置了英语和俄语语言,只需将该模板复制并更改为所需的语言即可,非常简单。请注意文件夹的名称必须与“应用程序/语言”中的文件夹完全相同。

7。根据国际化的github说明你需要

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

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

添加这些行到 “的application/config/routes.php文件”。请注意这条线$route['^(en|de|fr|nl)/(.+)$'] = "$2";在旧i18n大概是$route['^(en|de|fr|nl)/(.+)$'] = "$1";区别是“$ 1”必须更改为“$ 2”,否则您将遇到问题。

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

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

<?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>"; 
    } 
} 

php文件一个名为foo的代码输入网址来运行你的模块,如果你看到“类Foo这是模块测试”,那么它的工作。 记住模块类必须从MX_Controller扩展。

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