我正在开发一个需要国际化(i18n)支持的Codeigniter应用程序。
我正在使用CI-Smarty(Smarty 3)作为模板解决方案,Internationalization (i18n) for CodeIgniter 2.x,但是我无法获得使用CI Smarty的多语言支持,我试图更改代码,尝试添加路线,同时做两个但没有成功。
我的网站控制器:
public function index() {
$this->news();
} #index
public function news() {
$xml = $this->pages->news();
$data['news'] = $xml->xpath('//item');
$data['date'] = $xml->xpath('//item/pubDate');
$data['alphabet'] = $this->pages->alphabet();
$data['numbers'] = $this->pages->numbers();
$data['pagetitle'] = $this->config->item('news_pagetitle');
$data['description'] = $this->config->item('news_description');
$data['keywords'] = $this->config->item('news_keywords');
$this->pages->page('news', $data);
} #news
我的网页型号:
function page($page, $data = NULL) {
$data['base'] = base_url();
$data['current'] = current_url();
$data['page'] = $page;
$data['title'] = $this->config->item('title');
$data['tagline'] = $this->config->item('tagline');
$data['datetime'] = date('l, F d, Y');
$data['dateshow'] = date('Y-n-j');
$this->parser->parse('header', $data);
$this->parser->parse($page, $data);
$this->parser->parse('footer', $data);
} #page
我的routes.php:
$route['^(en|pt)/(.+)$'] = "$2";
// '/en', '/de', '/fr' and '/nl' URIs -> use default controller
$route['^(en|pt)$'] = $route['default_controller'];
// Prettify the url
$route['default_controller'] = 'site';
$route['404_override'] = 'site/e404';
$route['scaffolding_trigger']= "";
$route['(:any)'] = 'site/$1';
$route['guide/(:num)'] = 'guide/$1';
$route['shows/(:any)'] = 'shows/$1';
$route['shows/(:any)/(:num)'] = 'shows/$1/cat/$2';
$route['title/(:num)/(:any)'] = 'title/$1';
当我使用www.example.com/en/请求索引页面时,它会显示新闻信息,但是如果我使用www.example.com/en/news请求页面新闻则不会加载新闻,而是加载404页面,并对所有其他页面执行相同的操作。
该应用程序正常工作,没有国际化(i18n)支持,加载所有页面,包括新闻页面。
国际化(i18n)支持也很好,我在没有CI-Smarty的版本中进行了测试。
我需要将此应用翻译成多种语言,因此我需要为Codeigniter找到一种方法,让CI-Smarty支持它。有吗?感谢所有人如何提供帮助。