用两种语言表达MySQL

时间:2012-03-28 02:24:22

标签: php mysql

你好吗?我正在尝试让我的PHP脚本接受多种语言,并让管理员选择更改脚本中的短语

所以,我发现许多人将短语存储在数据库中,但我的问题是,每次打开页面时,我是否需要从数据库中选择所有短语?或者我必须做什么?

        Phrase                      EN                          FR
        -----------------------------------------------------------------------
        err_no_page         There was an error.         il y avait une erreur.

在每个页面中我都需要使用短语,在没有耗尽服务器的情况下,从数据库中获取它们的最佳方法是什么。

提前感谢。

2 个答案:

答案 0 :(得分:2)

您应该像这样规范化数据库:

<强> PHRASES

ID    DESCRIPTION
----  ----------------
1     'err_no_page'
2     'another phrase'

<强> TRANSLATIONS

ID    PHRASE_ID  LANGUAGE_ID  TRANSLATION
--    ---------  -----------  -------------------------
1     1          'en'         'There was an error.'
2     1          'fr'         'il y avait une erreur.'
3     2          'en'         'etc'

然后您可以直接选择单一语言的所有翻译:

SELECT
    p.description, t.translation
FROM 
    phrases p
    INNER JOIN translations t ON t.phrase_id = p.id
WHERE
    t.language_id = 'en'

这样做的好处是,您可以轻松添加更多语言,而无需更改数据库的结构。

如果经常使用这些短语(因为它们可能在Web应用程序中),那么您应该考虑在应用程序启动时将它们一次性读入某种内存中的字典缓存,而不是从数据库中检索它们每页加载。

修改

查看PHP模块memcache,了解实现缓存的可能方法。

答案 1 :(得分:0)

我希望你不会一次在所有短语中显示网站。

因此,最好在网站上的某处提供一个选项来更改语言,并运行查询以一次根据所选语言获取短语,而不是全部选择。