【问题标题】:Detect and query specific languages检测和查询特定语言
【发布时间】:2012-08-27 13:40:42
【问题描述】:

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

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

【问题讨论】:

  • 您的数据库是什么样的?还是你还没有设计?
  • 已经拥有数据库并使用 UTF8 并且能够使用不同的语言进行插入。但我想要一个像英文、中文、日文按钮这样的功能,所以如果用户点击它们只会显示指定的语言。
  • 使每种语言成为数据库中的不同表(?)...或提供有关数据库设置的更多信息
  • 不会为每种语言制作不同的表格,因为那样很不灵活。每次用户切换语言时,您都必须更改数据库查询中的 SQL。
  • 是的,每种语言使用不同的表是个坏主意。如果我有 50 种不同的语言会怎样? =.=

标签: php mysql localization


【解决方案1】:

如果我是你,我会有这样的东西来存储显示在你的 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/

【讨论】:

  • 如果我的 control_id = 1 是英语并且 control_id = 2 是马来语 我如何检测用户输入语言并使用 control_id 插入?由于英语和马来语使用相同的字母( A-Z )。使用谷歌翻译 api 吗?
  • 您需要检查 HTTP 请求并查看用户想要使用的语言。我在答案中链接到的页面提到了如何做到这一点。寻找它说的部分:“接下来,解析浏览器的 Accept 标头以找到与我们所拥有的语言环境相匹配的语言环境。”
  • 另外,对于不同的语言,您不会有不同的 control_id。该按钮具有相同的 control_id,但该按钮有不同的行,其中包含不同语言的翻译。我添加了一个示例来说明我的意思。
猜你喜欢
  • 2017-09-19
  • 1970-01-01
  • 2011-03-12
  • 2015-03-04
  • 1970-01-01
  • 2011-12-30
  • 2015-09-04
  • 1970-01-01
  • 2010-12-04
相关资源
最近更新 更多