From 20a3f20582e91695fe9d058bbd2ebc0701c8f274 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 20 Mar 2026 00:12:25 -0400 Subject: [PATCH 01/23] Added language select modal --- composer.json | 2 +- composer.lock | 12 ++++++------ conf/drupal/config/mass_theme.settings.yml | 1 + .../themes/custom/mass_theme/mass_theme.theme | 2 ++ .../navigation/menu--utility.html.twig | 17 ++++++++++++----- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/composer.json b/composer.json index 12d6d45cad..54c5467369 100644 --- a/composer.json +++ b/composer.json @@ -278,7 +278,7 @@ "geocoder-php/open-cage-provider": "^4.6", "google/cloud-bigquery": "^1.25", "league/commonmark": "^2.7", - "massgov/mayflower-artifacts": "dev-develop", + "massgov/mayflower-artifacts": "dev-patternlab/DP-45023_google-translate-widget-update", "monolog/monolog": "^3", "npm-asset/ace-builds": "~1.0", "npm-asset/select2": "^4.1.0-rc.0", diff --git a/composer.lock b/composer.lock index d72c9621bd..d1756cd0a1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3f791d1dfd24854dc206a86423d9fdcd", + "content-hash": "5f6b507c60d23e61bcb9de83ecbc7706", "packages": [ { "name": "akamai-open/edgegrid-auth", @@ -13632,16 +13632,16 @@ }, { "name": "massgov/mayflower-artifacts", - "version": "dev-develop", + "version": "dev-patternlab/DP-45023_google-translate-widget-update", "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "847f31f7800411f6dc507af057e4281f817ee24b" + "reference": "55d3cf93e945bc3f52487ba368bba50b64c62de0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/847f31f7800411f6dc507af057e4281f817ee24b", - "reference": "847f31f7800411f6dc507af057e4281f817ee24b", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/55d3cf93e945bc3f52487ba368bba50b64c62de0", + "reference": "55d3cf93e945bc3f52487ba368bba50b64c62de0", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-16T19:32:40+00:00" + "time": "2026-03-20T03:41:25+00:00" }, { "name": "masterminds/html5", diff --git a/conf/drupal/config/mass_theme.settings.yml b/conf/drupal/config/mass_theme.settings.yml index 4660bcde8c..12948f8da3 100644 --- a/conf/drupal/config/mass_theme.settings.yml +++ b/conf/drupal/config/mass_theme.settings.yml @@ -15,6 +15,7 @@ languages: ar: ar de: de el: el + en: en es: es fa: fa fr: fr diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index 3184c522eb..a0ad31337b 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -3893,6 +3893,7 @@ function mass_theme_preprocess_menu(&$variables) { if (array_key_exists('menu_name', $variables) && $variables['menu_name'] == 'utility') { // Get Theme settings languages if available. if (theme_get_setting('languages', 'mass_theme')) { + $variables['availableLanguages'] = mass_theme_googletranslate_options_languages(); $variables['languages'] = implode(',', array_filter(theme_get_setting('languages', 'mass_theme'))); } foreach ($variables['items'] as &$item) { @@ -6669,6 +6670,7 @@ function mass_theme_googletranslate_options_languages() { 'de' => 'German', 'dz' => 'Bhutani', 'el' => 'Greek', + 'en' => 'English', 'eo' => 'Esperanto', 'es' => 'Spanish', 'et' => 'Estonian', diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index ce92af672e..710f71d4fd 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -19,18 +19,25 @@ */ #} {# This will need to come from theme settings. #} +{% +set languageList = availableLanguages +%} + {% set googleLanguages = languages %} {% set utilityNav = { - dropdown: { - labelText: 'Language:', - id: 'lang-select', - name: 'lang-select', - }, items: items } %} + +{% +set modal = { + buttonIcon: 'translate', + buttonText: 'Language'|t, +} +%} + {% include '@organisms/by-template/utility-nav.twig' %} From 7328f01d03d3707c42ed67643fe4ee635f3c9908 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 20 Mar 2026 00:16:23 -0400 Subject: [PATCH 02/23] Added sort to language list --- .../mass_theme/templates/navigation/menu--utility.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index 710f71d4fd..b17926e25f 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -20,7 +20,7 @@ #} {# This will need to come from theme settings. #} {% -set languageList = availableLanguages +set languageList = availableLanguages|sort %} {% From 3aee580633f9953eaaa2c7f270400c5668128925 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 20 Mar 2026 08:33:17 -0400 Subject: [PATCH 03/23] Added changelog --- changelogs/DP-45023.yml | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 changelogs/DP-45023.yml diff --git a/changelogs/DP-45023.yml b/changelogs/DP-45023.yml new file mode 100644 index 0000000000..057d39d32b --- /dev/null +++ b/changelogs/DP-45023.yml @@ -0,0 +1,41 @@ +# +# Write your changelog entry here. Every pull request must have a changelog yml file. +# +# Change types: +# ############################################################################# +# You can use one of the following types: +# - Added: For new features. +# - Changed: For changes to existing functionality. +# - Deprecated: For soon-to-be removed features. +# - Removed: For removed features. +# - Fixed: For any bug fixes. +# - Security: In case of vulnerabilities. +# +# Format +# ############################################################################# +# The format is crucial. Please follow the examples below. For reference, the requirements are: +# - All 3 parts are required and you must include "Type", "description" and "issue". +# - "Type" must be left aligned and followed by a colon. +# - "description" must be indented with 2 spaces followed by a colon +# - "issue" must be indented with 4 spaces followed by a colon. +# - "issue" is for the Jira ticket number only e.g. DP-1234 +# - No extra spaces, indents, or blank lines are allowed. +# +# Example: +# ############################################################################# +# Fixed: +# - description: Fixes scrolling on edit pages in Safari. +# issue: DP-13314 +# +# You may add more than 1 description & issue for each type using the following format: +# Changed: +# - description: Automating the release branch. +# issue: DP-10166 +# - description: Second change item that needs a description. +# issue: DP-19875 +# - description: Third change item that needs a description along with an issue. +# issue: DP-19843 +# +Added: + - description: Added accessible translation widget. + issue: DP-45023 From 1d6c083ac41853db3b43b3c252331cc6f6987a42 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 20 Mar 2026 10:11:31 -0400 Subject: [PATCH 04/23] Updated mayflower-artifacts --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index d1756cd0a1..7fa888cb13 100644 --- a/composer.lock +++ b/composer.lock @@ -13636,12 +13636,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "55d3cf93e945bc3f52487ba368bba50b64c62de0" + "reference": "605dc337bcb22348a6371a3d4e9dfd32dde2f786" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/55d3cf93e945bc3f52487ba368bba50b64c62de0", - "reference": "55d3cf93e945bc3f52487ba368bba50b64c62de0", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/605dc337bcb22348a6371a3d4e9dfd32dde2f786", + "reference": "605dc337bcb22348a6371a3d4e9dfd32dde2f786", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-20T03:41:25+00:00" + "time": "2026-03-20T14:04:32+00:00" }, { "name": "masterminds/html5", From 880a1ee6ab94616c2275f00643df887e772020f7 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Mon, 23 Mar 2026 14:43:13 -0400 Subject: [PATCH 05/23] Updated mayflower-artifacts --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 7fa888cb13..9301ca0a5f 100644 --- a/composer.lock +++ b/composer.lock @@ -13636,12 +13636,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "605dc337bcb22348a6371a3d4e9dfd32dde2f786" + "reference": "a1c53645c6e02ceca08fca9cc95a79ed6aa16c65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/605dc337bcb22348a6371a3d4e9dfd32dde2f786", - "reference": "605dc337bcb22348a6371a3d4e9dfd32dde2f786", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/a1c53645c6e02ceca08fca9cc95a79ed6aa16c65", + "reference": "a1c53645c6e02ceca08fca9cc95a79ed6aa16c65", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-20T14:04:32+00:00" + "time": "2026-03-23T18:09:04+00:00" }, { "name": "masterminds/html5", From 4d1bb4258af91b092be1b07c2b4a0c6483ad0a0e Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Mon, 23 Mar 2026 14:50:35 -0400 Subject: [PATCH 06/23] Added values for modal --- .../mass_theme/templates/navigation/menu--utility.html.twig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index b17926e25f..b8b9c27eaa 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -35,8 +35,10 @@ set utilityNav = { {% set modal = { - buttonIcon: 'translate', - buttonText: 'Language'|t, + icon: 'translate', + type: 'info', + title: 'Select language'|t, + buttonText: 'Language'|t } %} From ff64323d8423b7beb8e75d289e06d87b1e895d46 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Mon, 23 Mar 2026 15:48:46 -0400 Subject: [PATCH 07/23] Updated mayflower-artifacts --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 9301ca0a5f..9b3b437eae 100644 --- a/composer.lock +++ b/composer.lock @@ -13636,12 +13636,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "a1c53645c6e02ceca08fca9cc95a79ed6aa16c65" + "reference": "baa555016739f23eab205f6a756a892de3f7e41b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/a1c53645c6e02ceca08fca9cc95a79ed6aa16c65", - "reference": "a1c53645c6e02ceca08fca9cc95a79ed6aa16c65", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/baa555016739f23eab205f6a756a892de3f7e41b", + "reference": "baa555016739f23eab205f6a756a892de3f7e41b", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-23T18:09:04+00:00" + "time": "2026-03-23T19:44:28+00:00" }, { "name": "masterminds/html5", From 8492bf4c1161eb70a77ce3909e7cee4140ab368e Mon Sep 17 00:00:00 2001 From: Minghua Sun Date: Tue, 24 Mar 2026 10:34:50 -0400 Subject: [PATCH 08/23] update mf --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 601f504466..3ca3607f50 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3f791d1dfd24854dc206a86423d9fdcd", + "content-hash": "5f6b507c60d23e61bcb9de83ecbc7706", "packages": [ { "name": "akamai-open/edgegrid-auth", @@ -13632,16 +13632,16 @@ }, { "name": "massgov/mayflower-artifacts", - "version": "dev-develop", + "version": "dev-patternlab/DP-45023_google-translate-widget-update", "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "f1baa3d981b2798350df6bd0e3752bf4ec2fff19" + "reference": "baa555016739f23eab205f6a756a892de3f7e41b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/f1baa3d981b2798350df6bd0e3752bf4ec2fff19", - "reference": "f1baa3d981b2798350df6bd0e3752bf4ec2fff19", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/baa555016739f23eab205f6a756a892de3f7e41b", + "reference": "baa555016739f23eab205f6a756a892de3f7e41b", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-24T08:11:08+00:00" + "time": "2026-03-23T19:44:28+00:00" }, { "name": "masterminds/html5", @@ -25728,5 +25728,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.6.0" } From 2604f035966e7d193f3a7274bdba33dfec6f5a2b Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Wed, 1 Apr 2026 12:31:57 -0400 Subject: [PATCH 09/23] Updated language list --- .../themes/custom/mass_theme/mass_theme.theme | 195 +++++------------- .../navigation/menu--utility.html.twig | 2 +- 2 files changed, 55 insertions(+), 142 deletions(-) diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index da61c6ae82..b6186c7701 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -3893,7 +3893,12 @@ function mass_theme_preprocess_menu(&$variables) { if (array_key_exists('menu_name', $variables) && $variables['menu_name'] == 'utility') { // Get Theme settings languages if available. if (theme_get_setting('languages', 'mass_theme')) { - $variables['availableLanguages'] = mass_theme_googletranslate_options_languages(); + $variables['availableLanguages'] = array_map(static function (array $language) { + $english = $language['english']; + $native = $language['native'] ?? $english; + + return $english === $native ? $english : $english . ' - ' . $native; + }, mass_theme_googletranslate_options_languages()); $variables['languages'] = implode(',', array_filter(theme_get_setting('languages', 'mass_theme'))); } foreach ($variables['items'] as &$item) { @@ -6655,145 +6660,49 @@ function mass_theme_preprocess_paragraph__icon_links(&$variables) { */ function mass_theme_googletranslate_options_languages() { $language_codes = [ - 'aa' => 'Afar', - 'ab' => 'Abkhazian', - 'af' => 'Afrikaans', - 'am' => 'Amharic', - 'ar' => 'Arabic', - 'as' => 'Assamese', - 'ay' => 'Aymara', - 'az' => 'Azerbaijani', - 'ba' => 'Bashkir', - 'be' => 'Byelorussian', - 'bg' => 'Bulgarian', - 'bh' => 'Bihari', - 'bi' => 'Bislama', - 'bn' => 'Bengali/Bangla', - 'bo' => 'Tibetan', - 'br' => 'Breton', - 'ca' => 'Catalan', - 'cv' => 'Cape Verdean Creole', - 'co' => 'Corsican', - 'cs' => 'Czech', - 'cy' => 'Welsh', - 'da' => 'Danish', - 'de' => 'German', - 'dz' => 'Bhutani', - 'el' => 'Greek', - 'en' => 'English', - 'eo' => 'Esperanto', - 'es' => 'Spanish', - 'et' => 'Estonian', - 'eu' => 'Basque', - 'fa' => 'Persian', - 'fi' => 'Finnish', - 'fj' => 'Fiji', - 'fo' => 'Faeroese', - 'fr' => 'French', - 'fy' => 'Frisian', - 'ga' => 'Irish', - 'gd' => 'Scots/Gaelic', - 'gl' => 'Galician', - 'gn' => 'Guarani', - 'gu' => 'Gujarati', - 'ha' => 'Hausa', - 'hi' => 'Hindi', - 'hr' => 'Croatian', - 'hmn' => 'Hmong', - 'hu' => 'Hungarian', - 'ht' => 'Haitian Creole', - 'hy' => 'Armenian', - 'ia' => 'Interlingua', - 'ie' => 'Interlingue', - 'ik' => 'Inupiak', - 'in' => 'Indonesian', - 'is' => 'Icelandic', - 'it' => 'Italian', - 'iw' => 'Hebrew', - 'ja' => 'Japanese', - 'ji' => 'Yiddish', - 'jw' => 'Javanese', - 'ka' => 'Georgian', - 'kk' => 'Kazakh', - 'kl' => 'Greenlandic', - 'km' => 'Cambodian', - 'kn' => 'Kannada', - 'ko' => 'Korean', - 'ks' => 'Kashmiri', - 'ku' => 'Kurdish', - 'ky' => 'Kirghiz', - 'la' => 'Latin', - 'ln' => 'Lingala', - 'lo' => 'Laothian', - 'lt' => 'Lithuanian', - 'lv' => 'Latvian/Lettish', - 'mg' => 'Malagasy', - 'mi' => 'Maori', - 'mk' => 'Macedonian', - 'ml' => 'Malayalam', - 'mn' => 'Mongolian', - 'mo' => 'Moldavian', - 'mr' => 'Marathi', - 'ms' => 'Malay', - 'mt' => 'Maltese', - 'my' => 'Burmese', - 'na' => 'Nauru', - 'ne' => 'Nepali', - 'nl' => 'Dutch', - 'no' => 'Norwegian', - 'oc' => 'Occitan', - 'om' => '(Afan)/Oromoor/Oriya', - 'pa' => 'Punjabi', - 'pl' => 'Polish', - 'ps' => 'Pashto/Pushto', - 'pt' => 'Portuguese', - 'qu' => 'Quechua', - 'rm' => 'Rhaeto-Romance', - 'rn' => 'Kirundi', - 'ro' => 'Romanian', - 'ru' => 'Russian', - 'rw' => 'Kinyarwanda', - 'sa' => 'Sanskrit', - 'sd' => 'Sindhi', - 'sg' => 'Sangro', - 'sh' => 'Serbo-Croatian', - 'si' => 'Singhalese', - 'sk' => 'Slovak', - 'sl' => 'Slovenian', - 'sm' => 'Samoan', - 'sn' => 'Shona', - 'so' => 'Somali', - 'sq' => 'Albanian', - 'sr' => 'Serbian', - 'ss' => 'Siswati', - 'st' => 'Sesotho', - 'su' => 'Sundanese', - 'sv' => 'Swedish', - 'sw' => 'Swahili', - 'ta' => 'Tamil', - 'te' => 'Tegulu', - 'tg' => 'Tajik', - 'th' => 'Thai', - 'ti' => 'Tigrinya', - 'tk' => 'Turkmen', - 'tl' => 'Tagalog', - 'tn' => 'Setswana', - 'to' => 'Tonga', - 'tr' => 'Turkish', - 'ts' => 'Tsonga', - 'tt' => 'Tatar', - 'tw' => 'Twi', - 'uk' => 'Ukrainian', - 'ur' => 'Urdu', - 'uz' => 'Uzbek', - 'vi' => 'Vietnamese', - 'vo' => 'Volapuk', - 'wo' => 'Wolof', - 'xh' => 'Xhosa', - 'yo' => 'Yoruba', - 'zh-CN' => 'Chinese', - 'zh-TW' => 'Chinese, Traditional', - 'zu' => 'Zulu', + 'en' => ['english' => 'English', 'native' => 'English'], + 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans'], + 'sq' => ['english' => 'Albanian', 'native' => 'Shqip'], + 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ'], + 'ar' => ['english' => 'Arabic', 'native' => 'العربية'], + 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն'], + 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文'], + 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文'], + 'tl' => ['english' => 'Filipino', 'native' => 'Filipino'], + 'fr' => ['english' => 'French', 'native' => 'Français'], + 'de' => ['english' => 'German', 'native' => 'Deutsch'], + 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά'], + 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી'], + 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen'], + 'iw' => ['english' => 'Hebrew', 'native' => 'עברית'], + 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी'], + 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob'], + 'it' => ['english' => 'Italian', 'native' => 'Italiano'], + 'ja' => ['english' => 'Japanese', 'native' => '日本語'], + 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ'], + 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda'], + 'ko' => ['english' => 'Korean', 'native' => '한국어'], + 'lo' => ['english' => 'Lao', 'native' => 'ລາວ'], + 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം'], + 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ'], + 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली'], + 'ps' => ['english' => 'Pashto', 'native' => 'پښتو'], + 'fa' => ['english' => 'Persian', 'native' => 'فارسی'], + 'pl' => ['english' => 'Polish', 'native' => 'Polski'], + 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português'], + 'ro' => ['english' => 'Romanian', 'native' => 'Română'], + 'ru' => ['english' => 'Russian', 'native' => 'Русский'], + 'so' => ['english' => 'Somali', 'native' => 'Soomaali'], + 'es' => ['english' => 'Spanish', 'native' => 'Español'], + 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili'], + 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்'], + 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు'], + 'th' => ['english' => 'Thai', 'native' => 'ไทย'], + 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ'], + 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe'], + 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська'], + 'ur' => ['english' => 'Urdu', 'native' => 'اردو'], + 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt'], ]; return $language_codes; } @@ -6802,7 +6711,11 @@ function mass_theme_googletranslate_options_languages() { * Add languages to theme settings. */ function mass_theme_form_system_theme_settings_alter(&$form, $form_state) { + $language_list = []; $languages = mass_theme_googletranslate_options_languages(); + foreach ($languages as $language_code => $language) { + $language_list[$language_code] = $language['english']; + } $form['mass_theme_settings'] = [ '#type' => 'details', @@ -6812,7 +6725,7 @@ function mass_theme_form_system_theme_settings_alter(&$form, $form_state) { $form['mass_theme_settings']['languages'] = [ '#type' => 'checkboxes', - '#options' => $languages, + '#options' => $language_list, '#title' => t('Choose google translate languages?'), '#default_value' => theme_get_setting('languages', 'mass_theme'), ]; diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index b8b9c27eaa..5a34716064 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -20,7 +20,7 @@ #} {# This will need to come from theme settings. #} {% -set languageList = availableLanguages|sort +set languageList = availableLanguages %} {% From a8f767138c4401523754be807394c8ea416d558c Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Thu, 2 Apr 2026 11:25:45 -0400 Subject: [PATCH 10/23] Updated from mayflower, fixed language list --- composer.lock | 10 +++++----- docroot/themes/custom/mass_theme/mass_theme.theme | 7 ++++--- .../templates/navigation/menu--utility.html.twig | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index 5a1c02d544..bffc1043e5 100644 --- a/composer.lock +++ b/composer.lock @@ -13636,12 +13636,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "baa555016739f23eab205f6a756a892de3f7e41b" + "reference": "befd4f0e47083af9b9a759171d29228d08da20a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/baa555016739f23eab205f6a756a892de3f7e41b", - "reference": "baa555016739f23eab205f6a756a892de3f7e41b", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/befd4f0e47083af9b9a759171d29228d08da20a7", + "reference": "befd4f0e47083af9b9a759171d29228d08da20a7", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-23T19:44:28+00:00" + "time": "2026-04-02T15:07:05+00:00" }, { "name": "masterminds/html5", @@ -25728,5 +25728,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index b6186c7701..96fb7a712e 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -3893,12 +3893,13 @@ function mass_theme_preprocess_menu(&$variables) { if (array_key_exists('menu_name', $variables) && $variables['menu_name'] == 'utility') { // Get Theme settings languages if available. if (theme_get_setting('languages', 'mass_theme')) { - $variables['availableLanguages'] = array_map(static function (array $language) { + $variables['availableLanguages'] = []; + foreach (mass_theme_googletranslate_options_languages() as $language_code => $language) { $english = $language['english']; $native = $language['native'] ?? $english; - return $english === $native ? $english : $english . ' - ' . $native; - }, mass_theme_googletranslate_options_languages()); + $variables['availableLanguages'][$language_code] = $english === $native ? $english : $english . ' - ' . $native; + } $variables['languages'] = implode(',', array_filter(theme_get_setting('languages', 'mass_theme'))); } foreach ($variables['items'] as &$item) { diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index 5a34716064..1e59259a8a 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -36,7 +36,7 @@ set utilityNav = { {% set modal = { icon: 'translate', - type: 'info', + status: 'info', title: 'Select language'|t, buttonText: 'Language'|t } From 23ec54176e3974d288fa9a8678b5c4500e4145e3 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Thu, 2 Apr 2026 11:37:26 -0400 Subject: [PATCH 11/23] language list cleanup --- docroot/themes/custom/mass_theme/mass_theme.theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index 96fb7a712e..b7d348ad84 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -3892,7 +3892,7 @@ function mass_theme_preprocess_menu(&$variables) { // Use this formatting for Utility nav. if (array_key_exists('menu_name', $variables) && $variables['menu_name'] == 'utility') { // Get Theme settings languages if available. - if (theme_get_setting('languages', 'mass_theme')) { + if ($selected_languages = theme_get_setting('languages', 'mass_theme')) { $variables['availableLanguages'] = []; foreach (mass_theme_googletranslate_options_languages() as $language_code => $language) { $english = $language['english']; @@ -3900,7 +3900,7 @@ function mass_theme_preprocess_menu(&$variables) { $variables['availableLanguages'][$language_code] = $english === $native ? $english : $english . ' - ' . $native; } - $variables['languages'] = implode(',', array_filter(theme_get_setting('languages', 'mass_theme'))); + $variables['languages'] = implode(',', array_filter($selected_languages)); } foreach ($variables['items'] as &$item) { if ($item['url']->isRouted()) { From 1b16cf041854e24e1aad048076c770372280fba8 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 3 Apr 2026 09:47:00 -0400 Subject: [PATCH 12/23] Added disclaimer translations --- .../themes/custom/mass_theme/mass_theme.theme | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index b7d348ad84..f2d2ccf9d9 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -6661,49 +6661,49 @@ function mass_theme_preprocess_paragraph__icon_links(&$variables) { */ function mass_theme_googletranslate_options_languages() { $language_codes = [ - 'en' => ['english' => 'English', 'native' => 'English'], - 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans'], - 'sq' => ['english' => 'Albanian', 'native' => 'Shqip'], - 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ'], - 'ar' => ['english' => 'Arabic', 'native' => 'العربية'], - 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն'], - 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文'], - 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文'], - 'tl' => ['english' => 'Filipino', 'native' => 'Filipino'], - 'fr' => ['english' => 'French', 'native' => 'Français'], - 'de' => ['english' => 'German', 'native' => 'Deutsch'], - 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά'], - 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી'], - 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen'], - 'iw' => ['english' => 'Hebrew', 'native' => 'עברית'], - 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी'], - 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob'], - 'it' => ['english' => 'Italian', 'native' => 'Italiano'], - 'ja' => ['english' => 'Japanese', 'native' => '日本語'], - 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ'], - 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda'], - 'ko' => ['english' => 'Korean', 'native' => '한국어'], - 'lo' => ['english' => 'Lao', 'native' => 'ລາວ'], - 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം'], - 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ'], - 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली'], - 'ps' => ['english' => 'Pashto', 'native' => 'پښتو'], - 'fa' => ['english' => 'Persian', 'native' => 'فارسی'], - 'pl' => ['english' => 'Polish', 'native' => 'Polski'], - 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português'], - 'ro' => ['english' => 'Romanian', 'native' => 'Română'], - 'ru' => ['english' => 'Russian', 'native' => 'Русский'], - 'so' => ['english' => 'Somali', 'native' => 'Soomaali'], - 'es' => ['english' => 'Spanish', 'native' => 'Español'], - 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili'], - 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்'], - 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు'], - 'th' => ['english' => 'Thai', 'native' => 'ไทย'], - 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ'], - 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe'], - 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська'], - 'ur' => ['english' => 'Urdu', 'native' => 'اردو'], - 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt'], + 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.'], + 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.'], + 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.'], + 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።'], + 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.'], + 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։'], + 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。'], + 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。'], + 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.'], + 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.'], + 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.'], + 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.'], + 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.'], + 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.'], + 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.'], + 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।'], + 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.'], + 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.'], + 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。'], + 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។'], + 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.'], + 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.'], + 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.'], + 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.'], + 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။'], + 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।'], + 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.'], + 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.'], + 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.'], + 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.'], + 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.'], + 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.'], + 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.'], + 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.'], + 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.'], + 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.'], + 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.'], + 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง'], + 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።'], + 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.'], + 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.'], + 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔'], + 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.'], ]; return $language_codes; } From cbd0407d35a809aa301b97376457e8b675d15f06 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 3 Apr 2026 13:24:10 -0400 Subject: [PATCH 13/23] Added translation JS for select language, disclaimer, translate button, and show original --- .../mass_theme/mass_theme.libraries.yml | 6 ++ .../themes/custom/mass_theme/mass_theme.theme | 97 ++++++++++--------- .../overrides/js/google-translate-modal.js | 55 +++++++++++ 3 files changed, 113 insertions(+), 45 deletions(-) create mode 100644 docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js diff --git a/docroot/themes/custom/mass_theme/mass_theme.libraries.yml b/docroot/themes/custom/mass_theme/mass_theme.libraries.yml index 48af911ed9..163c95fb64 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.libraries.yml +++ b/docroot/themes/custom/mass_theme/mass_theme.libraries.yml @@ -30,11 +30,14 @@ global-styling: js: overrides/js/fixed-feedback-button.js: {} overrides/js/device.js: {} + overrides/js/google-translate-modal.js: {} overrides/js/table.js: {} dependencies: - mayflower/global - core/drupal + - core/drupalSettings + - core/once global-styling-lp: @@ -69,11 +72,14 @@ global-styling-lp: js: overrides/js/fixed-feedback-button.js: {} overrides/js/device.js: {} + overrides/js/google-translate-modal.js: {} overrides/js/table.js: {} dependencies: - mayflower/layout_paragraphs - core/drupal + - core/drupalSettings + - core/once views-view--image-promos: css: diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index c0eac929d5..5aebb3f9ba 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -3893,14 +3893,21 @@ function mass_theme_preprocess_menu(&$variables) { if (array_key_exists('menu_name', $variables) && $variables['menu_name'] == 'utility') { // Get Theme settings languages if available. if ($selected_languages = theme_get_setting('languages', 'mass_theme')) { + $selected_languages = array_filter($selected_languages); + $google_translate_languages = array_intersect_key( + mass_theme_googletranslate_options_languages(), + array_flip($selected_languages) + ); + $variables['availableLanguages'] = []; - foreach (mass_theme_googletranslate_options_languages() as $language_code => $language) { + foreach ($google_translate_languages as $language_code => $language) { $english = $language['english']; $native = $language['native'] ?? $english; $variables['availableLanguages'][$language_code] = $english === $native ? $english : $english . ' - ' . $native; } - $variables['languages'] = implode(',', array_filter($selected_languages)); + $variables['languages'] = implode(',', $selected_languages); + $variables['#attached']['drupalSettings']['massTheme']['googleTranslateLanguages'] = $google_translate_languages; } foreach ($variables['items'] as &$item) { if ($item['url']->isRouted()) { @@ -6661,49 +6668,49 @@ function mass_theme_preprocess_paragraph__icon_links(&$variables) { */ function mass_theme_googletranslate_options_languages() { $language_codes = [ - 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.'], - 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.'], - 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.'], - 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።'], - 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.'], - 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։'], - 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。'], - 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。'], - 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.'], - 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.'], - 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.'], - 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.'], - 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.'], - 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.'], - 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.'], - 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।'], - 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.'], - 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.'], - 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。'], - 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។'], - 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.'], - 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.'], - 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.'], - 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.'], - 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။'], - 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।'], - 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.'], - 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.'], - 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.'], - 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.'], - 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.'], - 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.'], - 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.'], - 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.'], - 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.'], - 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.'], - 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.'], - 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง'], - 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።'], - 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.'], - 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.'], - 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔'], - 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.'], + 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.', 'translate_button' => 'Translate', 'revert_button' => 'Show original', 'select_language' => 'Select language'], + 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.', 'translate_button' => 'Vertaal', 'revert_button' => 'Wys oorspronklike', 'select_language' => 'Kies taal'], + 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.', 'translate_button' => 'Përkthe', 'revert_button' => 'Shfaq origjinalin', 'select_language' => 'Zgjidh gjuhën'], + 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።', 'translate_button' => 'ተርጉም', 'revert_button' => 'ዋናውን አሳይ', 'select_language' => 'ቋንቋ ይምረጡ'], + 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.', 'translate_button' => 'ترجم', 'revert_button' => 'إظهار النص الأصلي', 'select_language' => 'اختر اللغة'], + 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։', 'translate_button' => 'Թարգմանել', 'revert_button' => 'Ցույց տալ բնօրինակը', 'select_language' => 'Ընտրել լեզուն'], + 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。', 'translate_button' => '翻译', 'revert_button' => '显示原文', 'select_language' => '选择语言'], + 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。', 'translate_button' => '翻譯', 'revert_button' => '顯示原文', 'select_language' => '選擇語言'], + 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.', 'translate_button' => 'Isalin', 'revert_button' => 'Ipakita ang orihinal', 'select_language' => 'Pumili ng wika'], + 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.', 'translate_button' => 'Traduire', 'revert_button' => 'Afficher l’original', 'select_language' => 'Choisir la langue'], + 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.', 'translate_button' => 'Übersetzen', 'revert_button' => 'Original anzeigen', 'select_language' => 'Sprache auswählen'], + 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.', 'translate_button' => 'Μετάφραση', 'revert_button' => 'Εμφάνιση πρωτοτύπου', 'select_language' => 'Επιλέξτε γλώσσα'], + 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.', 'translate_button' => 'અનુવાદ કરો', 'revert_button' => 'મૂળ બતાવો', 'select_language' => 'ભાષા પસંદ કરો'], + 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.', 'translate_button' => 'Tradui', 'revert_button' => 'Montre orijinal la', 'select_language' => 'Chwazi lang lan'], + 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.', 'translate_button' => 'תרגם', 'revert_button' => 'הצג מקור', 'select_language' => 'בחר שפה'], + 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।', 'translate_button' => 'अनुवाद करें', 'revert_button' => 'मूल दिखाएं', 'select_language' => 'भाषा चुनें'], + 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.', 'translate_button' => 'Txhais', 'revert_button' => 'Qhia qhov qub', 'select_language' => 'Xaiv lus'], + 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.', 'translate_button' => 'Traduci', 'revert_button' => 'Mostra originale', 'select_language' => 'Seleziona lingua'], + 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。', 'translate_button' => '翻訳', 'revert_button' => '原文を表示', 'select_language' => '言語を選択'], + 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។', 'translate_button' => 'បកប្រែ', 'revert_button' => 'បង្ហាញអត្ថបទដើម', 'select_language' => 'ជ្រើសរើសភាសា'], + 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.', 'translate_button' => 'Hindura', 'revert_button' => 'Erekana umwimerere', 'select_language' => 'Hitamo ururimi'], + 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.', 'translate_button' => '번역', 'revert_button' => '원문 보기', 'select_language' => '언어 선택'], + 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.', 'translate_button' => 'ແປ', 'revert_button' => 'ສະແດງຕົ້ນສະບັບ', 'select_language' => 'ເລືອກພາສາ'], + 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.', 'translate_button' => 'പരിഭാഷപ്പെടുത്തുക', 'revert_button' => 'മൂലം കാണിക്കുക', 'select_language' => 'ഭാഷ തിരഞ്ഞെടുക്കുക'], + 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။', 'translate_button' => 'ဘာသာပြန်ရန်', 'revert_button' => 'မူရင်းကိုပြပါ', 'select_language' => 'ဘာသာစကား ရွေးပါ'], + 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।', 'translate_button' => 'अनुवाद गर्नुहोस्', 'revert_button' => 'मूल देखाउनुहोस्', 'select_language' => 'भाषा छान्नुहोस्'], + 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.', 'translate_button' => 'ژباړه', 'revert_button' => 'اصلي وښایئ', 'select_language' => 'ژبه وټاکئ'], + 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.', 'translate_button' => 'ترجمه', 'revert_button' => 'نمایش متن اصلی', 'select_language' => 'انتخاب زبان'], + 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.', 'translate_button' => 'Przetłumacz', 'revert_button' => 'Pokaż oryginał', 'select_language' => 'Wybierz język'], + 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.', 'translate_button' => 'Traduzir', 'revert_button' => 'Mostrar original', 'select_language' => 'Selecionar idioma'], + 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.', 'translate_button' => 'Tradu', 'revert_button' => 'Arată originalul', 'select_language' => 'Selectați limba'], + 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.', 'translate_button' => 'Перевести', 'revert_button' => 'Показать оригинал', 'select_language' => 'Выберите язык'], + 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.', 'translate_button' => 'Tarjum', 'revert_button' => 'Muuji asalka', 'select_language' => 'Dooro luqad'], + 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.', 'translate_button' => 'Traducir', 'revert_button' => 'Mostrar original', 'select_language' => 'Seleccionar idioma'], + 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.', 'translate_button' => 'Tafsiri', 'revert_button' => 'Onyesha asili', 'select_language' => 'Chagua lugha'], + 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.', 'translate_button' => 'மொழிபெயர்க்க', 'revert_button' => 'அசலைக் காட்டு', 'select_language' => 'மொழியைத் தேர்ந்தெடுக்கவும்'], + 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.', 'translate_button' => 'అనువదించు', 'revert_button' => 'అసలును చూపు', 'select_language' => 'భాషను ఎంచుకోండి'], + 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง', 'translate_button' => 'แปล', 'revert_button' => 'แสดงต้นฉบับ', 'select_language' => 'เลือกภาษา'], + 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።', 'translate_button' => 'ተርጉም', 'revert_button' => 'መበቆላዊ ኣርእይ', 'select_language' => 'ቋንቋ ምረጽ'], + 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.', 'translate_button' => 'Çevir', 'revert_button' => 'Orijinali göster', 'select_language' => 'Dil seçin'], + 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.', 'translate_button' => 'Перекласти', 'revert_button' => 'Показати оригінал', 'select_language' => 'Виберіть мову'], + 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔', 'translate_button' => 'ترجمہ کریں', 'revert_button' => 'اصل دکھائیں', 'select_language' => 'زبان منتخب کریں'], + 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.', 'translate_button' => 'Dịch', 'revert_button' => 'Hiển thị bản gốc', 'select_language' => 'Chọn ngôn ngữ'], ]; return $language_codes; } diff --git a/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js b/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js new file mode 100644 index 0000000000..e67ad85187 --- /dev/null +++ b/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js @@ -0,0 +1,55 @@ +(function (Drupal, once, drupalSettings) { + 'use strict'; + + function applyTranslations(wrapper, translations, selectedLanguage) { + var fallback = translations.en || {}; + var language = translations[selectedLanguage] || fallback; + var title = wrapper.querySelector('.ma__modal-title'); + var disclaimer = wrapper.querySelector('#ma__translate-help p'); + var translateButton = wrapper.querySelector('#ma__translate-apply'); + var revertButton = wrapper.querySelector('#ma__translate-reset'); + + if (title && language.select_language) { + title.textContent = language.select_language; + title.lang = selectedLanguage; + } + + if (disclaimer && language.disclaimer) { + disclaimer.textContent = language.disclaimer; + disclaimer.lang = selectedLanguage; + } + + if (translateButton && language.translate_button) { + translateButton.textContent = language.translate_button; + translateButton.lang = selectedLanguage; + } + + if (revertButton && language.revert_button) { + revertButton.textContent = language.revert_button; + revertButton.lang = selectedLanguage; + } + } + + Drupal.behaviors.massThemeGoogleTranslateModal = { + attach: function (context) { + var translations = drupalSettings.massTheme && drupalSettings.massTheme.googleTranslateLanguages; + if (!translations) { + return; + } + + once('massThemeGoogleTranslateModal', '[data-utility-nav-modal="translate"]', context).forEach(function (wrapper) { + var select = wrapper.querySelector('.ma__translate-select'); + + if (!select) { + return; + } + + applyTranslations(wrapper, translations, select.value); + + select.addEventListener('change', function (event) { + applyTranslations(wrapper, translations, event.target.value); + }); + }); + } + }; +})(Drupal, once, drupalSettings); From a0906c371eab62fa8206e906e540e69afa723bd5 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 3 Apr 2026 14:14:17 -0400 Subject: [PATCH 14/23] Cleaned up preprocess of language selection --- docroot/themes/custom/mass_theme/mass_theme.theme | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index 5aebb3f9ba..0134cb1430 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -3892,12 +3892,17 @@ function mass_theme_preprocess_menu(&$variables) { // Use this formatting for Utility nav. if (array_key_exists('menu_name', $variables) && $variables['menu_name'] == 'utility') { // Get Theme settings languages if available. - if ($selected_languages = theme_get_setting('languages', 'mass_theme')) { + $selected_languages = \Drupal::service('Drupal\Core\Extension\ThemeSettingsProvider')->getSetting('languages', 'mass_theme'); + if ($selected_languages) { $selected_languages = array_filter($selected_languages); - $google_translate_languages = array_intersect_key( - mass_theme_googletranslate_options_languages(), - array_flip($selected_languages) - ); + $google_translate_languages = []; + $available_languages = mass_theme_googletranslate_options_languages(); + + foreach ($selected_languages as $language) { + if (array_key_exists($language, $available_languages)) { + $google_translate_languages[$language] = $available_languages[$language]; + } + } $variables['availableLanguages'] = []; foreach ($google_translate_languages as $language_code => $language) { From eebcf07b1634cdff19dec0001579802b664d31dd Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 3 Apr 2026 14:46:30 -0400 Subject: [PATCH 15/23] Allow modal string translations to be overridden --- .../themes/custom/mass_theme/mass_theme.theme | 178 +++++++++++++----- .../overrides/js/google-translate-modal.js | 16 +- 2 files changed, 143 insertions(+), 51 deletions(-) diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index 0134cb1430..6188134e2c 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -6672,59 +6672,80 @@ function mass_theme_preprocess_paragraph__icon_links(&$variables) { * Language config for Google translate. */ function mass_theme_googletranslate_options_languages() { + $default_language_codes = mass_theme_googletranslate_default_languages(); + return \Drupal::service('Drupal\Core\Extension\ThemeSettingsProvider')->getSetting('googletranslate_languages', 'mass_theme') ?: $default_language_codes; +} + +/** + * Gets the default Google Translate language configuration. + */ +function mass_theme_googletranslate_default_languages() { $language_codes = [ - 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.', 'translate_button' => 'Translate', 'revert_button' => 'Show original', 'select_language' => 'Select language'], - 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.', 'translate_button' => 'Vertaal', 'revert_button' => 'Wys oorspronklike', 'select_language' => 'Kies taal'], - 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.', 'translate_button' => 'Përkthe', 'revert_button' => 'Shfaq origjinalin', 'select_language' => 'Zgjidh gjuhën'], - 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።', 'translate_button' => 'ተርጉም', 'revert_button' => 'ዋናውን አሳይ', 'select_language' => 'ቋንቋ ይምረጡ'], - 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.', 'translate_button' => 'ترجم', 'revert_button' => 'إظهار النص الأصلي', 'select_language' => 'اختر اللغة'], - 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։', 'translate_button' => 'Թարգմանել', 'revert_button' => 'Ցույց տալ բնօրինակը', 'select_language' => 'Ընտրել լեզուն'], - 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。', 'translate_button' => '翻译', 'revert_button' => '显示原文', 'select_language' => '选择语言'], - 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。', 'translate_button' => '翻譯', 'revert_button' => '顯示原文', 'select_language' => '選擇語言'], - 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.', 'translate_button' => 'Isalin', 'revert_button' => 'Ipakita ang orihinal', 'select_language' => 'Pumili ng wika'], - 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.', 'translate_button' => 'Traduire', 'revert_button' => 'Afficher l’original', 'select_language' => 'Choisir la langue'], - 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.', 'translate_button' => 'Übersetzen', 'revert_button' => 'Original anzeigen', 'select_language' => 'Sprache auswählen'], - 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.', 'translate_button' => 'Μετάφραση', 'revert_button' => 'Εμφάνιση πρωτοτύπου', 'select_language' => 'Επιλέξτε γλώσσα'], - 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.', 'translate_button' => 'અનુવાદ કરો', 'revert_button' => 'મૂળ બતાવો', 'select_language' => 'ભાષા પસંદ કરો'], - 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.', 'translate_button' => 'Tradui', 'revert_button' => 'Montre orijinal la', 'select_language' => 'Chwazi lang lan'], - 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.', 'translate_button' => 'תרגם', 'revert_button' => 'הצג מקור', 'select_language' => 'בחר שפה'], - 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।', 'translate_button' => 'अनुवाद करें', 'revert_button' => 'मूल दिखाएं', 'select_language' => 'भाषा चुनें'], - 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.', 'translate_button' => 'Txhais', 'revert_button' => 'Qhia qhov qub', 'select_language' => 'Xaiv lus'], - 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.', 'translate_button' => 'Traduci', 'revert_button' => 'Mostra originale', 'select_language' => 'Seleziona lingua'], - 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。', 'translate_button' => '翻訳', 'revert_button' => '原文を表示', 'select_language' => '言語を選択'], - 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។', 'translate_button' => 'បកប្រែ', 'revert_button' => 'បង្ហាញអត្ថបទដើម', 'select_language' => 'ជ្រើសរើសភាសា'], - 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.', 'translate_button' => 'Hindura', 'revert_button' => 'Erekana umwimerere', 'select_language' => 'Hitamo ururimi'], - 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.', 'translate_button' => '번역', 'revert_button' => '원문 보기', 'select_language' => '언어 선택'], - 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.', 'translate_button' => 'ແປ', 'revert_button' => 'ສະແດງຕົ້ນສະບັບ', 'select_language' => 'ເລືອກພາສາ'], - 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.', 'translate_button' => 'പരിഭാഷപ്പെടുത്തുക', 'revert_button' => 'മൂലം കാണിക്കുക', 'select_language' => 'ഭാഷ തിരഞ്ഞെടുക്കുക'], - 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။', 'translate_button' => 'ဘာသာပြန်ရန်', 'revert_button' => 'မူရင်းကိုပြပါ', 'select_language' => 'ဘာသာစကား ရွေးပါ'], - 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।', 'translate_button' => 'अनुवाद गर्नुहोस्', 'revert_button' => 'मूल देखाउनुहोस्', 'select_language' => 'भाषा छान्नुहोस्'], - 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.', 'translate_button' => 'ژباړه', 'revert_button' => 'اصلي وښایئ', 'select_language' => 'ژبه وټاکئ'], - 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.', 'translate_button' => 'ترجمه', 'revert_button' => 'نمایش متن اصلی', 'select_language' => 'انتخاب زبان'], - 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.', 'translate_button' => 'Przetłumacz', 'revert_button' => 'Pokaż oryginał', 'select_language' => 'Wybierz język'], - 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.', 'translate_button' => 'Traduzir', 'revert_button' => 'Mostrar original', 'select_language' => 'Selecionar idioma'], - 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.', 'translate_button' => 'Tradu', 'revert_button' => 'Arată originalul', 'select_language' => 'Selectați limba'], - 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.', 'translate_button' => 'Перевести', 'revert_button' => 'Показать оригинал', 'select_language' => 'Выберите язык'], - 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.', 'translate_button' => 'Tarjum', 'revert_button' => 'Muuji asalka', 'select_language' => 'Dooro luqad'], - 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.', 'translate_button' => 'Traducir', 'revert_button' => 'Mostrar original', 'select_language' => 'Seleccionar idioma'], - 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.', 'translate_button' => 'Tafsiri', 'revert_button' => 'Onyesha asili', 'select_language' => 'Chagua lugha'], - 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.', 'translate_button' => 'மொழிபெயர்க்க', 'revert_button' => 'அசலைக் காட்டு', 'select_language' => 'மொழியைத் தேர்ந்தெடுக்கவும்'], - 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.', 'translate_button' => 'అనువదించు', 'revert_button' => 'అసలును చూపు', 'select_language' => 'భాషను ఎంచుకోండి'], - 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง', 'translate_button' => 'แปล', 'revert_button' => 'แสดงต้นฉบับ', 'select_language' => 'เลือกภาษา'], - 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።', 'translate_button' => 'ተርጉም', 'revert_button' => 'መበቆላዊ ኣርእይ', 'select_language' => 'ቋንቋ ምረጽ'], - 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.', 'translate_button' => 'Çevir', 'revert_button' => 'Orijinali göster', 'select_language' => 'Dil seçin'], - 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.', 'translate_button' => 'Перекласти', 'revert_button' => 'Показати оригінал', 'select_language' => 'Виберіть мову'], - 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔', 'translate_button' => 'ترجمہ کریں', 'revert_button' => 'اصل دکھائیں', 'select_language' => 'زبان منتخب کریں'], - 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.', 'translate_button' => 'Dịch', 'revert_button' => 'Hiển thị bản gốc', 'select_language' => 'Chọn ngôn ngữ'], + 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.', 'translate_action' => 'Translate', 'show_original_action' => 'Show original', 'select_language' => 'Select language'], + 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.', 'translate_action' => 'Vertaal', 'show_original_action' => 'Wys oorspronklike', 'select_language' => 'Kies taal'], + 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.', 'translate_action' => 'Përkthe', 'show_original_action' => 'Shfaq origjinalin', 'select_language' => 'Zgjidh gjuhën'], + 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።', 'translate_action' => 'ተርጉም', 'show_original_action' => 'ዋናውን አሳይ', 'select_language' => 'ቋንቋ ይምረጡ'], + 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.', 'translate_action' => 'ترجم', 'show_original_action' => 'إظهار النص الأصلي', 'select_language' => 'اختر اللغة'], + 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։', 'translate_action' => 'Թարգմանել', 'show_original_action' => 'Ցույց տալ բնօրինակը', 'select_language' => 'Ընտրել լեզուն'], + 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。', 'translate_action' => '翻译', 'show_original_action' => '显示原文', 'select_language' => '选择语言'], + 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。', 'translate_action' => '翻譯', 'show_original_action' => '顯示原文', 'select_language' => '選擇語言'], + 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.', 'translate_action' => 'Isalin', 'show_original_action' => 'Ipakita ang orihinal', 'select_language' => 'Pumili ng wika'], + 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.', 'translate_action' => 'Traduire', 'show_original_action' => 'Afficher l’original', 'select_language' => 'Choisir la langue'], + 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.', 'translate_action' => 'Übersetzen', 'show_original_action' => 'Original anzeigen', 'select_language' => 'Sprache auswählen'], + 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.', 'translate_action' => 'Μετάφραση', 'show_original_action' => 'Εμφάνιση πρωτοτύπου', 'select_language' => 'Επιλέξτε γλώσσα'], + 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.', 'translate_action' => 'અનુવાદ કરો', 'show_original_action' => 'મૂળ બતાવો', 'select_language' => 'ભાષા પસંદ કરો'], + 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.', 'translate_action' => 'Tradui', 'show_original_action' => 'Montre orijinal la', 'select_language' => 'Chwazi lang lan'], + 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.', 'translate_action' => 'תרגם', 'show_original_action' => 'הצג מקור', 'select_language' => 'בחר שפה'], + 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।', 'translate_action' => 'अनुवाद करें', 'show_original_action' => 'मूल दिखाएं', 'select_language' => 'भाषा चुनें'], + 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.', 'translate_action' => 'Txhais', 'show_original_action' => 'Qhia qhov qub', 'select_language' => 'Xaiv lus'], + 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.', 'translate_action' => 'Traduci', 'show_original_action' => 'Mostra originale', 'select_language' => 'Seleziona lingua'], + 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。', 'translate_action' => '翻訳', 'show_original_action' => '原文を表示', 'select_language' => '言語を選択'], + 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។', 'translate_action' => 'បកប្រែ', 'show_original_action' => 'បង្ហាញអត្ថបទដើម', 'select_language' => 'ជ្រើសរើសភាសា'], + 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.', 'translate_action' => 'Hindura', 'show_original_action' => 'Erekana umwimerere', 'select_language' => 'Hitamo ururimi'], + 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.', 'translate_action' => '번역', 'show_original_action' => '원문 보기', 'select_language' => '언어 선택'], + 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.', 'translate_action' => 'ແປ', 'show_original_action' => 'ສະແດງຕົ້ນສະບັບ', 'select_language' => 'ເລືອກພາສາ'], + 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.', 'translate_action' => 'പരിഭാഷപ്പെടുത്തുക', 'show_original_action' => 'മൂലം കാണിക്കുക', 'select_language' => 'ഭാഷ തിരഞ്ഞെടുക്കുക'], + 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။', 'translate_action' => 'ဘာသာပြန်ရန်', 'show_original_action' => 'မူရင်းကိုပြပါ', 'select_language' => 'ဘာသာစကား ရွေးပါ'], + 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।', 'translate_action' => 'अनुवाद गर्नुहोस्', 'show_original_action' => 'मूल देखाउनुहोस्', 'select_language' => 'भाषा छान्नुहोस्'], + 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.', 'translate_action' => 'ژباړه', 'show_original_action' => 'اصلي وښایئ', 'select_language' => 'ژبه وټاکئ'], + 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.', 'translate_action' => 'ترجمه', 'show_original_action' => 'نمایش متن اصلی', 'select_language' => 'انتخاب زبان'], + 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.', 'translate_action' => 'Przetłumacz', 'show_original_action' => 'Pokaż oryginał', 'select_language' => 'Wybierz język'], + 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.', 'translate_action' => 'Traduzir', 'show_original_action' => 'Mostrar original', 'select_language' => 'Selecionar idioma'], + 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.', 'translate_action' => 'Tradu', 'show_original_action' => 'Arată originalul', 'select_language' => 'Selectați limba'], + 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.', 'translate_action' => 'Перевести', 'show_original_action' => 'Показать оригинал', 'select_language' => 'Выберите язык'], + 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.', 'translate_action' => 'Tarjum', 'show_original_action' => 'Muuji asalka', 'select_language' => 'Dooro luqad'], + 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.', 'translate_action' => 'Traducir', 'show_original_action' => 'Mostrar original', 'select_language' => 'Seleccionar idioma'], + 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.', 'translate_action' => 'Tafsiri', 'show_original_action' => 'Onyesha asili', 'select_language' => 'Chagua lugha'], + 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.', 'translate_action' => 'மொழிபெயர்க்க', 'show_original_action' => 'அசலைக் காட்டு', 'select_language' => 'மொழியைத் தேர்ந்தெடுக்கவும்'], + 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.', 'translate_action' => 'అనువదించు', 'show_original_action' => 'అసలును చూపు', 'select_language' => 'భాషను ఎంచుకోండి'], + 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง', 'translate_action' => 'แปล', 'show_original_action' => 'แสดงต้นฉบับ', 'select_language' => 'เลือกภาษา'], + 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።', 'translate_action' => 'ተርጉም', 'show_original_action' => 'መበቆላዊ ኣርእይ', 'select_language' => 'ቋንቋ ምረጽ'], + 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.', 'translate_action' => 'Çevir', 'show_original_action' => 'Orijinali göster', 'select_language' => 'Dil seçin'], + 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.', 'translate_action' => 'Перекласти', 'show_original_action' => 'Показати оригінал', 'select_language' => 'Виберіть мову'], + 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔', 'translate_action' => 'ترجمہ کریں', 'show_original_action' => 'اصل دکھائیں', 'select_language' => 'زبان منتخب کریں'], + 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.', 'translate_action' => 'Dịch', 'show_original_action' => 'Hiển thị bản gốc', 'select_language' => 'Chọn ngôn ngữ'], ]; return $language_codes; } +/** + * Gets the editable Google Translate override field labels. + */ +function mass_theme_googletranslate_override_fields() { + return [ + 'select_language' => t('Select language'), + 'translate_action' => t('Translate'), + 'show_original_action' => t('Show original'), + 'disclaimer' => t('Disclaimer'), + ]; +} + /** * Add languages to theme settings. */ function mass_theme_form_system_theme_settings_alter(&$form, $form_state) { $language_list = []; + $default_languages = mass_theme_googletranslate_default_languages(); $languages = mass_theme_googletranslate_options_languages(); foreach ($languages as $language_code => $language) { $language_list[$language_code] = $language['english']; @@ -6742,6 +6763,77 @@ function mass_theme_form_system_theme_settings_alter(&$form, $form_state) { '#title' => t('Choose google translate languages?'), '#default_value' => theme_get_setting('languages', 'mass_theme'), ]; + + $form['mass_theme_settings']['googletranslate_languages'] = [ + '#type' => 'details', + '#title' => t('Translated strings'), + '#description' => t('Update the text used for the selected Google Translate languages. Clearing a field resets it to the default value.'), + '#open' => FALSE, + '#tree' => TRUE, + ]; + + $override_fields = mass_theme_googletranslate_override_fields(); + foreach ($languages as $language_code => $language) { + $form['mass_theme_settings']['googletranslate_languages'][$language_code] = [ + '#type' => 'details', + '#title' => t('@language (@code)', [ + '@language' => $language['english'], + '@code' => $language_code, + ]), + '#open' => FALSE, + '#states' => [ + 'visible' => [ + ':input[name="languages[' . $language_code . ']"]' => ['checked' => TRUE], + ], + ], + ]; + + foreach ($override_fields as $field_name => $field_title) { + $field = [ + '#type' => $field_name === 'disclaimer' ? 'textarea' : 'textfield', + '#title' => $field_title, + '#default_value' => $language[$field_name], + '#placeholder' => $default_languages[$language_code][$field_name], + ]; + + if ($field_name === 'disclaimer') { + $field['#rows'] = 3; + } + + $form['mass_theme_settings']['googletranslate_languages'][$language_code][$field_name] = $field; + } + } + + $form['#submit'][] = 'mass_theme_googletranslate_theme_settings_submit'; +} + +/** + * Merges Google Translate theme setting edits into the canonical language map. + */ +function mass_theme_googletranslate_theme_settings_submit($form, $form_state) { + $submitted_languages = $form_state->getValue('googletranslate_languages') ?: []; + $languages = mass_theme_googletranslate_options_languages(); + $default_languages = mass_theme_googletranslate_default_languages(); + $editable_fields = array_keys(mass_theme_googletranslate_override_fields()); + + foreach ($submitted_languages as $language_code => $updates) { + if (!isset($languages[$language_code]) || !is_array($updates)) { + continue; + } + + foreach ($editable_fields as $field_name) { + if (!array_key_exists($field_name, $updates)) { + continue; + } + + $value = $updates[$field_name]; + $languages[$language_code][$field_name] = $value === '' || $value === NULL + ? $default_languages[$language_code][$field_name] + : $value; + } + } + + $form_state->setValue('googletranslate_languages', $languages); } /** diff --git a/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js b/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js index e67ad85187..ffb71affa8 100644 --- a/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js +++ b/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js @@ -6,8 +6,8 @@ var language = translations[selectedLanguage] || fallback; var title = wrapper.querySelector('.ma__modal-title'); var disclaimer = wrapper.querySelector('#ma__translate-help p'); - var translateButton = wrapper.querySelector('#ma__translate-apply'); - var revertButton = wrapper.querySelector('#ma__translate-reset'); + var translateAction = wrapper.querySelector('#ma__translate-apply'); + var showOriginalAction = wrapper.querySelector('#ma__translate-reset'); if (title && language.select_language) { title.textContent = language.select_language; @@ -19,14 +19,14 @@ disclaimer.lang = selectedLanguage; } - if (translateButton && language.translate_button) { - translateButton.textContent = language.translate_button; - translateButton.lang = selectedLanguage; + if (translateAction && language.translate_action) { + translateAction.textContent = language.translate_action; + translateAction.lang = selectedLanguage; } - if (revertButton && language.revert_button) { - revertButton.textContent = language.revert_button; - revertButton.lang = selectedLanguage; + if (showOriginalAction && language.show_original_action) { + showOriginalAction.textContent = language.show_original_action; + showOriginalAction.lang = selectedLanguage; } } From bc2a61cc49416d299e27c86bda8e934276088d14 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Fri, 3 Apr 2026 14:50:50 -0400 Subject: [PATCH 16/23] Fixed include on utility template --- .../mass_theme/templates/navigation/menu--utility.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index ba0fca3395..3fdca79536 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -42,4 +42,4 @@ set modal = { } %} -{% include ('@organisms/by-template/utility-nav.twig') %} +{{ include('@organisms/by-template/utility-nav.twig') }} From f707f8feb46abff52f040b743e7974656f44b979 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Mon, 6 Apr 2026 08:58:13 -0400 Subject: [PATCH 17/23] Added back sort for language list, removed select_language as translatable --- .../themes/custom/mass_theme/mass_theme.theme | 87 +++++++++---------- .../overrides/js/google-translate-modal.js | 6 -- .../navigation/menu--utility.html.twig | 2 +- 3 files changed, 44 insertions(+), 51 deletions(-) diff --git a/docroot/themes/custom/mass_theme/mass_theme.theme b/docroot/themes/custom/mass_theme/mass_theme.theme index 6188134e2c..7a840e8623 100644 --- a/docroot/themes/custom/mass_theme/mass_theme.theme +++ b/docroot/themes/custom/mass_theme/mass_theme.theme @@ -6681,49 +6681,49 @@ function mass_theme_googletranslate_options_languages() { */ function mass_theme_googletranslate_default_languages() { $language_codes = [ - 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.', 'translate_action' => 'Translate', 'show_original_action' => 'Show original', 'select_language' => 'Select language'], - 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.', 'translate_action' => 'Vertaal', 'show_original_action' => 'Wys oorspronklike', 'select_language' => 'Kies taal'], - 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.', 'translate_action' => 'Përkthe', 'show_original_action' => 'Shfaq origjinalin', 'select_language' => 'Zgjidh gjuhën'], - 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።', 'translate_action' => 'ተርጉም', 'show_original_action' => 'ዋናውን አሳይ', 'select_language' => 'ቋንቋ ይምረጡ'], - 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.', 'translate_action' => 'ترجم', 'show_original_action' => 'إظهار النص الأصلي', 'select_language' => 'اختر اللغة'], - 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։', 'translate_action' => 'Թարգմանել', 'show_original_action' => 'Ցույց տալ բնօրինակը', 'select_language' => 'Ընտրել լեզուն'], - 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。', 'translate_action' => '翻译', 'show_original_action' => '显示原文', 'select_language' => '选择语言'], - 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。', 'translate_action' => '翻譯', 'show_original_action' => '顯示原文', 'select_language' => '選擇語言'], - 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.', 'translate_action' => 'Isalin', 'show_original_action' => 'Ipakita ang orihinal', 'select_language' => 'Pumili ng wika'], - 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.', 'translate_action' => 'Traduire', 'show_original_action' => 'Afficher l’original', 'select_language' => 'Choisir la langue'], - 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.', 'translate_action' => 'Übersetzen', 'show_original_action' => 'Original anzeigen', 'select_language' => 'Sprache auswählen'], - 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.', 'translate_action' => 'Μετάφραση', 'show_original_action' => 'Εμφάνιση πρωτοτύπου', 'select_language' => 'Επιλέξτε γλώσσα'], - 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.', 'translate_action' => 'અનુવાદ કરો', 'show_original_action' => 'મૂળ બતાવો', 'select_language' => 'ભાષા પસંદ કરો'], - 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.', 'translate_action' => 'Tradui', 'show_original_action' => 'Montre orijinal la', 'select_language' => 'Chwazi lang lan'], - 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.', 'translate_action' => 'תרגם', 'show_original_action' => 'הצג מקור', 'select_language' => 'בחר שפה'], - 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।', 'translate_action' => 'अनुवाद करें', 'show_original_action' => 'मूल दिखाएं', 'select_language' => 'भाषा चुनें'], - 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.', 'translate_action' => 'Txhais', 'show_original_action' => 'Qhia qhov qub', 'select_language' => 'Xaiv lus'], - 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.', 'translate_action' => 'Traduci', 'show_original_action' => 'Mostra originale', 'select_language' => 'Seleziona lingua'], - 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。', 'translate_action' => '翻訳', 'show_original_action' => '原文を表示', 'select_language' => '言語を選択'], - 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។', 'translate_action' => 'បកប្រែ', 'show_original_action' => 'បង្ហាញអត្ថបទដើម', 'select_language' => 'ជ្រើសរើសភាសា'], - 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.', 'translate_action' => 'Hindura', 'show_original_action' => 'Erekana umwimerere', 'select_language' => 'Hitamo ururimi'], - 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.', 'translate_action' => '번역', 'show_original_action' => '원문 보기', 'select_language' => '언어 선택'], - 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.', 'translate_action' => 'ແປ', 'show_original_action' => 'ສະແດງຕົ້ນສະບັບ', 'select_language' => 'ເລືອກພາສາ'], - 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.', 'translate_action' => 'പരിഭാഷപ്പെടുത്തുക', 'show_original_action' => 'മൂലം കാണിക്കുക', 'select_language' => 'ഭാഷ തിരഞ്ഞെടുക്കുക'], - 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။', 'translate_action' => 'ဘာသာပြန်ရန်', 'show_original_action' => 'မူရင်းကိုပြပါ', 'select_language' => 'ဘာသာစကား ရွေးပါ'], - 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।', 'translate_action' => 'अनुवाद गर्नुहोस्', 'show_original_action' => 'मूल देखाउनुहोस्', 'select_language' => 'भाषा छान्नुहोस्'], - 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.', 'translate_action' => 'ژباړه', 'show_original_action' => 'اصلي وښایئ', 'select_language' => 'ژبه وټاکئ'], - 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.', 'translate_action' => 'ترجمه', 'show_original_action' => 'نمایش متن اصلی', 'select_language' => 'انتخاب زبان'], - 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.', 'translate_action' => 'Przetłumacz', 'show_original_action' => 'Pokaż oryginał', 'select_language' => 'Wybierz język'], - 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.', 'translate_action' => 'Traduzir', 'show_original_action' => 'Mostrar original', 'select_language' => 'Selecionar idioma'], - 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.', 'translate_action' => 'Tradu', 'show_original_action' => 'Arată originalul', 'select_language' => 'Selectați limba'], - 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.', 'translate_action' => 'Перевести', 'show_original_action' => 'Показать оригинал', 'select_language' => 'Выберите язык'], - 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.', 'translate_action' => 'Tarjum', 'show_original_action' => 'Muuji asalka', 'select_language' => 'Dooro luqad'], - 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.', 'translate_action' => 'Traducir', 'show_original_action' => 'Mostrar original', 'select_language' => 'Seleccionar idioma'], - 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.', 'translate_action' => 'Tafsiri', 'show_original_action' => 'Onyesha asili', 'select_language' => 'Chagua lugha'], - 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.', 'translate_action' => 'மொழிபெயர்க்க', 'show_original_action' => 'அசலைக் காட்டு', 'select_language' => 'மொழியைத் தேர்ந்தெடுக்கவும்'], - 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.', 'translate_action' => 'అనువదించు', 'show_original_action' => 'అసలును చూపు', 'select_language' => 'భాషను ఎంచుకోండి'], - 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง', 'translate_action' => 'แปล', 'show_original_action' => 'แสดงต้นฉบับ', 'select_language' => 'เลือกภาษา'], - 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።', 'translate_action' => 'ተርጉም', 'show_original_action' => 'መበቆላዊ ኣርእይ', 'select_language' => 'ቋንቋ ምረጽ'], - 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.', 'translate_action' => 'Çevir', 'show_original_action' => 'Orijinali göster', 'select_language' => 'Dil seçin'], - 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.', 'translate_action' => 'Перекласти', 'show_original_action' => 'Показати оригінал', 'select_language' => 'Виберіть мову'], - 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔', 'translate_action' => 'ترجمہ کریں', 'show_original_action' => 'اصل دکھائیں', 'select_language' => 'زبان منتخب کریں'], - 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.', 'translate_action' => 'Dịch', 'show_original_action' => 'Hiển thị bản gốc', 'select_language' => 'Chọn ngôn ngữ'], + 'en' => ['english' => 'English', 'native' => 'English', 'disclaimer' => 'Disclaimer: This feature uses the Google Translate Widget. Due to the limitation of machine translation, some pages or content may not be translated accurately.', 'translate_action' => 'Translate', 'show_original_action' => 'Show original'], + 'af' => ['english' => 'Afrikaans', 'native' => 'Afrikaans', 'disclaimer' => 'Vrywaring: Hierdie funksie gebruik die Google Translate Widget. Weens die beperking van masjienvertaling, kan sommige bladsye of inhoud dalk nie akkuraat vertaal word nie.', 'translate_action' => 'Vertaal', 'show_original_action' => 'Wys oorspronklike'], + 'sq' => ['english' => 'Albanian', 'native' => 'Shqip', 'disclaimer' => 'Mohim përgjegjësie: Kjo veçori përdor Google Translate Widget. Për shkak të kufizimeve të përkthimit automatik, disa faqe ose përmbajtje mund të mos përkthehen saktësisht.', 'translate_action' => 'Përkthe', 'show_original_action' => 'Shfaq origjinalin'], + 'am' => ['english' => 'Amharic', 'native' => 'አማርኛ', 'disclaimer' => 'ማስተባበያ፦ ይህ ባህሪ Google Translate Widget ይጠቀማል። በማሽን ትርጉም ገደቦች ምክንያት፣ አንዳንድ ገጾች ወይም ይዘቶች በትክክል ላይተረጎሙ ይችላሉ።', 'translate_action' => 'ተርጉም', 'show_original_action' => 'ዋናውን አሳይ'], + 'ar' => ['english' => 'Arabic', 'native' => 'العربية', 'disclaimer' => 'إخلاء مسؤولية: تستخدم هذه الميزة أداة Google Translate. نظرًا لقيود الترجمة الآلية، قد لا تتم ترجمة بعض الصفحات أو المحتوى بدقة.', 'translate_action' => 'ترجم', 'show_original_action' => 'إظهار النص الأصلي'], + 'hy' => ['english' => 'Armenian', 'native' => 'Հայերեն', 'disclaimer' => 'Հրաժարում պատասխանատվությունից. Այս հնարավորությունը օգտագործում է Google Translate Widget-ը։ Մեքենայական թարգմանության սահմանափակումների պատճառով որոշ էջեր կամ բովանդակություն կարող են ճշգրիտ չթարգմանվել։', 'translate_action' => 'Թարգմանել', 'show_original_action' => 'Ցույց տալ բնօրինակը'], + 'zh-CN' => ['english' => 'Chinese (Simplified)', 'native' => '简体中文', 'disclaimer' => '免责声明:此功能使用 Google Translate Widget。由于机器翻译的局限性,某些页面或内容可能无法被准确翻译。', 'translate_action' => '翻译', 'show_original_action' => '显示原文'], + 'zh-TW' => ['english' => 'Chinese (Traditional)', 'native' => '繁體中文', 'disclaimer' => '免責聲明:此功能使用 Google Translate Widget。由於機器翻譯的限制,某些頁面或內容可能無法被準確翻譯。', 'translate_action' => '翻譯', 'show_original_action' => '顯示原文'], + 'tl' => ['english' => 'Filipino', 'native' => 'Filipino', 'disclaimer' => 'Paunawa: Ginagamit ng tampok na ito ang Google Translate Widget. Dahil sa limitasyon ng machine translation, maaaring may ilang pahina o nilalaman na hindi maisalin nang tumpak.', 'translate_action' => 'Isalin', 'show_original_action' => 'Ipakita ang orihinal'], + 'fr' => ['english' => 'French', 'native' => 'Français', 'disclaimer' => 'Avertissement : Cette fonctionnalité utilise le widget Google Traduction. En raison des limites de la traduction automatique, certaines pages ou certains contenus peuvent ne pas être traduits avec exactitude.', 'translate_action' => 'Traduire', 'show_original_action' => 'Afficher l’original'], + 'de' => ['english' => 'German', 'native' => 'Deutsch', 'disclaimer' => 'Haftungsausschluss: Diese Funktion verwendet das Google Translate Widget. Aufgrund der Einschränkungen maschineller Übersetzung werden einige Seiten oder Inhalte möglicherweise nicht korrekt übersetzt.', 'translate_action' => 'Übersetzen', 'show_original_action' => 'Original anzeigen'], + 'el' => ['english' => 'Greek', 'native' => 'Ελληνικά', 'disclaimer' => 'Αποποίηση ευθύνης: Αυτή η λειτουργία χρησιμοποιεί το Google Translate Widget. Λόγω των περιορισμών της μηχανικής μετάφρασης, ορισμένες σελίδες ή περιεχόμενο ενδέχεται να μην μεταφραστούν με ακρίβεια.', 'translate_action' => 'Μετάφραση', 'show_original_action' => 'Εμφάνιση πρωτοτύπου'], + 'gu' => ['english' => 'Gujarati', 'native' => 'ગુજરાતી', 'disclaimer' => 'અસ્વીકરણ: આ સુવિધા Google Translate Widget નો ઉપયોગ કરે છે. મશીન અનુવાદની મર્યાદાઓને કારણે, કેટલીક પેજો અથવા સામગ્રીનું અનુવાદ ચોક્કસ રીતે ન થઈ શકે.', 'translate_action' => 'અનુવાદ કરો', 'show_original_action' => 'મૂળ બતાવો'], + 'ht' => ['english' => 'Haitian Creole', 'native' => 'Kreyòl Ayisyen', 'disclaimer' => 'Avètisman: Fonksyon sa a itilize Google Translate Widget. Akòz limit tradiksyon machin, kèk paj oswa kontni ka pa tradui avèk presizyon.', 'translate_action' => 'Tradui', 'show_original_action' => 'Montre orijinal la'], + 'iw' => ['english' => 'Hebrew', 'native' => 'עברית', 'disclaimer' => 'כתב ויתור: תכונה זו משתמשת ב-Google Translate Widget. בשל המגבלות של תרגום מכונה, ייתכן שחלק מהדפים או התוכן לא יתורגמו במדויק.', 'translate_action' => 'תרגם', 'show_original_action' => 'הצג מקור'], + 'hi' => ['english' => 'Hindi', 'native' => 'हिन्दी', 'disclaimer' => 'अस्वीकरण: यह सुविधा Google Translate Widget का उपयोग करती है। मशीन अनुवाद की सीमाओं के कारण, कुछ पृष्ठों या सामग्री का अनुवाद सटीक रूप से नहीं हो सकता है।', 'translate_action' => 'अनुवाद करें', 'show_original_action' => 'मूल दिखाएं'], + 'hmn' => ['english' => 'Hmong', 'native' => 'Hmoob', 'disclaimer' => 'Lus ceeb toom: Qhov no siv Google Translate Widget. Vim muaj kev txwv ntawm kev txhais lus tshuab, qee nplooj ntawv lossis cov ntsiab lus yuav tsis raug txhais kom raug.', 'translate_action' => 'Txhais', 'show_original_action' => 'Qhia qhov qub'], + 'it' => ['english' => 'Italian', 'native' => 'Italiano', 'disclaimer' => 'Avviso di esclusione di responsabilità: Questa funzionalità utilizza il widget Google Translate. A causa dei limiti della traduzione automatica, alcune pagine o contenuti potrebbero non essere tradotti accuratamente.', 'translate_action' => 'Traduci', 'show_original_action' => 'Mostra originale'], + 'ja' => ['english' => 'Japanese', 'native' => '日本語', 'disclaimer' => '免責事項: この機能は Google Translate Widget を使用しています。機械翻訳の制限により、一部のページまたはコンテンツが正確に翻訳されない場合があります。', 'translate_action' => '翻訳', 'show_original_action' => '原文を表示'], + 'km' => ['english' => 'Khmer', 'native' => 'ភាសាខ្មែរ', 'disclaimer' => 'ការបដិសេធ: មុខងារនេះប្រើ Google Translate Widget។ ដោយសារការកំណត់របស់ការបកប្រែដោយម៉ាស៊ីន ទំព័រមួយចំនួន ឬមាតិកាខ្លះ អាចមិនត្រូវបានបកប្រែបានត្រឹមត្រូវទេ។', 'translate_action' => 'បកប្រែ', 'show_original_action' => 'បង្ហាញអត្ថបទដើម'], + 'rw' => ['english' => 'Kinyarwanda', 'native' => 'Kinyarwanda', 'disclaimer' => 'Icyitonderwa: Iyi mikorere ikoresha Google Translate Widget. Kubera imipaka y\'ubuhinduzi bw\'imashini, hari impapuro cyangwa ibikubiyemo bishobora kudahindurwa neza.', 'translate_action' => 'Hindura', 'show_original_action' => 'Erekana umwimerere'], + 'ko' => ['english' => 'Korean', 'native' => '한국어', 'disclaimer' => '면책 조항: 이 기능은 Google Translate Widget을 사용합니다. 기계 번역의 한계로 인해 일부 페이지나 콘텐츠가 정확하게 번역되지 않을 수 있습니다.', 'translate_action' => '번역', 'show_original_action' => '원문 보기'], + 'lo' => ['english' => 'Lao', 'native' => 'ລາວ', 'disclaimer' => 'ຂໍ້ປະຕິເສດ: ຄຸນສົມບັດນີ້ໃຊ້ Google Translate Widget. ເນື່ອງຈາກຂໍ້ຈຳກັດຂອງການແປພາສາດ້ວຍເຄື່ອງ ບາງໜ້າ ຫຼື ເນື້ອຫາ ອາດຈະບໍ່ຖືກແປຢ່າງຖືກຕ້ອງ.', 'translate_action' => 'ແປ', 'show_original_action' => 'ສະແດງຕົ້ນສະບັບ'], + 'ml' => ['english' => 'Malayalam', 'native' => 'മലയാളം', 'disclaimer' => 'നിരാകരണം: ഈ സവിശേഷത Google Translate Widget ഉപയോഗിക്കുന്നു. മെഷീൻ വിവർത്തനത്തിന്റെ പരിമിതികളുടെ കാരണം, ചില പേജുകളോ ഉള്ളടക്കങ്ങളോ കൃത്യമായി വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാം.', 'translate_action' => 'പരിഭാഷപ്പെടുത്തുക', 'show_original_action' => 'മൂലം കാണിക്കുക'], + 'my' => ['english' => 'Myanmar (Burmese)', 'native' => 'မြန်မာ', 'disclaimer' => 'ရှင်းလင်းချက်: ဤလုပ်ဆောင်ချက်သည် Google Translate Widget ကို အသုံးပြုပါသည်။ စက်ဖြင့်ဘာသာပြန်ခြင်း၏ ကန့်သတ်ချက်များကြောင့် စာမျက်နှာများ သို့မဟုတ် အကြောင်းအရာအချို့ကို တိကျစွာ ဘာသာပြန်နိုင်မည်မဟုတ်ပါ။', 'translate_action' => 'ဘာသာပြန်ရန်', 'show_original_action' => 'မူရင်းကိုပြပါ'], + 'ne' => ['english' => 'Nepali', 'native' => 'नेपाली', 'disclaimer' => 'अस्वीकरण: यो सुविधाले Google Translate Widget प्रयोग गर्छ। मेशिन अनुवादको सीमितताका कारण केही पृष्ठ वा सामग्री सही रूपमा अनुवाद नहुन सक्छ।', 'translate_action' => 'अनुवाद गर्नुहोस्', 'show_original_action' => 'मूल देखाउनुहोस्'], + 'ps' => ['english' => 'Pashto', 'native' => 'پښتو', 'disclaimer' => 'خبرتیا: دا ځانګړنه د Google Translate Widget کاروي. د ماشيني ژباړې د محدوديتونو له امله، ځینې پاڼې يا منځپانګه ښايي په سمه توګه ژباړل شوې نه وي.', 'translate_action' => 'ژباړه', 'show_original_action' => 'اصلي وښایئ'], + 'fa' => ['english' => 'Persian', 'native' => 'فارسی', 'disclaimer' => 'سلب مسئولیت: این قابلیت از Google Translate Widget استفاده می‌کند. به دلیل محدودیت‌های ترجمه ماشینی، ممکن است برخی از صفحات یا محتوا به‌طور دقیق ترجمه نشوند.', 'translate_action' => 'ترجمه', 'show_original_action' => 'نمایش متن اصلی'], + 'pl' => ['english' => 'Polish', 'native' => 'Polski', 'disclaimer' => 'Zastrzeżenie: Ta funkcja korzysta z Google Translate Widget. Ze względu na ograniczenia tłumaczenia maszynowego niektóre strony lub treści mogą nie zostać przetłumaczone dokładnie.', 'translate_action' => 'Przetłumacz', 'show_original_action' => 'Pokaż oryginał'], + 'pt' => ['english' => 'Portuguese (Brazil)', 'native' => 'Português', 'disclaimer' => 'Aviso legal: Este recurso usa o Google Translate Widget. Devido às limitações da tradução automática, algumas páginas ou conteúdos podem não ser traduzidos com precisão.', 'translate_action' => 'Traduzir', 'show_original_action' => 'Mostrar original'], + 'ro' => ['english' => 'Romanian', 'native' => 'Română', 'disclaimer' => 'Declinare a responsabilității: Această funcție folosește Google Translate Widget. Din cauza limitărilor traducerii automate, este posibil ca unele pagini sau conținut să nu fie traduse cu acuratețe.', 'translate_action' => 'Tradu', 'show_original_action' => 'Arată originalul'], + 'ru' => ['english' => 'Russian', 'native' => 'Русский', 'disclaimer' => 'Отказ от ответственности: Эта функция использует Google Translate Widget. Из-за ограничений машинного перевода некоторые страницы или материалы могут быть переведены неточно.', 'translate_action' => 'Перевести', 'show_original_action' => 'Показать оригинал'], + 'so' => ['english' => 'Somali', 'native' => 'Soomaali', 'disclaimer' => 'Afeef: Sifadan waxay isticmaashaa Google Translate Widget. Sababo la xiriira xaddidaadaha turjumaadda mashiinka, bogag ama waxyaabo qaar si sax ah looma turjumi karo.', 'translate_action' => 'Tarjum', 'show_original_action' => 'Muuji asalka'], + 'es' => ['english' => 'Spanish', 'native' => 'Español', 'disclaimer' => 'Descargo de responsabilidad: Esta función utiliza el widget de Google Translate. Debido a las limitaciones de la traducción automática, es posible que algunas páginas o contenidos no se traduzcan con precisión.', 'translate_action' => 'Traducir', 'show_original_action' => 'Mostrar original'], + 'sw' => ['english' => 'Swahili', 'native' => 'Kiswahili', 'disclaimer' => 'Kanusho: Kipengele hiki kinatumia Google Translate Widget. Kutokana na mipaka ya tafsiri ya mashine, baadhi ya kurasa au maudhui huenda yasitafsiriwe kwa usahihi.', 'translate_action' => 'Tafsiri', 'show_original_action' => 'Onyesha asili'], + 'ta' => ['english' => 'Tamil', 'native' => 'தமிழ்', 'disclaimer' => 'பொறுப்புத்துறப்பு: இந்த அம்சம் Google Translate Widget-ஐ பயன்படுத்துகிறது. இயந்திர மொழிபெயர்ப்பின் வரம்புகள் காரணமாக, சில பக்கங்கள் அல்லது உள்ளடக்கம் துல்லியமாக மொழிபெயர்க்கப்படாமல் இருக்கலாம்.', 'translate_action' => 'மொழிபெயர்க்க', 'show_original_action' => 'அசலைக் காட்டு'], + 'te' => ['english' => 'Telugu', 'native' => 'తెలుగు', 'disclaimer' => 'నిరాకరణ: ఈ ఫీచర్ Google Translate Widget ను ఉపయోగిస్తుంది. యంత్ర అనువాద పరిమితుల కారణంగా, కొన్ని పేజీలు లేదా కంటెంట్ ఖచ్చితంగా అనువదించబడకపోవచ్చు.', 'translate_action' => 'అనువదించు', 'show_original_action' => 'అసలును చూపు'], + 'th' => ['english' => 'Thai', 'native' => 'ไทย', 'disclaimer' => 'ข้อจำกัดความรับผิดชอบ: ฟีเจอร์นี้ใช้ Google Translate Widget เนื่องจากข้อจำกัดของการแปลด้วยเครื่อง บางหน้าหรือเนื้อหาอาจไม่ได้รับการแปลอย่างถูกต้อง', 'translate_action' => 'แปล', 'show_original_action' => 'แสดงต้นฉบับ'], + 'ti' => ['english' => 'Tigrinya', 'native' => 'ትግርኛ', 'disclaimer' => 'ሓላፍነት ምእላይ: እዚ ባህሪ Google Translate Widget ይጥቀም። ብምኽንያት ውሱንነት ማሽን ትርጉም፣ ገለ ገጻት ወይ ይዘት ብትኽክል ኣይትርጎምን ክኸውን ይኽእል።', 'translate_action' => 'ተርጉም', 'show_original_action' => 'መበቆላዊ ኣርእይ'], + 'tr' => ['english' => 'Turkish', 'native' => 'Türkçe', 'disclaimer' => 'Sorumluluk reddi: Bu özellik Google Translate Widget kullanır. Makine çevirisinin sınırlamaları nedeniyle bazı sayfalar veya içerikler doğru şekilde çevrilmeyebilir.', 'translate_action' => 'Çevir', 'show_original_action' => 'Orijinali göster'], + 'uk' => ['english' => 'Ukrainian', 'native' => 'Українська', 'disclaimer' => 'Застереження: Ця функція використовує Google Translate Widget. Через обмеження машинного перекладу деякі сторінки або вміст можуть бути перекладені неточно.', 'translate_action' => 'Перекласти', 'show_original_action' => 'Показати оригінал'], + 'ur' => ['english' => 'Urdu', 'native' => 'اردو', 'disclaimer' => 'اعلانِ لاتعلقی: یہ فیچر Google Translate Widget استعمال کرتا ہے۔ مشینی ترجمے کی حدود کی وجہ سے، کچھ صفحات یا مواد درست طور پر ترجمہ نہیں ہو سکتے۔', 'translate_action' => 'ترجمہ کریں', 'show_original_action' => 'اصل دکھائیں'], + 'vi' => ['english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'disclaimer' => 'Tuyên bố miễn trừ trách nhiệm: Tính năng này sử dụng Google Translate Widget. Do hạn chế của dịch máy, một số trang hoặc nội dung có thể không được dịch chính xác.', 'translate_action' => 'Dịch', 'show_original_action' => 'Hiển thị bản gốc'], ]; return $language_codes; } @@ -6733,7 +6733,6 @@ function mass_theme_googletranslate_default_languages() { */ function mass_theme_googletranslate_override_fields() { return [ - 'select_language' => t('Select language'), 'translate_action' => t('Translate'), 'show_original_action' => t('Show original'), 'disclaimer' => t('Disclaimer'), diff --git a/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js b/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js index ffb71affa8..4b626db82a 100644 --- a/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js +++ b/docroot/themes/custom/mass_theme/overrides/js/google-translate-modal.js @@ -4,16 +4,10 @@ function applyTranslations(wrapper, translations, selectedLanguage) { var fallback = translations.en || {}; var language = translations[selectedLanguage] || fallback; - var title = wrapper.querySelector('.ma__modal-title'); var disclaimer = wrapper.querySelector('#ma__translate-help p'); var translateAction = wrapper.querySelector('#ma__translate-apply'); var showOriginalAction = wrapper.querySelector('#ma__translate-reset'); - if (title && language.select_language) { - title.textContent = language.select_language; - title.lang = selectedLanguage; - } - if (disclaimer && language.disclaimer) { disclaimer.textContent = language.disclaimer; disclaimer.lang = selectedLanguage; diff --git a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig index 3fdca79536..15bf787783 100644 --- a/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig +++ b/docroot/themes/custom/mass_theme/templates/navigation/menu--utility.html.twig @@ -20,7 +20,7 @@ #} {# This will need to come from theme settings. #} {% -set languageList = availableLanguages +set languageList = availableLanguages|sort %} {% From 9d40da1f4cd8019212374d06973d6fc9c8f6118f Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Mon, 6 Apr 2026 09:37:51 -0400 Subject: [PATCH 18/23] Updated mayflower --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 6085c0796f..8efe00d396 100644 --- a/composer.lock +++ b/composer.lock @@ -13953,12 +13953,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "309f3b982ae71421ce505c9e3f6e54a95e7ad885" + "reference": "50105c354a290e19bb286be4f1badd1b2b382f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/309f3b982ae71421ce505c9e3f6e54a95e7ad885", - "reference": "309f3b982ae71421ce505c9e3f6e54a95e7ad885", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/50105c354a290e19bb286be4f1badd1b2b382f1d", + "reference": "50105c354a290e19bb286be4f1badd1b2b382f1d", "shasum": "" }, "require": { @@ -13976,7 +13976,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-04-02T15:16:09+00:00" + "time": "2026-04-06T13:10:44+00:00" }, { "name": "masterminds/html5", From 6ec7edecace1948fbf3dd70ca612b0d35e14d12b Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Mon, 6 Apr 2026 09:59:00 -0400 Subject: [PATCH 19/23] Updated mayflower-artifacts --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 8efe00d396..8ddab6e64b 100644 --- a/composer.lock +++ b/composer.lock @@ -13953,12 +13953,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "50105c354a290e19bb286be4f1badd1b2b382f1d" + "reference": "ddfda438fd0ecf4cb18c55885e6a83b6f5840e95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/50105c354a290e19bb286be4f1badd1b2b382f1d", - "reference": "50105c354a290e19bb286be4f1badd1b2b382f1d", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/ddfda438fd0ecf4cb18c55885e6a83b6f5840e95", + "reference": "ddfda438fd0ecf4cb18c55885e6a83b6f5840e95", "shasum": "" }, "require": { @@ -13976,7 +13976,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-04-06T13:10:44+00:00" + "time": "2026-04-06T13:54:45+00:00" }, { "name": "masterminds/html5", From 5a3a1d80e0801cc7ef2ff2b53c773d539e163a48 Mon Sep 17 00:00:00 2001 From: Minghua Sun Date: Tue, 7 Apr 2026 12:12:19 -0400 Subject: [PATCH 20/23] update mf --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 5a1c02d544..9b8544668a 100644 --- a/composer.lock +++ b/composer.lock @@ -13636,12 +13636,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "baa555016739f23eab205f6a756a892de3f7e41b" + "reference": "b399aa5dbcb59d03126ed2c6b530233cbc152480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/baa555016739f23eab205f6a756a892de3f7e41b", - "reference": "baa555016739f23eab205f6a756a892de3f7e41b", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/b399aa5dbcb59d03126ed2c6b530233cbc152480", + "reference": "b399aa5dbcb59d03126ed2c6b530233cbc152480", "shasum": "" }, "require": { @@ -13659,7 +13659,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-03-23T19:44:28+00:00" + "time": "2026-04-07T14:55:43+00:00" }, { "name": "masterminds/html5", From b72de15ee11115303023a7f8bab38bdb92715890 Mon Sep 17 00:00:00 2001 From: Minghua Sun Date: Tue, 7 Apr 2026 12:22:35 -0400 Subject: [PATCH 21/23] update mayflower --- composer.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.lock b/composer.lock index 8ddab6e64b..d5e85a2889 100644 --- a/composer.lock +++ b/composer.lock @@ -13953,12 +13953,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "ddfda438fd0ecf4cb18c55885e6a83b6f5840e95" + "reference": "b399aa5dbcb59d03126ed2c6b530233cbc152480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/ddfda438fd0ecf4cb18c55885e6a83b6f5840e95", - "reference": "ddfda438fd0ecf4cb18c55885e6a83b6f5840e95", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/b399aa5dbcb59d03126ed2c6b530233cbc152480", + "reference": "b399aa5dbcb59d03126ed2c6b530233cbc152480", "shasum": "" }, "require": { @@ -13976,7 +13976,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-04-06T13:54:45+00:00" + "time": "2026-04-07T14:55:43+00:00" }, { "name": "masterminds/html5", @@ -25755,5 +25755,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.6.0" } From 3a6dd5e082e3da8ef366e8ad8a4b74e70cfd2366 Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Wed, 15 Apr 2026 17:23:16 -0400 Subject: [PATCH 22/23] Updated mayflower-artifacts --- composer.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.lock b/composer.lock index d5e85a2889..11b21070a6 100644 --- a/composer.lock +++ b/composer.lock @@ -13953,12 +13953,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "b399aa5dbcb59d03126ed2c6b530233cbc152480" + "reference": "8ce027e13cfde0cac2535d9aa77826ed384e5f85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/b399aa5dbcb59d03126ed2c6b530233cbc152480", - "reference": "b399aa5dbcb59d03126ed2c6b530233cbc152480", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/8ce027e13cfde0cac2535d9aa77826ed384e5f85", + "reference": "8ce027e13cfde0cac2535d9aa77826ed384e5f85", "shasum": "" }, "require": { @@ -13976,7 +13976,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-04-07T14:55:43+00:00" + "time": "2026-04-15T20:59:59+00:00" }, { "name": "masterminds/html5", @@ -25755,5 +25755,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } From 935a4d1e2780b5a5f7e4614678dd0d1e5e43fbcf Mon Sep 17 00:00:00 2001 From: Thomas Fleming Date: Thu, 16 Apr 2026 09:59:38 -0400 Subject: [PATCH 23/23] Updated mayflower-artifacts --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index d69d68cf40..a1ea9e2338 100644 --- a/composer.lock +++ b/composer.lock @@ -13953,12 +13953,12 @@ "source": { "type": "git", "url": "https://github.com/massgov/mayflower-artifacts", - "reference": "8ce027e13cfde0cac2535d9aa77826ed384e5f85" + "reference": "37e555fca8357f7d55b3d7ef1c037e1a0a78f51e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/8ce027e13cfde0cac2535d9aa77826ed384e5f85", - "reference": "8ce027e13cfde0cac2535d9aa77826ed384e5f85", + "url": "https://api.github.com/repos/massgov/mayflower-artifacts/zipball/37e555fca8357f7d55b3d7ef1c037e1a0a78f51e", + "reference": "37e555fca8357f7d55b3d7ef1c037e1a0a78f51e", "shasum": "" }, "require": { @@ -13976,7 +13976,7 @@ } ], "description": "This repository is the product of the built artifact from massgov/mayflower", - "time": "2026-04-15T20:59:59+00:00" + "time": "2026-04-16T13:56:08+00:00" }, { "name": "masterminds/html5",