2017-05-05 62 views
0

我从数据库中提取表名和列名,然后将它们放在下拉列表中。为了对我的用户有所帮助,我将把表名和列名翻译成普通人能理解的内容。我应该在Codeigniter中放置翻译列表?

我的问题是,我不知道我应该把翻译列表。

  • 在另一个数据库中(因为我无法对正在阅读的那个进行更改)?但那只是感觉不对。
  • 在模型中?但是当我使用不需要转换的方法时,我不想加载大量不必要的数据。
  • 在一个单独的帮手?这样我可以在需要翻译时加载帮助器。

其他建议(有利有弊)?

+1

您是否知道,Codeigniter具有[语言类](https://www.codeigniter.com/userguide3/libraries/language.html),适用于语言文件中的翻译? 但是,您的选择在哪里放你的翻译,所有变种都有优点和缺点。 – shaggy

+0

嗯...使用语言类似乎是为了我想要达到的目标。但谢谢你的建议。 –

+0

矫枉过正?为什么?这正是它应该做的。 – shaggy

回答

1

就像我在我的评论中写到的,实现此目的的最佳方法是使用Codeigniter Language class

然后在语言目录中创建tables_lang.php文件。

下一页加载语言文件:

$this->lang->load('tables', 'english'); 

或者(如果你想使用的默认语言):

$this->lang->load('tables'); 

如果你有表用户,在表列 ,您的语言行应如下所示:

$lang['table_users'] = 'Users table'; 
$lang['table_users_col_name'] = 'User name'; 

在你的控制器,模型或查看您可以用这种方式获取数据:

$table = 'users'; //table name from database 
$table_name = $this->lang->line('table_'.$table); 

$column = 'name'; 
$column_name = $this->lang->line('table_'.$table.'_col_'.$column); 

如果你想在视图中使用的翻译,就必须从语言助手改变$this->lang->line()lang()功能。