diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 3be7d524674db9b4ce4d158f055ebaff0b6fa1d9..a94fe06da38dbf10d9e4dca7029d56456ea0602b 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -1,6 +1,8 @@ twig: default_path: '%kernel.project_dir%/templates' form_themes: ['bootstrap_5_layout.html.twig'] + globals: + languages: '@App\Manager\LanguagesManager' when@test: twig: diff --git a/src/Command/BalexInitializeCommand.php b/src/Command/BalexInitializeCommand.php index ca1767db0d91d40d0e3016e6b8d1c87d2493feae..4965c3396a66000ca74aa6864c24d9df8413f768 100644 --- a/src/Command/BalexInitializeCommand.php +++ b/src/Command/BalexInitializeCommand.php @@ -5,6 +5,7 @@ namespace App\Command; use App\Entity\Label; use App\Entity\Lexicon; use App\Entity\User; +use App\Languages\LanguagesIso; use Doctrine\ORM\EntityManagerInterface; use League\Bundle\OAuth2ServerBundle\Model\Client; use Symfony\Component\Console\Attribute\AsCommand; @@ -51,7 +52,7 @@ class BalexInitializeCommand extends Command //TODO utiliser la liste de langues // Création des lexiques zéro et new word - foreach (User::LANGUAGES as $language) { + foreach (LanguagesIso::getCodes() as $language) { // Création d'un lexique Zéro par langue $zeroLexicon = new Lexicon(); $zeroLexicon->setCategory(Lexicon::TYPE_ZERO); diff --git a/src/Controller/ApiBaseController.php b/src/Controller/ApiBaseController.php index aa31272cccbdfc404ddb652e2219382088e711c8..fcc910c63f26bc412fe9bd3badcc6ddf72673225 100644 --- a/src/Controller/ApiBaseController.php +++ b/src/Controller/ApiBaseController.php @@ -8,6 +8,7 @@ use App\Entity\Headword; use App\Entity\Label; use App\Entity\Lexicon; use App\Entity\User; +use App\Languages\LanguagesIso; use App\Manager\WiktionaryManager; use Doctrine\Persistence\ManagerRegistry; use phpDocumentor\Reflection\Types\Integer; @@ -173,7 +174,7 @@ class ApiBaseController extends AbstractController public function getLanguages() { - return User::LANGUAGES; + return LanguagesIso::getCodes(); } /** diff --git a/src/Controller/LexiconController.php b/src/Controller/LexiconController.php index ab248f9bb6a3a32fb107c2775daeca909d421450..8c0e61b67034c19e9c74d5feb412076b21199ff8 100644 --- a/src/Controller/LexiconController.php +++ b/src/Controller/LexiconController.php @@ -24,12 +24,6 @@ class LexiconController extends AbstractController */ public function index(LexiconRepository $lexiconRepository): Response { - dump(in_array('update_comment', Log::LOG_LIST_CATEGORIES));die(); -// $entry2 = $this->getDoctrine()->getRepository(Entry::class)->find(9); -// -// -// dump($entry1->getAttributes(), $entry2->getAttributes(), array_merge_recursive($entry1->getAttributes()['Items'], $entry2->getAttributes()['Items']));die(); - return $this->render('lexicon/index.html.twig', [ 'lexicons' => $lexiconRepository->findAll(), ]); diff --git a/src/Entity/StudiedLanguage.php b/src/Entity/StudiedLanguage.php index 6b707ebcdc6969b51a844d509c21b64910b7b006..9d6596d9ce29de3ca38dae4b006435af5cb64ecc 100644 --- a/src/Entity/StudiedLanguage.php +++ b/src/Entity/StudiedLanguage.php @@ -2,6 +2,7 @@ namespace App\Entity; +use App\Languages\LanguagesIso; use App\Repository\LabelRepository; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; @@ -48,7 +49,7 @@ class StudiedLanguage public function __toString() { - return User::getFormattedLanguage($this->getLanguage()) . ' : ' . $this->getLevel(); + return LanguagesIso::getLabelFromCode($this->getLanguage()) . ' : ' . $this->getLevel(); } /** diff --git a/src/Entity/User.php b/src/Entity/User.php index 063a7e8a99d5d8bfa551e328c8a294e4a8aaabcf..a882c7d3f31d994e867f0c9639d83b5b7c5ded42 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -26,19 +26,6 @@ use Symfony\Component\Serializer\Annotation\Ignore; */ class User implements UserInterface, PasswordAuthenticatedUserInterface { - const LANGUAGES = [ - 'Français' => 'fr', - 'Anglais' => 'en', - 'Allemand' => 'de', - 'Italien' => 'it', - 'Espagnol' => 'es', - ]; - - public static function getFormattedLanguage($languageCode) - { - return array_search($languageCode, self::LANGUAGES); - } - const LANGUAGE_LEVELS = [ 'A1' => 'A1', 'A2' => 'A2', diff --git a/src/Form/GraphyListType.php b/src/Form/GraphyListType.php index 11f15aaadb61e966fede5015fd1dbec73cf82019..ed0ceb5b33037eec6dacec07fa1a8b9544d45dab 100644 --- a/src/Form/GraphyListType.php +++ b/src/Form/GraphyListType.php @@ -5,6 +5,7 @@ namespace App\Form; use App\Entity\GraphyList; use App\Entity\Group; use App\Entity\User; +use App\Languages\LanguagesIso; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; @@ -24,7 +25,7 @@ class GraphyListType extends AbstractType ]) ->add('language', ChoiceType::class, [ 'label' => 'Langue', - 'choices' => User::LANGUAGES, + 'choices' => LanguagesIso::getCodes(), ]) ->add('category', ChoiceType::class, [ 'label' => 'Langue', diff --git a/src/Form/GroupType.php b/src/Form/GroupType.php index f5942b0141bde6f5dffb1eddef97861dbf6216b5..16250a9025ac37ef2b27550dbb2312e08f6c1475 100644 --- a/src/Form/GroupType.php +++ b/src/Form/GroupType.php @@ -4,6 +4,7 @@ namespace App\Form; use App\Entity\Group; use App\Entity\User; +use App\Languages\LanguagesIso; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; @@ -22,7 +23,7 @@ class GroupType extends AbstractType ->add('language', ChoiceType::class, [ 'mapped' => false, 'label' => 'Langue', - 'choices' => User::LANGUAGES, + 'choices' => LanguagesIso::getCodes(), ]) ->add('submit', SubmitType::class, [ 'label' => 'Enregistrer', diff --git a/src/Form/RegistrationFormType.php b/src/Form/RegistrationFormType.php index 6ec2c69d5cf90dccc42adf848cbeef84de010165..8172e1bf0bfe09fc73cfe3df4ead2df26050b656 100644 --- a/src/Form/RegistrationFormType.php +++ b/src/Form/RegistrationFormType.php @@ -3,6 +3,7 @@ namespace App\Form; use App\Entity\User; +use App\Languages\LanguagesIso; use Doctrine\DBAL\Types\TextType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; @@ -51,7 +52,7 @@ class RegistrationFormType extends AbstractType ]) ->add('nativeLanguage', ChoiceType::class, [ 'label' => 'Langue natale', - 'choices' => User::LANGUAGES, + 'choices' => LanguagesIso::getCodes(), ]) ->add('studiedLanguage', StudiedLanguageType::class, [ 'mapped' => false, diff --git a/src/Form/StudiedLanguageType.php b/src/Form/StudiedLanguageType.php index 4235211d47150c37248dfa90468d1de6c500727f..8738652c0ca452276bd58f95551bc798f5a01058 100644 --- a/src/Form/StudiedLanguageType.php +++ b/src/Form/StudiedLanguageType.php @@ -4,6 +4,7 @@ namespace App\Form; use App\Entity\StudiedLanguage; use App\Entity\User; +use App\Languages\LanguagesIso; use Doctrine\DBAL\Types\TextType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; @@ -23,7 +24,7 @@ class StudiedLanguageType extends AbstractType $builder ->add('language', ChoiceType::class, [ 'label' => 'Langue étudiée', - 'choices' => User::LANGUAGES, + 'choices' => LanguagesIso::getCodes(), ]) ->add('level', ChoiceType::class, [ 'label' => 'Niveau', diff --git a/src/Form/UserProfileFormType.php b/src/Form/UserProfileFormType.php index f5aa87784e4f88166f6f934bd87d52b3bf5ba0e2..b532a005bbba0ed88b2378ce49dc07f9d2110998 100644 --- a/src/Form/UserProfileFormType.php +++ b/src/Form/UserProfileFormType.php @@ -3,6 +3,7 @@ namespace App\Form; use App\Entity\User; +use App\Languages\LanguagesIso; use Doctrine\DBAL\Types\TextType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; @@ -23,22 +24,26 @@ class UserProfileFormType extends AbstractType $builder ->add('nativeLanguage', ChoiceType::class, [ 'label' => 'Langue natale', - 'choices' => User::LANGUAGES, + 'choices' => LanguagesIso::getCodes(), ]) ->add('appLanguage', ChoiceType::class, [ 'label' => 'Langue interface', - 'choices' => User::LANGUAGES, + 'choices' => LanguagesIso::getCodes(), ]) ->add('activePersonalStats', CheckboxType::class, [ + 'required' => false, 'label' => 'Activation statistiques persos', ]) ->add('activeGamification', CheckboxType::class, [ + 'required' => false, 'label' => 'Activation gamification', ]) ->add('shareDataWithOtherUsers', CheckboxType::class, [ + 'required' => false, 'label' => 'Partage des données avec les autres utilisateurs', ]) ->add('shareDataWithResearchers', CheckboxType::class, [ + 'required' => false, 'label' => 'Partage des données avec les enseignants', ]) ->add('picture', PictureType::class, [ diff --git a/src/Languages/LanguagesIso.php b/src/Languages/LanguagesIso.php new file mode 100644 index 0000000000000000000000000000000000000000..3116a25d8ae848cd8b9a332b063b65a94d5703b6 --- /dev/null +++ b/src/Languages/LanguagesIso.php @@ -0,0 +1,232 @@ +<?php + +namespace App\Languages; + +class LanguagesIso +{ + public static function getCodes($labelLanguage = 'fr') + { + $result = []; + + if ($labelLanguage == 'own') { + foreach (self::LIST as $code => $labels) { + $result[$labels[1]] = $code; + } + } elseif ($labelLanguage == 'en') { + foreach (self::LIST as $code => $labels) { + $result[$labels[2]] = $code; + } + } else { + // Français par défaut + foreach (self::LIST as $code => $labels) { + $result[$labels[0]] = $code; + } + } + + return $result; + } + + + public static function getLabel($code, $labelLanguage = 'fr') + { + if ($labelLanguage == 'own') { + return self::LIST[$code][1]; + } + if ($labelLanguage == 'en') { + return self::LIST[$code][0]; + } + + // Français par défaut + return self::LIST[$code][0]; + } + + // "code" => ["français", "langue originale", "anglais"] + + const LIST = [ + "aa" => ["Afar", "Afaraf", "Afar"], + "ab" => ["Abkhaze", "ÐÒ§Ñуа", "Abkhazian"], + "ae" => ["Avestique", "Avesta", "Avestan"], + "af" => ["Afrikaans", "Afrikaans", "Afrikaans"], + "ak" => ["Akan", "Akan", "Akan"], + "am" => ["Amharique", "አማáˆáŠ›", "Amharic"], + "an" => ["Aragonais", "Aragonés", "Aragonese"], + "ar" => ["Arabe", "العربية", "Arabic"], + "as" => ["Assamais", "অসমীয়া", "Assamese"], + "av" => ["Avar", "авар мацӀ ; магӀарул мацӀ", "Avaric"], + "ay" => ["Aymara", "Aymar aru", "Aymara"], + "az" => ["Azéri", "AzÉ™rbaycan dili", "Azerbaijani"], + "ba" => ["Bachkir", "башҡорт теле", "Bashkir"], + "be" => ["Biélorusse", "БеларуÑкаÑ", "Belarusian"], + "bg" => ["Bulgare", "българÑки език", "Bulgarian"], + "bh" => ["Bihari", "à¤à¥‹à¤œà¤ªà¥à¤°à¥€", "Bihari"], + "bi" => ["Bichelamar", "Bislama", "Bislama"], + "bm" => ["Bambara", "Bamanankan", "Bambara"], + "bn" => ["Bengali", "বাংলা", "Bengali"], + "bo" => ["Tibétain", "བོད་ཡིག", "Tibetan"], + "br" => ["Breton", "Brezhoneg", "Breton"], + "bs" => ["Bosnien", "Bosanski jezik", "Bosnian"], + "ca" => ["Catalan", "Català ", "Catalan"], + "ce" => ["Tchétchène", "нохчийн мотт", "Chechen"], + "ch" => ["Chamorro", "Chamoru", "Chamorro"], + "co" => ["Corse", "Corsu ; lingua corsa", "Corsican"], + "cr" => ["Cri", "á“€á¦áƒá”ááá£", "Cree"], + "cs" => ["Tchèque", "ÄŒesky ÄeÅ¡tina", "Czech"], + "cu" => ["Vieux-slave", "СловѣньÑкъ", "Old Church Slavonic"], + "cv" => ["Tchouvache", "чӑваш чӗлхи", "Chuvash"], + "cy" => ["Gallois", "Cymraeg", "Welsh"], + "da" => ["Danois", "Dansk", "Danish"], + "de" => ["Allemand", "Deutsch", "German"], + "dv" => ["Maldivien", "Þ‹Þ¨ÞˆÞ¬Þ€Þ¨", "Divehi"], + "dz" => ["Dzongkha", "རྫོང་à½", "Dzongkha"], + "ee" => ["Ewe", "ÆÊ‹É›gbÉ›", "Ewe"], + "el" => ["Grec moderne", "Ελληνικά", "Greek"], + "en" => ["Anglais", "English", "English"], + "eo" => ["Espéranto", "Esperanto", "Esperanto"], + "es" => ["Espagnol", "Español; castellano", "Spanish"], + "et" => ["Estonien", "Eesti keel", "Estonian"], + "eu" => ["Basque", "Euskara", "Basque"], + "fa" => ["Persan", "ÙØ§Ø±Ø³ÛŒ", "Persian"], + "ff" => ["Peul", "Fulfulde", "Fulah"], + "fi" => ["Finnois", "Suomen kieli", "Finnish"], + "fj" => ["Fidjien", "Vosa Vakaviti", "Fijian"], + "fo" => ["Féroïen", "Føroyskt", "Faroese"], + "fr" => ["Français", "Français ; langue française", "French"], + "fy" => ["Frison occidental", "Frysk", "Western Frisian"], + "ga" => ["Irlandais", "Gaeilge", "Irish"], + "gd" => ["Écossais", "Gà idhlig", "Scottish Gaelic"], + "gl" => ["Galicien", "Galego", "Galician"], + "gn" => ["Guarani", "Avañe'ẽ", "Guarani"], + "gu" => ["Gujarati", "ગà«àªœàª°àª¾àª¤à«€", "Gujarati"], + "gv" => ["Mannois", "Ghaelg", "Manx"], + "ha" => ["Haoussa", "Ù‡ÙŽÙˆÙØ³ÙŽ", "Hausa"], + "he" => ["Hébreu", "עברית", "Hebrew"], + "hi" => ["Hindi", "हिनà¥à¤¦à¥€Â ; हिंदी", "Hindi"], + "ho" => ["Hiri motu", "Hiri Motu", "Hiri Motu"], + "hr" => ["Croate", "Hrvatski", "Croatian"], + "ht" => ["Créole haïtien", "Kreyòl ayisyen", "Haitian"], + "hu" => ["Hongrois", "magyar", "Hungarian"], + "hy" => ["Arménien", "Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶", "Armenian"], + "hz" => ["Héréro", "Otjiherero", "Herero"], + "ia" => ["Interlingua", "Interlingua", "Interlingua"], + "id" => ["Indonésien", "Bahasa Indonesia", "Indonesian"], + "ie" => ["Occidental", "Interlingue", "Interlingue"], + "ig" => ["Igbo", "Igbo", "Igbo"], + "ii" => ["Yi", "ꆇꉙ", "Sichuan Yi"], + "ik" => ["Inupiak", "Iñupiaq ; Iñupiatun", "Inupiaq"], + "io" => ["Ido", "Ido", "Ido"], + "is" => ["Islandais", "Ãslenska", "Icelandic"], + "it" => ["Italien", "Italiano", "Italian"], + "iu" => ["Inuktitut", "áƒá“„ᒃᑎá‘ᑦ", "Inuktitut"], + "ja" => ["Japonais", "日本語 (ã«ã»ã‚“ã”)", "Japanese"], + "jv" => ["Javanais", "Basa Jawa", "Javanese"], + "ka" => ["Géorgien", "ქáƒáƒ თული", "Georgian"], + "kg" => ["Kikongo", "KiKongo", "Kongo"], + "ki" => ["Kikuyu", "GÄ©kÅ©yÅ©", "Kikuyu"], + "kj" => ["Kuanyama", "Kuanyama", "Kwanyama"], + "kk" => ["Kazakh", "Қазақ тілі", "Kazakh"], + "kl" => ["Groenlandais", "Kalaallisut ; kalaallit oqaasii", "Greenlandic"], + "km" => ["Khmer", "ភាសាážáŸ’មែរ", "Khmer"], + "kn" => ["Kannada", "ಕನà³à²¨à²¡", "Kannada"], + "ko" => ["Coréen", "한êµì–´ (韓國語) ; ì¡°ì„ ë§ (æœé®®èªž)", "Korean"], + "kr" => ["Kanouri", "Kanuri", "Kanuri"], + "ks" => ["Cachemiri", "कशà¥à¤®à¥€à¤°à¥€Â ; كشميري", "Kashmiri"], + "ku" => ["Kurde", "Kurdî ; كوردی", "Kurdish"], + "kv" => ["Komi", "коми кыв", "Komi"], + "kw" => ["Cornique", "Kernewek", "Cornish"], + "ky" => ["Kirghiz", "кыргыз тили", "Kirghiz"], + "la" => ["Latin", "Latine ; lingua latina", "Latin"], + "lb" => ["Luxembourgeois", "Lëtzebuergesch", "Luxembourgish"], + "lg" => ["Ganda", "Luganda", "Ganda"], + "li" => ["Limbourgeois", "Limburgs", "Limburgish"], + "ln" => ["Lingala", "Lingála", "Lingala"], + "lo" => ["Lao", "ພາສາລາວ", "Lao"], + "lt" => ["Lituanien", "Lietuvių kalba", "Lithuanian"], + "lu" => ["Luba", "tshiluba", "Luba"], + "lv" => ["Letton", "LatvieÅ¡u valoda", "Latvian"], + "mg" => ["Malgache", "Fiteny malagasy", "Malagasy"], + "mh" => ["Marshallais", "Kajin M̧ajeļ", "Marshallese"], + "mi" => ["Maori de Nouvelle-Zélande", "Te reo MÄori", "MÄori"], + "mk" => ["Macédonien", "македонÑки јазик", "Macedonian"], + "ml" => ["Malayalam", "മലയാളം", "Malayalam"], + "mn" => ["Mongol", "Монгол", "Mongolian"], + "mr" => ["Marathi", "मराठी", "Marathi"], + "ms" => ["Malais", "Bahasa Melayu ; بهاس ملايو", "Malay"], + "mt" => ["Maltais", "Malti", "Maltese"], + "my" => ["Birman", "ဗမာစာ", "Burmese"], + "na" => ["Nauruan", "EkakairÅ© Naoero", "Nauru"], + "nb" => ["Norvégien bokmÃ¥l", "Norsk bokmÃ¥l", "Norwegian BokmÃ¥l"], + "nd" => ["Sindebele", "isiNdebele", "North Ndebele"], + "ne" => ["Népalais", "नेपाली", "Nepali"], + "ng" => ["Ndonga", "Owambo", "Ndonga"], + "nl" => ["Néerlandais", "Nederlands", "Dutch"], + "nn" => ["Norvégien nynorsk", "Norsk nynorsk", "Norwegian Nynorsk"], + "no" => ["Norvégien", "Norsk", "Norwegian"], + "nr" => ["Nrebele", "Ndébélé", "South Ndebele"], + "nv" => ["Navajo", "Diné bizaad ; DinékʼehǰÃ", "Navajo"], + "ny" => ["Chichewa", "ChiCheŵa ; chinyanja", "Chichewa"], + "oc" => ["Occitan", "Occitan", "Occitan"], + "oj" => ["Ojibwé", "áŠá“‚ᔑᓈá¯á’§áŽá“", "Ojibwa"], + "om" => ["Oromo", "Afaan Oromoo", "Oromo"], + "or" => ["Oriya", "ଓଡ଼ିଆ", "Oriya"], + "os" => ["Ossète", "Ирон ӕвзаг", "Ossetian"], + "pa" => ["Pendjabi", "ਪੰਜਾਬੀ ; پنجابی", "Panjabi"], + "pi" => ["Pali", "पािऴ", "PÄli"], + "pl" => ["Polonais", "Polski", "Polish"], + "ps" => ["Pachto", "پښتو", "Pashto"], + "pt" => ["Portugais", "Português", "Portuguese"], + "qu" => ["Quechua", "Runa Simi ; Kichwa", "Quechua"], + "rm" => ["Romanche", "Rumantsch grischun", "Romansh"], + "rn" => ["Kirundi", "kiRundi", "Kirundi"], + "ro" => ["Roumain", "Română", "Romanian"], + "ru" => ["Russe", "руÑÑкий Ñзык", "Russian"], + "rw" => ["Kinyarwanda", "Kinyarwanda", "Kinyarwanda"], + "sa" => ["Sanskrit", "संसà¥à¤•ृतमà¥", "Sanskrit"], + "sc" => ["Sarde", "sardu", "Sardinian"], + "sd" => ["Sindhi", "सिनà¥à¤§à¥€Â ; سنڌي، سندھی", "Sindhi"], + "se" => ["Same du Nord", "Davvisámegiella", "Northern Sami"], + "sg" => ["Sango", "Yângâ tî sängö", "Sango"], + "sh" => ["Serbo-croate", "srpskohrvatski jezik ; ÑрпÑкохрватÑки језик", "Serbo-Croatian"], + "si" => ["Cingalais", "සිංහල", "Sinhalese"], + "sk" => ["Slovaque", "SlovenÄina", "Slovak"], + "sl" => ["Slovène", "SlovenÅ¡Äina", "Slovenian"], + "sm" => ["Samoan", "Gagana fa'a Samoa", "Samoan"], + "sn" => ["Shona", "chiShona", "Shona"], + "so" => ["Somali", "Soomaaliga ; af Soomaali", "Somali"], + "sq" => ["Albanais", "Shqip", "Albanian"], + "sr" => ["Serbe", "ÑрпÑки језик", "Serbian"], + "ss" => ["Swati", "SiSwati", "Swati"], + "st" => ["Sotho du Sud", "seSotho", "Sotho"], + "su" => ["Soundanais", "Basa Sunda", "Sundanese"], + "sv" => ["Suédois", "Svenska", "Swedish"], + "sw" => ["Swahili", "Kiswahili", "Swahili"], + "ta" => ["Tamoul", "தமிழà¯", "Tamil"], + "te" => ["Télougou", "తెలà±à°—à±", "Telugu"], + "tg" => ["Tadjik", "тоҷикӣ ; toÄŸikī ; تاجیکی", "Tajik"], + "th" => ["Thaï", "ไทย", "Thai"], + "ti" => ["Tigrigna", "ትáŒáˆáŠ›", "Tigrinya"], + "tk" => ["Turkmène", "Türkmen ;Түркмен", "Turkmen"], + "tl" => ["Tagalog", "Tagalog", "Tagalog"], + "tn" => ["Tswana", "seTswana", "Tswana"], + "to" => ["Tongien", "faka Tonga", "Tonga"], + "tr" => ["Turc", "Türkçe", "Turkish"], + "ts" => ["Tsonga", "xiTsonga", "Tsonga"], + "tt" => ["Tatar", "татарча ; tatarça ;تاتارچا", "Tatar"], + "tw" => ["Twi", "Twi", "Twi"], + "ty" => ["Tahitien", "Reo MÄ`ohi", "Tahitian"], + "ug" => ["Ouïghour", "UyÆ£urqə ; ئۇيغۇرچ", "Uighur"], + "uk" => ["Ukrainien", "українÑька мова", "Ukrainian"], + "ur" => ["Ourdou", "اردو", "Urdu"], + "uz" => ["Ouzbek", "O'zbek ; Ўзбек ; أۇزبÛÙƒ", "Uzbek"], + "ve" => ["Venda", "tshiVenḓa", "Venda"], + "vi" => ["Vietnamien", "Tiếng Việt", "Viêt Namese"], + "vo" => ["Volapük", "Volapük", "Volapük"], + "wa" => ["Wallon", "Walon", "Walloon"], + "wo" => ["Wolof", "Wollof", "Wolof"], + "xh" => ["Xhosa", "isiXhosa", "Xhosa"], + "yi" => ["Yiddish", "ייִדיש", "Yiddish"], + "yo" => ["Yoruba", "Yorùbá", "Yoruba"], + "za" => ["Zhuang", "Saɯ cueŋƅ ; Saw cuengh", "Zhuang"], + "zh" => ["Chinois", "䏿–‡, 汉è¯, 漢語", "Chinese"], + "zu" => ["Zoulou", "isiZulu", "Zulu"], + ]; +} \ No newline at end of file diff --git a/src/Manager/LanguagesManager.php b/src/Manager/LanguagesManager.php new file mode 100644 index 0000000000000000000000000000000000000000..1a3c1a1674911f847e3524e7457aa1e6c47d8afa --- /dev/null +++ b/src/Manager/LanguagesManager.php @@ -0,0 +1,23 @@ +<?php + +namespace App\Manager; + +use App\Entity\Entry; +use App\Entity\Label; +use App\Entity\User; +use App\Languages\LanguagesIso; +use Doctrine\Persistence\ManagerRegistry; +use JsonSchema\Validator; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Serializer\SerializerAwareInterface; +use Symfony\Component\Serializer\SerializerInterface; + +class LanguagesManager +{ + public function getLabel($code, $labelLanguage = 'fr') + { + return LanguagesIso::getLabel($code); + } +} diff --git a/templates/user/index.html.twig b/templates/user/index.html.twig index 5a69738b6fca3f6b24d81a0e7e91e8321c7c54a2..9c57380d0beef7bcebd08a4391a4273e3cb8063d 100644 --- a/templates/user/index.html.twig +++ b/templates/user/index.html.twig @@ -37,8 +37,8 @@ <td>{{ user.activePersonalStats ? '<i class="bi bi-check text-success"></i>' : '<i class="bi bi-x text-danger"></i>' }}</td> <td>{{ user.shareDataWithOtherUsers ? '<i class="bi bi-check text-success"></i>' : '<i class="bi bi-x text-danger"></i>' }}</td> <td>{{ user.shareDataWithResearchers ? '<i class="bi bi-check text-success"></i>' : '<i class="bi bi-x text-danger"></i>' }}</td> - <td>{{ user.formattedLanguage(user.nativeLanguage) }}</td> - <td>{{ user.formattedLanguage(user.appLanguage) }}</td> + <td>{{ languages.label(user.nativeLanguage) }}</td> + <td>{{ languages.label(user.appLanguage) }}</td> <td>{{ user.studiedLanguages|join('<br>')|raw }}</td> <td> {% if user.enabled %} diff --git a/templates/user/showProfile.html.twig b/templates/user/showProfile.html.twig index dc830896abc89e824c1b55c34431409fb43bde97..5d6c184e19879bac8e5811a202f0bf70ce7d6b24 100644 --- a/templates/user/showProfile.html.twig +++ b/templates/user/showProfile.html.twig @@ -48,11 +48,11 @@ </tr> <tr> <td>Langue</td> - <td>{{ user.formattedLanguage(user.nativeLanguage) }}</td> + <td>{{ languages.label(user.nativeLanguage) }}</td> </tr> <tr> <td>Langue interface</td> - <td>{{ user.formattedLanguage(user.appLanguage) }}</td> + <td>{{ languages.label(user.appLanguage) }}</td> </tr> <tr> <td style="padding-top: 12px">Biographie</td> @@ -60,7 +60,7 @@ <table class="mb-2"> {% for studiedLanguage in user.studiedLanguages %} <tr> - <td><strong>- {{ user.getFormattedLanguage(studiedLanguage.language) }}, {{ studiedLanguage.level }}</strong></td> + <td><strong>- {{ languages.label(studiedLanguage.language) }}, {{ studiedLanguage.level }}</strong></td> <td style="padding-left: 5px"><a title="Modifier" href="{{ path('app_studied_language_edit', {id: studiedLanguage.id}) }}" class="btn btn-xs btn-dark"><i class="bi-pencil"></i></a></td> <td>{{ include('studied_language/_delete_form.html.twig') }}</td> </tr>