【问题标题】:language detection and url rewrite/redirection语言检测和 url 重写/重定向
【发布时间】:2015-03-04 19:39:13
【问题描述】:

我的网站有两种语言:EN(英语)和 TR(土耳其语) 现在,它作为默认语言加载为土耳其语。网址中没有任何语言短语。例如我们的页面如:domain.com/index.php、domain.com/aboutus.php 等。

如果有人单击“英语”链接,则页面会使用以下短语重新加载:?language=EN。例如 domain.com/aboutus.php?language=EN

点击后,所有页面都加载为英语,但我们在 url 中也看不到任何语言短语。其他页面加载如services.php,contact.php正常但英文..

我需要一个简单的浏览器语言重定向器: - 如果用户的浏览器语言是土耳其语,那么一切正常,页面可以加载为默认土耳其语。 - 如果用户的浏览器语言不是土耳其语,则页面应通过 ?language=EN 短语加载为英语。例如 domain.com/aboutus.php?language=EN

重要的是,这个控制应该在第一次访问任何页面(不仅仅是索引)时发生。如果用户选择土耳其语,那么我们不应该再次加载英文页面。

我们可以使用这个 php、htaccess 或 javascript。

非常感谢...

【问题讨论】:

    标签: javascript php .htaccess redirect url-redirection


    【解决方案1】:

    如果语法是对称的,那就太好了(即土耳其语的语法与英语的语法相同)。如果这看起来很难看,(对我来说确实如此),请将其移至会话。我建议这足够干净:

    1. 如果请求是语言更改请求,请更改语言,保存到会话。否则,
    2. 如果会话包含语言选择,请使用该语言。否则,
    3. 使用Accept-Language 标头找出浏览器想要什么,设置语言,保存到会话。

    当然,您可以使用带有 URL 参数的相同系统。问题是,使用您当前的方案,您无法区分“未选择语言”和“选择英语”。

    【讨论】:

    • 感谢您的回答和解决方案。不幸的是,你的建议对我来说太难了。如果你愿意,你可以在stackoverflow.com/questions/26819454/…看到我的语言选择代码
    • 哪一点太难了?如果它正在解析Accept-Language,您可以找到一个不错的PHP 解析器here。 (检测用户语言的方法只有两种,都容易出错,另一种是通过 IP 进行地理定位。)其余的应该相当简单。
    • 会话、规则等。所有这些:) 感谢您的回答。也许我需要一个有支付选项的聪明专家:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多