From 966ec3d903808a99cd0ea47318204fcea8f80a68 Mon Sep 17 00:00:00 2001 From: Elijah Miller Date: Fri, 29 Mar 2024 12:32:27 -0400 Subject: [PATCH 1/2] Add rake task for updating the cahced languages via the API. --- Rakefile | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Rakefile b/Rakefile index 18b3660..0a3cbcc 100644 --- a/Rakefile +++ b/Rakefile @@ -20,3 +20,25 @@ RSpec::Core::RakeTask.new(:test) do |t| end task :default => :test + +desc "Cache API languages into lib/easy_translate/languages.rb, must set GOOGLE_TRANSLATE_API_KEY" +task :cache_languages do + $: << "lib" + require "easy_translate" + EasyTranslate.api_key = ENV.fetch("GOOGLE_TRANSLATE_API_KEY") + + language_filename = "lib/easy_translate/languages.rb" + previous_contents = File.read(language_filename) + + response = JSON.parse(EasyTranslate::TranslationTarget::TranslationTargetRequest.new("en").perform_raw) + language_keys = response.dig("data", "languages").map do |info| + [info["name"].downcase.gsub(/[^a-z ]/, "").tr(" ", "_"), info["language"]] + end.sort.map do |n, l| + " '#{l}' => '#{n}'" + end.join(",\n") + new_contents = previous_contents.sub(/(LANGUAGES = {).*?(})/m, "\\1\n#{language_keys}\n \\2") + + File.open(language_filename, "w") do |f| + f.write(new_contents) + end +end From 7b82109eaa68ca22e9dba5b01f79afdd052509ca Mon Sep 17 00:00:00 2001 From: Elijah Miller Date: Fri, 29 Mar 2024 12:33:26 -0400 Subject: [PATCH 2/2] Latest list of languages from Google Translate API. --- lib/easy_translate/languages.rb | 87 ++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/lib/easy_translate/languages.rb b/lib/easy_translate/languages.rb index 4cba50f..8598308 100644 --- a/lib/easy_translate/languages.rb +++ b/lib/easy_translate/languages.rb @@ -3,57 +3,140 @@ module EasyTranslate LANGUAGES = { 'af' => 'afrikaans', 'sq' => 'albanian', + 'am' => 'amharic', 'ar' => 'arabic', + 'hy' => 'armenian', + 'as' => 'assamese', + 'ay' => 'aymara', + 'az' => 'azerbaijani', + 'bm' => 'bambara', + 'eu' => 'basque', 'be' => 'belarusian', + 'bn' => 'bengali', + 'bho' => 'bhojpuri', + 'bs' => 'bosnian', 'bg' => 'bulgarian', 'ca' => 'catalan', + 'ceb' => 'cebuano', + 'ny' => 'chichewa', + 'zh' => 'chinese_simplified', 'zh-CN' => 'chinese_simplified', 'zh-TW' => 'chinese_traditional', + 'co' => 'corsican', 'hr' => 'croatian', 'cs' => 'czech', 'da' => 'danish', + 'dv' => 'divehi', + 'doi' => 'dogri', 'nl' => 'dutch', 'en' => 'english', + 'eo' => 'esperanto', 'et' => 'estonian', + 'ee' => 'ewe', 'tl' => 'filipino', 'fi' => 'finnish', 'fr' => 'french', + 'fy' => 'frisian', 'gl' => 'galician', + 'lg' => 'ganda', + 'ka' => 'georgian', 'de' => 'german', 'el' => 'greek', + 'gn' => 'guarani', + 'gu' => 'gujarati', + 'ht' => 'haitian_creole', + 'ha' => 'hausa', + 'haw' => 'hawaiian', + 'he' => 'hebrew', 'iw' => 'hebrew', 'hi' => 'hindi', + 'hmn' => 'hmong', 'hu' => 'hungarian', 'is' => 'icelandic', + 'ig' => 'igbo', + 'ilo' => 'iloko', 'id' => 'indonesian', - 'ga' => 'irish', + 'ga' => 'irish_gaelic', 'it' => 'italian', 'ja' => 'japanese', + 'jv' => 'javanese', + 'jw' => 'javanese', + 'kn' => 'kannada', + 'kk' => 'kazakh', + 'km' => 'khmer', + 'rw' => 'kinyarwanda', + 'gom' => 'konkani', 'ko' => 'korean', + 'kri' => 'krio', + 'ku' => 'kurdish_kurmanji', + 'ckb' => 'kurdish_sorani', + 'ky' => 'kyrgyz', + 'lo' => 'lao', 'la' => 'latin', 'lv' => 'latvian', + 'ln' => 'lingala', 'lt' => 'lithuanian', + 'lb' => 'luxembourgish', 'mk' => 'macedonian', + 'mai' => 'maithili', + 'mg' => 'malagasy', 'ms' => 'malay', + 'ml' => 'malayalam', 'mt' => 'maltese', + 'mi' => 'maori', + 'mr' => 'marathi', + 'mni-Mtei' => 'meiteilon_manipuri', + 'lus' => 'mizo', + 'mn' => 'mongolian', + 'my' => 'myanmar_burmese', + 'ne' => 'nepali', + 'nso' => 'northern_sotho', 'no' => 'norwegian', + 'or' => 'odia_oriya', + 'om' => 'oromo', + 'ps' => 'pashto', 'fa' => 'persian', 'pl' => 'polish', 'pt' => 'portuguese', + 'pa' => 'punjabi', + 'qu' => 'quechua', 'ro' => 'romanian', 'ru' => 'russian', + 'sm' => 'samoan', + 'sa' => 'sanskrit', + 'gd' => 'scots_gaelic', 'sr' => 'serbian', + 'st' => 'sesotho', + 'sn' => 'shona', + 'sd' => 'sindhi', + 'si' => 'sinhala', 'sk' => 'slovak', 'sl' => 'slovenian', + 'so' => 'somali', 'es' => 'spanish', + 'su' => 'sundanese', 'sw' => 'swahili', 'sv' => 'swedish', + 'tg' => 'tajik', + 'ta' => 'tamil', + 'tt' => 'tatar', + 'te' => 'telugu', 'th' => 'thai', + 'ti' => 'tigrinya', + 'ts' => 'tsonga', 'tr' => 'turkish', + 'tk' => 'turkmen', + 'ak' => 'twi', 'uk' => 'ukrainian', + 'ur' => 'urdu', + 'ug' => 'uyghur', + 'uz' => 'uzbek', 'vi' => 'vietnamese', 'cy' => 'welsh', - 'yi' => 'yiddish' + 'xh' => 'xhosa', + 'yi' => 'yiddish', + 'yo' => 'yoruba', + 'zu' => 'zulu' } end