From 0cb0a61d342744217cfb020deb4b4deb089cad50 Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Tue, 23 Apr 2024 16:44:17 -0700 Subject: [PATCH 1/6] Add ISO 639-1 language codes --- config/application.rb | 3 + config/language_codes.yml | 185 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 config/language_codes.yml diff --git a/config/application.rb b/config/application.rb index 65e56ea9c8..250f9a621c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -31,5 +31,8 @@ class Application < Rails::Application # Initialize configuration for KGCL change request functionality. config.change_request = config_for :change_request + + # ISO 639-1 language codes + config.language_codes = config_for :language_codes end end diff --git a/config/language_codes.yml b/config/language_codes.yml new file mode 100644 index 0000000000..7e50dbfbd5 --- /dev/null +++ b/config/language_codes.yml @@ -0,0 +1,185 @@ +shared: + aa: Afar + ab: Abkhazian + ae: Avestan + af: Afrikaans + ak: Akan + am: Amharic + an: Aragonese + ar: Arabic + as: Assamese + av: Avaric + ay: Aymara + az: Azerbaijani + ba: Bashkir + be: Belarusian + bg: Bulgarian + bh: Bihari languages + bi: Bislama + bm: Bambara + bn: Bengali + bo: Tibetan + br: Breton + bs: Bosnian + ca: Catalan; Valencian + ce: Chechen + ch: Chamorro + co: Corsican + cr: Cree + cs: Czech + cu: Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic + cv: Chuvash + cy: Welsh + da: Danish + de: German + dv: Divehi; Dhivehi; Maldivian + dz: Dzongkha + ee: Ewe + el: Greek + en: English + eo: Esperanto + es: Spanish; Castilian + et: Estonian + eu: Basque + fa: Persian + ff: Fulah + fi: Finnish + fj: Fijian + fo: Faroese + fr: French + fy: Western Frisian + ga: Irish + gd: Gaelic; Scottish Gaelic + gl: Galician + gn: Guarani + gu: Gujarati + gv: Manx + ha: Hausa + he: Hebrew + hi: Hindi + ho: Hiri Motu + hr: Croatian + ht: Haitian; Haitian Creole + hu: Hungarian + hy: Armenian + hz: Herero + ia: Interlingua (International Auxiliary Language Association) + id: Indonesian + ie: Interlingue; Occidental + ig: Igbo + ii: Sichuan Yi; Nuosu + ik: Inupiaq + io: Ido + is: Icelandic + it: Italian + iu: Inuktitut + ja: Japanese + jv: Javanese + ka: Georgian + kg: Kongo + ki: Kikuyu; Gikuyu + kj: Kuanyama; Kwanyama + kk: Kazakh + kl: Kalaallisut; Greenlandic + km: Central Khmer + kn: Kannada + ko: Korean + kr: Kanuri + ks: Kashmiri + ku: Kurdish + kv: Komi + kw: Cornish + ky: Kirghiz; Kyrgyz + la: Latin + lb: Luxembourgish; Letzeburgesch + lg: Ganda + li: Limburgan; Limburger; Limburgish + ln: Lingala + lo: Lao + lt: Lithuanian + lu: Luba-Katanga + lv: Latvian + mg: Malagasy + mh: Marshallese + mi: Maori + mk: Macedonian + ml: Malayalam + mn: Mongolian + mr: Marathi + ms: Malay + mt: Maltese + my: Burmese + na: Nauru + nb: Bokmål + nd: Ndebele + ne: Nepali + ng: Ndonga + nl: Dutch; Flemish + nn: Norwegian Nynorsk; Nynorsk + no: Norwegian + nr: Ndebele + nv: Navajo; Navaho + ny: Chichewa; Chewa; Nyanja + oc: Occitan (post 1500) + oj: Ojibwa + om: Oromo + or: Oriya + os: Ossetian; Ossetic + pa: Panjabi; Punjabi + pi: Pali + pl: Polish + ps: Pushto; Pashto + pt: Portuguese + qu: Quechua + rm: Romansh + rn: Rundi + ro: Romanian; Moldavian; Moldovan + ru: Russian + rw: Kinyarwanda + sa: Sanskrit + sc: Sardinian + sd: Sindhi + se: Northern Sami + sg: Sango + si: Sinhala; Sinhalese + sk: Slovak + sl: Slovenian + sm: Samoan + sn: Shona + so: Somali + sq: Albanian + sr: Serbian + ss: Swati + st: Sotho + su: Sundanese + sv: Swedish + sw: Swahili + ta: Tamil + te: Telugu + tg: Tajik + th: Thai + ti: Tigrinya + tk: Turkmen + tl: Tagalog + tn: Tswana + to: Tonga (Tonga Islands) + tr: Turkish + ts: Tsonga + tt: Tatar + tw: Twi + ty: Tahitian + ug: Uighur; Uyghur + uk: Ukrainian + ur: Urdu + uz: Uzbek + ve: Venda + vi: Vietnamese + vo: Volapük + wa: Walloon + wo: Wolof + xh: Xhosa + yi: Yiddish + yo: Yoruba + za: Zhuang; Chuang + zh: Chinese + zu: Zulu \ No newline at end of file From fdbbd1fdda7267f3f05584fb2fdc2e785f9ab021 Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Tue, 23 Apr 2024 16:45:42 -0700 Subject: [PATCH 2/6] Add language selector to submission form --- app/assets/javascripts/submissions.js.erb | 5 +++++ app/controllers/submissions_controller.rb | 5 +++-- app/helpers/submissions_helper.rb | 8 ++++++++ app/views/submissions/_form.html.haml | 8 ++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/submissions.js.erb b/app/assets/javascripts/submissions.js.erb index 7dd111f65a..7fad689ab3 100644 --- a/app/assets/javascripts/submissions.js.erb +++ b/app/assets/javascripts/submissions.js.erb @@ -43,6 +43,11 @@ jQuery(document).ready(function(){ jQuery("#contacts").on("click", ".add-contact", addContact); jQuery("#contacts").on("click", ".remove-contact", removeContact); + jQuery("#submission_naturalLanguage").select2({ + dropdownParent: jQuery(".submissions form"), + include_hidden: false, + }); + jQuery("#ontology_submission_form").validate({ highlight: function(element) { $(element).closest('.form-group').addClass('has-error'); diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index 59c1866adc..042c3e4365 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -21,6 +21,7 @@ def new def create # Make the contacts an array params[:submission][:contact] = params[:submission][:contact].values + params[:submission][:naturalLanguage].compact_blank! @submission = LinkedData::Client::Models::OntologySubmission.new(values: submission_params) @ontology = LinkedData::Client::Models::Ontology.get(params[:submission][:ontology]) @@ -53,8 +54,8 @@ def edit def update # Make the contacts an array params[:submission][:contact] = params[:submission][:contact].values - params[:submission][:contact].delete_if { |c| c[:name].empty? || c[:email].empty? } + params[:submission][:naturalLanguage].compact_blank! @ontology = LinkedData::Client::Models::Ontology.get(params[:submission][:ontology]) submissions = @ontology.explore.submissions @@ -80,7 +81,7 @@ def submission_params :synonymProperty, :definitionProperty, :authorProperty, :obsoleteProperty, :obsoleteParent, :version, :status, :released, :isRemote, :pullLocation, :filePath, { contact: [:name, :email] }, :homepage, :documentation, - :publication) + :publication, naturalLanguage: []) p.to_h end end diff --git a/app/helpers/submissions_helper.rb b/app/helpers/submissions_helper.rb index e26758930d..586a941a61 100644 --- a/app/helpers/submissions_helper.rb +++ b/app/helpers/submissions_helper.rb @@ -14,4 +14,12 @@ def acronym_from_submission_muted(submission) def acronym_from_params_muted tag.small "for #{params[:ontology_id]}", class: 'text-muted' end + + def natural_language_selector(submission) + options = Rails.application.config.language_codes.invert.sort + selected = submission.naturalLanguage + select(:submission, :naturalLanguage, options_for_select(options, selected), + { include_blank: true }, + { multiple: true, class: 'form-select', 'aria-describedby': 'languageHelpBlock' }) + end end diff --git a/app/views/submissions/_form.html.haml b/app/views/submissions/_form.html.haml index 957695656f..0b342c8800 100644 --- a/app/views/submissions/_form.html.haml +++ b/app/views/submissions/_form.html.haml @@ -125,6 +125,14 @@ %div.col-sm-10 = text_field(:submission, :version, value: @submission.version, class: 'form-control') +-# Natural language +%div.row.mb-3 + %label{class: 'col-sm-2 col-form-label'} Language + %div.col-sm-10 + = natural_language_selector(@submission) + %div{id: 'languageHelpBlock', class: 'form-text'} + Enter the language of the content of the ontology, i.e., English, French, etc. + -# Status %div.row.mb-3 %label{class: 'col-sm-2 col-form-label', for: "submission_status"} From d18a8be1f0433f91b08e0b6443874c60acbfad28 Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Tue, 23 Apr 2024 16:45:45 -0700 Subject: [PATCH 3/6] Update Gemfile.lock --- Gemfile.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0f10dedc53..956640815d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -181,7 +181,7 @@ GEM concurrent-ruby (~> 1.0) iconv (1.0.8) io-console (0.7.2) - irb (1.11.1) + irb (1.12.0) rdoc reline (>= 0.4.2) jquery-rails (4.6.0) @@ -192,7 +192,7 @@ GEM railties (>= 3.2.16) jsbundling-rails (1.3.0) railties (>= 6.0.0) - json (2.7.1) + json (2.7.2) language_server-protocol (3.17.0.3) listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) @@ -291,16 +291,16 @@ GEM thor (~> 1.0) zeitwerk (~> 2.5) rainbow (3.1.1) - rake (13.1.0) + rake (13.2.1) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rdoc (6.3.3) + rdoc (6.3.4.1) recaptcha (5.9.0) json redis (4.8.1) regexp_parser (2.9.0) - reline (0.4.2) + reline (0.5.0) io-console (~> 0.5) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) @@ -325,7 +325,7 @@ GEM rspec-mocks (~> 3.12) rspec-support (~> 3.12) rspec-support (3.12.1) - rubocop (1.60.2) + rubocop (1.63.3) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -333,11 +333,11 @@ GEM rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.30.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.30.0) - parser (>= 3.2.1.0) + rubocop-ast (1.31.2) + parser (>= 3.3.0.4) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) ruby_parser (3.20.3) From d48b0048ed72306dbb27c6d26ac01054204925af Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Wed, 24 Apr 2024 15:53:13 -0700 Subject: [PATCH 4/6] Remove YAML language code config --- config/application.rb | 3 - config/language_codes.yml | 185 -------------------------------------- 2 files changed, 188 deletions(-) delete mode 100644 config/language_codes.yml diff --git a/config/application.rb b/config/application.rb index 250f9a621c..65e56ea9c8 100644 --- a/config/application.rb +++ b/config/application.rb @@ -31,8 +31,5 @@ class Application < Rails::Application # Initialize configuration for KGCL change request functionality. config.change_request = config_for :change_request - - # ISO 639-1 language codes - config.language_codes = config_for :language_codes end end diff --git a/config/language_codes.yml b/config/language_codes.yml deleted file mode 100644 index 7e50dbfbd5..0000000000 --- a/config/language_codes.yml +++ /dev/null @@ -1,185 +0,0 @@ -shared: - aa: Afar - ab: Abkhazian - ae: Avestan - af: Afrikaans - ak: Akan - am: Amharic - an: Aragonese - ar: Arabic - as: Assamese - av: Avaric - ay: Aymara - az: Azerbaijani - ba: Bashkir - be: Belarusian - bg: Bulgarian - bh: Bihari languages - bi: Bislama - bm: Bambara - bn: Bengali - bo: Tibetan - br: Breton - bs: Bosnian - ca: Catalan; Valencian - ce: Chechen - ch: Chamorro - co: Corsican - cr: Cree - cs: Czech - cu: Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic - cv: Chuvash - cy: Welsh - da: Danish - de: German - dv: Divehi; Dhivehi; Maldivian - dz: Dzongkha - ee: Ewe - el: Greek - en: English - eo: Esperanto - es: Spanish; Castilian - et: Estonian - eu: Basque - fa: Persian - ff: Fulah - fi: Finnish - fj: Fijian - fo: Faroese - fr: French - fy: Western Frisian - ga: Irish - gd: Gaelic; Scottish Gaelic - gl: Galician - gn: Guarani - gu: Gujarati - gv: Manx - ha: Hausa - he: Hebrew - hi: Hindi - ho: Hiri Motu - hr: Croatian - ht: Haitian; Haitian Creole - hu: Hungarian - hy: Armenian - hz: Herero - ia: Interlingua (International Auxiliary Language Association) - id: Indonesian - ie: Interlingue; Occidental - ig: Igbo - ii: Sichuan Yi; Nuosu - ik: Inupiaq - io: Ido - is: Icelandic - it: Italian - iu: Inuktitut - ja: Japanese - jv: Javanese - ka: Georgian - kg: Kongo - ki: Kikuyu; Gikuyu - kj: Kuanyama; Kwanyama - kk: Kazakh - kl: Kalaallisut; Greenlandic - km: Central Khmer - kn: Kannada - ko: Korean - kr: Kanuri - ks: Kashmiri - ku: Kurdish - kv: Komi - kw: Cornish - ky: Kirghiz; Kyrgyz - la: Latin - lb: Luxembourgish; Letzeburgesch - lg: Ganda - li: Limburgan; Limburger; Limburgish - ln: Lingala - lo: Lao - lt: Lithuanian - lu: Luba-Katanga - lv: Latvian - mg: Malagasy - mh: Marshallese - mi: Maori - mk: Macedonian - ml: Malayalam - mn: Mongolian - mr: Marathi - ms: Malay - mt: Maltese - my: Burmese - na: Nauru - nb: Bokmål - nd: Ndebele - ne: Nepali - ng: Ndonga - nl: Dutch; Flemish - nn: Norwegian Nynorsk; Nynorsk - no: Norwegian - nr: Ndebele - nv: Navajo; Navaho - ny: Chichewa; Chewa; Nyanja - oc: Occitan (post 1500) - oj: Ojibwa - om: Oromo - or: Oriya - os: Ossetian; Ossetic - pa: Panjabi; Punjabi - pi: Pali - pl: Polish - ps: Pushto; Pashto - pt: Portuguese - qu: Quechua - rm: Romansh - rn: Rundi - ro: Romanian; Moldavian; Moldovan - ru: Russian - rw: Kinyarwanda - sa: Sanskrit - sc: Sardinian - sd: Sindhi - se: Northern Sami - sg: Sango - si: Sinhala; Sinhalese - sk: Slovak - sl: Slovenian - sm: Samoan - sn: Shona - so: Somali - sq: Albanian - sr: Serbian - ss: Swati - st: Sotho - su: Sundanese - sv: Swedish - sw: Swahili - ta: Tamil - te: Telugu - tg: Tajik - th: Thai - ti: Tigrinya - tk: Turkmen - tl: Tagalog - tn: Tswana - to: Tonga (Tonga Islands) - tr: Turkish - ts: Tsonga - tt: Tatar - tw: Twi - ty: Tahitian - ug: Uighur; Uyghur - uk: Ukrainian - ur: Urdu - uz: Uzbek - ve: Venda - vi: Vietnamese - vo: Volapük - wa: Walloon - wo: Wolof - xh: Xhosa - yi: Yiddish - yo: Yoruba - za: Zhuang; Chuang - zh: Chinese - zu: Zulu \ No newline at end of file From a076188d4de6eeabcab36b725d7bd48b4e0d6112 Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Wed, 24 Apr 2024 15:53:38 -0700 Subject: [PATCH 5/6] Add the iso-639 gem --- Gemfile | 1 + Gemfile.lock | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Gemfile b/Gemfile index 6065095111..710616a597 100644 --- a/Gemfile +++ b/Gemfile @@ -54,6 +54,7 @@ gem 'graphql-client' gem 'haml', '~> 5.1' gem 'i18n' gem 'iconv' +gem 'iso-639', '~> 0.3.6' gem 'multi_json' gem 'mysql2', '0.5.5' gem 'oj' diff --git a/Gemfile.lock b/Gemfile.lock index 956640815d..e8efaa91ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -184,6 +184,7 @@ GEM irb (1.12.0) rdoc reline (>= 0.4.2) + iso-639 (0.3.6) jquery-rails (4.6.0) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) @@ -422,6 +423,7 @@ DEPENDENCIES html2haml i18n iconv + iso-639 (~> 0.3.6) jquery-rails jquery-ui-rails jsbundling-rails (~> 1.3) From 17acf409a670208999427282ade033d92f0acac1 Mon Sep 17 00:00:00 2001 From: Jennifer Vendetti Date: Wed, 24 Apr 2024 15:54:33 -0700 Subject: [PATCH 6/6] Get language codes from the iso-639 gem --- app/helpers/submissions_helper.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/helpers/submissions_helper.rb b/app/helpers/submissions_helper.rb index 586a941a61..147da10308 100644 --- a/app/helpers/submissions_helper.rb +++ b/app/helpers/submissions_helper.rb @@ -16,9 +16,14 @@ def acronym_from_params_muted end def natural_language_selector(submission) - options = Rails.application.config.language_codes.invert.sort + language_codes = ISO_639::ISO_639_1.map do |code| + # Get the alpha-2 code and English name + code.slice(2, 2).reverse + end + language_codes.sort! { |a, b| a.first.downcase <=> b.first.downcase } + selected = submission.naturalLanguage - select(:submission, :naturalLanguage, options_for_select(options, selected), + select(:submission, :naturalLanguage, options_for_select(language_codes, selected), { include_blank: true }, { multiple: true, class: 'form-select', 'aria-describedby': 'languageHelpBlock' }) end