Skip to content

Commit

Permalink
Added DeepL translation
Browse files Browse the repository at this point in the history
  • Loading branch information
frianasoa committed Dec 19, 2023
1 parent e8ec31a commit 9ce1868
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 36 deletions.
88 changes: 62 additions & 26 deletions content/notes/menus.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,17 @@ Menus = {
}
}

items_ai["translate-google-en"] = {name: "Translate to "+tl+" (Google)", icon: "fa-google"};
items_ai["zn-translation"] = {
name: "Translate to "+tl,
icon: "fa-language",
items: {
"translate-google": {name: "Google", icon: "fa-google"}
}
};
if(Zotero.ZeNotes.Prefs.getb("deepl-api-key")!="")
{
items_ai["zn-translation"]["items"]["translate-deepl"] = {name: "DeepL", icon: "fa-d"};
}
items_ai["sep-ai-02"] = "---------";

if(Zotero.ZeNotes.Prefs.getb("bard-api-key")!="")
Expand Down Expand Up @@ -330,51 +340,77 @@ Menus = {
}


else if(key=="translate-google-en")
else if(key.includes("translate-"))
{
var mode = "api-key";

if(!annotationkey)
{
alert("Annotation not found!");
return;
}

if(Zotero.ZeNotes.Prefs.getb("google-translate-key")=="")
var annotation = Zotero.Items.get(annotationid);

if(!annotation)
{
mode="free-0";
alert("Annotation text not found!");
return;
}

var annotation = Zotero.Items.get(annotationid);
var currentcomment = annotation.annotationComment;
if(currentcomment==null)
{
currentcomment = "";
}

if(!annotation)
{
alert("Annotation text not found!"+annotationkey);
return;
}

var tl = Zotero.ZeNotes.Prefs.get("target-language");
Zotero.ZeNotes.Ai.Google.translate(annotation["annotationText"], tl, mode).then(r=>{
var table = AiUi.createdialog(annotation, currentcomment, r, "g-translate");
Dialog.open(table, function(){}, "Choose translation [Google]", "close");
}).catch(r=>{
var html = "";
if(Array.isArray(r))
{
html = r.join("<br/>");
}
else

if(key.includes("-google"))
{
var mode = "api-key";
if(Zotero.ZeNotes.Prefs.getb("google-translate-key")=="")
{
html="-"+r;
mode="free-0";
}
Dialog.open(html, function(){
Zotero.ZeNotes.Ai.Google.translate(annotation["annotationText"], tl, mode).then(r=>{
var table = AiUi.createdialog(annotation, currentcomment, r, "g-translate");
Dialog.open(table, function(){}, "Choose translation [Google]", "close");
}).catch(r=>{
var html = "";
if(Array.isArray(r))
{
html = r.join("<br/>");
}
else
{
html="-"+r;
}
Dialog.open(html, function(){
});
});
});
}
else if(key.includes("-deepl"))
{
Zotero.ZeNotes.Ai.DeepL.translate(annotation["annotationText"], tl).then(r=>{
var table = AiUi.createdialog(annotation, currentcomment, r, "deepl-translate");
Dialog.open(table, function(){}, "Choose translation [DeepL]", "close");
}).catch(r=>{
var html = "";
if(Array.isArray(r))
{
html = r.join("<br/>");
}
else
{
html="-"+r;
}
Dialog.open(html, function(){
});
});
}




}

else if(key=="summarize-row-annotations")
Expand Down
4 changes: 3 additions & 1 deletion content/settings/ai.xhtml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<div xmlns="http:https://www.w3.org/1999/xhtml">
<table id="ai" width="100%">
<tr><td>DeepL API key</td><td colspan="4"><input id="zn-deepl-api-key" type="password" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'deepl-api-key', 'encrypt');" style="width:100%;" placeholder="Enter your DeepL API key"/></td><td></td></tr>
<tr><td>Google translate API key</td><td colspan="4"><input id="zn-google-translate-key" type="password" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'google-translate-key', 'encrypt');" style="width:100%;" placeholder="Enter your google translate API key"/></td><td></td></tr>
<tr>
<td>Bard API key</td><td><input id="zn-bard-api-key" type="password" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'bard-api-key', 'encrypt');" style="width:100%;" placeholder="Enter your Bard API key"/></td><td style="width:1.1em;"> </td>
<td>Model</td><td> <select id="zn-bard-model" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'bard-model');" style="width:100%;" placeholder="Model">
Expand All @@ -10,6 +12,6 @@
<tr><td>Cell custom prompt</td><td colspan="4"><textarea id="zn-cell-custom-prompt" type="text" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'cell-custom-prompt');" style="width:100%;" placeholder="The annotation will be appended to your prompt."></textarea></td></tr>
<tr><td>Row summary prompt</td><td colspan="4"><textarea id="zn-row-custom-prompt" type="text" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'row-custom-prompt');" style="width:100%;" placeholder="The row annotations/notes data will be appended to your prompt."></textarea></td></tr>
<tr><td>Table summary prompt</td><td colspan="4"><textarea id="zn-table-custom-prompt" type="text" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'table-custom-prompt');" style="width:100%;" placeholder="The table annotations/notes data will be appended to your prompt."></textarea></td></tr>
<tr><td>Google translate API key</td><td><input id="zn-google-translate-key" type="password" onchange="Zotero_Preferences.ZeNotes.setpreference(event, 'google-translate-key', 'encrypt');" style="width:100%;" placeholder="Enter your google translate API key"/></td><td></td></tr>

