0

我在一个网站上工作,有一个名为“items”的mysql表,比如:

item_id | item

(第二列仅用于识别 item_id。)

在 language1.php 中,我在 language1 中存储了一个包含 item_id 和项目本身名称的数组,例如:

$items = array(
1 -> 'Apple',
2 -> 'Orange',
...
);

根据用户的语言,包括正确的语言文件。

项目数组(< 1000 个项目/数组)应该有一个自动完成输入框。我想,这不是一个好的解决方案,用 php(“search_array”或类似这样的函数)搜索 language1.php 中的数组,但我认为没有办法维护这个系统并通过 mysql 搜索,不是它?

您如何为网站存储不同的语言并使其可搜索?

是否有必要将所有语言存储在 mysql 的特定列中?

4

1 回答 1

1

我可能会添加一个items_localization包含类似列的表

item_id,
locale,
content, (in your base language of choice)
translation (the translated content)

它有一个外键item_id,或者一个复合主键item_id, locale,或者一个自动增量 id 字段和一个唯一索引item_id, locale。有些人喜欢使用单列、自动增量主键,因为他们正在使用的框架,所以如果这描述了你,请使用后一种解决方案。

或者,如果您想要更广泛的本地化解决方案,您可以只拥有一个localization包含如下列的表格

localization_id,
locale,
content,
translation

可以存储任何类型的本地化。那么你的 items_localization 表可能只是一个多对多的连接表,其中的列如下

item_id,
localization_id

你可以做一个连接查询来获得你正在寻找的本地化。对于使用第一个建议的表结构:

SELECT i.*, il.translation
FROM items AS i
INNER JOIN items_localization AS il on i.item_id = il.item_id
WHERE il.locale = ? AND il.translation LIKE "%?%"

您将值替换为当前语言环境和自动完成搜索短语?的位置。

于 2012-10-04T14:55:05.123 回答