2

我正在使用本教程http://sumonbd.wordpress.com/2009/09/16/develop-multilingual-site-using-codeigniter-i18n-library/在 codeigniter 中使用多语言。

我已按照正确列出的说明进行操作。它没有给我任何错误,但我不能说它工作正常。当我浏览 mysite.com/en/about 和 mysite.com/fr/about 时,它总是给我默认语言,即英语。我想知道是否需要设置任何配置才能正常工作。

我在 config.php 中考虑这个

$config['语言']

这在 autoload.php

$autoload['语言']

我必须配置这些吗?或任何其他配置以正确使用多语言。

4

3 回答 3

1

抱歉,您没有提供足够的信息来说明您所做的事情。但我会试着回答。

我已经尝试了更新的教程,它就像一个魅力。

在此处输入图像描述

首先,您指向一个过时的教程。这是您的更新链接的来源:source

其次,以 MY_ (默认配置)为前缀的文件是核心类(参见核心类)而不是库,应该放在 application/core 目录中。

第三,在您的视图文件中,尽量避免使用 php 短标签 ( <?=$variabel;?>),因为并非所有服务器配置都启用 php 短标签。改用普通echo标签<?php echo $var; ?>。更长,但在编写标准模式时值得。

正如我之前所说,如果您遵循更新的教程,您的脚本应该可以像我的一样工作。我希望这会有所帮助。对不起我的英语,如果我错了,请纠正我。

于 2013-03-21T16:42:46.200 回答
1

在分析了 CI 的代码和博客中的代码后,我提出了这个解决方案。

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

class About extends CI_Controller {

    function index()
    {
        // you might want to just autoload these two helpers
        $this->load->helper('language');
        $this->load->helper('url');

    $this->getLang();
        $this->load->view('about');
    }

    function getLang(){
        $url =  $_SERVER['REQUEST_URI'];
        $lang = explode("/", $url);

        if($lang[2] == 'en'){
        // load language file
            return $loadLang = $this->lang->load('english','english');
        }
        else if($lang[2] == 'fr'){
        // load language file
            return $loadLang = $this->lang->load('french','french');
        }
        else{
            // load language file
            return $loadLang = $this->lang->load('english','english');
        }

        return false;
    }


}

我创建了加载语言文件的函数 getLang()。

$this->lang->load('language_file','language_folder');
于 2013-02-11T05:16:56.467 回答
0

i think you should have a look at URI-Language-Identifier i use it for my multilingual projects, and its working as it should.

于 2013-03-24T12:57:47.617 回答