「MediaWiki:Common.js」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「→ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます: /* Google 翻訳ウィジェ…」) |
|||
| 1行目: | 1行目: | ||
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */ | /* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */ | ||
| − | /* Google | + | /* Google 翻訳ウィジェット(ブラウザ言語の自動判別付き) */ |
$( function () { | $( function () { | ||
if ( $( '#p-googletranslator' ).length ) { | if ( $( '#p-googletranslator' ).length ) { | ||
return; | return; | ||
| + | } | ||
| + | |||
| + | var supportedLangs = ['ja', 'ko', 'en', 'nl', 'fr', 'de', 'zh-CN', 'ru']; | ||
| + | |||
| + | // 初回訪問時、ブラウザの言語を判定してCookieにセット | ||
| + | if ( !document.cookie.match( /(^|;) ?googtrans=([^;]*)(;|$)/ ) ) { | ||
| + | var userLang = ( navigator.language || navigator.userLanguage || '' ).toLowerCase(); | ||
| + | var targetLang = ''; | ||
| + | |||
| + | if ( userLang.indexOf( 'zh' ) === 0 ) { | ||
| + | targetLang = 'zh-CN'; | ||
| + | } else { | ||
| + | var shortLang = userLang.split( '-' )[0]; | ||
| + | if ( shortLang !== 'ja' && supportedLangs.indexOf( shortLang ) !== -1 ) { | ||
| + | targetLang = shortLang; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // 日本語以外の対応言語であれば自動翻訳Cookieを発行 | ||
| + | if ( targetLang ) { | ||
| + | document.cookie = 'googtrans=/ja/' + targetLang + '; path=/; domain=' + location.hostname; | ||
| + | document.cookie = 'googtrans=/ja/' + targetLang + '; path=/;'; | ||
| + | } | ||
} | } | ||
| 18行目: | 41行目: | ||
'</nav>'; | '</nav>'; | ||
| − | |||
if ( $( '#p-tb' ).length ) { | if ( $( '#p-tb' ).length ) { | ||
$( '#p-tb' ).after( boxHtml ); | $( '#p-tb' ).after( boxHtml ); | ||
| 25行目: | 47行目: | ||
} | } | ||
| − | |||
window.googleTranslateElementInit = function () { | window.googleTranslateElementInit = function () { | ||
new google.translate.TranslateElement({ | new google.translate.TranslateElement({ | ||
pageLanguage: 'ja', | pageLanguage: 'ja', | ||
| − | includedLanguages: ' | + | includedLanguages: supportedLangs.join( ',' ), |
layout: google.translate.TranslateElement.InlineLayout.SIMPLE | layout: google.translate.TranslateElement.InlineLayout.SIMPLE | ||
}, 'google_translate_element'); | }, 'google_translate_element'); | ||
2026年10月23日 (金) 08:52時点における版
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */
/* Google 翻訳ウィジェット(ブラウザ言語の自動判別付き) */
$( function () {
if ( $( '#p-googletranslator' ).length ) {
return;
}
var supportedLangs = ['ja', 'ko', 'en', 'nl', 'fr', 'de', 'zh-CN', 'ru'];
// 初回訪問時、ブラウザの言語を判定してCookieにセット
if ( !document.cookie.match( /(^|;) ?googtrans=([^;]*)(;|$)/ ) ) {
var userLang = ( navigator.language || navigator.userLanguage || '' ).toLowerCase();
var targetLang = '';
if ( userLang.indexOf( 'zh' ) === 0 ) {
targetLang = 'zh-CN';
} else {
var shortLang = userLang.split( '-' )[0];
if ( shortLang !== 'ja' && supportedLangs.indexOf( shortLang ) !== -1 ) {
targetLang = shortLang;
}
}
// 日本語以外の対応言語であれば自動翻訳Cookieを発行
if ( targetLang ) {
document.cookie = 'googtrans=/ja/' + targetLang + '; path=/; domain=' + location.hostname;
document.cookie = 'googtrans=/ja/' + targetLang + '; path=/;';
}
}
// サイドバー用ブロックのHTML
var boxHtml =
'<nav id="p-googletranslator" class="mw-portlet mw-portlet-googletranslator vector-menu vector-menu-portal portal" role="navigation">' +
' <h3 class="vector-menu-heading"><span>翻訳 / Translate</span></h3>' +
' <div class="vector-menu-content body">' +
' <ul class="vector-menu-content-list" style="padding-top: 8px;">' +
' <li style="list-style: none;"><div id="google_translate_element"></div></li>' +
' </ul>' +
' </div>' +
'</nav>';
if ( $( '#p-tb' ).length ) {
$( '#p-tb' ).after( boxHtml );
} else {
$( '#mw-panel' ).append( boxHtml );
}
window.googleTranslateElementInit = function () {
new google.translate.TranslateElement({
pageLanguage: 'ja',
includedLanguages: supportedLangs.join( ',' ),
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, 'google_translate_element');
};
mw.loader.load( '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit' );
} );