检测并查询特定语言

时间:2012-08-27 04:38:18

标签: php mysql localization

我的数据库中插入了不同语言的数据,例如中文,法语,英语,马来语,日语,韩语等。

如何检测这些语言并查询特定语言。例如,如果我只想查询中文数据并将其显示给用户。

1 个答案:

答案 0 :(得分:2)

如果我是你,我会有类似的东西来存储UI控件中显示的文字:

create table ui_labels (
  control_id int,
  language varchar(2),
  label varchar(500),
  primary key (control_id, language)
);

UI中的每个控件(例如按钮)都会有一个唯一的control_id。每个控件都可以有多个标签,每种语言一个。

然后,每个UI控件可以为每种语言使用不同的标签。 (我假设这里有两个字母的ISO语言代码,但您也可以使用数字ID或其他识别方案。)

这样,只需在ui_labels表中添加行即可轻松添加新语言,只需切换查询中使用的language值,即可轻松切换UI中显示的语言

按钮的数据可能如下所示:

insert into ui_labels (control_id, language, label)
  values (1, 'en', 'Read the article');
insert into ui_labels (control_id, language, label)
  values (1, 'es', 'Leer el artículo');
insert into ui_labels (control_id, language, label)
  values (1, 'tl', 'Bumasa ang balita');

作为此方法的替代方法,您可能需要查看gettext,这是在PHP中进行转换的标准方法。它不使用您的数据库。如果需要将字符串放在数据库中(例如,如果最终用户必须能够编辑它们),那么这不是一个选项,但它可能是您可以考虑的事情。如果您对此感兴趣,可能需要查看此博客文章:

http://verens.com/2008/04/03/translation-in-php/