fix(glossaries): source language combobox was a lie — replace with fixed FR label
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m32s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m32s
Les templates data/glossaires/*.json ne stockent les termes sources qu'en francais. Le combobox 'Langue source' laissait l'utilisateur croire qu'il pouvait traduire depuis une autre langue, mais le backend renverrait toujours des termes en francais. Fix : remplacer le select par un label fixe 'Francais' avec un badge 'fixe' et une note explicative indiquant que le multilingue source est sur la roadmap. Le select 'Langue cible' reste : il determine quelle traduction du terme est affichee dans la colonne 'Cible' (FR+10 langues via le champ translations).
This commit is contained in:
@@ -363,18 +363,17 @@ export default function GlossaryDetailPage() {
|
||||
<label className="text-[10px] font-bold uppercase tracking-widest text-brand-dark/50 dark:text-white/50 mb-1.5 block">
|
||||
{t('glossaries.detail.sourceLang') || 'Langue source'}
|
||||
</label>
|
||||
<select
|
||||
value={sourceLanguage}
|
||||
onChange={(e) => setSourceLanguage(e.target.value)}
|
||||
disabled={isUpdating}
|
||||
className="w-full h-10 rounded-lg border border-input bg-background px-3 text-sm focus:outline-none focus:ring-2 focus:ring-brand-accent/20"
|
||||
>
|
||||
{SUPPORTED_LANGUAGES.filter((l) => l.code !== 'multi').map((l) => (
|
||||
<option key={l.code} value={l.code}>
|
||||
{l.flag} {l.label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<div className="h-10 rounded-lg border border-input bg-muted/40 px-3 flex items-center gap-2 text-sm text-brand-dark/70 dark:text-white/70">
|
||||
<span className="text-base leading-none">🇫🇷</span>
|
||||
<span>Français</span>
|
||||
<span className="ml-auto text-[10px] text-brand-dark/40 dark:text-white/40 uppercase tracking-wider font-medium">
|
||||
{t('glossaries.detail.sourceLocked') || 'fixé'}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-[10px] text-brand-dark/40 dark:text-white/40 font-light mt-1.5">
|
||||
{t('glossaries.detail.sourceLockedNote') ||
|
||||
'Les templates ne stockent la source qu\'en français. Le multilingue source est sur la roadmap.'}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-[10px] font-bold uppercase tracking-widest text-brand-dark/50 dark:text-white/50 mb-1.5 block">
|
||||
@@ -392,6 +391,10 @@ export default function GlossaryDetailPage() {
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<p className="text-[10px] text-brand-dark/40 dark:text-white/40 font-light mt-1.5">
|
||||
{t('glossaries.detail.targetLangNote') ||
|
||||
'Choisissez une langue pour voir les traductions correspondantes, ou « Multilingue » pour la valeur par défaut.'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -438,6 +438,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -1422,6 +1425,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirmer la suppression ?",
|
||||
"glossaries.detail.confirm": "Confirmer",
|
||||
"glossaries.detail.cancel": "Annuler",
|
||||
"glossaries.detail.sourceLocked": "fixé",
|
||||
"glossaries.detail.sourceLockedNote": "Les templates ne stockent la source qu'en français. Le multilingue source est sur la roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Choisissez une langue pour voir les traductions correspondantes, ou « Multilingue » pour la valeur par défaut.",
|
||||
"glossaries.detail.notFoundTitle": "Glossaire introuvable",
|
||||
"glossaries.detail.notFoundDesc": "Ce glossaire n'existe pas ou vous n'y avez pas accès.",
|
||||
"glossaries.detail.maxTermsTitle": "Limite atteinte",
|
||||
@@ -2392,6 +2398,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -3317,6 +3326,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -4242,6 +4254,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -5167,6 +5182,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -6092,6 +6110,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -7017,6 +7038,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -7944,6 +7968,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -8868,6 +8895,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -9792,6 +9822,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -10674,6 +10707,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
@@ -11565,6 +11601,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||
"glossaries.detail.confirm": "Confirm",
|
||||
"glossaries.detail.cancel": "Cancel",
|
||||
"glossaries.detail.sourceLocked": "fixed",
|
||||
"glossaries.detail.sourceLockedNote": "Templates only store the source in French. Multilingual source is on the roadmap.",
|
||||
"glossaries.detail.targetLangNote": "Pick a language to see the matching translations, or « Multilingual » for the default value.",
|
||||
"glossaries.detail.notFoundTitle": "Glossary not found",
|
||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||
|
||||
Reference in New Issue
Block a user