我正在努力寻找构建多语言网站导航的最佳方式,。
我知道CI中的语言类,但似乎更多的是定义整个站点中常用的随机单词和文本行。似乎为每种语言创建lang文件然后定义所有链接的翻译似乎是标准方法?
在过去的非codeigniter项目中,我设置了一个这样的类
class Link{
var $name = array();
var $url;
var $links = array();
function add_link($links){
$this->links[] = $links;
}
}
$all_sections = array();
$section = new Link();
$section->name['en'] = "Home";
$section->name['fr']] = "Uberdurky";
$section->url = "/";
$sub_section = new Link();
$sub_section->name['en'] = "About Acme Ltd";
$sub_section->name['fr'] = "Fabuka Acme Ltd";
$sub_section->url = "/about/";
$section->add_link($sub_section);
然后我有一个循环并输出导航的函数,导航只查看会话或URL定义的当前名称[Lang]
这对我来说似乎更简单,开销更少 - 导航结构和翻译都在一个地方定义。但我是CI的新手,所以我可能会误解标准方法......?我已经google了很多,并且没有在这里详细介绍解决方案。
答案 0 :(得分:1)
重要的是它适用于你。使用单独的语言文件有很多好处:
我没有看到任何错误与你的方式,但如果你想优化 - 不要费心定义所有不同的语言行。如果语言是英语,则不需要定义法语版本。只使用你需要的那些,你不必将整个数组传递给add_link()
,Link
类应该检测语言并仅加载适当的数组......
......它开始听起来像语言文件实际上可能是一个好主意。
现在你只有法语和英语。我假设你知道两种语言和 (Uberdurky?)是唯一一个在这方面工作的人,所以你更容易定义它们“内联”。当您想要支持3种,4种或10种语言时会发生什么?事情很快就会变得杂乱无章。
但是,你没有 来使用Codeigniter语言课程,你可能最好使用你自己的系统进行导航这样的事情,这往往会被一两个单词翻译所困扰,并且经常变化(每个站点或站点之间)。
再一次,这是你的电话。做一些现在最适合你的方法并在以后进行优化。
答案 1 :(得分:0)
这对于遇到此问题的任何人都有帮助。 https://github.com/cflynn07/CodeIgniterInternationalizationUtility
这是一个脚本,可以使用一个结构清晰的HTML语言翻译表,并将它们转换为codeigniter中使用的必需语言文件。