Claude limit reached. WIP English copied text from JSON; translation to native language in progress

This commit is contained in:
Staninna committed 2025-08-28 00:25:51 +02:00
1 parent d2dab05389
commit c10a87dc74
13 files changed
+814 -84

No files matched your search

+54 -54
View File
@@ -871,7 +871,7 @@
if (source === 'turnstile-capture' && token) {
setTurnstileToken(token);
if (document.querySelector("#statusText")?.textContent.includes("CAPTCHA")) {
Utils.showAlert("Token captured successfully! You can start the bot now.", "success");
Utils.showAlert(Utils.t("tokenCapturedSuccess"), "success");
updateUI("colorsFound", "success", { count: state.availableColors.length });
}
}
@@ -991,7 +991,7 @@
`;
const title = document.createElement('div');
title.textContent = 'Cloudflare Turnstile — please complete the check if shown';
title.textContent = Utils.t('turnstileInstructions');
title.style.cssText = 'font: 600 12px/1.3 "Segoe UI",sans-serif; margin-bottom: 8px; opacity: 0.9;';
const host = document.createElement('div');
@@ -999,7 +999,7 @@
host.style.cssText = 'width: 100%; min-height: 70px;';
const hideBtn = document.createElement('button');
hideBtn.textContent = 'Hide';
hideBtn.textContent = Utils.t('hideTurnstileBtn');
hideBtn.style.cssText = 'position:absolute; top:6px; right:6px; font-size:11px; background:transparent; color:#fff; border:1px solid rgba(255,255,255,0.2); border-radius:6px; padding:2px 6px; cursor:pointer;';
hideBtn.addEventListener('click', () => overlay.remove());
@@ -2150,7 +2150,7 @@
},
async requestPermission() {
if (!("Notification" in window)) {
Utils.showAlert("Notifications are not supported in this browser.", "warning");
Utils.showAlert(Utils.t("notificationsNotSupported"), "warning");
return "denied";
}
if (Notification.permission === "granted") return "granted";
@@ -2198,8 +2198,8 @@
const shouldEdge = state._lastChargesBelow || force;
const shouldRepeat = now - (state._lastChargesNotifyAt || 0) >= repeatMs;
if (shouldEdge || shouldRepeat) {
const msg = `Charges ready: ${Math.floor(state.currentCharges)} / ${state.maxCharges}. Threshold: ${state.cooldownChargeThreshold}.`;
this.notify("WPlace — Charges Ready", msg, "wplace-notify-charges");
const msg = Utils.t("chargesReadyMessage", { current: Math.floor(state.currentCharges), max: state.maxCharges, threshold: state.cooldownChargeThreshold });
this.notify(Utils.t("chargesReadyNotification"), msg, "wplace-notify-charges");
state._lastChargesNotifyAt = now;
}
state._lastChargesBelow = false;
@@ -2336,7 +2336,7 @@
// Don't re-fetch colors here, use what was captured when user clicked upload
if (!state.availableColors || state.availableColors.length === 0) {
// If no colors have been captured yet, show message
colorsContainer.innerHTML = '<div style="text-align: center; color: #888; padding: 20px;">Upload an image first to capture available colors</div>';
colorsContainer.innerHTML = `<div style="text-align: center; color: #888; padding: 20px;">${Utils.t('uploadImageFirst')}</div>`;
return;
}
@@ -3729,10 +3729,10 @@
<button id="settingsBtn" class="wplace-header-btn" title="${Utils.t("settings")}">
<i class="fas fa-cog"></i>
</button>
<button id="statsBtn" class="wplace-header-btn" title="Show Stats">
<button id="statsBtn" class="wplace-header-btn" title="${Utils.t('showStats')}">
<i class="fas fa-chart-bar"></i>
</button>
<button id="compactBtn" class="wplace-header-btn" title="Compact Mode">
<button id="compactBtn" class="wplace-header-btn" title="${Utils.t('compactMode')}">
<i class="fas fa-compress"></i>
</button>
<button id="minimizeBtn" class="wplace-header-btn" title="${Utils.t("minimize")}">
@@ -3756,7 +3756,7 @@
<div class="wplace-section-title">🖼️ Image Management</div>
<div class="wplace-controls">
<div class="wplace-row">
<button id="uploadBtn" class="wplace-btn wplace-btn-upload" disabled title="🔄 Waiting for initial setup to complete...">
<button id="uploadBtn" class="wplace-btn wplace-btn-upload" disabled title="${Utils.t('waitingSetupComplete')}">
<i class="fas fa-upload"></i>
<span>${Utils.t("uploadImage")}</span>
</button>
@@ -3818,7 +3818,7 @@
<i class="fas fa-save"></i>
<span>${Utils.t("saveData")}</span>
</button>
<button id="loadBtn" class="wplace-btn wplace-btn-primary" disabled title="🔄 Waiting for token generator to initialize...">
<button id="loadBtn" class="wplace-btn wplace-btn-primary" disabled title="${Utils.t('waitingTokenGenerator')}">
<i class="fas fa-folder-open"></i>
<span>${Utils.t("loadData")}</span>
</button>
@@ -3828,7 +3828,7 @@
<i class="fas fa-download"></i>
<span>${Utils.t("saveToFile")}</span>
</button>
<button id="loadFromFileBtn" class="wplace-btn wplace-btn-file" disabled title="🔄 Waiting for token generator to initialize...">
<button id="loadFromFileBtn" class="wplace-btn wplace-btn-file" disabled title="${Utils.t('waitingTokenGenerator')}">
<i class="fas fa-upload"></i>
<span>${Utils.t("loadFromFile")}</span>
</button>
@@ -3846,13 +3846,13 @@
<div class="wplace-header">
<div class="wplace-header-title">
<i class="fas fa-chart-bar"></i>
<span>Painting Stats</span>
<span>${Utils.t('paintingStats')}</span>
</div>
<div class="wplace-header-controls">
<button id="refreshChargesBtn" class="wplace-header-btn" title="Refresh Charges">
<button id="refreshChargesBtn" class="wplace-header-btn" title="${Utils.t('refreshCharges')}">
<i class="fas fa-sync"></i>
</button>
<button id="closeStatsBtn" class="wplace-header-btn" title="Close Stats">
<button id="closeStatsBtn" class="wplace-header-btn" title="${Utils.t('closeStats')}">
<i class="fas fa-times"></i>
</button>
</div>
@@ -4177,7 +4177,7 @@
<!-- Speed Control Toggle -->
<label style="display: flex; align-items: center; gap: 8px; color: white;">
<input type="checkbox" id="enableSpeedToggle" ${CONFIG.PAINTING_SPEED_ENABLED ? 'checked' : ''} style="cursor: pointer;"/>
<span>Enable painting speed limit (batch size control)</span>
<span>${Utils.t('enablePaintingSpeedLimit')}</span>
</label>
</div>
@@ -4189,25 +4189,25 @@
</label>
<div style="background: rgba(255,255,255,0.1); border-radius: 12px; padding: 18px; border: 1px solid rgba(255,255,255,0.1); display:flex; flex-direction:column; gap:10px;">
<label style="display:flex; align-items:center; justify-content:space-between;">
<span>Enable notifications</span>
<span>${Utils.t('enableNotifications')}</span>
<input type="checkbox" id="notifEnabledToggle" ${state.notificationsEnabled ? 'checked' : ''} style="width:18px; height:18px; cursor:pointer;" />
</label>
<label style="display:flex; align-items:center; justify-content:space-between;">
<span>Notify when charges reach threshold</span>
<span>${Utils.t('notifyOnChargesThreshold')}</span>
<input type="checkbox" id="notifOnChargesToggle" ${state.notifyOnChargesReached ? 'checked' : ''} style="width:18px; height:18px; cursor:pointer;" />
</label>
<label style="display:flex; align-items:center; justify-content:space-between;">
<span>Only when tab is not focused</span>
<span>${Utils.t('onlyWhenNotFocused')}</span>
<input type="checkbox" id="notifOnlyUnfocusedToggle" ${state.notifyOnlyWhenUnfocused ? 'checked' : ''} style="width:18px; height:18px; cursor:pointer;" />
</label>
<div style="display:flex; align-items:center; gap:10px;">
<span>Repeat every</span>
<span>${Utils.t('repeatEvery')}</span>
<input type="number" id="notifIntervalInput" min="1" max="60" value="${state.notificationIntervalMinutes}" style="width:70px; padding:6px 8px; border-radius:6px; border:1px solid rgba(255,255,255,0.2); background: rgba(255,255,255,0.08); color:#fff;" />
<span>minute(s)</span>
<span>${Utils.t('minutesPl')}</span>
</div>
<div style="display:flex; gap:10px;">
<button id="notifRequestPermBtn" class="wplace-btn wplace-btn-secondary" style="flex:1;"><i class="fas fa-unlock"></i><span>Grant Permission</span></button>
<button id="notifTestBtn" class="wplace-btn" style="flex:1;"><i class="fas fa-bell"></i><span>Test</span></button>
<button id="notifRequestPermBtn" class="wplace-btn wplace-btn-secondary" style="flex:1;"><i class="fas fa-unlock"></i><span>${Utils.t('grantPermission')}</span></button>
<button id="notifTestBtn" class="wplace-btn" style="flex:1;"><i class="fas fa-bell"></i><span>${Utils.t('test')}</span></button>
</div>
</div>
</div>
@@ -4404,12 +4404,12 @@
Paint White Pixels
</label>
<div class="resize-zoom-controls">
<button id="zoomOutBtn" class="wplace-btn" title="Zoom Out" style="padding:4px 8px;"><i class="fas fa-search-minus"></i></button>
<button id="zoomOutBtn" class="wplace-btn" title="${Utils.t('zoomOut')}" style="padding:4px 8px;"><i class="fas fa-search-minus"></i></button>
<input type="range" id="zoomSlider" class="resize-slider" min="0.1" max="20" value="1" step="0.05" style="max-width: 220px;">
<button id="zoomInBtn" class="wplace-btn" title="Zoom In" style="padding:4px 8px;"><i class="fas fa-search-plus"></i></button>
<button id="zoomFitBtn" class="wplace-btn" title="Fit to view" style="padding:4px 8px;">Fit</button>
<button id="zoomActualBtn" class="wplace-btn" title="Actual size (100%)" style="padding:4px 8px;">100%</button>
<button id="panModeBtn" class="wplace-btn" title="Pan (drag to move view)" style="padding:4px 8px;">
<button id="zoomInBtn" class="wplace-btn" title="${Utils.t('zoomIn')}" style="padding:4px 8px;"><i class="fas fa-search-plus"></i></button>
<button id="zoomFitBtn" class="wplace-btn" title="${Utils.t('fitToView')}" style="padding:4px 8px;">${Utils.t('fit')}</button>
<button id="zoomActualBtn" class="wplace-btn" title="${Utils.t('actualSize')}" style="padding:4px 8px;">${Utils.t('hundred')}</button>
<button id="panModeBtn" class="wplace-btn" title="${Utils.t('panMode')}" style="padding:4px 8px;">
<i class="fas fa-hand-paper"></i>
</button>
<span id="zoomValue" style="margin-left:6px; min-width:48px; text-align:right; opacity:.85; font-size:12px;">100%</span>
@@ -4453,9 +4453,9 @@
<button id="maskModeToggle" class="wplace-btn wplace-btn-primary" style="padding:4px 8px; font-size:12px;">Toggle</button>
</div>
</div>
<button id="clearIgnoredBtn" class="wplace-btn" title="Clear all ignored pixels" style="padding:4px 8px; font-size:12px;">Clear</button>
<button id="invertMaskBtn" class="wplace-btn" title="Invert mask" style="padding:4px 8px; font-size:12px;">Invert</button>
<span style="opacity:.8; font-size:12px;">Shift = Row • Alt = Column</span>
<button id="clearIgnoredBtn" class="wplace-btn" title="${Utils.t('clearIgnoredPixels')}" style="padding:4px 8px; font-size:12px;">${Utils.t('clear')}</button>
<button id="invertMaskBtn" class="wplace-btn" title="${Utils.t('invertMask')}" style="padding:4px 8px; font-size:12px;">${Utils.t('invert')}</button>
<span style="opacity:.8; font-size:12px;">${Utils.t('shiftRowAltColumn')}</span>
</div>
</div>
@@ -4467,7 +4467,7 @@
<div class="wplace-row single">
<label style="display: flex; align-items: center; gap: 8px; font-size: 12px;">
<input type="checkbox" id="showAllColorsToggle" style="cursor: pointer;">
<span>Show All Colors (including unavailable)</span>
<span>${Utils.t('showAllColorsIncluding')}</span>
</label>
</div>
<div class="wplace-row">
@@ -4499,7 +4499,7 @@
</label>
<div>
<div style="display:flex; justify-content:space-between; font-size:11px; margin-bottom:4px;">
<span>Chroma Weight</span>
<span>${Utils.t('chromaWeight')}</span>
<span id="chromaWeightValue" style="background:rgba(255,255,255,0.08); padding:2px 6px; border-radius:4px;">${state.chromaPenaltyWeight}</span>
</div>
<input type="range" id="chromaPenaltyWeightSlider" min="0" max="0.5" step="0.01" value="${state.chromaPenaltyWeight}" style="width:100%;" />
@@ -4528,15 +4528,15 @@
<div class="resize-buttons">
<button id="downloadPreviewBtn" class="wplace-btn wplace-btn-primary">
<i class="fas fa-download"></i>
<span>Download Preview</span>
<span>${Utils.t('downloadPreview')}</span>
</button>
<button id="confirmResize" class="wplace-btn wplace-btn-start">
<i class="fas fa-check"></i>
<span>Apply</span>
<span>${Utils.t('apply')}</span>
</button>
<button id="cancelResize" class="wplace-btn wplace-btn-stop">
<i class="fas fa-times"></i>
<span>Cancel</span>
<span>${Utils.t('cancel')}</span>
</button>
</div>
`
@@ -4805,7 +4805,7 @@
'hybrid': 'Generator + Auto Fallback',
'manual': 'Manual Pixel Placement'
}
Utils.showAlert(`Token source set to: ${sourceNames[state.tokenSource]}`, "success")
Utils.showAlert(Utils.t('tokenSourceSet', {source: sourceNames[state.tokenSource]}), "success")
})
}
@@ -4833,7 +4833,7 @@
saveBotSettings()
console.log(`📦 Batch mode changed to: ${state.batchMode}`)
Utils.showAlert(`Batch mode set to: ${state.batchMode === 'random' ? 'Random Range' : 'Normal Fixed Size'}`, "success")
Utils.showAlert(Utils.t('batchModeSet', {mode: state.batchMode === 'random' ? Utils.t('randomRange') : Utils.t('normalFixedSize')}), "success")
})
}
@@ -4920,9 +4920,9 @@
enableBlueMarbleToggle.addEventListener('click', async () => {
state.blueMarbleEnabled = enableBlueMarbleToggle.checked;
if (state.imageLoaded && overlayManager.imageBitmap) {
Utils.showAlert("Re-processing overlay...", "info");
Utils.showAlert(Utils.t('reprocessingOverlay'), "info");
await overlayManager.processImageIntoChunks();
Utils.showAlert("Overlay updated!", "success");
Utils.showAlert(Utils.t('overlayUpdated'), "success");
}
});
}
@@ -4935,13 +4935,13 @@
if (notifPermBtn) {
notifPermBtn.addEventListener("click", async () => {
const perm = await NotificationManager.requestPermission();
if (perm === "granted") Utils.showAlert("Notifications enabled.", "success");
else Utils.showAlert("Notifications permission denied.", "warning");
if (perm === "granted") Utils.showAlert(Utils.t('notificationsEnabled'), "success");
else Utils.showAlert(Utils.t('notificationsPermissionDenied'), "warning");
});
}
if (notifTestBtn) {
notifTestBtn.addEventListener("click", () => {
NotificationManager.notify("WPlace — Test", "This is a test notification.", "wplace-notify-test", true);
NotificationManager.notify(Utils.t('testNotificationTitle'), Utils.t('testNotificationMessage'), "wplace-notify-test", true);
});
}
@@ -5009,7 +5009,7 @@
const isEnabled = overlayManager.toggle();
toggleOverlayBtn.classList.toggle('active', isEnabled);
toggleOverlayBtn.setAttribute('aria-pressed', isEnabled ? 'true' : 'false');
Utils.showAlert(`Overlay ${isEnabled ? 'enabled' : 'disabled'}.`, 'info');
Utils.showAlert(isEnabled ? Utils.t('overlayEnabled') : Utils.t('overlayDisabled'), 'info');
});
}
@@ -5041,7 +5041,7 @@
updateUI("autoSaved", "success")
Utils.showAlert(Utils.t("autoSaved"), "success")
} else {
Utils.showAlert("❌ Erro ao salvar progresso", "error")
Utils.showAlert(Utils.t('errorSavingProgress'), "error")
}
})
}
@@ -5050,7 +5050,7 @@
loadBtn.addEventListener("click", () => {
// Check if initial setup is complete
if (!state.initialSetupComplete) {
Utils.showAlert("🔄 Please wait for the initial setup to complete before loading progress.", "warning");
Utils.showAlert(Utils.t('pleaseWaitInitialSetup'), "warning");
return;
}
@@ -5092,7 +5092,7 @@
startBtn.disabled = false
}
} else {
Utils.showAlert("❌ Erro ao carregar progresso", "error")
Utils.showAlert(Utils.t('errorLoadingProgress'), "error")
}
}
})
@@ -5114,7 +5114,7 @@
loadFromFileBtn.addEventListener("click", async () => {
// Check if initial setup is complete
if (!state.initialSetupComplete) {
Utils.showAlert("🔄 Please wait for the initial setup to complete before loading from file.", "warning");
Utils.showAlert(Utils.t('pleaseWaitFileSetup'), "warning");
return;
}
@@ -5202,7 +5202,7 @@
if (state.colorsChecked) {
colorSwatchesHTML = state.availableColors.map(color => {
const rgbString = `rgb(${color.rgb.join(',')})`;
return `<div class="wplace-stat-color-swatch" style="background-color: ${rgbString};" title="ID: ${color.id}\nRGB: ${color.rgb.join(', ')}"></div>`;
return `<div class="wplace-stat-color-swatch" style="background-color: ${rgbString};" title="${Utils.t('colorTooltip', {id: color.id, rgb: color.rgb.join(', ')})}"></div>`;
}).join('');
}
@@ -5214,7 +5214,7 @@
</div>
${state.colorsChecked ? `
<div class="wplace-colors-section">
<div class="wplace-stat-label"><i class="fas fa-palette"></i> Available Colors (${state.availableColors.length})</div>
<div class="wplace-stat-label"><i class="fas fa-palette"></i> ${Utils.t('availableColors', {count: state.availableColors.length})}</div>
<div class="wplace-stat-colors-grid">
${colorSwatchesHTML}
</div>
@@ -6157,7 +6157,7 @@
if (state.imageLoaded && state.imageData.processor && state.colorsChecked) {
showResizeDialog(state.imageData.processor)
} else if (!state.colorsChecked) {
Utils.showAlert("Please upload an image first to capture available colors", "warning")
Utils.showAlert(Utils.t('uploadImageFirstColors'), "warning")
}
})
}
@@ -6974,7 +6974,7 @@
}
// Show a notification that file operations are now available
Utils.showAlert("📂 File operations (Load/Upload) are now available!", "success");
Utils.showAlert(Utils.t('fileOperationsAvailable'), "success");
}
// Optimized token initialization with better timing and error handling
@@ -6999,7 +6999,7 @@
setTurnstileToken(token);
console.log("✅ Startup token generated successfully");
updateUI("tokenReady", "success");
Utils.showAlert("🔑 Token generator ready!", "success");
Utils.showAlert(Utils.t('tokenGeneratorReady'), "success");
enableFileOperations(); // Enable file operations since initial setup is complete
} else {
console.warn("⚠️ Startup token generation failed, will retry when needed");
@@ -7042,7 +7042,7 @@
if (whiteInput) whiteInput.addEventListener('change', e => { const v=parseInt(e.target.value,10); if(!isNaN(v)&&v>=200&&v<=255){ state.customWhiteThreshold=v; CONFIG.WHITE_THRESHOLD=v; saveBotSettings(); _updateResizePreview(); }});
if (ditherToggle) ditherToggle.addEventListener('change', e => { state.ditheringEnabled = e.target.checked; saveBotSettings(); _updateResizePreview(); });
if (resetBtn) resetBtn.addEventListener('click', () => {
state.colorMatchingAlgorithm='lab'; state.enableChromaPenalty=true; state.chromaPenaltyWeight=0.15; state.customTransparencyThreshold=CONFIG.TRANSPARENCY_THRESHOLD=100; state.customWhiteThreshold=CONFIG.WHITE_THRESHOLD=250; saveBotSettings(); const a=document.getElementById('colorAlgorithmSelect'); if(a) a.value='lab'; const ct=document.getElementById('enableChromaPenaltyToggle'); if(ct) ct.checked=true; if(chromaSlider) chromaSlider.value=0.15; if(chromaValue) chromaValue.textContent='0.15'; if(transInput) transInput.value=100; if(whiteInput) whiteInput.value=250; _updateResizePreview(); Utils.showAlert('Advanced color settings reset.', 'success'); });
state.colorMatchingAlgorithm='lab'; state.enableChromaPenalty=true; state.chromaPenaltyWeight=0.15; state.customTransparencyThreshold=CONFIG.TRANSPARENCY_THRESHOLD=100; state.customWhiteThreshold=CONFIG.WHITE_THRESHOLD=250; saveBotSettings(); const a=document.getElementById('colorAlgorithmSelect'); if(a) a.value='lab'; const ct=document.getElementById('enableChromaPenaltyToggle'); if(ct) ct.checked=true; if(chromaSlider) chromaSlider.value=0.15; if(chromaValue) chromaValue.textContent='0.15'; if(transInput) transInput.value=100; if(whiteInput) whiteInput.value=250; _updateResizePreview(); Utils.showAlert(Utils.t('advancedColorSettingsReset'), 'success'); });
};
// Delay to ensure resize UI built
setTimeout(advancedInit, 500);
+62 -2
View File
@@ -69,6 +69,66 @@
"waitCharges": "Wait until charges reach",
"captchaSolving": "🔑 Generating Turnstile token...",
"captchaFailed": "❌ Turnstile token generation failed. Trying fallback method...",
"automation": "Automation",
"noChargesThreshold": "⌛ Waiting for charges to reach {threshold}. Currently {current}. Next in {time}..."
"automation": "Automation", "noChargesThreshold": "⌛ Waiting for charges to reach {threshold}. Currently {current}. Next in {time}...",
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+68 -7
View File
@@ -1,6 +1,6 @@
{
"title": "WPlace Auto-Image",
"toggleOverlay": "Toggle Overlay",
"toggleOverlay": "Basculer l'overlay",
"scanColors": "Scanner les couleurs",
"uploadImage": "Télécharger l'image",
"resizeImage": "Redimensionner l'image",
@@ -61,14 +61,75 @@
"themeSettings": "Paramètres de Thème",
"themeSettingsDesc": "Choisissez votre thème de couleurs préféré pour l'interface.",
"languageSelectDesc": "Sélectionnez votre langue préférée. Les changements prendront effet immédiatement.",
"autoCaptcha": "Résolveur de CAPTCHA automatique",
"autoCaptchaDesc": "Tente automatiquement de résoudre le CAPTCHA en simulant un placement manuel de pixel lorsque le jeton expire.",
"autoCaptcha": "Résolveur de CAPTCHA automatique (Turnstile)",
"autoCaptchaDesc": "Génère automatiquement des jetons Turnstile en utilisant le générateur intégré. Se replie sur l'automatisation du navigateur si nécessaire.",
"applySettings": "Appliquer les paramètres",
"settingsSaved": "✅ Paramètres enregistrés avec succès !",
"cooldownSettings": "Paramètres de recharge",
"waitCharges": "Attendre que les charges atteignent",
"captchaSolving": "🤖 Tentative de résolution du CAPTCHA...",
"captchaFailed": "❌ Échec de l'Auto-CAPTCHA. Peignez un pixel manuellement.",
"captchaSolving": "🔑 Génération du jeton Turnstile...",
"captchaFailed": "❌ Échec de génération du jeton Turnstile. Tentative de méthode alternative...",
"automation": "Automatisation",
"noChargesThreshold": "⌛ En attente que les charges atteignent {threshold}. Actuel: {current}. Prochaine dans {time}..."
}
"noChargesThreshold": "⌛ En attente que les charges atteignent {threshold}. Actuel: {current}. Prochaine dans {time}...",
"tokenCapturedSuccess": "Jeton capturé avec succès ! Vous pouvez démarrer le bot maintenant.",
"notificationsNotSupported": "Les notifications ne sont pas supportées dans ce navigateur.",
"chargesReadyNotification": "WPlace — Charges Prêtes",
"chargesReadyMessage": "Charges prêtes : {current} / {max}. Seuil : {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "Ceci est une notification de test.",
"showStats": "Afficher les Stats",
"compactMode": "Mode Compact",
"refreshCharges": "Actualiser les Charges",
"closeStats": "Fermer les Stats",
"zoomOut": "Dézoomer",
"zoomIn": "Zoomer",
"fitToView": "Ajuster à la vue",
"actualSize": "Taille réelle (100%)",
"panMode": "Panoramique (glisser pour déplacer la vue)",
"clearIgnoredPixels": "Effacer tous les pixels ignorés",
"invertMask": "Inverser le masque",
"waitingSetupComplete": "🔄 En attente de la fin de l'installation initiale...",
"waitingTokenGenerator": "🔄 En attente de l'initialisation du générateur de jetons...",
"uploadImageFirst": "Téléchargez d'abord une image pour capturer les couleurs disponibles",
"pleaseWaitInitialSetup": "🔄 Veuillez attendre la fin de l'installation initiale avant de charger les progrès.",
"pleaseWaitFileSetup": "🔄 Veuillez attendre la fin de l'installation initiale avant de charger depuis un fichier.",
"errorSavingProgress": "❌ Erreur lors de la sauvegarde des progrès",
"errorLoadingProgress": "❌ Erreur lors du chargement des progrès",
"fileOperationsAvailable": "📂 Les opérations sur fichiers (Charger/Télécharger) sont maintenant disponibles !",
"tokenGeneratorReady": "🔑 Générateur de jetons prêt !",
"paintingStats": "Statistiques de Peinture",
"enablePaintingSpeedLimit": "Activer la limite de vitesse de peinture (contrôle de la taille de lot)",
"enableNotifications": "Activer les notifications",
"notifyOnChargesThreshold": "Notifier quand les charges atteignent le seuil",
"onlyWhenNotFocused": "Seulement quand l'onglet n'est pas au premier plan",
"repeatEvery": "Répéter toutes les",
"minutesPl": "minute(s)",
"grantPermission": "Accorder la Permission",
"test": "Test",
"showAllColorsIncluding": "Afficher toutes les couleurs (y compris indisponibles)",
"chromaWeight": "Poids de Chrominance",
"downloadPreview": "Télécharger l'Aperçu",
"apply": "Appliquer",
"cancel": "Annuler",
"fit": "Ajuster"
"hundred": "100%",
"clear": "Effacer",
"invert": "Inverser",
"reprocessingOverlay": "Retraitement de l'overlay...",
"overlayUpdated": "Overlay mis à jour !",
"notificationsEnabled": "Notifications activées.",
"notificationsPermissionDenied": "Permission de notifications refusée.",
"overlayEnabled": "Overlay activé.",
"overlayDisabled": "Overlay désactivé.",
"tokenSourceSet": "Source de jeton définie à : {source}",
"batchModeSet": "Mode lot défini à : {mode}",
"randomRange": "Plage Aléatoire",
"normalFixedSize": "Taille Fixe Normale",
"advancedColorSettingsReset": "Paramètres de couleur avancés réinitialisés.",
"shiftRowAltColumn": "Shift = Ligne • Alt = Colonne",
"hideTurnstileBtn": "Masquer",
"turnstileInstructions": "Cloudflare Turnstile — veuillez compléter la vérification si affichée",
"uploadImageFirstColors": "Veuillez d'abord télécharger une image pour capturer les couleurs disponibles",
"availableColors": "Couleurs Disponibles ({count})",
"colorTooltip": "ID : {id}\nRVB : {rgb}"
}
+63 -1
View File
@@ -71,4 +71,66 @@
"captchaFailed": "❌ Gagal menyelesaikan CAPTCHA. Lukis satu piksel secara manual.",
"automation": "Automasi",
"noChargesThreshold": "⌛ Menunggu muatan mencapai {threshold}. Saat ini: {current}. Berikutnya dalam {time}..."
}
,
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+63 -2
View File
@@ -72,5 +72,66 @@
"captchaSolving": "🔑 Turnstile トークン生成中...",
"captchaFailed": "❌ トークン生成失敗。フォールバックを試行...",
"automation": "自動化",
"noChargesThreshold": "⌛ チャージ {threshold} を待機中。現在 {current}。次は {time} 後..."
}
"noChargesThreshold": "⌛ チャージ {threshold} を待機中。現在 {current}。次は {time} 後...",
"tokenCapturedSuccess": "トークンキャプチャ成功!ボットを開始できます。",
"notificationsNotSupported": "このブラウザでは通知がサポートされていません。",
"chargesReadyNotification": "WPlace — チャージ準備完了",
"chargesReadyMessage": "チャージ準備完了: {current} / {max}。しきい値: {threshold}。",
"testNotificationTitle": "WPlace — テスト"
"testNotificationMessage": "これはテスト通知です。",
"showStats": "統計表示",
"compactMode": "コンパクトモード",
"refreshCharges": "チャージ更新",
"closeStats": "統計を閉じる",
"zoomOut": "縮小",
"zoomIn": "拡大",
"fitToView": "画面に合わせる",
"actualSize": "実際のサイズ (100%)",
"panMode": "パン(ドラッグで移動)",
"clearIgnoredPixels": "無視されたピクセルをすべてクリア",
"invertMask": "マスクを反転",
"waitingSetupComplete": "🔄 初期セットアップの完了を待機中...",
"waitingTokenGenerator": "🔄 トークンジェネレータの初期化を待機中...",
"uploadImageFirst": "利用可能な色を取得するために最初に画像をアップロードしてください",
"pleaseWaitInitialSetup": "🔄 進捗を読み込む前に初期セットアップの完了をお待ちください。",
"pleaseWaitFileSetup": "🔄 ファイルから読み込む前に初期セットアップの完了をお待ちください。",
"errorSavingProgress": "❌ 進捗の保存エラー",
"errorLoadingProgress": "❌ 進捗の読み込みエラー",
"fileOperationsAvailable": "📂 ファイル操作(読み込み/アップロード)が利用可能になりました!",
"tokenGeneratorReady": "🔑 トークンジェネレータ準備完了!",
"paintingStats": "描画統計",
"enablePaintingSpeedLimit": "描画速度制限を有効化(バッチサイズ制御)",
"enableNotifications": "通知を有効化",
"notifyOnChargesThreshold": "チャージがしきい値に達したら通知",
"onlyWhenNotFocused": "タブが非アクティブの時のみ",
"repeatEvery": "繰り返し間隔",
"minutesPl": "分"
"grantPermission": "許可を与える",
"test": "テスト"
"showAllColorsIncluding": "すべての色を表示(利用不可含む)",
"chromaWeight": "彩度重み",
"downloadPreview": "プレビューダウンロード",
"apply": "適用",
"cancel": "キャンセル",
"fit": "フィット"
"hundred": "100%",
"clear": "クリア",
"invert": "反転",
"reprocessingOverlay": "オーバーレイ再処理中...",
"overlayUpdated": "オーバーレイ更新完了!",
"notificationsEnabled": "通知が有効になりました。",
"notificationsPermissionDenied": "通知の許可が拒否されました。",
"overlayEnabled": "オーバーレイが有効になりました。",
"overlayDisabled": "オーバーレイが無効になりました。",
"tokenSourceSet": "トークンソースを設定: {source}",
"batchModeSet": "バッチモードを設定: {mode}",
"randomRange": "ランダム範囲",
"normalFixedSize": "通常固定サイズ",
"advancedColorSettingsReset": "高度な色設定をリセットしました。",
"shiftRowAltColumn": "Shift = 行 • Alt = 列",
"hideTurnstileBtn": "隠す",
"turnstileInstructions": "Cloudflare Turnstile — 表示された場合は確認を完了してください",
"uploadImageFirstColors": "利用可能な色を取得するために最初に画像をアップロードしてください",
"availableColors": "利用可能な色 ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+63 -2
View File
@@ -72,5 +72,66 @@
"captchaSolving": "🔑 Turnstile 토큰 생성 중...",
"captchaFailed": "❌ 토큰 생성 실패. 폴백 시도...",
"automation": "자동화",
"noChargesThreshold": "⌛ 횟수가 {threshold} 에 도달할 때까지 대기 중. 현재 {current}. 다음 {time} 후..."
}
"noChargesThreshold": "⌛ 횟수가 {threshold} 에 도달할 때까지 대기 중. 현재 {current}. 다음 {time} 후...",
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+62 -2
View File
@@ -69,6 +69,66 @@
"waitCharges": "Aguardar até as cargas atingirem",
"captchaSolving": "🤖 Tentando resolver o CAPTCHA...",
"captchaFailed": "❌ Falha ao resolver CAPTCHA. Pinte um pixel manualmente.",
"automation": "Automação",
"noChargesThreshold": "⌛ Aguardando cargas atingirem {threshold}. Atual: {current}. Próxima em {time}..."
"automation": "Automação", "noChargesThreshold": "⌛ Aguardando cargas atingirem {threshold}. Atual: {current}. Próxima em {time}...",
"tokenCapturedSuccess": "Token capturado com sucesso! Você pode iniciar o bot agora.",
"notificationsNotSupported": "Notificações não são suportadas neste navegador.",
"chargesReadyNotification": "WPlace — Cargas Prontas",
"chargesReadyMessage": "Cargas prontas: {current} / {max}. Limite: {threshold}.",
"testNotificationTitle": "WPlace — Teste",
"testNotificationMessage": "Esta é uma notificação de teste.",
"showStats": "Mostrar Estatísticas",
"compactMode": "Modo Compacto",
"refreshCharges": "Atualizar Cargas",
"closeStats": "Fechar Estatísticas",
"zoomOut": "Diminuir Zoom",
"zoomIn": "Aumentar Zoom",
"fitToView": "Ajustar à visualização",
"actualSize": "Tamanho real (100%)",
"panMode": "Arrastar (arrastar para mover visualização)",
"clearIgnoredPixels": "Limpar pixels ignorados",
"invertMask": "Inverter máscara",
"waitingSetupComplete": "🔄 Aguardando conclusão da configuração inicial...",
"waitingTokenGenerator": "🔄 Aguardando inicialização do gerador de tokens...",
"uploadImageFirst": "Faça upload de uma imagem primeiro para capturar cores disponíveis",
"pleaseWaitInitialSetup": "🔄 Aguarde a conclusão da configuração inicial antes de carregar o progresso.",
"pleaseWaitFileSetup": "🔄 Aguarde a conclusão da configuração inicial antes de carregar do arquivo.",
"errorSavingProgress": "❌ Erro ao salvar progresso",
"errorLoadingProgress": "❌ Erro ao carregar progresso",
"fileOperationsAvailable": "📂 Operações de arquivo (Carregar/Upload) agora disponíveis!",
"tokenGeneratorReady": "🔑 Gerador de tokens pronto!",
"paintingStats": "Estatísticas de Pintura",
"enablePaintingSpeedLimit": "Ativar limite de velocidade de pintura (controle de tamanho de lote)",
"enableNotifications": "Ativar notificações",
"notifyOnChargesThreshold": "Notificar quando as cargas atingirem o limite",
"onlyWhenNotFocused": "Apenas quando a aba não está em foco",
"repeatEvery": "Repetir a cada",
"minutesPl": "minuto(s)",
"grantPermission": "Conceder Permissão",
"test": "Teste",
"showAllColorsIncluding": "Mostrar Todas as Cores (incluindo indisponíveis)",
"chromaWeight": "Peso da Saturação",
"downloadPreview": "Baixar Pré-visualização",
"apply": "Aplicar",
"cancel": "Cancelar",
"fit": "Ajustar",
"hundred": "100%",
"clear": "Limpar",
"invert": "Inverter",
"reprocessingOverlay": "Reprocessando sobreposição...",
"overlayUpdated": "Sobreposição atualizada!",
"notificationsEnabled": "Notificações ativadas.",
"notificationsPermissionDenied": "Permissão de notificações negada.",
"overlayEnabled": "Sobreposição ativada.",
"overlayDisabled": "Sobreposição desativada.",
"tokenSourceSet": "Fonte de token definida para: {source}",
"batchModeSet": "Modo de lote definido para: {mode}",
"randomRange": "Intervalo Aleatório",
"normalFixedSize": "Tamanho Fixo Normal",
"advancedColorSettingsReset": "Configurações avançadas de cor redefinidas.",
"shiftRowAltColumn": "Shift = Linha • Alt = Coluna",
"hideTurnstileBtn": "Ocultar",
"turnstileInstructions": "Cloudflare Turnstile — complete a verificação se mostrada",
"uploadImageFirstColors": "Faça upload de uma imagem primeiro para capturar cores disponíveis",
"availableColors": "Cores Disponíveis ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+62 -2
View File
@@ -69,6 +69,66 @@
"waitCharges": "Ждать до накопления зарядов",
"captchaSolving": "🔑 Генерирую Turnstile токен...",
"captchaFailed": "❌ Не удалось сгенерировать Turnstile токен. Пробую резервный метод...",
"automation": "Автоматизация",
"noChargesThreshold": "⌛ Ожидание зарядов до {threshold}. Сейчас {current}. Следующий через {time}..."
"automation": "Автоматизация", "noChargesThreshold": "⌛ Ожидание зарядов до {threshold}. Сейчас {current}. Следующий через {time}...",
"tokenCapturedSuccess": "Токен успешно захвачен! Теперь можно запускать бота.",
"notificationsNotSupported": "Уведомления не поддерживаются в этом браузере.",
"chargesReadyNotification": "WPlace — Заряды готовы",
"chargesReadyMessage": "Заряды готовы: {current} / {max}. Порог: {threshold}.",
"testNotificationTitle": "WPlace — Тест",
"testNotificationMessage": "Это тестовое уведомление.",
"showStats": "Показать статистику",
"compactMode": "Компактный режим",
"refreshCharges": "Обновить заряды",
"closeStats": "Закрыть статистику",
"zoomOut": "Уменьшить",
"zoomIn": "Увеличить",
"fitToView": "По размеру экрана",
"actualSize": "Реальный размер (100%)",
"panMode": "Перемещение (перетаскивание для движения)",
"clearIgnoredPixels": "Очистить игнорируемые пиксели",
"invertMask": "Инвертировать маску",
"waitingSetupComplete": "🔄 Ждём завершения начальной настройки...",
"waitingTokenGenerator": "🔄 Ждём инициализации генератора токенов...",
"uploadImageFirst": "Сначала загрузите изображение для захвата доступных цветов",
"pleaseWaitInitialSetup": "🔄 Пожалуйста, подождите завершения начальной настройки перед загрузкой прогресса.",
"pleaseWaitFileSetup": "🔄 Пожалуйста, подождите завершения начальной настройки перед загрузкой из файла.",
"errorSavingProgress": "❌ Ошибка сохранения прогресса",
"errorLoadingProgress": "❌ Ошибка загрузки прогресса",
"fileOperationsAvailable": "📂 Файловые операции (Загрузка/Выгрузка) теперь доступны!",
"tokenGeneratorReady": "🔑 Генератор токенов готов!",
"paintingStats": "Статистика рисования",
"enablePaintingSpeedLimit": "Включить ограничение скорости рисования (контроль размера пакета)",
"enableNotifications": "Включить уведомления",
"notifyOnChargesThreshold": "Уведомлять при достижении порога зарядов",
"onlyWhenNotFocused": "Только когда вкладка не в фокусе",
"repeatEvery": "Повторять каждые",
"minutesPl": "минут(а/ы)",
"grantPermission": "Дать разрешение",
"test": "Тест",
"showAllColorsIncluding": "Показать все цвета (включая недоступные)",
"chromaWeight": "Вес цветности",
"downloadPreview": "Скачать превью",
"apply": "Применить",
"cancel": "Отменить",
"fit": "По размеру",
"hundred": "100%",
"clear": "Очистить",
"invert": "Инвертировать",
"reprocessingOverlay": "Переобработка оверлея...",
"overlayUpdated": "Оверлей обновлён!",
"notificationsEnabled": "Уведомления включены.",
"notificationsPermissionDenied": "В разрешении на уведомления отказано.",
"overlayEnabled": "Оверлей включён.",
"overlayDisabled": "Оверлей отключён.",
"tokenSourceSet": "Источник токенов установлен: {source}",
"batchModeSet": "Режим пакета установлен: {mode}",
"randomRange": "Случайный диапазон",
"normalFixedSize": "Нормальный фиксированный размер",
"advancedColorSettingsReset": "Продвинутые настройки цвета сброшены.",
"shiftRowAltColumn": "Shift = Строка • Alt = Столбец",
"hideTurnstileBtn": "Скрыть",
"turnstileInstructions": "Cloudflare Turnstile — пожалуйста, завершите проверку, если она показана",
"uploadImageFirstColors": "Пожалуйста, сначала загрузите изображение для захвата доступных цветов",
"availableColors": "Доступные цвета ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+63 -2
View File
@@ -70,5 +70,66 @@
"captchaSolving": "🤖 CAPTCHA çözülmeye çalışılıyor...",
"captchaFailed": "❌ Oto-CAPTCHA başarısız oldu. Bir pikseli manuel boyayın.",
"automation": "Otomasyon",
"noChargesThreshold": "⌛ Hakların {threshold} seviyesine ulaşması bekleniyor. Şu anda {current}. Sonraki {time} içinde..."
}
"noChargesThreshold": "⌛ Hakların {threshold} seviyesine ulaşması bekleniyor. Şu anda {current}. Sonraki {time} içinde...",
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+63 -2
View File
@@ -70,5 +70,66 @@
"captchaSolving": "🔑 Генерація токена Turnstile...",
"captchaFailed": "❌ Не вдалося згенерувати токен Turnstile. Використовую запасний метод...",
"automation": "Автоматизація",
"noChargesThreshold": "⌛ Очікування, доки заряди досягнуть {threshold}. Зараз {current}. Наступне через {time}..."
}
"noChargesThreshold": "⌛ Очікування, доки заряди досягнуть {threshold}. Зараз {current}. Наступне через {time}...",
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+64 -3
View File
@@ -1,6 +1,6 @@
{
"title": "WPlace Auto-Image",
"toggleOverlay": "Toggle Overlay",
"toggleOverlay": "Bật/tắt lớp phủ",
"scanColors": "Quét màu",
"uploadImage": "Tải lên hình ảnh",
"resizeImage": "Thay đổi kích thước",
@@ -70,5 +70,66 @@
"captchaSolving": "🤖 Đang cố gắng giải CAPTCHA...",
"captchaFailed": "❌ Giải CAPTCHA tự động thất bại. Vui lòng vẽ một pixel thủ công.",
"automation": "Tự động hóa",
"noChargesThreshold": "⌛ Đang chờ số lần sạc đạt {threshold}. Hiện tại {current}. Lần tiếp theo trong {time}..."
}
"noChargesThreshold": "⌛ Đang chờ số lần sạc đạt {threshold}. Hiện tại {current}. Lần tiếp theo trong {time}...",
"tokenCapturedSuccess": "Đã bắt token thành công! Bạn có thể khởi động bot ngay.",
"notificationsNotSupported": "Thông báo không được hỗ trợ trong trình duyệt này.",
"chargesReadyNotification": "WPlace — Điện tích sẵn sàng",
"chargesReadyMessage": "Điện tích sẵn sàng: {current} / {max}. Ngưỡng: {threshold}.",
"testNotificationTitle": "WPlace — Thử nghiệm"
"testNotificationMessage": "Đây là thông báo thử nghiệm.",
"showStats": "Hiển thị thống kê",
"compactMode": "Chế độ gọn",
"refreshCharges": "Làm mới điện tích",
"closeStats": "Đóng thống kê",
"zoomOut": "Thu nhỏ",
"zoomIn": "Phóng to",
"fitToView": "Vừa màn hình",
"actualSize": "Kích thước thực (100%)",
"panMode": "Di chuyển (kéo để di chuyển)",
"clearIgnoredPixels": "Xóa tất cả pixel bị bỏ qua",
"invertMask": "Đảo ngược mặt nạ",
"waitingSetupComplete": "🔄 Đang chờ thiết lập ban đầu hoàn tất...",
"waitingTokenGenerator": "🔄 Đang chờ bộ tạo token khởi tạo...",
"uploadImageFirst": "Tải lên hình ảnh trước để bắt màu có sẵn",
"pleaseWaitInitialSetup": "🔄 Vui lòng đợi thiết lập ban đầu hoàn tất trước khi tải tiến trình.",
"pleaseWaitFileSetup": "🔄 Vui lòng đợi thiết lập ban đầu hoàn tất trước khi tải từ tệp.",
"errorSavingProgress": "❌ Lỗi khi lưu tiến trình",
"errorLoadingProgress": "❌ Lỗi khi tải tiến trình",
"fileOperationsAvailable": "📂 Các thao tác tệp (Tải/Upload) đã có sẵn!",
"tokenGeneratorReady": "🔑 Bộ tạo token đã sẵn sàng!",
"paintingStats": "Thống kê vẽ",
"enablePaintingSpeedLimit": "Bật giới hạn tốc độ vẽ (kiểm soát kích thước lô)",
"enableNotifications": "Bật thông báo",
"notifyOnChargesThreshold": "Thông báo khi điện tích đạt ngưỡng",
"onlyWhenNotFocused": "Chỉ khi tab không được chọn",
"repeatEvery": "Lặp lại mỗi",
"minutesPl": "phút"
"grantPermission": "Cấp quyền",
"test": "Thử nghiệm"
"showAllColorsIncluding": "Hiển thị tất cả màu (bao gồm không có sẵn)",
"chromaWeight": "Trọng số độ bão hòa",
"downloadPreview": "Tải xuống xem trước",
"apply": "Áp dụng",
"cancel": "Hủy",
"fit": "Vừa khung"
"hundred": "100%",
"clear": "Xóa",
"invert": "Đảo ngược",
"reprocessingOverlay": "Đang xử lý lại lớp phủ...",
"overlayUpdated": "Lớp phủ đã cập nhật!",
"notificationsEnabled": "Đã bật thông báo.",
"notificationsPermissionDenied": "Quyền thông báo bị từ chối.",
"overlayEnabled": "Đã bật lớp phủ.",
"overlayDisabled": "Đã tắt lớp phủ.",
"tokenSourceSet": "Nguồn token được đặt thành: {source}",
"batchModeSet": "Chế độ lô được đặt thành: {mode}",
"randomRange": "Phạm vi ngẫu nhiên",
"normalFixedSize": "Kích thước cố định bình thường",
"advancedColorSettingsReset": "Đã đặt lại cài đặt màu nâng cao.",
"shiftRowAltColumn": "Shift = Hàng • Alt = Cột",
"hideTurnstileBtn": "Ẩn",
"turnstileInstructions": "Cloudflare Turnstile — vui lòng hoàn thành kiểm tra nếu được hiển thị",
"uploadImageFirstColors": "Vui lòng tải lên hình ảnh trước để bắt màu có sẵn",
"availableColors": "Màu có sẵn ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+64 -3
View File
@@ -28,7 +28,7 @@
"pixels": "像素",
"charges": "次数",
"estimatedTime": "预计时间",
"initMessage": "点击"上传图像"开始",
"initMessage": "点击\"上传图像\"开始",
"waitingInit": "正在等待初始化...",
"initializingToken": "🔧 正在初始化 Turnstile 令牌生成器...",
"tokenReady": "✅ 令牌生成器已就绪 - 可以开始绘制!",
@@ -72,5 +72,66 @@
"captchaSolving": "🔑 正在生成 Turnstile 令牌...",
"captchaFailed": "❌ 令牌生成失败。尝试回退方法...",
"automation": "自动化",
"noChargesThreshold": "⌛ 等待次数达到 {threshold}。当前 {current}。下次在 {time}..."
}
"noChargesThreshold": "⌛ 等待次数达到 {threshold}。当前 {current}。下次在 {time}...",
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}
+63 -2
View File
@@ -72,5 +72,66 @@
"captchaSolving": "🔑 正在產生 Turnstile 令牌...",
"captchaFailed": "❌ 令牌產生失敗。嘗試回退方法...",
"automation": "自動化",
"noChargesThreshold": "⌛ 等待次數達到 {threshold}。目前 {current}。下次在 {time}..."
}
"noChargesThreshold": "⌛ 等待次數達到 {threshold}。目前 {current}。下次在 {time}...",
"tokenCapturedSuccess": "Token captured successfully! You can start the bot now.",
"notificationsNotSupported": "Notifications are not supported in this browser.",
"chargesReadyNotification": "WPlace — Charges Ready",
"chargesReadyMessage": "Charges ready: {current} / {max}. Threshold: {threshold}.",
"testNotificationTitle": "WPlace — Test",
"testNotificationMessage": "This is a test notification.",
"showStats": "Show Stats",
"compactMode": "Compact Mode",
"refreshCharges": "Refresh Charges",
"closeStats": "Close Stats",
"zoomOut": "Zoom Out",
"zoomIn": "Zoom In",
"fitToView": "Fit to view",
"actualSize": "Actual size (100%)",
"panMode": "Pan (drag to move view)",
"clearIgnoredPixels": "Clear all ignored pixels",
"invertMask": "Invert mask",
"waitingSetupComplete": "🔄 Waiting for initial setup to complete...",
"waitingTokenGenerator": "🔄 Waiting for token generator to initialize...",
"uploadImageFirst": "Upload an image first to capture available colors",
"pleaseWaitInitialSetup": "🔄 Please wait for the initial setup to complete before loading progress.",
"pleaseWaitFileSetup": "🔄 Please wait for the initial setup to complete before loading from file.",
"errorSavingProgress": "❌ Error saving progress",
"errorLoadingProgress": "❌ Error loading progress",
"fileOperationsAvailable": "📂 File operations (Load/Upload) are now available!",
"tokenGeneratorReady": "🔑 Token generator ready!",
"paintingStats": "Painting Stats",
"enablePaintingSpeedLimit": "Enable painting speed limit (batch size control)",
"enableNotifications": "Enable notifications",
"notifyOnChargesThreshold": "Notify when charges reach threshold",
"onlyWhenNotFocused": "Only when tab is not focused",
"repeatEvery": "Repeat every",
"minutesPl": "minute(s)",
"grantPermission": "Grant Permission",
"test": "Test",
"showAllColorsIncluding": "Show All Colors (including unavailable)",
"chromaWeight": "Chroma Weight",
"downloadPreview": "Download Preview",
"apply": "Apply",
"cancel": "Cancel",
"fit": "Fit",
"hundred": "100%",
"clear": "Clear",
"invert": "Invert",
"reprocessingOverlay": "Re-processing overlay...",
"overlayUpdated": "Overlay updated!",
"notificationsEnabled": "Notifications enabled.",
"notificationsPermissionDenied": "Notifications permission denied.",
"overlayEnabled": "Overlay enabled.",
"overlayDisabled": "Overlay disabled.",
"tokenSourceSet": "Token source set to: {source}",
"batchModeSet": "Batch mode set to: {mode}",
"randomRange": "Random Range",
"normalFixedSize": "Normal Fixed Size",
"advancedColorSettingsReset": "Advanced color settings reset.",
"shiftRowAltColumn": "Shift = Row • Alt = Column",
"hideTurnstileBtn": "Hide",
"turnstileInstructions": "Cloudflare Turnstile — please complete the check if shown",
"uploadImageFirstColors": "Please upload an image first to capture available colors",
"availableColors": "Available Colors ({count})",
"colorTooltip": "ID: {id}\nRGB: {rgb}"
}