MS日英切替
by
furyu-tei
2023-04-05 [2023/04/05 11:06:36]
マイクロソフトのサポートページで日本語ページ⇔英語ページを切り替える
@@ -2,25 +2,36 @@
* @title MS日英切替
* @description マイクロソフトのサポートページで日本語ページ⇔英語ページを切り替える
* @include https://support.microsoft.com/*
+ * @include https://docs.microsoft.com/*
* @license MIT License
* @require
* @javascript_url
*/
( () => {
-let matches = location.href.match( /^https?:\/\/support\.microsoft\.com\/(.+?)-(.+?)\// );
+let matches = location.href.match( /^https?:\/\/(docs|support)\.microsoft\.com\/(.+?)-(.+?)\// );
if ( ! matches ) return;
-let current_lang = matches[ 1 ].toLowerCase() + '-' + matches[ 2 ].toUpperCase(),
+let page_category = matches[ 1 ],
+ current_lang = matches[ 2 ].toLowerCase() + '-' + matches[ 3 ].toUpperCase(),
to_lang = ( current_lang == 'ja-JP' ) ? 'en-US' : 'ja-JP';
-fetch( 'https://support.microsoft.com/' + current_lang + '/worldwide?' + encodeURIComponent( location.href ) )
-.then( response => response.text() )
-.then( html => {
- let doc = new DOMParser().parseFromString( html, "text/html" );
-
- location.href = doc.querySelector( 'a[data-bi-name="lp_culture_link"][href*="/' + to_lang + '/"]' ).href;
-} )
-.catch( error => error );
+switch ( page_category ) {
+ case 'docs' : {
+ location.href = location.href.replace( new RegExp( current_lang, 'i' ), to_lang.toLowerCase() );
+ break;
+ }
+ case 'support' : {
+ fetch( 'https://support.microsoft.com/' + current_lang + '/worldwide?' + encodeURIComponent( location.href ) )
+ .then( response => response.text() )
+ .then( html => {
+ let doc = new DOMParser().parseFromString( html, "text/html" );
+
+ location.href = doc.querySelector( 'a[data-bi-name="lp_culture_link"][href*="/' + to_lang + '/"]' ).href;
+ } )
+ .catch( error => error );
+ break;
+ }
+}
} )();
/*
* @title MS日英切替
* @description マイクロソフトのサポートページで日本語ページ⇔英語ページを切り替える
* @include https://support.microsoft.com/*
* @include https://docs.microsoft.com/*
* @license MIT License
* @require
* @javascript_url
*/
( () => {
let matches = location.href.match( /^https?:\/\/(docs|support)\.microsoft\.com\/(.+?)-(.+?)\// );
if ( ! matches ) return;
let page_category = matches[ 1 ],
current_lang = matches[ 2 ].toLowerCase() + '-' + matches[ 3 ].toUpperCase(),
to_lang = ( current_lang == 'ja-JP' ) ? 'en-US' : 'ja-JP';
switch ( page_category ) {
case 'docs' : {
location.href = location.href.replace( new RegExp( current_lang, 'i' ), to_lang.toLowerCase() );
break;
}
case 'support' : {
fetch( 'https://support.microsoft.com/' + current_lang + '/worldwide?' + encodeURIComponent( location.href ) )
.then( response => response.text() )
.then( html => {
let doc = new DOMParser().parseFromString( html, "text/html" );
location.href = doc.querySelector( 'a[data-bi-name="lp_culture_link"][href*="/' + to_lang + '/"]' ).href;
} )
.catch( error => error );
break;
}
}
} )();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。