【问题标题】:Drupal language negotiationDrupal 语言协商
【发布时间】:2010-01-17 10:10:08
【问题描述】:

我有一个多语言的 Drupal 设置(2 种语言,默认为英语)。我希望用户在初始页面请求时始终接收其他语言的内容(比如说西班牙语),但将英语保留为未来语言切换的默认语言。因此,用户将在初始加载时被重定向到 site.com/es,但通过语言切换将能够转到 site.com/(即英文)。

有什么建议吗?谢谢。

(阿帕奇,PHP)

【问题讨论】:

  • 我们还能为您做点别的吗?一个三明治?冷可乐?还是啤酒? ;-)
  • 几乎很有趣。我要求的是建议而不是代码。但既然你提议,请来杯啤酒。双倍时间:-)
  • 好的,这是你的冰镇啤酒|__|)
  • 也许你应该把西班牙语保存在一个cookie中,如果你想重定向到英文网站,摧毁coockie值的内容,而不是它本身的cookie,而只是你设置的值,比如unset ($_COOKIE['ispanish']);
  • 这并不像看起来那么简单:-)。去喝杯啤酒放松一下。

标签: drupal drupal-6


【解决方案1】:

在您的主题的 template.php 文件中使用预处理重定向用户:
大概代码:


/**
 * Override or insert variables into the page templates.
 *
 * @param $vars
 *   An array of variables to pass to the theme template.
 * @param $hook
 *   The name of the template being rendered ("page" in this case.)
 */
function THEMENAME_preprocess_page(&$vars, $hook) {
  global $language;
  if ($language->language == 'en') { // Add here some checking for page, see print_r($vars)
    drupal_goto(url().'/es/'.$GET['q']); //goto es version
  }
}

【讨论】:

  • 好吧,我考虑过了。问题是它必须在用户最初加载页面时只运行一次。连续回国会怎样?
  • 现在只运行一次意味着匿名用户的状态必须在开始和结束时隐式定义。正如您正确指出的那样,前面提到的 sn-p 已经很好地处理了开头,但是最后,嗯……我想到的 ajaxian-postmethod-php 没有一个值得分享,因为它们对我来说都是精心制作的黑客攻击.现在的网络很有趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多