{"id":1506,"date":"2026-04-30T03:17:40","date_gmt":"2026-04-30T01:17:40","guid":{"rendered":"https:\/\/ouivinvin.com\/?page_id=1506"},"modified":"2026-05-24T12:58:50","modified_gmt":"2026-05-24T10:58:50","slug":"french-level-test","status":"publish","type":"page","link":"https:\/\/ouivinvin.com\/en\/french-level-test\/","title":{"rendered":"French Level Test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1506\" class=\"elementor elementor-1506\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69232af e-flex e-con-boxed e-con e-parent\" data-id=\"69232af\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3077b13 elementor-widget elementor-widget-html\" data-id=\"3077b13\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n#ovb-quiz {\n  font-family: 'Lato', Arial, sans-serif;\n  max-width: 720px;\n  margin: 0 auto;\n  padding: 0 16px 60px;\n  color: #4A4A4A;\n}\n#ovb-quiz * { box-sizing: border-box; }\n\n\/* En-t\u00eate *\/\n#ovb-quiz-header {\n  text-align: center;\n  padding: 40px 20px 32px;\n}\n#ovb-quiz-header h1 {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 2rem;\n  color: #00234B;\n  margin: 0 0 12px;\n}\n#ovb-quiz-header p {\n  font-size: 1rem;\n  color: #666;\n  max-width: 520px;\n  margin: 0 auto 20px;\n  line-height: 1.6;\n}\n\n\/* Barre de progression *\/\n#ovb-progress-wrap {\n  margin: 0 0 32px;\n}\n#ovb-progress-label {\n  display: flex;\n  justify-content: space-between;\n  font-size: 0.8rem;\n  color: #888;\n  margin-bottom: 6px;\n}\n#ovb-progress-bar-bg {\n  background: #E0E6EF;\n  border-radius: 20px;\n  height: 6px;\n  overflow: hidden;\n}\n#ovb-progress-bar {\n  background: #00234B;\n  height: 100%;\n  border-radius: 20px;\n  transition: width 0.4s ease;\n  width: 0%;\n}\n\n\/* Badge niveau *\/\n#ovb-level-badge {\n  display: inline-block;\n  background: #EEF2F7;\n  color: #00234B;\n  border: 1px solid #C8D5E8;\n  border-radius: 20px;\n  padding: 4px 14px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  letter-spacing: 0.05em;\n  margin-bottom: 16px;\n}\n\n\/* Question *\/\n#ovb-question-text {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 1.25rem;\n  color: #00234B;\n  margin: 0 0 24px;\n  line-height: 1.5;\n}\n\n\/* Options *\/\n#ovb-options {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  margin-bottom: 24px;\n}\n.ovb-option {\n  background: #fff;\n  border: 1.5px solid #E0E6EF;\n  border-radius: 10px;\n  padding: 13px 18px;\n  font-size: 0.95rem;\n  color: #4A4A4A;\n  cursor: pointer;\n  transition: all 0.18s;\n  text-align: left;\n  width: 100%;\n  font-family: 'Lato', Arial, sans-serif;\n}\n.ovb-option:hover { border-color: #00234B; background: #EEF2F7; }\n.ovb-option.correct { background: #EAF7EE; border-color: #2ECC71; color: #1a7a40; }\n.ovb-option.wrong { background: #FFF0F1; border-color: #E63946; color: #c0303a; }\n.ovb-option.disabled { cursor: not-allowed; opacity: 0.6; }\n\n\/* Explication *\/\n#ovb-explanation {\n  background: #F7F9FC;\n  border-left: 3px solid #00234B;\n  border-radius: 0 8px 8px 0;\n  padding: 12px 16px;\n  font-size: 0.88rem;\n  color: #4A4A4A;\n  line-height: 1.55;\n  margin-bottom: 20px;\n  display: none;\n}\n\n\/* Bouton suivant *\/\n#ovb-next-btn {\n  background: #00234B;\n  color: #fff;\n  border: none;\n  border-radius: 10px;\n  padding: 12px 28px;\n  font-size: 0.95rem;\n  font-weight: 700;\n  font-family: 'Lato', Arial, sans-serif;\n  cursor: pointer;\n  display: none;\n  transition: background 0.18s;\n}\n#ovb-next-btn:hover { background: #003a7a; }\n\n\/* Bouton langue *\/\n#ovb-lang-toggle {\n  display: flex;\n  gap: 6px;\n  justify-content: flex-end;\n  margin-bottom: 24px;\n}\n.ovb-lang-btn {\n  background: transparent;\n  border: 1px solid #E0E6EF;\n  border-radius: 6px;\n  padding: 4px 12px;\n  font-size: 0.75rem;\n  font-weight: 700;\n  color: #888;\n  cursor: pointer;\n  font-family: 'Lato', Arial, sans-serif;\n  transition: all 0.15s;\n}\n.ovb-lang-btn.active {\n  background: #00234B;\n  border-color: #00234B;\n  color: #fff;\n}\n\n\/* R\u00e9sultat *\/\n#ovb-result {\n  display: none;\n  text-align: center;\n  padding: 40px 20px;\n  animation: ovb-fade-in 0.4s ease;\n}\n#ovb-result-emoji { font-size: 3rem; margin-bottom: 12px; }\n#ovb-result-level {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 2rem;\n  color: #00234B;\n  margin: 0 0 8px;\n}\n#ovb-result-score {\n  font-size: 1rem;\n  color: #888;\n  margin-bottom: 20px;\n}\n#ovb-result-desc {\n  font-size: 1rem;\n  color: #4A4A4A;\n  max-width: 500px;\n  margin: 0 auto 28px;\n  line-height: 1.65;\n}\n#ovb-result-cta {\n  display: inline-block;\n  background: #E63946;\n  color: #fff;\n  border: none;\n  border-radius: 10px;\n  padding: 14px 32px;\n  font-size: 1rem;\n  font-weight: 700;\n  font-family: 'Lato', Arial, sans-serif;\n  cursor: pointer;\n  text-decoration: none;\n  transition: background 0.18s;\n  margin-bottom: 16px;\n}\n#ovb-result-cta:hover { background: #c72d3a; }\n#ovb-retry-btn {\n  display: block;\n  margin: 12px auto 0;\n  background: transparent;\n  border: 1.5px solid #00234B;\n  color: #00234B;\n  border-radius: 10px;\n  padding: 10px 24px;\n  font-size: 0.9rem;\n  font-weight: 600;\n  font-family: 'Lato', Arial, sans-serif;\n  cursor: pointer;\n  transition: all 0.18s;\n}\n#ovb-retry-btn:hover { background: #00234B; color: #fff; }\n\n\/* Score visuel *\/\n#ovb-score-visual {\n  display: flex;\n  justify-content: center;\n  gap: 6px;\n  flex-wrap: wrap;\n  margin: 16px auto 24px;\n  max-width: 400px;\n}\n.ovb-score-dot {\n  width: 14px;\n  height: 14px;\n  border-radius: 50%;\n  background: #E0E6EF;\n}\n.ovb-score-dot.correct { background: #2ECC71; }\n.ovb-score-dot.wrong   { background: #E63946; }\n\n@keyframes ovb-fade-in {\n  from { opacity: 0; transform: translateY(10px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n\n@media (max-width: 480px) {\n  #ovb-quiz-header h1 { font-size: 1.5rem; }\n  #ovb-question-text  { font-size: 1.05rem; }\n  .ovb-option         { font-size: 0.88rem; padding: 11px 14px; }\n}\n<\/style>\n\n<div id=\"ovb-quiz\">\n\n  <!-- Boutons langue -->\n  <div id=\"ovb-lang-toggle\">\n    <button class=\"ovb-lang-btn active\" onclick=\"ovbSetLang('en')\">EN<\/button>\n    <button class=\"ovb-lang-btn\" onclick=\"ovbSetLang('de')\">DE<\/button>\n  <\/div>\n\n  <!-- En-t\u00eate -->\n  <div id=\"ovb-quiz-header\">\n    <h1 id=\"ovb-title\">French Level Test<\/h1>\n    <p id=\"ovb-subtitle\">30 questions \u00b7 A1 to C2 \u00b7 5 minutes<\/p>\n  <\/div>\n\n  <!-- Barre de progression -->\n  <div id=\"ovb-progress-wrap\">\n    <div id=\"ovb-progress-label\">\n      <span id=\"ovb-progress-text\">Question 1 \/ 30<\/span>\n      <span id=\"ovb-level-info\">Level A1<\/span>\n    <\/div>\n    <div id=\"ovb-progress-bar-bg\">\n      <div id=\"ovb-progress-bar\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Question -->\n  <div id=\"ovb-quiz-body\">\n    <div id=\"ovb-level-badge\">A1<\/div>\n    <div id=\"ovb-question-text\"><\/div>\n    <div id=\"ovb-options\"><\/div>\n    <div id=\"ovb-explanation\"><\/div>\n    <button id=\"ovb-next-btn\" onclick=\"ovbNext()\">Next \u2192<\/button>\n  <\/div>\n\n  <!-- R\u00e9sultat -->\n  <div id=\"ovb-result\">\n    <div id=\"ovb-result-emoji\">\ud83c\uddeb\ud83c\uddf7<\/div>\n    <div id=\"ovb-result-level\"><\/div>\n    <div id=\"ovb-result-score\"><\/div>\n    <div id=\"ovb-score-visual\"><\/div>\n    <div id=\"ovb-result-desc\"><\/div>\n    <a id=\"ovb-result-cta\" href=\"#\">Discover your course \u2192<\/a>\n    <button id=\"ovb-retry-btn\" onclick=\"ovbRetry()\">Retake the test<\/button>\n  <\/div>\n\n<\/div>\n\n<script>\n(function() {\n\n  \/* Questions et r\u00e9sultats int\u00e9gr\u00e9s directement *\/\n  var QUESTIONS = [\n    { level:\"A1\", q_en:\"How do you say 'Good morning' in French?\", q_de:\"Wie sagt man 'Guten Morgen' auf Franz\u00f6sisch?\", options:[\"Bonjour\",\"Bonsoir\",\"Bonne nuit\",\"Au revoir\"], correct:0, explanation_en:\"'Bonjour' means 'Good morning' or 'Hello' in French.\", explanation_de:\"'Bonjour' bedeutet 'Guten Morgen' oder 'Hallo' auf Franz\u00f6sisch.\" },\n    { level:\"A1\", q_en:\"Complete: 'Je ___ fran\u00e7ais.'\", q_de:\"Erg\u00e4nzen Sie: 'Je ___ fran\u00e7ais.'\", options:[\"parles\",\"parle\",\"parlons\",\"parlez\"], correct:1, explanation_en:\"With 'je', the verb 'parler' takes the ending '-e': je parle.\", explanation_de:\"Mit 'je' endet das Verb 'parler' auf '-e': je parle.\" },\n    { level:\"A1\", q_en:\"Which article goes with 'livre' (book)?\", q_de:\"Welcher Artikel geh\u00f6rt zu 'livre' (Buch)?\", options:[\"le\",\"la\",\"les\",\"une\"], correct:0, explanation_en:\"'Livre' is masculine, so the correct article is 'le'.\", explanation_de:\"'Livre' ist m\u00e4nnlich, daher lautet der Artikel 'le'.\" },\n    { level:\"A1\", q_en:\"How do you say 'I have a cat' in French?\", q_de:\"Wie sagt man 'Ich habe eine Katze' auf Franz\u00f6sisch?\", options:[\"J'ai un chat.\",\"Je suis un chat.\",\"J'ai une chat.\",\"Il a un chat.\"], correct:0, explanation_en:\"'J'ai' means 'I have'. 'Chat' (cat) is masculine: 'un chat'.\", explanation_de:\"'J'ai' bedeutet 'Ich habe'. 'Chat' ist m\u00e4nnlich: 'un chat'.\" },\n    { level:\"A1\", q_en:\"What does 'Merci beaucoup' mean?\", q_de:\"Was bedeutet 'Merci beaucoup'?\", options_en:[\"Good evening\",\"Excuse me\",\"See you soon\",\"Thank you very much\"], options_de:[\"Guten Abend\",\"Entschuldigung\",\"Bis bald\",\"Vielen Dank\"], correct:3, explanation_en:\"'Merci beaucoup' means 'Thank you very much'.\", explanation_de:\"'Merci beaucoup' bedeutet 'Vielen Dank'.\" },\n    { level:\"A2\", q_en:\"Which sentence is correct?\", q_de:\"Welcher Satz ist korrekt?\", options:[\"Hier, je mange une pizza.\",\"Hier, j'ai mang\u00e9 une pizza.\",\"Hier, je mangeais une pizza.\",\"Hier, je mangerais une pizza.\"], correct:1, explanation_en:\"For a completed past action, use pass\u00e9 compos\u00e9: 'j'ai mang\u00e9'.\", explanation_de:\"F\u00fcr eine abgeschlossene Vergangenheitshandlung: pass\u00e9 compos\u00e9 'j'ai mang\u00e9'.\" },\n    { level:\"A2\", q_en:\"What is the plural of 'un cheval'?\", q_de:\"Was ist der Plural von 'un cheval'?\", options:[\"des chevals\",\"des chevaux\",\"des chevales\",\"des ch\u00e9vaux\"], correct:1, explanation_en:\"'Cheval' has an irregular plural: 'chevaux'.\", explanation_de:\"'Cheval' hat einen unregelm\u00e4\u00dfigen Plural: 'chevaux'.\" },\n    { level:\"A2\", q_en:\"Choose the correct preposition: 'Je vais ___ Paris.'\", q_de:\"Richtige Pr\u00e4position: 'Je vais ___ Paris.'\", options:[\"\u00e0\",\"en\",\"au\",\"dans\"], correct:0, explanation_en:\"With cities, use '\u00e0': 'Je vais \u00e0 Paris'.\", explanation_de:\"Bei St\u00e4dten verwendet man '\u00e0': 'Je vais \u00e0 Paris'.\" },\n    { level:\"A2\", q_en:\"What does 'Qu'est-ce que tu fais ?' mean?\", q_de:\"Was bedeutet 'Qu'est-ce que tu fais ?'\", options_en:[\"Where are you going?\",\"How are you?\",\"What are you doing?\",\"What do you want?\"], options_de:[\"Wohin gehst du?\",\"Wie geht es dir?\",\"Was machst du?\",\"Was m\u00f6chtest du?\"], correct:2, explanation_en:\"'Qu'est-ce que tu fais ?' means 'What are you doing?'\", explanation_de:\"'Qu'est-ce que tu fais ?' bedeutet 'Was machst du?'\" },\n    { level:\"A2\", q_en:\"Complete: 'Elle est tr\u00e8s ___.' (smart \u2014 feminine)\", q_de:\"Erg\u00e4nzen Sie: 'Elle est tr\u00e8s ___.' (klug \u2014 weiblich)\", options:[\"intelligent\",\"intelligents\",\"intelligentes\",\"intelligente\"], correct:3, explanation_en:\"Feminine adjective: 'intelligente'.\", explanation_de:\"Weibliches Adjektiv: 'intelligente'.\" },\n    { level:\"B1\", q_en:\"Which uses the subjunctive correctly?\", q_de:\"Welcher Satz verwendet den Konjunktiv korrekt?\", options:[\"Il faut que tu viens.\",\"Il faut que tu viennes.\",\"Il faut que tu vendrais.\",\"Il faut que tu es venu.\"], correct:1, explanation_en:\"'Il faut que' requires the subjunctive: 'viennes'.\", explanation_de:\"'Il faut que' erfordert den Konjunktiv: 'viennes'.\" },\n    { level:\"B1\", q_en:\"Complete: 'Si j'avais de l'argent, je ___ un voyage.'\", q_de:\"Erg\u00e4nzen Sie: 'Si j'avais de l'argent, je ___ un voyage.'\", options:[\"ferais\",\"fais\",\"ferai\",\"fasse\"], correct:0, explanation_en:\"Si + imparfait \u2192 conditional: 'ferais'.\", explanation_de:\"Si + Imperfekt \u2192 Konditional: 'ferais'.\" },\n    { level:\"B1\", q_en:\"What does 'n\u00e9anmoins' mean?\", q_de:\"Was bedeutet 'n\u00e9anmoins'?\", options_en:[\"Therefore\",\"Moreover\",\"Nevertheless\",\"Although\"], options_de:[\"Deshalb\",\"Au\u00dferdem\",\"Dennoch\",\"Obwohl\"], correct:2, explanation_en:\"'N\u00e9anmoins' means 'nevertheless'.\", explanation_de:\"'N\u00e9anmoins' bedeutet 'dennoch'.\" },\n    { level:\"B1\", q_en:\"Which pronoun replaces '\u00e0 Marie' in 'Je parle \u00e0 Marie'?\", q_de:\"Welches Pronomen ersetzt '\u00e0 Marie' in 'Je parle \u00e0 Marie'?\", options_en:[\"la\",\"elle\",\"lui\",\"y\"], options_de:[\"la\",\"elle\",\"lui\",\"y\"], correct:2, explanation_en:\"Indirect pronoun for people: 'lui'. 'Je lui parle.'\", explanation_de:\"Indirektes Pronomen f\u00fcr Personen: 'lui'. 'Je lui parle.'\" },\n    { level:\"B1\", q_en:\"Choose the relative pronoun: 'Le livre ___ j'ai lu \u00e9tait passionnant.'\", q_de:\"Relativpronomen: 'Le livre ___ j'ai lu \u00e9tait passionnant.'\", options:[\"qui\",\"dont\",\"o\u00f9\",\"que\"], correct:3, explanation_en:\"'Que' = direct object relative pronoun.\", explanation_de:\"'Que' = direktes Objektrelativpronomen.\" },\n    { level:\"B2\", q_en:\"What is the meaning of 'nonobstant'?\", q_de:\"Was bedeutet 'nonobstant'?\", options_en:[\"Therefore\",\"Consequently\",\"Meanwhile\",\"Notwithstanding\"], options_de:[\"Deshalb\",\"Folglich\",\"Unterdessen\",\"Ungeachtet dessen\"], correct:3, explanation_en:\"'Nonobstant' means 'notwithstanding' or 'despite'.\", explanation_de:\"'Nonobstant' bedeutet 'ungeachtet' oder 'trotz'.\" },\n    { level:\"B2\", q_en:\"Which uses plus-que-parfait correctly?\", q_de:\"Welcher Satz verwendet das Plus-que-parfait korrekt?\", options:[\"Quand il est arriv\u00e9, j'\u00e9tais d\u00e9j\u00e0 parti.\",\"Quand il est arriv\u00e9, je partais.\",\"Quand il est arriv\u00e9, j'avais d\u00e9j\u00e0 parti.\",\"Quand il arrivait, je suis parti.\"], correct:0, explanation_en:\"Plus-que-parfait with 'partir' uses \u00eatre: 'j'\u00e9tais d\u00e9j\u00e0 parti'.\", explanation_de:\"Plus-que-parfait mit 'partir' verwendet \u00eatre: 'j'\u00e9tais d\u00e9j\u00e0 parti'.\" },\n    { level:\"B2\", q_en:\"What is the passive form of 'Le chef a pr\u00e9par\u00e9 le repas'?\", q_de:\"Passivform von 'Le chef a pr\u00e9par\u00e9 le repas'?\", options:[\"Le repas a pr\u00e9par\u00e9 par le chef.\",\"Le repas a \u00e9t\u00e9 pr\u00e9par\u00e9 par le chef.\",\"Le repas \u00e9tait pr\u00e9par\u00e9 par le chef.\",\"Le repas a \u00e9t\u00e9 pr\u00e9par\u00e9 du chef.\"], correct:1, explanation_en:\"Passive: \u00eatre + past participle + par.\", explanation_de:\"Passiv: \u00eatre + Partizip Perfekt + par.\" },\n    { level:\"B2\", q_en:\"Figure of speech in: 'Le temps est un voleur.'\", q_de:\"Stilfigur in: 'Le temps est un voleur.'\", options_en:[\"M\u00e9taphore\",\"M\u00e9tonymie\",\"Comparaison\",\"Hyperbole\"], options_de:[\"Metapher\",\"Metonymie\",\"Vergleich\",\"Hyperbel\"], correct:0, explanation_en:\"Metaphor: direct comparison without 'like'.\", explanation_de:\"Metapher: direkter Vergleich ohne 'wie'.\" },\n    { level:\"B2\", q_en:\"Correct construction: 'Elle m'a demand\u00e9 ___ venir.'\", q_de:\"Richtige Konstruktion: 'Elle m'a demand\u00e9 ___ venir.'\", options:[\"\u00e0\",\"pour\",\"que\",\"de\"], correct:3, explanation_en:\"'Demander \u00e0 qqn de faire qqch': 'de venir'.\", explanation_de:\"'Demander \u00e0 qqn de faire qqch': 'de venir'.\" },\n    { level:\"C1\", q_en:\"What does 'ostensiblement' mean?\", q_de:\"Was bedeutet 'ostensiblement'?\", options_en:[\"Secretly\",\"Conspicuously\",\"Reluctantly\",\"Unexpectedly\"], options_de:[\"Im Verborgenen\",\"Auff\u00e4llig\",\"Widerwillig\",\"Unerwartet\"], correct:1, explanation_en:\"'Ostensiblement' means 'conspicuously'.\", explanation_de:\"'Ostensiblement' bedeutet 'auff\u00e4llig'.\" },\n    { level:\"C1\", q_en:\"Correct subjonctif pass\u00e9: 'Je doute qu'il ___ r\u00e9ussi.'\", q_de:\"Richtiger subjonctif pass\u00e9: 'Je doute qu'il ___ r\u00e9ussi.'\", options:[\"a\",\"aurait\",\"ait\",\"avait\"], correct:2, explanation_en:\"After 'douter que': subjunctive. Past: 'ait r\u00e9ussi'.\", explanation_de:\"Nach 'douter que': Konjunktiv. Vergangenheit: 'ait r\u00e9ussi'.\" },\n    { level:\"C1\", q_en:\"Figure of speech in: 'Cette victoire est une d\u00e9faite.'\", q_de:\"Stilfigur in: 'Cette victoire est une d\u00e9faite.'\", options_en:[\"Litote\",\"Antiphrase\",\"P\u00e9riphrase\",\"Oxymore\"], options_de:[\"Litotes\",\"Antiphrasis\",\"Periphrase\",\"Oxymoron\"], correct:3, explanation_en:\"Oxymoron: contradictory terms combined.\", explanation_de:\"Oxymoron: widerspr\u00fcchliche Begriffe kombiniert.\" },\n    { level:\"C1\", q_en:\"What does 'circonvenir' mean?\", q_de:\"Was bedeutet 'circonvenir'?\", options_en:[\"To surround physically\",\"To manipulate someone\",\"To understand fully\",\"To contradict firmly\"], options_de:[\"Jemanden physisch umzingeln\",\"Jemanden manipulieren\",\"Vollst\u00e4ndig verstehen\",\"Entschieden widersprechen\"], correct:1, explanation_en:\"'Circonvenir' = to manipulate through cunning.\", explanation_de:\"'Circonvenir' = jemanden durch List manipulieren.\" },\n    { level:\"C1\", q_en:\"Complete: 'E\u00fbt-il su la v\u00e9rit\u00e9, il ___ autrement.'\", q_de:\"Erg\u00e4nzen Sie: 'E\u00fbt-il su la v\u00e9rit\u00e9, il ___ autrement.'\", options:[\"agirait\",\"agisse\",\"aurait agi\",\"e\u00fbt agi\"], correct:2, explanation_en:\"Literary conditional: conditionnel pass\u00e9 'aurait agi'.\", explanation_de:\"Literarischer Konditional: conditionnel pass\u00e9 'aurait agi'.\" },\n    { level:\"C2\", q_en:\"What does 'atermoiements' mean?\", q_de:\"Was bedeutet 'atermoiements'?\", options_en:[\"Sudden decisions\",\"Procrastinations or delays\",\"Violent arguments\",\"Secret agreements\"], options_de:[\"Pl\u00f6tzliche Entscheidungen\",\"Aufsch\u00fcbe oder Verz\u00f6gerungen\",\"Heftige Streitigkeiten\",\"Geheime Vereinbarungen\"], correct:1, explanation_en:\"'Atermoiements' = repeated delays or procrastinations.\", explanation_de:\"'Atermoiements' = wiederholte Verz\u00f6gerungen.\" },\n    { level:\"C2\", q_en:\"Figure of speech in: 'Je soussign\u00e9 d\u00e9clare n'avoir rien \u00e0 d\u00e9clarer.'\", q_de:\"Stilfigur in: 'Je soussign\u00e9 d\u00e9clare n'avoir rien \u00e0 d\u00e9clarer.'\", options:[\"Antanaclase\",\"Tautologie\",\"Syllepse\",\"Zeugme\"], correct:0, explanation_en:\"Antanaclase: same word with different meanings.\", explanation_de:\"Antanaklase: dasselbe Wort mit unterschiedlichen Bedeutungen.\" },\n    { level:\"C2\", q_en:\"Subjonctif imparfait of '\u00eatre' for 'il'?\", q_de:\"Subjonctif imparfait von '\u00eatre' f\u00fcr 'il'?\", options:[\"soit\",\"\u00e9tait\",\"f\u00fbt\",\"serait\"], correct:2, explanation_en:\"Literary imparfait du subjonctif of '\u00eatre': 'f\u00fbt'.\", explanation_de:\"Literarischer Subjonctif imparfait von '\u00eatre': 'f\u00fbt'.\" },\n    { level:\"C2\", q_en:\"What is a 'zeugme'?\", q_de:\"Was ist ein 'zeugme'?\", options_en:[\"Repetition of sound\",\"Figure linking two elements with one verb applying to only one\",\"Excessive exaggeration\",\"Comparison without 'like'\"], options_de:[\"Wiederholung eines Lautes\",\"Figur, die zwei Elemente mit einem Verb verbindet, das nur auf eines zutrifft\",\"\u00dcbertriebene \u00dcbertreibung\",\"Vergleich ohne 'wie'\"], correct:1, explanation_en:\"Zeugma links two elements with one verb (literal + figurative).\", explanation_de:\"Zeugma verbindet zwei Elemente mit einem Verb (w\u00f6rtlich + \u00fcbertragen).\" },\n    { level:\"C2\", q_en:\"Synonym for 'tergiverser':\", q_de:\"Synonym f\u00fcr 'tergiverser':\", options:[\"Mentir effront\u00e9ment\",\"Contredire violemment\",\"Atermoyer sans cesse\",\"Affirmer solennellement\"], correct:2, explanation_en:\"'Tergiverser' = to procrastinate, close to 'atermoyer'.\", explanation_de:\"'Tergiverser' = z\u00f6gern, \u00e4hnlich wie 'atermoyer'.\" }\n  ];\n\n  var RESULTS = {\n    A1: { en: { title:\"Level A1 \u2014 Beginner\", desc:\"You're just starting your French journey. Our A1 Starter Pack is perfect for you.\", cta:\"Discover the A1 Starter Pack \u2192\", url:\"\/courses\/a1\/\" },\n          de: { title:\"Niveau A1 \u2014 Anf\u00e4nger\", desc:\"Sie beginnen gerade Ihre Franz\u00f6sisch-Reise. Unser A1 Starter-Paket ist ideal f\u00fcr Sie.\", cta:\"A1 Starter-Paket entdecken \u2192\", url:\"\/courses\/a1\/\" } },\n    A2: { en: { title:\"Level A2 \u2014 Elementary\", desc:\"You have the basics! Our A2 course will help you express yourself in everyday situations.\", cta:\"Discover the A2 Course \u2192\", url:\"\/courses\/a2\/\" },\n          de: { title:\"Niveau A2 \u2014 Grundkenntnisse\", desc:\"Sie beherrschen die Grundlagen! Unser A2-Kurs hilft Ihnen, sich sicher auszudr\u00fccken.\", cta:\"A2-Kurs entdecken \u2192\", url:\"\/courses\/a2\/\" } },\n    B1: { en: { title:\"Level B1 \u2014 Intermediate\", desc:\"You can handle most situations! Our B1 course will sharpen your fluency.\", cta:\"Discover the B1 Course \u2192\", url:\"\/courses\/b1\/\" },\n          de: { title:\"Niveau B1 \u2014 Mittelstufe\", desc:\"Sie meistern die meisten Situationen! Unser B1-Kurs verbessert Ihre Sprachfl\u00fcssigkeit.\", cta:\"B1-Kurs entdecken \u2192\", url:\"\/courses\/b1\/\" } },\n    B2: { en: { title:\"Level B2 \u2014 Upper Intermediate\", desc:\"Impressive! Our B2 course covers complex grammar and nuanced expression.\", cta:\"Discover the B2 Course \u2192\", url:\"\/courses\/b2\/\" },\n          de: { title:\"Niveau B2 \u2014 Obere Mittelstufe\", desc:\"Beeindruckend! Unser B2-Kurs behandelt komplexe Grammatik und nuancierte Ausdrucksweise.\", cta:\"B2-Kurs entdecken \u2192\", url:\"\/courses\/b2\/\" } },\n    C1: { en: { title:\"Level C1 \u2014 Advanced\", desc:\"Excellent! Our C1 Workshop explores literature and advanced writing for near-native fluency.\", cta:\"Discover the C1 Workshop \u2192\", url:\"\/courses\/c1\/\" },\n          de: { title:\"Niveau C1 \u2014 Fortgeschritten\", desc:\"Ausgezeichnet! Unser C1-Workshop erkundet Literatur und fortgeschrittenes Schreiben.\", cta:\"C1-Workshop entdecken \u2192\", url:\"\/courses\/c1\/\" } },\n    C2: { en: { title:\"Level C2 \u2014 Mastery\", desc:\"F\u00e9licitations ! You have near-native mastery of French. Explore our advanced resources.\", cta:\"Discover C2 Resources \u2192\", url:\"\/courses\/c2\/\" },\n          de: { title:\"Niveau C2 \u2014 Meisterschaft\", desc:\"F\u00e9licitations ! Sie beherrschen Franz\u00f6sisch auf muttersprachlichem Niveau.\", cta:\"C2-Ressourcen entdecken \u2192\", url:\"\/courses\/c2\/\" } }\n  };\n\n  var lang = (navigator.language || 'en').toLowerCase().startsWith('de') ? 'de' : 'en';\n  var current = 0;\n  var scores = {};\n  var answers = [];\n\n  function ovbSetLang(l) {\n    lang = l;\n    document.querySelectorAll('.ovb-lang-btn').forEach(function(b) {\n      b.classList.toggle('active', b.textContent === l.toUpperCase());\n    });\n    document.getElementById('ovb-title').textContent = lang === 'de' ? 'Franz\u00f6sisch-Einstufungstest' : 'French Level Test';\n    document.getElementById('ovb-subtitle').textContent = lang === 'de' ? '30 Fragen \u00b7 A1 bis C2 \u00b7 5 Minuten' : '30 questions \u00b7 A1 to C2 \u00b7 5 minutes';\n    renderQuestion();\n  }\n  window.ovbSetLang = ovbSetLang;\n\n  function renderQuestion() {\n    var q = QUESTIONS[current];\n    document.getElementById('ovb-level-badge').textContent = q.level;\n    document.getElementById('ovb-question-text').textContent = lang === 'de' ? q.q_de : q.q_en;\n    document.getElementById('ovb-progress-text').textContent = (lang === 'de' ? 'Frage ' : 'Question ') + (current+1) + ' \/ 30';\n    document.getElementById('ovb-level-info').textContent = (lang === 'de' ? 'Niveau ' : 'Level ') + q.level;\n    document.getElementById('ovb-progress-bar').style.width = ((current \/ 30) * 100) + '%';\n    document.getElementById('ovb-explanation').style.display = 'none';\n    document.getElementById('ovb-next-btn').style.display = 'none';\n\n    var opts = document.getElementById('ovb-options');\n    opts.innerHTML = '';\n    var opts_list = (lang === 'de' && q.options_de) ? q.options_de : (q.options_en || q.options);\n    opts_list.forEach(function(opt, i) {\n      var btn = document.createElement('button');\n      btn.className = 'ovb-option';\n      btn.textContent = opt;\n      btn.addEventListener('click', function() { selectAnswer(i); });\n      opts.appendChild(btn);\n    });\n  }\n\n  function selectAnswer(i) {\n    var q = QUESTIONS[current];\n    var btns = document.querySelectorAll('.ovb-option');\n    btns.forEach(function(b) { b.classList.add('disabled'); b.onclick = null; });\n    btns[q.correct].classList.add('correct');\n    var correct = (i === q.correct);\n    if (!correct) btns[i].classList.add('wrong');\n    answers.push(correct);\n    if (!scores[q.level]) scores[q.level] = { correct: 0, total: 0 };\n    scores[q.level].total++;\n    if (correct) scores[q.level].correct++;\n\n    var expl = document.getElementById('ovb-explanation');\n    expl.textContent = lang === 'de' ? q.explanation_de : q.explanation_en;\n    expl.style.display = 'block';\n    document.getElementById('ovb-next-btn').style.display = 'inline-block';\n\n    \/* V\u00e9rifier si on doit arr\u00eater apr\u00e8s ce niveau (5 questions = fin du niveau) *\/\n    var isLastOfLevel = (scores[q.level].total === 5);\n    var levelFailed = isLastOfLevel && scores[q.level].correct < 3;\n    var isLastQuestion = (current === 29);\n\n    if (levelFailed) {\n      document.getElementById('ovb-next-btn').textContent = lang === 'de'\n        ? 'Ergebnis anzeigen \u2192' : 'See my result \u2192';\n      document.getElementById('ovb-next-btn').setAttribute('data-stop', '1');\n    } else {\n      document.getElementById('ovb-next-btn').textContent = isLastQuestion\n        ? (lang === 'de' ? 'Ergebnis anzeigen \u2192' : 'See my result \u2192')\n        : (lang === 'de' ? 'Weiter \u2192' : 'Next \u2192');\n      document.getElementById('ovb-next-btn').removeAttribute('data-stop');\n    }\n  }\n\n  function ovbNext() {\n    var btn = document.getElementById('ovb-next-btn');\n    var stop = btn.getAttribute('data-stop') === '1';\n    current++;\n    if (stop || current >= 30) {\n      showResult();\n    } else {\n      renderQuestion();\n    }\n  }\n  window.ovbNext = ovbNext;\n\n  function showResult() {\n    document.getElementById('ovb-quiz-body').style.display = 'none';\n    document.getElementById('ovb-progress-wrap').style.display = 'none';\n    document.getElementById('ovb-quiz-header').style.display = 'none';\n\n    var levels = ['A1','A2','B1','B2','C1','C2'];\n    var determinedLevel = 'A1';\n    levels.forEach(function(lv) {\n      if (scores[lv] && scores[lv].correct >= 3) determinedLevel = lv;\n    });\n\n    var total = answers.filter(Boolean).length;\n    var res = RESULTS[determinedLevel][lang];\n\n    document.getElementById('ovb-result-level').textContent = res.title;\n    document.getElementById('ovb-result-score').textContent = total + ' \/ 30 ' + (lang === 'de' ? 'richtig' : 'correct');\n    document.getElementById('ovb-result-desc').textContent = res.desc;\n    var cta = document.getElementById('ovb-result-cta');\n    cta.textContent = res.cta;\n    cta.href = res.url;\n\n    var emoji = ['\ud83c\udf31','\ud83c\udf3f','\ud83d\udcd6','\ud83d\udcda','\ud83c\udf93','\ud83c\udfc6'];\n    document.getElementById('ovb-result-emoji').textContent = emoji[levels.indexOf(determinedLevel)];\n\n    var visual = document.getElementById('ovb-score-visual');\n    visual.innerHTML = '';\n    answers.forEach(function(a) {\n      var dot = document.createElement('div');\n      dot.className = 'ovb-score-dot ' + (a ? 'correct' : 'wrong');\n      visual.appendChild(dot);\n    });\n\n    document.getElementById('ovb-retry-btn').textContent = lang === 'de' ? 'Test wiederholen' : 'Retake the test';\n    document.getElementById('ovb-result').style.display = 'block';\n  }\n\n  function ovbRetry() {\n    current = 0; scores = {}; answers = [];\n    document.getElementById('ovb-result').style.display = 'none';\n    document.getElementById('ovb-quiz-body').style.display = 'block';\n    document.getElementById('ovb-progress-wrap').style.display = 'block';\n    document.getElementById('ovb-quiz-header').style.display = 'block';\n    renderQuestion();\n  }\n  window.ovbRetry = ovbRetry;\n\n  \/* Init *\/\n  ovbSetLang(lang);\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>EN DE French Level Test 30 questions \u00b7 A1 to C2 \u00b7 5 minutes Question 1 \/ 30 Level A1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1506","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/pages\/1506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/comments?post=1506"}],"version-history":[{"count":10,"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/pages\/1506\/revisions"}],"predecessor-version":[{"id":1938,"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/pages\/1506\/revisions\/1938"}],"wp:attachment":[{"href":"https:\/\/ouivinvin.com\/en\/wp-json\/wp\/v2\/media?parent=1506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}