Skip to content

Commit

Permalink
Added language choice for translation
Browse files Browse the repository at this point in the history
  • Loading branch information
frianasoa committed Dec 13, 2023
1 parent c72faa2 commit 50f1a0e
Show file tree
Hide file tree
Showing 11 changed files with 305 additions and 13 deletions.
1 change: 1 addition & 0 deletions bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ function initPreferences(rootURI) {
src: rootURI + 'content/settings/preferences.xhtml',
scripts: [
rootURI + 'content/settings/zntable.js',
rootURI + 'content/settings/languages.js',
rootURI + 'content/settings/preferences.js',
],
image: rootURI+"/content/images/zenotes-settings.png"
Expand Down
20 changes: 15 additions & 5 deletions content/notes/menus.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,25 @@ Menus = {

if(Zotero.ZeNotes.Prefs.getb("bard-api-key")!="google-translate-key")
{
items_ai["translate-google-en"] = {name: "Translate to English (Google)", icon: "fa-language"};
var tlcode = Zotero.ZeNotes.Prefs.get("target-language");
var tl = "";
for(a of Languages.list())
{
if(tlcode.toUpperCase()==a.code.toUpperCase())
{
tl = a.name;
}
}

items_ai["translate-google-en"] = {name: "Translate to "+tl+" (Google)", icon: "fa-language"};
items_ai["sep-ai-02"] = "---------";
}

if(Zotero.ZeNotes.Prefs.getb("bard-api-key")!="")
{
items_ai["paraphrase-bard"] = {name: "Paraphrase annotation (Bard)", icon: "fa-language"};
items_ai["sep-ai-01"] = "---------";
}


var items1 = {
"showfile": {name: "Show attached files", icon: "fa-file-pdf"},
Expand Down Expand Up @@ -84,7 +94,7 @@ Menus = {

$('.context-menu-one').on('click', function(e){
console.log('clicked', this);
})
});

$.contextMenu({
selector: '.context-menu-two',
Expand Down Expand Up @@ -131,7 +141,6 @@ Menus = {
"saveasmarkdownhtml": {name: "With html [full]", icon: "fa-markdown"},
"saveasmarkdownhtmlicon": {name: "With html [icon]", icon: "fa-markdown"},
"saveasmarkdownhtmlnoicon": {name: "With html [no icon]", icon: "fa-markdown"},

},
},
"sep": "-----",
Expand Down Expand Up @@ -263,7 +272,8 @@ Menus = {
{
currentcomment = "";
}
Zotero.ZeNotes.Ai.Google.translate(annotation["annotationText"], "en").then(r=>{
var tl = Zotero.ZeNotes.Prefs.get("target-language");
Zotero.ZeNotes.Ai.Google.translate(annotation["annotationText"], tl).then(r=>{
var table = AiUi.createdialog(annotation, currentcomment, r, "g-translate");
Dialog.open(table, function(){}, "Choose translation [Google]", "close");
}).catch(r=>{
Expand Down
1 change: 1 addition & 0 deletions content/notes/notes.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
<script src="../ui/ai-ui.js"></script>
<script src="../ui/dialog.js"></script>
<script src="../settings/zntable.js"></script>
<script src="../settings/languages.js"></script>

</head>
<body style="height: 100vh;" id="zn-page-body">
Expand Down
198 changes: 198 additions & 0 deletions content/settings/languages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
Languages = {
list(){
return [
{ "code": "aa", "name": "Afar" },
{ "code": "ab", "name": "Abkhazian" },
{ "code": "ae", "name": "Avestan" },
{ "code": "af", "name": "Afrikaans" },
{ "code": "ak", "name": "Akan" },
{ "code": "am", "name": "Amharic" },
{ "code": "an", "name": "Aragonese" },
{ "code": "ar", "name": "Arabic" },
{ "code": "as", "name": "Assamese" },
{ "code": "av", "name": "Avaric" },
{ "code": "ay", "name": "Aymara" },
{ "code": "az", "name": "Azerbaijani" },
{ "code": "ba", "name": "Bashkir" },
{ "code": "be", "name": "Belarusian" },
{ "code": "bg", "name": "Bulgarian" },
{ "code": "bh", "name": "Bihari languages" },
{ "code": "bi", "name": "Bislama" },
{ "code": "bm", "name": "Bambara" },
{ "code": "bn", "name": "Bengali" },
{ "code": "bo", "name": "Tibetan" },
{ "code": "br", "name": "Breton" },
{ "code": "bs", "name": "Bosnian" },
{ "code": "ca", "name": "Catalan; Valencian" },
{ "code": "ce", "name": "Chechen" },
{ "code": "ch", "name": "Chamorro" },
{ "code": "co", "name": "Corsican" },
{ "code": "cr", "name": "Cree" },
{ "code": "cs", "name": "Czech" },
{
"code": "cu",
"name": "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic"
},
{ "code": "cv", "name": "Chuvash" },
{ "code": "cy", "name": "Welsh" },
{ "code": "da", "name": "Danish" },
{ "code": "de", "name": "German" },
{ "code": "dv", "name": "Divehi; Dhivehi; Maldivian" },
{ "code": "dz", "name": "Dzongkha" },
{ "code": "ee", "name": "Ewe" },
{ "code": "el", "name": "Greek, Modern (1453-)" },
{ "code": "en", "name": "English" },
{ "code": "eo", "name": "Esperanto" },
{ "code": "es", "name": "Spanish; Castilian" },
{ "code": "et", "name": "Estonian" },
{ "code": "eu", "name": "Basque" },
{ "code": "fa", "name": "Persian" },
{ "code": "ff", "name": "Fulah" },
{ "code": "fi", "name": "Finnish" },
{ "code": "fj", "name": "Fijian" },
{ "code": "fo", "name": "Faroese" },
{ "code": "fr", "name": "French" },
{ "code": "fy", "name": "Western Frisian" },
{ "code": "ga", "name": "Irish" },
{ "code": "gd", "name": "Gaelic; Scomttish Gaelic" },
{ "code": "gl", "name": "Galician" },
{ "code": "gn", "name": "Guarani" },
{ "code": "gu", "name": "Gujarati" },
{ "code": "gv", "name": "Manx" },
{ "code": "ha", "name": "Hausa" },
{ "code": "he", "name": "Hebrew" },
{ "code": "hi", "name": "Hindi" },
{ "code": "ho", "name": "Hiri Motu" },
{ "code": "hr", "name": "Croatian" },
{ "code": "ht", "name": "Haitian; Haitian Creole" },
{ "code": "hu", "name": "Hungarian" },
{ "code": "hy", "name": "Armenian" },
{ "code": "hz", "name": "Herero" },
{
"code": "ia",
"name": "Interlingua (International Auxiliary Language Association)"
},
{ "code": "id", "name": "Indonesian" },
{ "code": "ie", "name": "Interlingue; Occidental" },
{ "code": "ig", "name": "Igbo" },
{ "code": "ii", "name": "Sichuan Yi; Nuosu" },
{ "code": "ik", "name": "Inupiaq" },
{ "code": "io", "name": "Ido" },
{ "code": "is", "name": "Icelandic" },
{ "code": "it", "name": "Italian" },
{ "code": "iu", "name": "Inuktitut" },
{ "code": "ja", "name": "Japanese" },
{ "code": "jv", "name": "Javanese" },
{ "code": "ka", "name": "Georgian" },
{ "code": "kg", "name": "Kongo" },
{ "code": "ki", "name": "Kikuyu; Gikuyu" },
{ "code": "kj", "name": "Kuanyama; Kwanyama" },
{ "code": "kk", "name": "Kazakh" },
{ "code": "kl", "name": "Kalaallisut; Greenlandic" },
{ "code": "km", "name": "Central Khmer" },
{ "code": "kn", "name": "Kannada" },
{ "code": "ko", "name": "Korean" },
{ "code": "kr", "name": "Kanuri" },
{ "code": "ks", "name": "Kashmiri" },
{ "code": "ku", "name": "Kurdish" },
{ "code": "kv", "name": "Komi" },
{ "code": "kw", "name": "Cornish" },
{ "code": "ky", "name": "Kirghiz; Kyrgyz" },
{ "code": "la", "name": "Latin" },
{ "code": "lb", "name": "Luxembourgish; Letzeburgesch" },
{ "code": "lg", "name": "Ganda" },
{ "code": "li", "name": "Limburgan; Limburger; Limburgish" },
{ "code": "ln", "name": "Lingala" },
{ "code": "lo", "name": "Lao" },
{ "code": "lt", "name": "Lithuanian" },
{ "code": "lu", "name": "Luba-Katanga" },
{ "code": "lv", "name": "Latvian" },
{ "code": "mg", "name": "Malagasy" },
{ "code": "mh", "name": "Marshallese" },
{ "code": "mi", "name": "Maori" },
{ "code": "mk", "name": "Macedonian" },
{ "code": "ml", "name": "Malayalam" },
{ "code": "mn", "name": "Mongolian" },
{ "code": "mr", "name": "Marathi" },
{ "code": "ms", "name": "Malay" },
{ "code": "mt", "name": "Maltese" },
{ "code": "my", "name": "Burmese" },
{ "code": "na", "name": "Nauru" },
{
"code": "nb",
"name": "Bokmål, Norwegian; Norwegian Bokmål"
},
{ "code": "nd", "name": "Ndebele, North; North Ndebele" },
{ "code": "ne", "name": "Nepali" },
{ "code": "ng", "name": "Ndonga" },
{ "code": "nl", "name": "Dutch; Flemish" },
{ "code": "nn", "name": "Norwegian Nynorsk; Nynorsk, Norwegian" },
{ "code": "no", "name": "Norwegian" },
{ "code": "nr", "name": "Ndebele, South; South Ndebele" },
{ "code": "nv", "name": "Navajo; Navaho" },
{ "code": "ny", "name": "Chichewa; Chewa; Nyanja" },
{ "code": "oc", "name": "Occitan (post 1500)" },
{ "code": "oj", "name": "Ojibwa" },
{ "code": "om", "name": "Oromo" },
{ "code": "or", "name": "Oriya" },
{ "code": "os", "name": "Ossetian; Ossetic" },
{ "code": "pa", "name": "Panjabi; Punjabi" },
{ "code": "pi", "name": "Pali" },
{ "code": "pl", "name": "Polish" },
{ "code": "ps", "name": "Pushto; Pashto" },
{ "code": "pt", "name": "Portuguese" },
{ "code": "qu", "name": "Quechua" },
{ "code": "rm", "name": "Romansh" },
{ "code": "rn", "name": "Rundi" },
{ "code": "ro", "name": "Romanian; Moldavian; Moldovan" },
{ "code": "ru", "name": "Russian" },
{ "code": "rw", "name": "Kinyarwanda" },
{ "code": "sa", "name": "Sanskrit" },
{ "code": "sc", "name": "Sardinian" },
{ "code": "sd", "name": "Sindhi" },
{ "code": "se", "name": "Northern Sami" },
{ "code": "sg", "name": "Sango" },
{ "code": "si", "name": "Sinhala; Sinhalese" },
{ "code": "sk", "name": "Slovak" },
{ "code": "sl", "name": "Slovenian" },
{ "code": "sm", "name": "Samoan" },
{ "code": "sn", "name": "Shona" },
{ "code": "so", "name": "Somali" },
{ "code": "sq", "name": "Albanian" },
{ "code": "sr", "name": "Serbian" },
{ "code": "ss", "name": "Swati" },
{ "code": "st", "name": "Sotho, Southern" },
{ "code": "su", "name": "Sundanese" },
{ "code": "sv", "name": "Swedish" },
{ "code": "sw", "name": "Swahili" },
{ "code": "ta", "name": "Tamil" },
{ "code": "te", "name": "Telugu" },
{ "code": "tg", "name": "Tajik" },
{ "code": "th", "name": "Thai" },
{ "code": "ti", "name": "Tigrinya" },
{ "code": "tk", "name": "Turkmen" },
{ "code": "tl", "name": "Tagalog" },
{ "code": "tn", "name": "Tswana" },
{ "code": "to", "name": "Tonga (Tonga Islands)" },
{ "code": "tr", "name": "Turkish" },
{ "code": "ts", "name": "Tsonga" },
{ "code": "tt", "name": "Tatar" },
{ "code": "tw", "name": "Twi" },
{ "code": "ty", "name": "Tahitian" },
{ "code": "ug", "name": "Uighur; Uyghur" },
{ "code": "uk", "name": "Ukrainian" },
{ "code": "ur", "name": "Urdu" },
{ "code": "uz", "name": "Uzbek" },
{ "code": "ve", "name": "Venda" },
{ "code": "vi", "name": "Vietnamese" },
{ "code": "vo", "name": "Volapük" },
{ "code": "wa", "name": "Walloon" },
{ "code": "wo", "name": "Wolof" },
{ "code": "xh", "name": "Xhosa" },
{ "code": "yi", "name": "Yiddish" },
{ "code": "yo", "name": "Yoruba" },
{ "code": "za", "name": "Zhuang; Chuang" },
{ "code": "zh", "name": "Chinese" },
{ "code": "zu", "name": "Zulu" }
]}
}
70 changes: 70 additions & 0 deletions content/settings/preferences.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,75 @@ Zotero_Preferences.ZeNotes = {
lsettings.dataset.collectionid = e.target.value;
},

targetlanguages()
{
var tl = Zotero.ZeNotes.Prefs.get("target-language");
var options = Languages.list().map(function(e){return {label: e.name, value:e.code}});
var combo = this.addcombobox("zn-target-language", options, tl);
combo.addEventListener("change", function(e){
Zotero.ZeNotes.Prefs.set("target-language", e.target.value);
});
combo.addEventListener("command", function(e){
Zotero.ZeNotes.Prefs.set("target-language", e.target.value);
})
},

addcombobox(itemid, options, value){
var menulist = document.getElementById(itemid);
if (Zotero.platformMajorVersion < 102)
{
if(menulist.tagName.toUpperCase()!="SELECT")
{
var p = menulist.parentNode.parentNode;
menulist.parentNode.remove();
var sel = document.createElement("select");
p.insertBefore(sel, p.firstChild);
sel.setAttribute("id", "zn-load-settings");
menulist = sel;
}
else
{
menulist.innerHTML="";
}
}
else
{
menulist.innerHTML="";
}

if(menulist==undefined)
{
return;
}

for(s of options)
{
if(Zotero.platformMajorVersion < 102){
var opt = document.createElement("option");
opt.innerHTML = s.label;
opt.setAttribute("label", s.label);
opt.setAttribute("value", s.value);
menulist.appendChild(opt);
if(s.value==value)
{
opt.selected = "true";
}
}
else
{
var opt = document.createXULElement("menuitem");
opt.setAttribute("label", s.label);
opt.setAttribute("value", s.value);
menulist.appendChild(opt);
if(s.value==value)
{
menulist.parentNode.selectedItem = opt;
}
}
}
return menulist;
},

loadpreferences()
{
var lsettings = document.getElementById("zn-load-settings");
Expand Down Expand Up @@ -226,6 +295,7 @@ Zotero_Preferences.ZeNotes = {
include.appendChild(importedNode);
Zotero_Preferences.ZeNotes.loadtables();
Zotero_Preferences.ZeNotes.loadpreferences();
Zotero_Preferences.ZeNotes.targetlanguages();
Zotero_Preferences.ZeNotes.initopacity();
Zotero_Preferences.ZeNotes.loadpreference("html-filter", "zn-html-filter");
Zotero_Preferences.ZeNotes.loadpreference("html-filter-replacement", "zn-html-filter-replacement");
Expand Down
11 changes: 11 additions & 0 deletions content/settings/preferences.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,17 @@
<html:fieldset>
<html:legend class='zn-legend'>AI API settings</html:legend>
<div class="zn-include" src="ai.xhtml"> </div>
<html:table>
<html:tr><html:td>Target language</html:td><html:td colspan="2">
<box>
<menulist>
<menupopup id="zn-target-language">
</menupopup>
</menulist>
</box>
</html:td><html:td></html:td></html:tr>
</html:table>

</html:fieldset>

<html:fieldset>
Expand Down
1 change: 1 addition & 0 deletions content/settings/preferences6.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

<html:script src="zotero.js"></html:script>
<html:script src="zntable.js"></html:script>
<html:script src="languages.js"></html:script>
<html:script src="preferences.js"></html:script>
<html:script>

Expand Down
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.5.5</em:version>
<em:version>0.5.6</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.5.5",
"version": "0.5.6",
"description": "Advanced notes manager",
"homepage_url": "https://github.com/frianasoa/zenotes",
"author": "Fanantenana Rianasoa Andriariniaina",
Expand Down
Loading

0 comments on commit 50f1a0e

Please sign in to comment.