我正在建立一个网站,我决定使用codeIgniter作为框架。我的网站将在发布后翻译成两种语言,也许更多。我的网站很简单,包括这些功能:创建帐户,登录,浏览教程/常见问题解答页面。
我希望我的网址很简单,并以每种语言显示,以便在人眼和搜索引擎上更容易。
英文:
mywebsite /注册
法语:
mywebsite /题字
通过此设置,我需要为routes.php
中的每个页面设置路径$route['default_controller'] = 'home';
// SIGN UP
$route['signup'] = 'signup_c/main/english';
$route['inscription'] = 'signup_c/main/french';
我想知道这是否是一种正确的方法,因为我没有太多页面,我需要为每个页面/语言添加一个路径。 另外,如果我需要在每个页面上提供一个链接,让用户更改当前语言,那么最好的方法是什么?我想到使用一个文件来存储每种语言中特定页面的所有URL,并显示一个ComboBox,其中包含指向除当前页面语言之外的所有这些页面的链接。
$signup_url = array(
'english' => 'signup',
'french' => 'inscription'
);
或
$lang['url_form_signup'] = 'signup';
在/language/[language_here]/url_lang.php中 但是如果把它放在那里我不知道如何迭代所有的URL
感谢指导新手! :)
答案 0 :(得分:0)
使用国际化库可能是最好的方法。使用路由和不同的控制器功能将变得相当笨拙 - 保持不同语言与逻辑分离可能更容易理解和维护。
CodeIgniter有几个国际化库,包括:
答案 1 :(得分:0)
感谢您的建议。
但是,我认为我不想根据自己的需要使用大型国际化图书馆。 这将是一些额外的工作,但我自己管理它非常简单,我更喜欢了解我的代码。
以下是我所做的工作。
控制器:
public function index($lang)
{
$changeLangLink = array(
"english"=>"signup",
"french"=>"inscription");
$data['title'] = lang("title_page_signup");
$data['lang'] = $lang;
$data['changeLangLink'] = $changeLangLink;
$this->load->view('templates/header', $data);
$this->load->view('pages/signup', $data);
$this->load->view('templates/footer');
}
查看(标题):
<html>
<head>
<title><?php echo $title ?> </title>
</head>
<body>
<select name="curr_lang" ONCHANGE="location = this.options[this.selectedIndex].value;">
<option value="<?php echo $changeLangLink['english']; if ($lang == 'english') echo "\" selected=\"selected"; ?>">English</option>
<option value="<?php echo $changeLangLink['french']; if ($lang == 'french') echo "\" selected=\"selected"; ?>">Français</option>
</select>
模板标题对我的所有页面都是通用的,我只需为每个页面编写一个小数组