使用codeigniter构建多语言网站的最佳方式?

sod*_*cha 9 php codeigniter

我目前的方法是使用codeigniter提供的_remap函数来获取URI段,以检查语言是"en"还是"np"

这是一个示例:

function _remap($url_title){

    $this->_identify_language($this->uri->segment(1));

    $data ['sub_categories'] = $this->category_model->get_category_list_by_url($url_title)->result_array();
    $data ['news'] = $this->news_model->get_news_list_by_url($url_title)->result_array();
    $data ['url_title'] = $url_title;

    $this->_render_front_view('main',$data);
}
Run Code Online (Sandbox Code Playgroud)

我在每个控制器上都使用这种技术.哪个效率不高.

我想询问使用会话来存储语言代码会更好还是我目前的技术是否足够好?

有没有其他方法可以做这种多语言的事情?

当然,我的数据库目前已形成2个语言,我已经分开了这些领域.例如: - title_en,title_np.这些都是根据使用的语言字段来回应的.

Phi*_*eon 7

很多部分都是这样的.

  1. 除非您希望将其用于Google Analytics,否则您的网址并不一定需要/ en /和/ fr /.Spidering没有太大的区别.Accept-Language标头可以同样可靠.

  2. 全局解析此URL段.您可以使用此方法或Accept-Language,但无论哪种方式,您都需要一个钩子,一个MY_Controller或扩展Lang类.

  3. 想想你是否希望不同的语言完全分开.例如,如果我的英文页面没有翻译成法语,并且法语页面不存在,它应该显示英文页面还是404?您可以将lang = fr存储在数据库中,并从hook/MY_Controller/etc中的常量集中获取值.

    在哪里lang = CURRENT_LANGUAGE

  4. 构建您的数据库.title_en title_fr是一种方法,但很快就因为无法管理很多语言.有一个"pages"和"page_content"表,以便所有通用信息都在一个表中,然后所有特定语言(标题,内容,元等)都在page_conten表中,该表有一个lang字段.

有一百万种方法可以做到这一切,但要考虑的不仅仅是URL.我的最爱