Greasyfork in your language

Whenever a link to localized greasyfork page is clicked, redirect it to the specified language

  1. // ==UserScript==
  2. // @name Greasyfork in your language
  3. // @description Whenever a link to localized greasyfork page is clicked, redirect it to the specified language
  4. // @namespace wOxxOm.scripts
  5. // @author wOxxOm
  6. // @version 3.0.8
  7. // @match https://gf.qytechs.cn/*
  8. // @exclude https://gf.qytechs.cn/system/*
  9. // @exclude https://gf.qytechs.cn/*.user.css*
  10. // @run-at document-start
  11. // @grant GM_getValue
  12. // @grant GM_setValue
  13. // ==/UserScript==
  14.  
  15. var language = GM_getValue('language', 'en');
  16.  
  17. maybeRedirect(location);
  18.  
  19. window.addEventListener('load', function _() {
  20. window.removeEventListener('load', _);
  21. var _timer, _title;
  22. document.getElementById('language-selector-locale').addEventListener('change', function() {
  23. GM_setValue('language', this.value);
  24. _title = _title || this.title;
  25. this.title = this.value + ' saved in ' + GM_info.script.name;
  26. clearTimeout(_timer);
  27. _timer = setTimeout(function() {
  28. this.title = _title;
  29. _title = null;
  30. }, 5000);
  31. });
  32. });
  33.  
  34. window.addEventListener('mousedown', function(e) {
  35. var a = e.target.closest('a');
  36. if (a &&
  37. a.origin === 'https://gf.qytechs.cn' &&
  38. a.pathname.lastIndexOf('/system/', 0) < 0 &&
  39. !a.pathname.match(/\/code\/.*?\.user\.(js|css)/))
  40. maybeRedirect(a);
  41. }, true);
  42.  
  43. function makeRedirectedUrl(url) {
  44. var m = url.href.split('/');
  45. if (!/^\w\w(?:-\w\w)?$/.test(m[3]))
  46. m.splice(3, 0, '');
  47. if (m[3] === language)
  48. return url.href;
  49. m[3] = language;
  50. var newUrl = m.join('/').replace(/&?locale_override[^&]*/, '').replace(/\?$/, '');
  51. var noOvr = m[4] === 'forum' || m[4] === 'scripts' && /^\D|^$/.test(m[5]);
  52. return noOvr ? newUrl : newUrl + (newUrl.indexOf('?') > 0 ? '&' : '?') + 'locale_override=1';
  53. }
  54.  
  55. function maybeRedirect(url) {
  56. var newUrl = makeRedirectedUrl(url);
  57. if (newUrl === url.href ||
  58. document.referrer && makeRedirectedUrl({href: document.referrer}) === newUrl)
  59. return;
  60. url.href = newUrl;
  61. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址