fix(extension): corriger les traductions 'clip' et améliorer le diagnostic 401
Traductions: - 'Tondeuse Web' (FR), 'Cortadora web' (ES), 'Schneiden Sie aus' (DE), 'ritagliare' (IT) etc. — le terme 'clip' était traduit littéralement (tondeuse = mower, ausschneiden = cut out, ritagliare = trim). - Garder 'clip' comme terme technique dans les 15 locales, sauf les formulations verbe qui prennent une conjugaison locale correcte. - 87 chaînes corrigées dans le bundle de traductions embarqué. Diagnostic 401: - Le message 'Veuillez vous connecter à Memento' s'affichait même quand l'utilisateur était connecté, simplement sur une URL différente (localhost vs 127.0.0.1 vs LAN IP — les cookies sont scopés par host). - Nouveau message multi-ligne incluant l'URL configurée + bouton 'Ouvrir Memento' qui ouvre l'onglet directement à cette URL. - Nouvelle clé i18n errLoginHintUrl (placeholder $URL$) traduite dans les 15 locales. Rebuilt : - memento-web-clipper-chrome-store.zip (44 Ko) - memento-web-clipper-firefox.xpi (44 Ko)
This commit is contained in:
@@ -252,6 +252,9 @@ function bindIdleHandlers() {
|
||||
document.getElementById('clipSelBtn')?.addEventListener('click', () => void runAnalyze('selection'))
|
||||
document.getElementById('clipPageBtn')?.addEventListener('click', () => void runAnalyze('page'))
|
||||
document.getElementById('clipLinkBtn')?.addEventListener('click', () => void runAnalyze('link'))
|
||||
document.getElementById('openLoginFromHint')?.addEventListener('click', () => {
|
||||
chrome.tabs.create({ url: apiBase() })
|
||||
})
|
||||
|
||||
// Gérer l'erreur de chargement du favicon
|
||||
document.querySelector('.page-favicon')?.addEventListener('error', function() {
|
||||
@@ -363,12 +366,15 @@ async function loadSettings() {
|
||||
async function loadNotebooks(preferredId) {
|
||||
try {
|
||||
await ensureApiPermission()
|
||||
const res = await fetch(`${apiBase()}/api/clip/notebooks`, { credentials: 'include' })
|
||||
const url = `${apiBase()}/api/clip/notebooks`
|
||||
const res = await fetch(url, { credentials: 'include' })
|
||||
if (!res.ok) {
|
||||
connected = false
|
||||
updateConnBadge()
|
||||
if (res.status === 401) {
|
||||
throw new Error(t('errLoginRequired'))
|
||||
// Diagnostic : préciser l'URL configurée pour aider l'utilisateur à
|
||||
// diagnostiquer un mismatch (localhost vs 127.0.0.1 vs LAN IP).
|
||||
throw new Error(`${t('errLoginRequired')}\n${t('errLoginHintUrl', apiBase())}`)
|
||||
}
|
||||
throw new Error(t('errLoadNotebooks'))
|
||||
}
|
||||
@@ -409,7 +415,11 @@ function renderIdle() {
|
||||
|
||||
const authHint =
|
||||
!connected && errorMessage
|
||||
? `<div class="auth-hint">${escapeHtml(errorMessage)}</div>`
|
||||
? `<div class="auth-hint">${escapeHtml(errorMessage).replace(/\n/g, '<br/>')}
|
||||
<div style="margin-top:8px">
|
||||
<button type="button" class="btn btn-secondary btn-sm" id="openLoginFromHint">${escapeHtml(t('openMomento'))}</button>
|
||||
</div>
|
||||
</div>`
|
||||
: ''
|
||||
|
||||
els.screen.innerHTML = `
|
||||
|
||||
Reference in New Issue
Block a user