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">
|
<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'}
|
{t('glossaries.detail.sourceLang') || 'Langue source'}
|
||||||
</label>
|
</label>
|
||||||
<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">
|
||||||
value={sourceLanguage}
|
<span className="text-base leading-none">🇫🇷</span>
|
||||||
onChange={(e) => setSourceLanguage(e.target.value)}
|
<span>Français</span>
|
||||||
disabled={isUpdating}
|
<span className="ml-auto text-[10px] text-brand-dark/40 dark:text-white/40 uppercase tracking-wider font-medium">
|
||||||
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"
|
{t('glossaries.detail.sourceLocked') || 'fixé'}
|
||||||
>
|
</span>
|
||||||
{SUPPORTED_LANGUAGES.filter((l) => l.code !== 'multi').map((l) => (
|
</div>
|
||||||
<option key={l.code} value={l.code}>
|
<p className="text-[10px] text-brand-dark/40 dark:text-white/40 font-light mt-1.5">
|
||||||
{l.flag} {l.label}
|
{t('glossaries.detail.sourceLockedNote') ||
|
||||||
</option>
|
'Les templates ne stockent la source qu\'en français. Le multilingue source est sur la roadmap.'}
|
||||||
))}
|
</p>
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label className="text-[10px] font-bold uppercase tracking-widest text-brand-dark/50 dark:text-white/50 mb-1.5 block">
|
<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>
|
</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -438,6 +438,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -1422,6 +1425,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirmer la suppression ?",
|
"glossaries.detail.confirmDelete": "Confirmer la suppression ?",
|
||||||
"glossaries.detail.confirm": "Confirmer",
|
"glossaries.detail.confirm": "Confirmer",
|
||||||
"glossaries.detail.cancel": "Annuler",
|
"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.notFoundTitle": "Glossaire introuvable",
|
||||||
"glossaries.detail.notFoundDesc": "Ce glossaire n'existe pas ou vous n'y avez pas accès.",
|
"glossaries.detail.notFoundDesc": "Ce glossaire n'existe pas ou vous n'y avez pas accès.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limite atteinte",
|
"glossaries.detail.maxTermsTitle": "Limite atteinte",
|
||||||
@@ -2392,6 +2398,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -3317,6 +3326,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -4242,6 +4254,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -5167,6 +5182,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -6092,6 +6110,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -7017,6 +7038,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -7944,6 +7968,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -8868,6 +8895,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -9792,6 +9822,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -10674,6 +10707,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
@@ -11565,6 +11601,9 @@ const messages: Record<Locale, Record<string, string>> = {
|
|||||||
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
"glossaries.detail.confirmDelete": "Confirm deletion?",
|
||||||
"glossaries.detail.confirm": "Confirm",
|
"glossaries.detail.confirm": "Confirm",
|
||||||
"glossaries.detail.cancel": "Cancel",
|
"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.notFoundTitle": "Glossary not found",
|
||||||
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
"glossaries.detail.notFoundDesc": "This glossary does not exist or you don't have access to it.",
|
||||||
"glossaries.detail.maxTermsTitle": "Limit reached",
|
"glossaries.detail.maxTermsTitle": "Limit reached",
|
||||||
|
|||||||
Reference in New Issue
Block a user