【问题标题】:vqmod set cookie to change google translatevqmod 设置 cookie 来改变谷歌翻译
【发布时间】:2015-07-04 21:10:21
【问题描述】:

我已经为此苦苦挣扎了好几天...
使用 vQmod 文件的 MVC 模式。 我正在尝试使用谷歌翻译以编程方式在翻译语言之间切换。
代码:
vqMod 文件:(同时加载js.cookie.js, googTrans.js,jquery.cookie.js
这个vqmod修改了header.php controller

$l = $this->session->data['language'];
setcookie("googtrans", "", time()-3600); // kill cookie
setcookie("googtrans", "/en/" . $l); // set new one - does not work
setcookie("SETCOOKIE", "" . $l); // this actually worx

设置第一次 cookie,但之后不重写 cookie

尝试使用 jQuery.cookie.js / js.cookie.js 更改 cookie:
使用相同的 vQmod 文件修改 header.tpl

<?php echo "<script type='text/javascript'>
$.cookie('googtrans', '/en/" . $this->session->data['language'] . "');
</script>";?>

在加载 googTrans.js 或调用 //translate.google.com/translate_a/element.js?cb=googleTranslateElementInit 之前

googTrans.js

function googleTranslateElementInit() {
  new google.translate.TranslateElement({
    pageLanguage: 'en', 
    includedLanguages: 'fr,ru', 
    layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL, 
    multilanguagePage: true, 
    gaTrack: true, 
    gaId: 'UA-XXXXX-X'},
  'google_translate_element');
}

没有运气...:-( 有任何想法吗??什么时候写cookie?来自 header.php 或 header.tpl?为什么 php 不改变 cookie 或者 jQuery 也不改变... 怎么办?? 如果您需要更多信息,我会更乐意回复。 谢谢

【问题讨论】:

  • 检查浏览器 cookie,你看到 2 个名为 (googtrans) 的 cookie - cookie 也有域名/路径名。如果您使用 chrome goto 开发者工具、资源、扩展 cookie -- 检查如何在网上查看其他浏览器的 cookie
  • @Tasos 有 2 个 googtrans cookie
  • 你看。所以请确保 Jquery cookie 和 Php cookie 具有相同的域/路径——通常对于本地域是 (/)——更多信息在这里 PHP——php.net/manual/en/function.setcookie.php——这里是 JQUERY——github.com/carhartl/jquery-cookie跨度>
  • @Tasos..我想你会理解的......它们是相同的......没有不同!如果他们会有所不同,你不认为我会提到的是......
  • 试试 -- Cookies.set('name', 'value', { path: '' }); -- 显然 -- path: '' --- 文档说创建一个过期的 cookie,对当前页面的路径有效:

标签: javascript php jquery cookies google-translate


【解决方案1】:

Thanx @Tatos...你为我指明了正确的方向。 我的解决方案是:

Cookies.remove('googtrans',{path:'', domain: 'domainNameNoDot.com'});
Cookies.remove('googtrans',{path:'', domain: '.domainNamePrecedDot.com'});
Cookies.set('googtrans', '/en/" . $this->session->data['language'] . "',{path:''}); 

【讨论】:

  • 只是附加信息:默认情况下js.cookie.js 将路径设置为path: '/'。要删除没有path: '/' 创建的cookie,您需要使用path: ''Cookies.defaults.path = ''(更改默认值)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2010-12-18
  • 2023-02-14
  • 1970-01-01
相关资源
最近更新 更多