Provide basic English translation, add donate button

This commit is contained in:
ilyaigpetrov 2019-05-04 12:20:54 -05:00
parent 89f394b9a5
commit 60ebdae57f
10 changed files with 141 additions and 26 deletions

View File

@ -189,7 +189,7 @@
return chrome.i18n.getMessage('noControl') + return chrome.i18n.getMessage('noControl') +
` <a href="${ this.searchSettingsForUrl('proxy') }"> ` <a href="${ this.searchSettingsForUrl('proxy') }">
${ chrome.i18n.getMessage('which') } ${ chrome.i18n.getMessage('WhichQ') }
</a>`; </a>`;
}, },

View File

@ -198,7 +198,7 @@
// Distinct keys are needed if you want to check if a given // Distinct keys are needed if you want to check if a given
// provider is this or that (distinct it from others). // provider is this or that (distinct it from others).
distinctKey: 'Antizapret', distinctKey: 'Antizapret',
label: 'Антизапрет', label: chrome.i18n.getMessage('Antizapret'),
desc: \`Альтернативный PAC-скрипт от стороннего разработчика. desc: \`Альтернативный PAC-скрипт от стороннего разработчика.
Охватывет меньше сайтов. Охватывет меньше сайтов.
Блокировка определяется по доменному имени. Блокировка определяется по доменному имени.
@ -208,7 +208,7 @@
}, },
Антицензорити: { Антицензорити: {
distinctKey: 'Anticensority', distinctKey: 'Anticensority',
label: 'Антицензорити', label: chrome.i18n.getMessage('Anticensority'),
desc: \`Основной PAC-скрипт от автора расширения. desc: \`Основной PAC-скрипт от автора расширения.
Охватывает больше сайтов. Охватывает больше сайтов.
Блокировка определятся по доменному имени или IP адресу. Блокировка определятся по доменному имени или IP адресу.
@ -224,7 +224,7 @@
}, },
onlyOwnSites: { onlyOwnSites: {
distinctKey: 'onlyOwnSites', distinctKey: 'onlyOwnSites',
label: 'Только свои сайты и свои прокси', label: chrome.i18n.getMessage('Only_own_sites_and_only_own_proxies'),
desc: 'Проксируются только добавленные вручную сайты через СВОИ вручную добавленные прокси или через локальный Tor.', desc: 'Проксируются только добавленные вручную сайты через СВОИ вручную добавленные прокси или через локальный Tor.',
order: 99, order: 99,
pacUrls: [ pacUrls: [

View File

@ -11,7 +11,52 @@
"noControl": { "noControl": {
"message": "Other extension controls proxy!" "message": "Other extension controls proxy!"
}, },
"which": { "WhichQ": {
"message": "Which?" "message": "Which?"
},
"update": {
"message": "update"
},
"ProblemsQ": {
"message": "Problems?"
},
"Finish": {
"message": "OK"
},
"Disable": {
"message": "Disable"
},
"Only_own_sites_and_only_own_proxies": {
"message": "Only own sites and only own proxies"
},
"Antizapret": {
"message": "Antizapret"
},
"Anticensority": {
"message": "Anticensority"
},
"PAC_script": {
"message": "PAC-script"
},
"Exceptions": {
"message": "Exceptions"
},
"Own_proxies": {
"message": "Own proxies"
},
"Modifiers": {
"message": "Modifiers"
},
"Notifications": {
"message": "Notifications"
},
"Error": {
"message": "Error"
},
"Non_critical_error": {
"message": "Non-critical error"
},
"Donate": {
"message": "Donate"
} }
} }

View File

@ -11,7 +11,52 @@
"noControl": { "noControl": {
"message": "Другое расширение контролирует настройки прокси!" "message": "Другое расширение контролирует настройки прокси!"
}, },
"which": { "WhichQ": {
"message": "Какое?" "message": "Какое?"
},
"update": {
"message": "обновить"
},
"ProblemsQ": {
"message": "Проблемы?"
},
"Finish": {
"message": "Готово"
},
"Disable": {
"message": "Отключить"
},
"Only_own_sites_and_only_own_proxies": {
"message": "Только свои сайты и свои прокси"
},
"Antizapret": {
"message": "Антизапрет"
},
"Anticensority": {
"message": "Антицензорити"
},
"PAC_script": {
"message": "PAC-скрипт"
},
"Exceptions": {
"message": "Исключения"
},
"Own_proxies": {
"message": "Свои прокси"
},
"Modifiers": {
"message": "Модификаторы"
},
"Notifications": {
"message": "Уведомления"
},
"Error": {
"message": "Ошибка"
},
"Non_critical_error": {
"message": "Некритичная ошибка"
},
"Donate": {
"message": "Поддержать"
} }
} }

View File

@ -227,7 +227,10 @@ export default function getApp(theState) {
this.setStatusTo( this.setStatusTo(
(<span> (<span>
<span style="color:red"> <span style="color:red">
{err ? <span><span class="emoji">🔥</span> Ошибка!</span> : 'Некритичная oшибка.'} {err
? <span><span class="emoji">🔥</span> {chrome.i18n.getMessage('Error')}!</span>
: `${chrome.i18n.getMessage('Non_critical_error')}.`
}
</span> </span>
<br/> <br/>
<span style="font-size: 0.9em; color: darkred" dangerouslySetInnerHTML={{__html: messageHtml}}></span> <span style="font-size: 0.9em; color: darkred" dangerouslySetInnerHTML={{__html: messageHtml}}></span>

View File

@ -26,9 +26,10 @@ export default function getFooter() {
</section> </section>
<footer class={scopedCss.controlRow + ' horFlex nowrap'}> <footer class={scopedCss.controlRow + ' horFlex nowrap'}>
<input type="button" value="Готово" disabled={props.ifInputsDisabled} onClick={() => window.close()} /> <input type="button" value={chrome.i18n.getMessage('Finish')} disabled={props.ifInputsDisabled} onClick={() => window.close()} />
<a href="https://rebrand.ly/ac-donate">{chrome.i18n.getMessage('Donate')}</a>
<a data-in-bg="false" href="../troubleshoot/index.html"> <a data-in-bg="false" href="../troubleshoot/index.html">
Проблемы? {chrome.i18n.getMessage('ProblemsQ')}
</a> </a>
</footer> </footer>
</div> </div>

View File

@ -144,17 +144,17 @@ export default function getMain(theState) {
return createElement(TabPanel, Object.assign({}, props, { return createElement(TabPanel, Object.assign({}, props, {
tabs: [ tabs: [
{ {
label: 'PAC-скрипт', label: chrome.i18n.getMessage('PAC_script'),
content: createElement(PacChooser, props), content: createElement(PacChooser, props),
key: 'pacScript', key: 'pacScript',
}, },
{ {
label: 'Исключения', label: chrome.i18n.getMessage('Exceptions'),
content: createElement(Exceptions, props), content: createElement(Exceptions, props),
key: 'exceptions', key: 'exceptions',
}, },
{ {
label: 'Свои прокси', label: chrome.i18n.getMessage('Own_proxies'),
content: createElement( content: createElement(
ModList, ModList,
Object.assign({}, props, { Object.assign({}, props, {
@ -168,7 +168,7 @@ export default function getMain(theState) {
key: 'ownProxies', key: 'ownProxies',
}, },
{ {
label: 'Модификаторы', label: chrome.i18n.getMessage('Modifiers'),
content: createElement( content: createElement(
ModList, ModList,
Object.assign({}, props, { Object.assign({}, props, {
@ -183,7 +183,7 @@ export default function getMain(theState) {
key: 'applyMods', key: 'applyMods',
}, },
{ {
label: 'Уведомления', label: chrome.i18n.getMessage('Notifications'),
content: createElement(Notifications, props), content: createElement(Notifications, props),
key: 'notifications', key: 'notifications',
}, },

View File

@ -124,10 +124,10 @@ export default function getPacChooser(theState) {
const iddyToCheck = this.getCurrentProviderId(); const iddyToCheck = this.getCurrentProviderId();
return ( return (
<div> <div>
{props.flags.ifInsideOptionsPage && (<header>PAC-скрипт:</header>)} {props.flags.ifInsideOptionsPage && (<header>{chrome.i18n.getMessage('PAC_script')}:</header>)}
<ul> <ul>
{ {
[...theState.apis.antiCensorRu.getSortedEntriesForProviders(), {key: 'none', label: 'Отключить'}].map((provConf) => [...theState.apis.antiCensorRu.getSortedEntriesForProviders(), {key: 'none', label: chrome.i18n.getMessage('Disable')}].map((provConf) =>
(<InfoLi (<InfoLi
onClick={this.radioClickHandler} onClick={this.radioClickHandler}
conf={provConf} conf={provConf}
@ -135,7 +135,7 @@ export default function getPacChooser(theState) {
name="pacProvider" name="pacProvider"
checked={iddyToCheck === provConf.key} checked={iddyToCheck === provConf.key}
ifInputsDisabled={props.ifInputsDisabled} ifInputsDisabled={props.ifInputsDisabled}
nodeAfterLabel={<a href="" class={scopedCss.updateButton} onClick={this.updateClickHandler}>[обновить]</a>} nodeAfterLabel={<a href="" class={scopedCss.updateButton} onClick={this.updateClickHandler}>[{chrome.i18n.getMessage('update')}]</a>}
/>) />)
) )
} }

View File

@ -5,10 +5,11 @@
<title>Устранение проблем</title> <title>Устранение проблем</title>
</head> </head>
<body> <body>
<h1>Устранение проблем</h1> <h1>Устранение проблем</h1>
<ol> <ol>
<li><a data-in-bg="false" href id="view-errors">Детали последних ошибок</a></li> <li><a data-in-bg="false" href class="view-errors">Детали последних ошибок</a></li>
<li><a data-in-bg="false" href id="reset-settings">Сбросить настройки</a></li> <li><a data-in-bg="false" href class="reset-settings">Сбросить настройки</a></li>
<li><a data-in-bg="false" href="https://rebrand.ly/ac-support" target="_blank">Файл самопомощи</a></li> <li><a data-in-bg="false" href="https://rebrand.ly/ac-support" target="_blank">Файл самопомощи</a></li>
<li><a data-in-bg="false" href="https://rebrand.ly/ac-contact">Напишите нам!</a></li> <li><a data-in-bg="false" href="https://rebrand.ly/ac-contact">Напишите нам!</a></li>
</ol> </ol>
@ -17,6 +18,19 @@
<li><a data-in-bg="false" href="https://rebrand.ly/ac-logs">Как прочитать логи?</a></li> <li><a data-in-bg="false" href="https://rebrand.ly/ac-logs">Как прочитать логи?</a></li>
<li><a data-in-bg="false" href="../debug/index.html">Отладка PAC-скрипта</a></li> <li><a data-in-bg="false" href="../debug/index.html">Отладка PAC-скрипта</a></li>
</ol> </ol>
<hr/>
<h1>Troubleshooting</h1>
<ol>
<li><a data-in-bg="false" href class="view-errors">Details of last errors</a></li>
<li><a data-in-bg="false" href class="reset-settings">Reset settings</a></li>
<li><a data-in-bg="false" href="https://rebrand.ly/ac-support" target="_blank">Troubleshoot guide (ru)</a></li>
<li><a data-in-bg="false" href="https://rebrand.ly/ac-contact">Write to us!</a></li>
</ol>
<h2>Advanced</h2>
<ol>
<li><a data-in-bg="false" href="https://rebrand.ly/ac-logs">How to read logs?</a></li>
<li><a data-in-bg="false" href="../debug/index.html">PAC-script debugging</a></li>
</ol>
<script src="./index.js"></script> <script src="./index.js"></script>
<script src="../lib/keep-links-clickable.js"></script> <script src="../lib/keep-links-clickable.js"></script>
</body> </body>

View File

@ -4,15 +4,22 @@ chrome.runtime.getBackgroundPage( (backgroundPage) =>
backgroundPage.apis.errorHandlers.installListenersOn( backgroundPage.apis.errorHandlers.installListenersOn(
window, 'TRBL', () => { window, 'TRBL', () => {
document.getElementById('reset-settings').onclick = () => { document.querySelectorAll('.reset-settings').forEach((el) => {
el.onclick = () => {
backgroundPage.localStorage.clear(); backgroundPage.localStorage.clear();
chrome.storage.local.clear( () => chrome.runtime.reload() ); chrome.storage.local.clear( () => chrome.runtime.reload() );
}; };
});
document.getElementById('view-errors').onclick = () => document.querySelectorAll('.view-errors').forEach((el) => {
el.onclick = () =>
backgroundPage.apis.errorHandlers.viewError('all'); backgroundPage.apis.errorHandlers.viewError('all');
});
}) },
),
); );