我在一个网站上工作并有一个名为'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的特定列中?
答案 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 "%?%"
您将当前区域设置的值替换为?
的自动填充搜索词组。