feat(electrobun): i18n system — @formatjs/intl + Svelte 5 runes + 3 locales
- i18n.svelte.ts: store with $state locale + createIntl(), t() function, formatDate/Number/RelativeTime, getDir() for RTL, async setLocale() - i18n.types.ts: TranslationKey union (codegen from en.json) - locales/en.json: 200+ strings in ICU MessageFormat - locales/pl.json: full Polish translation - locales/ar.json: partial Arabic (validates 6-form plural + RTL) - scripts/i18n-types.ts: codegen script for type-safe keys - 6 components wired: StatusBar, AgentPane, CommandPalette, SettingsDrawer, SplashScreen, ChatInput - Language selector in AppearanceSettings - App.svelte: document.dir reactive for RTL - CONTRIBUTING_I18N.md: guide for adding languages Note: currently Electrobun-only. Will extract to @agor/i18n shared package for both Tauri and Electrobun.
This commit is contained in:
parent
eee65070a8
commit
aae86a4001
16 changed files with 947 additions and 64 deletions
|
|
@ -7,6 +7,7 @@
|
|||
provider?: string;
|
||||
contextPct?: number;
|
||||
disabled?: boolean;
|
||||
placeholder?: string;
|
||||
onSend?: () => void;
|
||||
onInput?: (v: string) => void;
|
||||
}
|
||||
|
|
@ -17,6 +18,7 @@
|
|||
provider = 'claude',
|
||||
contextPct = 78,
|
||||
disabled = false,
|
||||
placeholder = 'Ask Claude anything...',
|
||||
onSend,
|
||||
onInput,
|
||||
}: Props = $props();
|
||||
|
|
@ -94,7 +96,7 @@
|
|||
<textarea
|
||||
bind:this={textareaEl}
|
||||
class="chat-textarea"
|
||||
placeholder="Ask Claude anything..."
|
||||
{placeholder}
|
||||
rows="1"
|
||||
{value}
|
||||
oninput={handleInput}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue