mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-21 01:57:41 +02:00
Merge pull request #2695 from Alexandr0856/feature/ukrainian-localization
Add Ukrainian localization
This commit is contained in:
@@ -183,7 +183,7 @@ Optional but recommended — drop the [`slicer-api/` Compose stack](slicer-api/R
|
||||
- Configurable drying presets per filament type (temperature & duration for AMS 2 Pro and AMS-HT)
|
||||
- **Per-filament humidity threshold** — Set a different humidity trigger per filament type (e.g. Nylon at 20%, PLA at 60%, ASA at 30%) instead of one global value. Mixed-material AMS units use the most-restrictive threshold across the loaded spools so a single PLA + Nylon unit triggers at Nylon's level. Drives both the auto-drying scheduler and the hourly humidity alarm so the two can never disagree on whether a unit is "too humid"
|
||||
- Dual external spool support for H2D (Ext-L / Ext-R)
|
||||
- **HMS error monitoring with one-click actions** — Live HMS error log with history and the same Resume / Stop / Continue / Retry / Check Assistant / Don't Remind Me action buttons BambuStudio shows. Click and the matching MQTT command goes back to the printer — no more walking to the device just to dismiss a paused-print dialog. Catalog covers every Bambu model (X1 / P1 / A1 / H2 series); buttons are translated in all 11 supported locales
|
||||
- **HMS error monitoring with one-click actions** — Live HMS error log with history and the same Resume / Stop / Continue / Retry / Check Assistant / Don't Remind Me action buttons BambuStudio shows. Click and the matching MQTT command goes back to the printer — no more walking to the device just to dismiss a paused-print dialog. Catalog covers every Bambu model (X1 / P1 / A1 / H2 series); buttons are translated in all 13 supported locales
|
||||
- **Heater history charts** — Bambuddy logs nozzle, bed, and chamber readings every minute and surfaces them via a tiny chart icon on each heater tile in the printer card. Click for a per-heater modal with current / average / min / max stats, target overlay, and a 6h / 24h / 48h / 7d time range — works on read-only chamber sensors (X1C / P2S) too. AMS humidity and temperature get the same treatment (already shipped).
|
||||
- Print success rates & trends
|
||||
- Filament usage tracking
|
||||
|
||||
@@ -397,6 +397,20 @@ const RU_COGNATES = [
|
||||
'(25%, 50%, 75%)',
|
||||
];
|
||||
|
||||
// Ukrainian keeps only Latin brand names and placeholder/punctuation-only
|
||||
// formats verbatim; every prose string in uk.ts is translated.
|
||||
const UK_COGNATES = [
|
||||
'MakerWorld: {{designer}}', // brand + placeholder
|
||||
'{{printer}}: {{error}}', // pure placeholders
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'Sport (124%)', 'Ludicrous (166%)', // official Bambu speed-mode names
|
||||
'email', // OIDC claim name placeholder
|
||||
'{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}',
|
||||
'EC984C,#6CD4BC,A66EB9,D87694',
|
||||
'({{count}}/8)',
|
||||
'(25%, 50%, 75%)',
|
||||
];
|
||||
|
||||
const IDENTICAL_TO_EN_ALLOWED = {
|
||||
de: new Set(DE_COGNATES),
|
||||
fr: new Set(FR_COGNATES),
|
||||
@@ -409,6 +423,7 @@ const IDENTICAL_TO_EN_ALLOWED = {
|
||||
'zh-TW': new Set(ZH_TW_COGNATES),
|
||||
tr: new Set(TR_COGNATES),
|
||||
ru: new Set(RU_COGNATES),
|
||||
uk: new Set(UK_COGNATES),
|
||||
};
|
||||
|
||||
// Pure comparison logic, exported so tests can verify each failure mode
|
||||
|
||||
@@ -14,6 +14,7 @@ import ptBR from './locales/pt-BR';
|
||||
import zhCN from './locales/zh-CN';
|
||||
import zhTW from './locales/zh-TW';
|
||||
import tr from './locales/tr';
|
||||
import uk from './locales/uk';
|
||||
import ru from './locales/ru';
|
||||
|
||||
const resources = {
|
||||
@@ -28,10 +29,11 @@ const resources = {
|
||||
'zh-CN': { translation: zhCN },
|
||||
'zh-TW': { translation: zhTW },
|
||||
tr: { translation: tr },
|
||||
uk: { translation: uk },
|
||||
ru: { translation: ru },
|
||||
};
|
||||
|
||||
const SUPPORTED_LNGS = ['en', 'de', 'es', 'fr', 'ja', 'it', 'ko', 'pt-BR', 'ru', 'tr', 'zh-CN', 'zh-TW'];
|
||||
const SUPPORTED_LNGS = ['en', 'de', 'es', 'fr', 'ja', 'it', 'ko', 'pt-BR', 'ru', 'tr', 'uk', 'zh-CN', 'zh-TW'];
|
||||
const APPLIANCE_CONSUMED_KEY = 'bambuddy_appliance_locale_consumed';
|
||||
|
||||
i18n
|
||||
@@ -109,5 +111,6 @@ export const availableLanguages = [
|
||||
{ code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文' },
|
||||
{ code: 'zh-TW', name: 'Chinese (Traditional)', nativeName: '繁體中文' },
|
||||
{ code: 'tr', name: 'Turkish', nativeName: 'Türkçe' },
|
||||
{ code: 'uk', name: 'Ukrainian', nativeName: 'Українська' },
|
||||
{ code: 'ru', name: 'Russian', nativeName: 'Русский' },
|
||||
];
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+1
-1
@@ -26,7 +26,7 @@
|
||||
|
||||
<!-- Splash screens for iOS -->
|
||||
<link rel="apple-touch-startup-image" href="/img/android-chrome-512x512.png" />
|
||||
<script type="module" crossorigin src="/assets/index-D5mCVall.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-B4oB3n1m.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-D4bpNaiw.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Reference in New Issue
Block a user