steam 网页语言切换小工具

这个脚本用于添加一个小按钮来 只更改网页前端语言设置,不更改用户的语言设置。并且使所有的链接指向指定的语言。

目前为 2021-04-19 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name steam 网页语言切换小工具
  3. // @name:en steam Webpage language switch widget
  4. // @name:ja steam ウェブ言語スイッチ
  5. // @namespace jasaj.me
  6. // @match https://store.steampowered.com/*
  7. // @version 0.1.6
  8. // @description 这个脚本用于添加一个小按钮来 只更改网页前端语言设置,不更改用户的语言设置。并且使所有的链接指向指定的语言。
  9. // @description:en This script is used to add a small button to change only the front-end language setting of the web page, not the language set by the user. and make all links point to the specified language.
  10. // @description:ja このスクリプトは、(ユーザーの言語設定を変更せずに)WebページのUI言語のみを変更するスイッチをページに追加。そして、すべてのリンクが指定した言語に移動するようにする。
  11. // @author Jasaj
  12. // ==/UserScript==
  13.  
  14. /* jshint esversion: 6 */
  15.  
  16. {
  17. const add_lang_change_btn = (l_txt, l_URL, l_iso) => {
  18. let theURL = new URL(window.location);
  19. theURL.searchParams.set("l", l_URL);
  20. let ele = document.createElement('div');
  21. ele.classList.add('store_header_btn');
  22. let elle = ele.appendChild(document.createElement('a'));
  23. elle.style.padding = "0 5px";
  24. elle.classList.add('store_header_btn_content');
  25. elle.appendChild(document.createTextNode(l_txt));
  26. if (((new URL(window.location)).searchParams.get("l") == l_URL) || (document.documentElement.lang == l_iso)) {
  27. ele.style["background-color"] = "rgb(255 255 255 / 10%)";
  28. ele.style.cursor = "not-allowed";
  29. elle.style.color = "rgb(255 255 255 / 50%)";
  30. } else {
  31. ele.classList.add('store_header_btn_gray');
  32. ele.style.cursor = "pointer";
  33. elle.onclick = () => { window.location = theURL.href; };
  34. }
  35. document.getElementById("cart_status_data").append(ele);
  36. };
  37.  
  38. const change_all_url_lang = (l_URL) => {
  39. let nodes = document.querySelectorAll('a[href]');
  40. for (let node of nodes) {
  41. let theURL = new URL(node.href);
  42. let hostmap = ["steamcommunity.com", "store.steampowered.com"];
  43. if (hostmap.includes(theURL.host)) {
  44. theURL.searchParams.set("l", l_URL);
  45. node.href = theURL.href;
  46. }
  47. }
  48. };
  49.  
  50. const change_all_url_lang_to_current_page_lang = () => {
  51. steam_lang_btn_map.forEach(v => {
  52. if (document.documentElement.lang == v[2]) {
  53. change_all_url_lang(v[1]);
  54. }
  55. });
  56. };
  57.  
  58. const hide_es_language_warning = () => {
  59. let es_language_warning_s = document.getElementsByClassName("es_language_warning");
  60. if (es_language_warning_s.length > 0) { es_language_warning_s[0].style.display = "none"; }
  61. };
  62.  
  63. // label displayed on button, language tag for URL parameter, iso style language tag for <html lang="xxx">
  64. let steam_lang_btn_map = [["中", "schinese", "zh-cn"], ["日", "japanese", "ja"], ["英", "english", "en"]];
  65.  
  66. steam_lang_btn_map.forEach(v => { add_lang_change_btn(v[0], v[1], v[2]); });
  67.  
  68.  
  69.  
  70. change_all_url_lang_to_current_page_lang();
  71. hide_es_language_warning();
  72.  
  73. const observer = new MutationObserver(() => { change_all_url_lang_to_current_page_lang(); hide_es_language_warning(); });
  74. observer.observe(document.body, {
  75. childList: true,
  76. subtree: true
  77. });
  78. }
  79.  

QingJ © 2025

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