gpt4 book ai didi

php - 使用 codeigniter 构建多语言站点的最佳方式?

转载 作者:可可西里 更新时间:2023-10-31 23:10:15 25 4
gpt4 key购买 nike

我目前的方法是使用 codeigniter 提供的 to _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);
}

我在每个 Controller 上都使用了这种技术。这不是很有效。

我想问问用session来存储语言代码会不会更好,或者我现在的技术够好吗?

还有其他方法可以完成这种多语言操作吗?

当然,我的数据库目前是为 2 种语言设计的,并且我已经将字段分开了。例如:- title_en, title_np。这些根据使用的语言字段进行回显。

最佳答案

很多部分。

  1. 您的 URL 不一定是/en/和/fr/,除非您希望它用于 Google Analytics。抓取并没有太大的区别。 Accept-Language header 同样可靠。

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

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

    WHERE lang = CURRENT_LANGUAGE

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

实现所有这些的方法有上百万种,但要考虑的不仅仅是 URL。我的最爱

关于php - 使用 codeigniter 构建多语言站点的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5534959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com