【问题标题】:Php multilanguage: how store the active language?PHP多语言:如何存储活动语言?
【发布时间】:2013-02-14 17:42:08
【问题描述】:

我正在构建一个 php 切换器来为我的网站添加多语言功能。

MySQL 中的每个内容都有一个特定于语言的文本,我想根据活动语言检索它。

一开始,我想在 MySQL 中构建一个定制的表来存储语言状态
例如:
意大利语 1
英语 0
..其中 1 表示语言处于活动状态,0 表示关闭。

每次用户切换语言时,我都会调用此表并更改语言状态。然后,在通话结束时,我刷新页面并 php 检索正确的内容。

这似乎是个好主意,直​​到我发现每次用户切换时 MySQL 中的语言状态都会改变。因此,如果一个用户正在用意大利语浏览网站,而其他用户同时切换到英语,那么第一个用户也会看到英语。

我的问题是:如何存储特定用户的语言状态,避免更改每个其他用户的语言状态?

非常感谢

【问题讨论】:

  • 考虑用户会话
  • 你考虑过cookie吗?基本上,除非您使用身份验证模块来确定谁在浏览该页面,否则您会留下会话和 cookie。
  • 语言环境 + 会话 + GNU getText (i18n)

标签: php mysql multilingual


【解决方案1】:

如果您想要持久保存,请在用户表上添加“Lang”列

用户(id、用户名、密码、语言);

只需将他们的语言设置存储在那里。如果您有另一个包含语言的表,则可以使用外键来避免完整性问题。

如果您不关心持久性(如果用户从其他计算机登录,则默认使用默认语言),您可以使用 Session 或 Cookie。

【讨论】:

    【解决方案2】:

    不要使用数据库。改为设置$_SESSION 变量(修改之前不要忘记调用session_start())。 (Php Manual)

    【讨论】:

    • 会话部分正确。数据库部分不是。会话是临时的。您需要将其存储在数据库中,以便将语言选择与用户帐户联系起来。
    • 我想我会选择 SESSION 方法,除非我的意思是普通用户,而不是注册用户或类似的用户。我的意思是查看该网站的用户。感谢大家的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2012-10-03
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    相关资源
    最近更新 更多