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擴展。

如果您仍然遇到任何問題,請詢問。