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, i18next,
}, },
rules: { rules: {
'i18next/no-literal-string': ['warn', { 'i18next/no-literal-string': ['error', {
mode: 'jsx-only', mode: 'jsx-text-only',
'jsx-components': { 'jsx-components': {
exclude: ['Trans'], exclude: ['Trans'],
}, },
@@ -83,6 +83,13 @@ export default [
'[0-9!-/:-@[-`{-~]+', '[0-9!-/:-@[-`{-~]+',
'[A-Z_-]+', '[A-Z_-]+',
/^\p{Emoji}+$/u, /^\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 .", "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": "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 .", "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:main": "node ./node_modules/typescript/bin/tsc -p tsconfig.main.json",
"build:renderer": "node ./node_modules/vite/bin/vite.js build", "build:renderer": "node ./node_modules/vite/bin/vite.js build",
"start:prod": "node ./node_modules/electron/cli.js .", "start:prod": "node ./node_modules/electron/cli.js .",
@@ -20,8 +20,8 @@
"test:watch": "vitest", "test:watch": "vitest",
"test:coverage": "vitest run --coverage", "test:coverage": "vitest run --coverage",
"test:ui": "vitest --ui", "test:ui": "vitest --ui",
"lint": "eslint \"src/renderer/**/*.{ts,tsx}\"", "lint": "eslint \"src/renderer/**/*.{ts,tsx}\" --max-warnings 0",
"lint:i18n": "eslint \"src/renderer/**/*.{ts,tsx}\" --rule \"i18next/no-literal-string: warn\"", "lint:i18n": "eslint \"src/renderer/**/*.{ts,tsx}\" --max-warnings 0",
"db:generate": "node ./node_modules/drizzle-kit/bin.cjs generate", "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:migrate": "node ./node_modules/tsx/dist/cli.mjs src/main/database/migrate.ts",
"db:studio": "node ./node_modules/drizzle-kit/bin.cjs studio" "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 [insertMode, setInsertMode] = useState<InsertModalMode>(null);
const [selectedText, setSelectedText] = useState(''); 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) => { const runCommand = useCallback((commandKey: any, payload?: unknown) => {
if (loading) return; if (loading) return;
const editor = getEditor(); const editor = getEditor();

View File

@@ -51,7 +51,7 @@ export const StatusBar: React.FC = () => {
<span className="task-spinner" /> <span className="task-spinner" />
<span>{runningTasks[0].message}</span> <span>{runningTasks[0].message}</span>
{runningTasks.length > 1 && ( {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> </div>
)} )}

View File

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

View File

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

View File

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

View File

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

View File

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