Skip to content

Instantly share code, notes, and snippets.

@venomjke
Last active August 29, 2015 14:27
Show Gist options
  • Save venomjke/59f7387a12643e0a0b37 to your computer and use it in GitHub Desktop.
Save venomjke/59f7387a12643e0a0b37 to your computer and use it in GitHub Desktop.
Userscript, для перевода констант используя yandex api
// ==UserScript==
// @name SocialEngine Auto Translator
// @namespace http://your.homepage/
// @version 0.1
// @description enter something useful
// @author You
// @grant none
// @include http://znakomstva.flyweb.pro/admin/language/edit/locale/ru_RU*
// ==/UserScript==
var SCAutoTranslator = {
// область редактирования констант
editor: null,
editorKeys: null,
yandexTranslateApiUrl: 'https://translate.yandex.net/api/v1.5/tr.json/translate',
yandexTranslateApiKey: '',
init: function(){
this.editor = document.querySelector('.admin_language_editor');
this.editorKeys = this.editor.querySelectorAll('ul > li');
},
run: function(){
this.init();
for(var i in this.editorKeys){
var key = this.editorKeys[i];
if( !(key instanceof Object) || ! ("querySelector" in key)){
continue;
}
var text = key.querySelector('span').textContent;
var translateButton = document.createElement('button');
translateButton.appendChild(document.createTextNode('Перевести'));
translateButton.dataset.text = text.trim();
translateButton.dataset.textarea_id = key.querySelector('textarea').id;
translateButton.onclick = function(event){
event.preventDefault();
var data = event.target.dataset;
SCAutoTranslator.translate(data.text, function(text){
document.querySelector("#" + data.textarea_id).value = text;
});
}
key.appendChild(translateButton);
}
return this;
},
translate: function(text, callback){
var xmlHttp = new XMLHttpRequest();
var params = {
key: this.yandexTranslateApiKey,
lang: 'en-ru',
text: text
};
var paramsStr = '';
for (var key in params) {
if (paramsStr != "") {
paramsStr += "&";
}
paramsStr += key + "=" + encodeURIComponent(params[key]);
}
xmlHttp.open('GET', this.yandexTranslateApiUrl + '?' + paramsStr, true);
xmlHttp.send();
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
var response = JSON.parse(xmlHttp.responseText);
callback(response.text[0]);
}
}
}
}
}
window.SCAutoTranslator = SCAutoTranslator.run();
@milushov
Copy link

нет конфигурации через конструктор и нет обработки ошибок

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment