-
Notifications
You must be signed in to change notification settings - Fork 0
/
google-translate-filter-and-flags.user.js
92 lines (81 loc) · 2.99 KB
/
google-translate-filter-and-flags.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// ==UserScript==
// @name Google Translate: Filter & Flags
// @namespace https://github.com/HatScripts/google-translate-filter-and-flags
// @version 1.0.2
// @license MIT
// @description Filters languages and shows country flags on Google Translate
// @author HatScripts
// @icon https://ssl.gstatic.com/translate/favicon.ico
// @match http://translate.google.com/*
// @match https://translate.google.com/*
// @require https://openuserjs.org/src/libs/sizzle/GM_config.js
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @run-at document-idle
// ==/UserScript==
/* global GM_config, GM_info, GM_registerMenuCommand */
;(() => {
'use strict'
GM_config.init({
id: 'gtff_config',
title: GM_info.script.name + ' Settings',
fields: {
SHOW_FLAGS: {
label: 'Show flags',
type: 'checkbox',
default: true,
title: 'Show country flags next to languages'
},
FILTER_LANGUAGES: {
label: 'Filter languages',
type: 'checkbox',
default: true,
title: 'Show only the specified languages'
},
LANGUAGES_SHOWN: {
label: 'Languages shown',
type: 'textarea',
default: 'ar,de,el,en,eo,es,fi,fr,it,ja,ko,la,no,pt,ru,sv,zh-CN',
title: 'The languages to show, as ISO 639-1 language codes, separated by commas'
}
}
})
GM_registerMenuCommand('Settings', () => {
GM_config.open()
})
console.log(GM_info.script.name)
const LANG_MAP = {
'iw': 'he', // Hebrew
'jw': 'jv', // Javanese
'mni-Mtei': 'mni', // Meiteilon (Manipuri)
'zh-CN': 'zh', // Chinese (Simplified)
'zh-TW': 'zh', // Chinese (Traditional)
}
const prefix = '.qSb8Pe'
if (!document.querySelector(prefix)) {
console.error('Couldn\'t find language buttons')
}
let css = '/* ' + GM_info.script.name + ' */'
if (GM_config.get('FILTER_LANGUAGES')) {
css += prefix + '{ display: none; }'
console.log(GM_config.get('LANGUAGES_SHOWN').split(','))
css += GM_config.get('LANGUAGES_SHOWN').split(',').map(lang => `${prefix}[data-language-code=${lang}]`).join(',')
css += '{ display: inline-flex; }'
css += '.C96yib > .vSUSRc > ' + prefix + ' { display: inline-flex; }'
}
if (GM_config.get('SHOW_FLAGS')) {
//css += `${prefix}.RCaXn:not(.KKjvXb) .W5jNxd, ${prefix} .g3XDjb { display: none !important; }`
css += `${prefix} > .l7O9Dc { background-repeat: no-repeat; background-size: contain; background-position-x: 6px; }`
css += `${prefix} > .l7O9Dc > i { display: none !important; }`
document.querySelectorAll(prefix).forEach(wrapper => {
let code1 = wrapper.dataset.languageCode
let code2 = LANG_MAP[code1] || code1
css += `${prefix}[data-language-code=${code1}] > .l7O9Dc {`
css += `background-image: url(https://hatscripts.github.io/circle-flags/flags/language/${code2}.svg) !important;`
css += '}'
})
}
GM_addStyle(css)
})()