</table>
</div>
1 change: 1 addition & 0 deletions content/settings/preferences.js
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,7 @@ Zotero_Preferences.ZeNotes = {
Zotero_Preferences.ZeNotes.loadpreference("bard-api-key", "zn-bard-api-key", "encrypt");

Zotero_Preferences.ZeNotes.loadpreference("google-translate-key", "zn-google-translate-key", "encrypt");
Zotero_Preferences.ZeNotes.loadpreference("deepl-api-key", "zn-deepl-api-key", "encrypt");

Zotero_Preferences.ZeNotes.loadpreference("bard-model", "zn-bard-model");
Zotero_Preferences.ZeNotes.loadpreference("cell-custom-prompt", "zn-cell-custom-prompt");
Expand Down
2 changes: 1 addition & 1 deletion content/ui/ai-ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ AiUi = {
var comment = c.innerText;
annotation.annotationComment = currentcomment+"\n\n<b>[Paraphrase]</b>\n"+comment+"\n";

if(mode=="g-translate")
if(["g-translate", "deepl-translate"].includes(mode))
{
annotation.annotationComment = currentcomment+"\n\n<b>[Translation]</b>\n"+comment+"\n";
}
Expand Down
31 changes: 31 additions & 0 deletions core/ai.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,18 @@ Ai={
return Promise.resolve(["Error: "+e, JSON.stringify(data)]);
}
}

else if(mode=="deepl-translate")
{
try {
return Promise.resolve(data.translations.map(function(e){return e.text}));
}
catch(e)
{
return Promise.resolve(["Error: "+e, JSON.stringify(data)]);
}
}

else if(mode=="bing")
{
try {
Expand Down Expand Up @@ -233,4 +245,23 @@ Ai.Google = {
return Ai.request(url, options, "g-translate-free-1");
}
},
}

Ai.DeepL = {
translate(sentence, language){
var apikey = Zotero.ZeNotes.Prefs.getb("deepl-api-key");
var url = "https://api-free.deepl.com/v2/translate"

var payload = {text: [sentence], target_lang: language.toUpperCase()};

var options = {
method: 'POST',
headers: {
"Authorization": "DeepL-Auth-Key "+apikey,
"Content-Type": "application/json",
},
body: JSON.stringify(payload),
}
return Ai.request(url, options, "deepl-translate");
},
}
2 changes: 1 addition & 1 deletion install.rdf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>[email protected]</em:id>
<em:name>ZeNotes</em:name>
<em:version>0.6.7</em:version>
<em:version>0.6.8</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:updateURL>https://raw.githubusercontent.com/frianasoa/zenotes/main/zenote-update.json</em:updateURL>
<em:homepageURL>https://github.com/frianasoa/zenotes</em:homepageURL>
Expand Down
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Ze Notes",
"version": "0.6.7",
"version": "0.6.8",
"description": "Advanced notes manager",
"homepage_url": "https://github.com/frianasoa/zenotes",
"author": "Fanantenana Rianasoa Andriariniaina",
Expand Down
6 changes: 3 additions & 3 deletions zenote-update.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"[email protected]": {
"updates": [
{
"version": "0.6.7",
"update_link": "https://github.com/frianasoa/Ze-Notes/releases/download/v0.6.7/zenotes-v0.6.7.xpi",
"update_hash": "sha256:049f73820b48db38f1fe56cbb61d747f755e875d81bc674ef9c9f65211853299",
"version": "0.6.8",
"update_link": "https://github.com/frianasoa/Ze-Notes/releases/download/v0.6.8/zenotes-v0.6.8.xpi",
"update_hash": "sha256:baa8d6abadd563420521cc87c0a34469324aab265b0ed615dcbb3a73337526da",
"applications": {
"gecko": {
"strict_min_version": "60.0"
Expand Down
6 changes: 3 additions & 3 deletions zenote-update.rdf
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
<rdf:Seq>
<rdf:li>
<rdf:Description>
<ns1:version>0.6.7</ns1:version>
<ns1:version>0.6.8</ns1:version>
<ns1:targetApplication>
<rdf:Description>
<ns1:id>[email protected]</ns1:id>
<ns1:minVersion>5.0.0</ns1:minVersion>
<ns1:maxVersion>6.*</ns1:maxVersion>
<ns1:updateLink>https://github.com/frianasoa/Ze-Notes/releases/download/v0.6.7/zenotes-v0.6.7.xpi</ns1:updateLink>
<ns1:updateLink>https://github.com/frianasoa/Ze-Notes/releases/download/v0.6.8/zenotes-v0.6.8.xpi</ns1:updateLink>
</rdf:Description>
</ns1:targetApplication>

Expand All @@ -20,7 +20,7 @@
<ns1:id>[email protected]</ns1:id>
<ns1:minVersion>4.999</ns1:minVersion>
<ns1:maxVersion>6.*</ns1:maxVersion>
<ns1:updateLink>https://github.com/frianasoa/Ze-Notes/releases/download/v0.6.7/zenotes-v0.6.7.xpi</ns1:updateLink>
<ns1:updateLink>https://github.com/frianasoa/Ze-Notes/releases/download/v0.6.8/zenotes-v0.6.8.xpi</ns1:updateLink>
</rdf:Description>
</ns1:targetApplication>

Expand Down

0 comments on commit 9ce1868

Please sign in to comment.