Greasy Fork

来自缓存

Greasy Fork is available in English.

steam 网页语言切换小工具

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name              steam 网页语言切换小工具
// @name:en           steam Webpage language switch widget
// @name:ja           steam ウェブ言語スイッチ
// @namespace         jasaj.me
// @match             https://store.steampowered.com/*
// @version           0.1.6
// @description       这个脚本用于添加一个小按钮来 只更改网页前端语言设置,不更改用户的语言设置。并且使所有的链接指向指定的语言。
// @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.
// @description:ja    このスクリプトは、(ユーザーの言語設定を変更せずに)WebページのUI言語のみを変更するスイッチをページに追加。そして、すべてのリンクが指定した言語に移動するようにする。
// @author            Jasaj
// ==/UserScript==

/* jshint esversion: 6 */

{
	const add_lang_change_btn = (l_txt, l_URL, l_iso) => {
		let theURL = new URL(window.location);
		theURL.searchParams.set("l", l_URL);
		let ele = document.createElement('div');
		ele.classList.add('store_header_btn');
		let elle = ele.appendChild(document.createElement('a'));
		elle.style.padding = "0 5px";
		elle.classList.add('store_header_btn_content');
		elle.appendChild(document.createTextNode(l_txt));
		if (((new URL(window.location)).searchParams.get("l") == l_URL) || (document.documentElement.lang == l_iso)) {
			ele.style["background-color"] = "rgb(255 255 255 / 10%)";
			ele.style.cursor = "not-allowed";
			elle.style.color = "rgb(255 255 255 / 50%)";
		} else {
			ele.classList.add('store_header_btn_gray');
			ele.style.cursor = "pointer";
			elle.onclick = () => { window.location = theURL.href; };
		}
		document.getElementById("cart_status_data").append(ele);
	};

	const change_all_url_lang = (l_URL) => {
		let nodes = document.querySelectorAll('a[href]');
		for (let node of nodes) {
			let theURL = new URL(node.href);
			let hostmap = ["steamcommunity.com", "store.steampowered.com"];
			if (hostmap.includes(theURL.host)) {
				theURL.searchParams.set("l", l_URL);
				node.href = theURL.href;
			}
		}
	};

	const change_all_url_lang_to_current_page_lang = () => {
		steam_lang_btn_map.forEach(v => {
			if (document.documentElement.lang == v[2]) {
				change_all_url_lang(v[1]);
			}
		});
	};

	const hide_es_language_warning = () => {
		let es_language_warning_s = document.getElementsByClassName("es_language_warning");
		if (es_language_warning_s.length > 0) { es_language_warning_s[0].style.display = "none"; }
	};

	// label displayed on button, language tag for URL parameter, iso style language tag for <html lang="xxx">
	let steam_lang_btn_map = [["中", "schinese", "zh-cn"], ["日", "japanese", "ja"], ["英", "english", "en"]];

	steam_lang_btn_map.forEach(v => { add_lang_change_btn(v[0], v[1], v[2]); });



	change_all_url_lang_to_current_page_lang();
	hide_es_language_warning();

	const observer = new MutationObserver(() => { change_all_url_lang_to_current_page_lang(); hide_es_language_warning(); });
	observer.observe(document.body, {
		childList: true,
		subtree: true
	});
}