Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sharkbikes/translation #209

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13,463 changes: 12,008 additions & 1,455 deletions package-lock.json

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"merge-dependencies",
"add-package-json"
],
"postinstall": "./patch.sh",
"author": "",
"license": "MIT",
"dependencies": {
Expand All @@ -28,10 +29,14 @@
"emoji-regex": "^10.0.0",
"ethereum-address": "^0.0.4",
"mathjs": "^9.5.1",
"snet-sdk": "2.0.0-beta.0",
"node-fetch": "^2.6.7",
"periodic-table": "^0.0.8",
"wikijs": "^6.3.2"
},
"overrides": {
"concat-stream": "2.0.0"
},
"devDependencies": {
"pre-commit": "^1.2.2"
}
Expand Down
122 changes: 122 additions & 0 deletions packages/translation/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
"use strict";

const dotenv = require("dotenv");
const SnetSDK = require("snet-sdk").default;
const service = require("./translate_grpc_pb");
const messages = require("./translate_pb");

const languages = require("./languages.json");

function wordAfterLastTo(query) {
return query.split("to")[query.split("to").length - 1].trim();
}

function getQueryLanguages(query) {
return query.split("from")[query.split("from").length - 1].trim();
}
function wordAfterLastFrom(query) {
return getQueryLanguages(query).split("to")[0].trim();
}

function extractQuery(query) {
if (findMatchingLanguage(languages, wordAfterLastFrom(query))) {
const queryWithoutLang = query
.substr(10, query.length - getQueryLanguages(query).length - 10)
.trim();
const queryStatement = queryWithoutLang
.substr(0, queryWithoutLang.length - 4)
.trim();
return queryStatement;
} else {
const possibleLangWord = wordAfterLastTo(query);
const queryWithoutLang = query
.substr(10, query.length - possibleLangWord.length - 10)
.trim();
const queryWithoutLangAndTo = queryWithoutLang
.substr(0, queryWithoutLang.length - 2)
.trim();
return queryWithoutLangAndTo;
}
}
function findMatchingLanguage(languageList, language) {
const matchingLanguage = languageList.filter(
(lang) => lang.language.toLowerCase() === language.toLowerCase()
)[0];
if (matchingLanguage) {
return matchingLanguage.langCode;
}
}

dotenv.config();
async function translation(query, API_KEY) {
// API_KEY format: <your private key>;<your web3 provider>;<your email>
const privateKey = API_KEY.split(";")[0];
const web3Provider = API_KEY.split(";")[1];
const email = API_KEY.split(";")[2];
const config = {
privateKey,
networkId: 1,
orgId: "naint",
serviceId: "machine-translation",
web3Provider,
};
const sdk = new SnetSDK(config);

const possibleFromLang = wordAfterLastFrom(query);
const possibleToLang = wordAfterLastTo(query);
const detectedFromLanguage = findMatchingLanguage(
languages,
possibleFromLang
);
const detectedToLanguage = findMatchingLanguage(languages, possibleToLang);
const client = await sdk.createServiceClient(
config.orgId,
config.serviceId,
service.RomanceTranslatorClient,
"default_group",
null,
{ email, tokenToMakeFreeCall: "" }
);
const translateReq = new Promise(function (resolve, reject) {
const input = new messages.Input();
input.setSentencesUrl(extractQuery(query));
input.setSourceLang(detectedFromLanguage || "eng_Latn");
input.setTargetLang(detectedToLanguage || "fra_Latn");
client.service.translate(input, (err, resp) => {
if (err) reject(err);
resolve(resp);
});
// resolve({array: [extractQuery(query) + " " + detectedFromLanguage + " " + detectedToLanguage]});
});
const resp = await translateReq;
const translation = resp.array[0];
return `
<div id="presearchPackage">
<span class="mycolor">Translation: ${translation}</span>
</div>
<style>
/* styles for dark mode should have .dark before */
.dark #presearchPackage .mycolor {
color: white;
}
#presearchPackage .mycolor {
color: black;
}
</style>
`;
}

async function trigger(query) {
if (query) {
query = query ? query.toLowerCase() : "";
if (
query.indexOf("translate ") === 0 &&
query.indexOf(" to ") > -1 &&
findMatchingLanguage(languages, wordAfterLastTo(query))
)
return true;
}
return false;
}

