使用不同语言自动完成或:如何为Web应用程序存储不同的语言

时间:2012-10-04 14:47:32

标签: javascript php mysql localization

我在一个网站上工作并有一个名为'items'的mysql表,如:

item_id | item

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

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

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

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

items-array(< 1000 items / array)应该有一个autocomplete-input-box。我猜,它不是一个很好的解决方案,用php(“search_array”或类似的函数)搜索language1.php中的数组,但我认为没有办法维护这个系统并通过mysql搜索,不是它?

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

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

1 个答案:

答案 0 :(得分:1)

我可能会添加一个items_localization表,其中包含

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

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

或者,如果您想要更广泛的本地化解决方案,您可以使用包含

等列的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 "%?%"

您将当前区域设置的值替换为?的自动填充搜索词组。