chore: i18n the last - hopefully

This commit is contained in:
2026-02-21 13:38:01 +01:00
parent d7840a60df
commit f8e532fbf5
9 changed files with 18 additions and 8 deletions

View File

@@ -28,8 +28,8 @@ export default [
i18next,
},
rules: {
'i18next/no-literal-string': ['warn', {
mode: 'jsx-only',
'i18next/no-literal-string': ['error', {
mode: 'jsx-text-only',
'jsx-components': {
exclude: ['Trans'],
},
@@ -83,6 +83,13 @@ export default [
'[0-9!-/:-@[-`{-~]+',
'[A-Z_-]+',
/^\p{Emoji}+$/u,
/^[\s\p{Emoji}\uFE0F]+$/u,
/^[\s0-9%—()\-+.]+$/,
/^[\s+ו○●⊘→←↶↷―✕✖✔❝]+$/,
/^H[1-6]$/,
/^(DB\s*→\s*File|File\s*→\s*DB)$/,
/^\/posts\/$/,
'bDS',
'[✓✗▼▶◀▲]+'
],
},

View File

@@ -11,7 +11,7 @@
"dev:electron": "wait-on http://localhost:5173 && cross-env NODE_ENV=development node ./node_modules/electron/cli.js .",
"start": "concurrently --kill-others \"npm run dev:renderer\" \"npm run start:electron\"",
"start:electron": "wait-on http://localhost:5173 && cross-env NODE_ENV=development node ./node_modules/electron/cli.js .",
"build": "npm run db:generate && npm run build:main && npm run build:renderer",
"build": "npm run lint && npm run db:generate && npm run build:main && npm run build:renderer",
"build:main": "node ./node_modules/typescript/bin/tsc -p tsconfig.main.json",
"build:renderer": "node ./node_modules/vite/bin/vite.js build",
"start:prod": "node ./node_modules/electron/cli.js .",
@@ -20,8 +20,8 @@
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"test:ui": "vitest --ui",
"lint": "eslint \"src/renderer/**/*.{ts,tsx}\"",
"lint:i18n": "eslint \"src/renderer/**/*.{ts,tsx}\" --rule \"i18next/no-literal-string: warn\"",
"lint": "eslint \"src/renderer/**/*.{ts,tsx}\" --max-warnings 0",
"lint:i18n": "eslint \"src/renderer/**/*.{ts,tsx}\" --max-warnings 0",
"db:generate": "node ./node_modules/drizzle-kit/bin.cjs generate",
"db:migrate": "node ./node_modules/tsx/dist/cli.mjs src/main/database/migrate.ts",
"db:studio": "node ./node_modules/drizzle-kit/bin.cjs studio"

View File

@@ -95,8 +95,6 @@ const EditorToolbar: React.FC<EditorToolbarProps> = ({ onUserInteraction }) => {
const [insertMode, setInsertMode] = useState<InsertModalMode>(null);
const [selectedText, setSelectedText] = useState('');
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const runCommand = useCallback((commandKey: any, payload?: unknown) => {
if (loading) return;
const editor = getEditor();

View File

@@ -51,7 +51,7 @@ export const StatusBar: React.FC = () => {
<span className="task-spinner" />
<span>{runningTasks[0].message}</span>
{runningTasks.length > 1 && (
<span className="text-muted">+{runningTasks.length - 1} more</span>
<span className="text-muted">{t('statusBar.more', { count: runningTasks.length - 1 })}</span>
)}
</div>
)}

View File

@@ -698,6 +698,7 @@
"postSearch.hint": "Mit ↑↓ navigieren, Enter auswählen, Esc schließen",
"statusBar.posts": "{count} Beiträge",
"statusBar.media": "{count} Medien",
"statusBar.more": "+{count} weitere",
"statusBar.theme": "Theme: {theme}",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "UI-Sprache",

View File

@@ -698,6 +698,7 @@
"postSearch.hint": "Use ↑↓ to navigate, Enter to select, Esc to close",
"statusBar.posts": "{count} posts",
"statusBar.media": "{count} media",
"statusBar.more": "+{count} more",
"statusBar.theme": "Theme: {theme}",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "UI language",

View File

@@ -698,6 +698,7 @@
"postSearch.hint": "Busca por título, slug o contenido",
"statusBar.posts": "Publicaciones",
"statusBar.media": "Medios",
"statusBar.more": "+{count} más",
"statusBar.theme": "Tema: {theme}",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "Idioma de la interfaz",

View File

@@ -698,6 +698,7 @@
"postSearch.hint": "Rechercher par titre, slug ou contenu",
"statusBar.posts": "Articles",
"statusBar.media": "Médias",
"statusBar.more": "+{count} en plus",
"statusBar.theme": "Thème : {theme}",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "Langue de linterface",

View File

@@ -698,6 +698,7 @@
"postSearch.hint": "Cerca per titolo, slug o contenuto",
"statusBar.posts": "Articoli",
"statusBar.media": "Media",
"statusBar.more": "+{count} in più",
"statusBar.theme": "Tema: {theme}",
"statusBar.ui": "UI",
"statusBar.uiLanguage": "Lingua interfaccia",