module.exports = { translation, trigger };
1 change: 1 addition & 0 deletions packages/translation/languages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"language":"Acehnese (Arabic script)","langCode":"ace_Arab"},{"language":"Acehnese (Latin script)","langCode":"ace_Latn"},{"language":"Mesopotamian Arabic","langCode":"acm_Arab"},{"language":"Ta'izzi-Adeni Arabic","langCode":"acq_Arab"},{"language":"Tunisian Arabic","langCode":"aeb_Arab"},{"language":"Afrikaans","langCode":"afr_Latn"},{"language":"South Levantine Arabic","langCode":"ajp_Arab"},{"language":"Akan","langCode":"aka_Latn"},{"language":"Amharic","langCode":"amh_Ethi"},{"language":"North Levantine Arabic","langCode":"apc_Arab"},{"language":"Modern Standard Arabic","langCode":"arb_Arab"},{"language":"Modern Standard Arabic (Romanized)","langCode":"arb_Latn"},{"language":"Najdi Arabic","langCode":"ars_Arab"},{"language":"Moroccan Arabic","langCode":"ary_Arab"},{"language":"Egyptian Arabic","langCode":"arz_Arab"},{"language":"Assamese","langCode":"asm_Beng"},{"language":"Asturian","langCode":"ast_Latn"},{"language":"Awadhi","langCode":"awa_Deva"},{"language":"Central Aymara","langCode":"ayr_Latn"},{"language":"South Azerbaijani","langCode":"azb_Arab"},{"language":"North Azerbaijani","langCode":"azj_Latn"},{"language":"Bashkir","langCode":"bak_Cyrl"},{"language":"Bambara","langCode":"bam_Latn"},{"language":"Balinese","langCode":"ban_Latn"},{"language":"Belarusian","langCode":"bel_Cyrl"},{"language":"Bemba","langCode":"bem_Latn"},{"language":"Bengali","langCode":"ben_Beng"},{"language":"Bhojpuri","langCode":"bho_Deva"},{"language":"Banjar (Arabic script)","langCode":"bjn_Arab"},{"language":"Banjar (Latin script)","langCode":"bjn_Latn"},{"language":"Standard Tibetan","langCode":"bod_Tibt"},{"language":"Bosnian","langCode":"bos_Latn"},{"language":"Buginese","langCode":"bug_Latn"},{"language":"Bulgarian","langCode":"bul_Cyrl"},{"language":"Catalan","langCode":"cat_Latn"},{"language":"Cebuano","langCode":"ceb_Latn"},{"language":"Czech","langCode":"ces_Latn"},{"language":"Chokwe","langCode":"cjk_Latn"},{"language":"Central Kurdish","langCode":"ckb_Arab"},{"language":"Crimean Tatar","langCode":"crh_Latn"},{"language":"Welsh","langCode":"cym_Latn"},{"language":"Danish","langCode":"dan_Latn"},{"language":"German","langCode":"deu_Latn"},{"language":"Southwestern Dinka","langCode":"dik_Latn"},{"language":"Dyula","langCode":"dyu_Latn"},{"language":"Dzongkha","langCode":"dzo_Tibt"},{"language":"Greek","langCode":"ell_Grek"},{"language":"English","langCode":"eng_Latn"},{"language":"Esperanto","langCode":"epo_Latn"},{"language":"Estonian","langCode":"est_Latn"},{"language":"Basque","langCode":"eus_Latn"},{"language":"Ewe","langCode":"ewe_Latn"},{"language":"Faroese","langCode":"fao_Latn"},{"language":"Fijian","langCode":"fij_Latn"},{"language":"Finnish","langCode":"fin_Latn"},{"language":"Fon","langCode":"fon_Latn"},{"language":"French","langCode":"fra_Latn"},{"language":"Friulian","langCode":"fur_Latn"},{"language":"Nigerian Fulfulde","langCode":"fuv_Latn"},{"language":"Scottish Gaelic","langCode":"gla_Latn"},{"language":"Irish","langCode":"gle_Latn"},{"language":"Galician","langCode":"glg_Latn"},{"language":"Guarani","langCode":"grn_Latn"},{"language":"Gujarati","langCode":"guj_Gujr"},{"language":"Haitian Creole","langCode":"hat_Latn"},{"language":"Hausa","langCode":"hau_Latn"},{"language":"Hebrew","langCode":"heb_Hebr"},{"language":"Hindi","langCode":"hin_Deva"},{"language":"Chhattisgarhi","langCode":"hne_Deva"},{"language":"Croatian","langCode":"hrv_Latn"},{"language":"Hungarian","langCode":"hun_Latn"},{"language":"Armenian","langCode":"hye_Armn"},{"language":"Igbo","langCode":"ibo_Latn"},{"language":"Ilocano","langCode":"ilo_Latn"},{"language":"Indonesian","langCode":"ind_Latn"},{"language":"Icelandic","langCode":"isl_Latn"},{"language":"Italian","langCode":"ita_Latn"},{"language":"Javanese","langCode":"jav_Latn"},{"language":"Japanese","langCode":"jpn_Jpan"},{"language":"Kabyle","langCode":"kab_Latn"},{"language":"Jingpho","langCode":"kac_Latn"},{"language":"Kamba","langCode":"kam_Latn"},{"language":"Kannada","langCode":"kan_Knda"},{"language":"Kashmiri (Arabic script)","langCode":"kas_Arab"},{"language":"Kashmiri (Devanagari script)","langCode":"kas_Deva"},{"language":"Georgian","langCode":"kat_Geor"},{"language":"Central Kanuri (Arabic script)","langCode":"knc_Arab"},{"language":"Central Kanuri (Latin script)","langCode":"knc_Latn"},{"language":"Kazakh","langCode":"kaz_Cyrl"},{"language":"Kabiyè","langCode":"kbp_Latn"},{"language":"Kabuverdianu","langCode":"kea_Latn"},{"language":"Khmer","langCode":"khm_Khmr"},{"language":"Kikuyu","langCode":"kik_Latn"},{"language":"Kinyarwanda","langCode":"kin_Latn"},{"language":"Kyrgyz","langCode":"kir_Cyrl"},{"language":"Kimbundu","langCode":"kmb_Latn"},{"language":"Northern Kurdish","langCode":"kmr_Latn"},{"language":"Kikongo","langCode":"kon_Latn"},{"language":"Korean","langCode":"kor_Hang"},{"language":"Lao","langCode":"lao_Laoo"},{"language":"Ligurian","langCode":"lij_Latn"},{"language":"Limburgish","langCode":"lim_Latn"},{"language":"Lingala","langCode":"lin_Latn"},{"language":"Lithuanian","langCode":"lit_Latn"},{"language":"Lombard","langCode":"lmo_Latn"},{"language":"Latgalian","langCode":"ltg_Latn"},{"language":"Luxembourgish","langCode":"ltz_Latn"},{"language":"Luba-Kasai","langCode":"lua_Latn"},{"language":"Ganda","langCode":"lug_Latn"},{"language":"Luo","langCode":"luo_Latn"},{"language":"Mizo","langCode":"lus_Latn"},{"language":"Standard Latvian","langCode":"lvs_Latn"},{"language":"Magahi","langCode":"mag_Deva"},{"language":"Maithili","langCode":"mai_Deva"},{"language":"Malayalam","langCode":"mal_Mlym"},{"language":"Marathi","langCode":"mar_Deva"},{"language":"Minangkabau (Arabic script)","langCode":"min_Arab"},{"language":"Minangkabau (Latin script)","langCode":"min_Latn"},{"language":"Macedonian","langCode":"mkd_Cyrl"},{"language":"Plateau Malagasy","langCode":"plt_Latn"},{"language":"Maltese","langCode":"mlt_Latn"},{"language":"Meitei (Bengali script)","langCode":"mni_Beng"},{"language":"Halh Mongolian","langCode":"khk_Cyrl"},{"language":"Mossi","langCode":"mos_Latn"},{"language":"Maori","langCode":"mri_Latn"},{"language":"Burmese","langCode":"mya_Mymr"},{"language":"Dutch","langCode":"nld_Latn"},{"language":"Norwegian Nynorsk","langCode":" nno_Latn"},{"language":"Norwegian Bokmål","langCode":"nob_Latn"},{"language":"Nepali","langCode":"npi_Deva"},{"language":"Northern Sotho","langCode":"nso_Latn"},{"language":"Nuer","langCode":"nus_Latn"},{"language":"Nyanja","langCode":"nya_Latn"},{"language":"Occitan","langCode":"oci_Latn"},{"language":"West Central Oromo","langCode":"gaz_Latn"},{"language":"Odia","langCode":"ory_Orya"},{"language":"Pangasinan","langCode":"pag_Latn"},{"language":"Eastern Panjabi","langCode":"pan_Guru"},{"language":"Papiamento","langCode":"pap_Latn"},{"language":"Western Persian","langCode":"pes_Arab"},{"language":"Polish","langCode":"pol_Latn"},{"language":"Portuguese","langCode":"por_Latn"},{"language":"Dari","langCode":"prs_Arab"},{"language":"Southern Pashto","langCode":"pbt_Arab"},{"language":"Ayacucho Quechua","langCode":"quy_Latn"},{"language":"Romanian","langCode":"ron_Latn"},{"language":"Rundi","langCode":"run_Latn"},{"language":"Russian","langCode":"rus_Cyrl"},{"language":"Sango","langCode":"sag_Latn"},{"language":"Sanskrit","langCode":"san_Deva"},{"language":"Santali","langCode":"sat_Olck"},{"language":"Sicilian","langCode":"scn_Latn"},{"language":"Shan","langCode":"shn_Mymr"},{"language":"Sinhala","langCode":"sin_Sinh"},{"language":"Slovak","langCode":"slk_Latn"},{"language":"Slovenian","langCode":" slv_Latn"},{"language":"Samoan","langCode":"smo_Latn"},{"language":"Shona","langCode":"sna_Latn"},{"language":"Sindhi","langCode":"snd_Arab"},{"language":"Somali","langCode":"som_Latn"},{"language":"Southern Sotho","langCode":"sot_Latn"},{"language":"Spanish","langCode":"spa_Latn"},{"language":"Tosk Albanian","langCode":"als_Latn"},{"language":"Sardinian","langCode":"srd_Latn"},{"language":"Serbian","langCode":"srp_Cyrl"},{"language":"Swati","langCode":"ssw_Latn"},{"language":"Sundanese","langCode":"sun_Latn"},{"language":"Swedish","langCode":"swe_Latn"},{"language":"Swahili","langCode":"swh_Latn"},{"language":"Silesian","langCode":"szl_Latn"},{"language":"Tamil","langCode":"tam_Taml"},{"language":"Tatar","langCode":"tat_Cyrl"},{"language":"Telugu","langCode":"tel_Telu"},{"language":"Tajik","langCode":"tgk_Cyrl"},{"language":"Tagalog","langCode":"tgl_Latn"},{"language":"Thai","langCode":"tha_Thai"},{"language":"Tigrinya","langCode":"tir_Ethi"},{"language":"Tamasheq (Latin script)","langCode":"taq_Latn"},{"language":"Tamasheq (Tifinagh script)","langCode":"taq_Tfng"},{"language":"Tok Pisin","langCode":"tpi_Latn"},{"language":"Tswana","langCode":"tsn_Latn"},{"language":"Tsonga","langCode":"tso_Latn"},{"language":"Turkmen","langCode":"tuk_Latn"},{"language":"Tumbuka","langCode":"tum_Latn"},{"language":"Turkish","langCode":"tur_Latn"},{"language":"Twi","langCode":"twi_Latn"},{"language":"Central Atlas Tamazight","langCode":"tzm_Tfng"},{"language":"Uyghur","langCode":"uig_Arab"},{"language":"Ukrainian","langCode":"ukr_Cyrl"},{"language":"Umbundu","langCode":"umb_Latn"},{"language":"Urdu","langCode":"urd_Arab"},{"language":"Northern Uzbek","langCode":"uzn_Latn"},{"language":"Venetian","langCode":"vec_Latn"},{"language":"Vietnamese","langCode":"vie_Latn"},{"language":"Waray","langCode":"war_Latn"},{"language":"Wolof","langCode":"wol_Latn"},{"language":"Xhosa","langCode":"xho_Latn"},{"language":"Eastern Yiddish","langCode":"ydd_Hebr"},{"language":"Yoruba","langCode":"yor_Latn"},{"language":"Yue Chinese","langCode":"yue_Hant"},{"language":"Chinese (Simplified)","langCode":"zho_Hans"},{"language":"Chinese (Traditional)","langCode":"zho_Hant"},{"language":"Standard Malay","langCode":"zsm_Latn"},{"language":"Zulu","langCode":"zul_Latn"}]
12 changes: 12 additions & 0 deletions packages/translation/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name":"translation",
"version":"1.0.0",
"description":"",
"main":"index.js",
"scripts":{
"test":"echo \"Error: no test specified\" && exit 1"
},
"keywords":[],
"author":"Code Symphony",
"license":"MIT"
}
44 changes: 44 additions & 0 deletions packages/translation/translate_grpc_pb.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// GENERATED CODE -- DO NOT EDIT!

'use strict';
var grpc = require('grpc');
var translate_pb = require('./translate_pb.js');

function serialize_Input(arg) {
if (!(arg instanceof translate_pb.Input)) {
throw new Error('Expected argument of type Input');
}
return Buffer.from(arg.serializeBinary());
}

function deserialize_Input(buffer_arg) {
return translate_pb.Input.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_Output(arg) {
if (!(arg instanceof translate_pb.Output)) {
throw new Error('Expected argument of type Output');
}
return Buffer.from(arg.serializeBinary());
}

function deserialize_Output(buffer_arg) {
return translate_pb.Output.deserializeBinary(new Uint8Array(buffer_arg));
}


var RomanceTranslatorService = exports.RomanceTranslatorService = {
translate: {
path: '/RomanceTranslator/translate',
requestStream: false,
responseStream: false,
requestType: translate_pb.Input,
responseType: translate_pb.Output,
requestSerialize: serialize_Input,
requestDeserialize: deserialize_Input,
responseSerialize: serialize_Output,
responseDeserialize: deserialize_Output,
},
};

exports.RomanceTranslatorClient = grpc.makeGenericClientConstructor(RomanceTranslatorService);
Loading