feat(phase2): localization EN/RU + additional widget types
- Add svelte-i18n with 224 translation keys (English + Russian) - Language switcher in header (EN/RU toggle, persists to localStorage) - Extract all hardcoded strings from 37 component/page files - Add 4 new widget types: Bookmark, Note (markdown), Embed (iframe), Status - WidgetRenderer dispatches by type, WidgetGrid supports full-width widgets - Type-specific config forms in board editor - Install marked for markdown rendering
This commit is contained in:
@@ -0,0 +1,245 @@
|
||||
{
|
||||
"app_name": "App Launcher",
|
||||
"app_title": "Web App Launcher",
|
||||
|
||||
"nav.navigation": "Navigation",
|
||||
"nav.boards": "Boards",
|
||||
"nav.apps": "Apps",
|
||||
"nav.admin": "Admin",
|
||||
"nav.admin_panel": "Admin Panel",
|
||||
|
||||
"auth.login": "Sign In",
|
||||
"auth.login_title": "Welcome back",
|
||||
"auth.login_subtitle": "Sign in to your account",
|
||||
"auth.login_submit": "Sign In",
|
||||
"auth.login_submitting": "Signing in...",
|
||||
"auth.register": "Register",
|
||||
"auth.register_title": "Create Account",
|
||||
"auth.register_subtitle": "Get started with App Launcher",
|
||||
"auth.register_submit": "Create Account",
|
||||
"auth.register_submitting": "Creating account...",
|
||||
"auth.email": "Email",
|
||||
"auth.email_placeholder": "you@example.com",
|
||||
"auth.password": "Password",
|
||||
"auth.password_placeholder": "Enter your password",
|
||||
"auth.password_placeholder_register": "At least 6 characters",
|
||||
"auth.display_name": "Display Name",
|
||||
"auth.display_name_placeholder": "Your name",
|
||||
"auth.logout": "Sign Out",
|
||||
"auth.oauth_signin": "Sign in with OAuth",
|
||||
"auth.or": "or",
|
||||
"auth.no_account": "Don't have an account?",
|
||||
"auth.have_account": "Already have an account?",
|
||||
"auth.sign_in_link": "Sign in",
|
||||
|
||||
"board.title": "Boards",
|
||||
"board.boards_available": "{count} board(s) available",
|
||||
"board.new": "New Board",
|
||||
"board.edit": "Edit",
|
||||
"board.edit_board": "Edit Board",
|
||||
"board.all_boards": "All Boards",
|
||||
"board.back_to_boards": "Back to Boards",
|
||||
"board.back_to_board": "Back to Board",
|
||||
"board.no_boards": "No boards available.",
|
||||
"board.sign_in_more": "Sign in to see more boards.",
|
||||
"board.no_sections": "This board has no sections yet.",
|
||||
"board.default": "Default",
|
||||
"board.guest": "Guest",
|
||||
"board.sections_count": "{count} section(s)",
|
||||
"board.properties": "Board Properties",
|
||||
"board.save": "Save Board",
|
||||
"board.create": "Create Board",
|
||||
"board.creating": "Creating...",
|
||||
"board.default_board": "Default board",
|
||||
"board.guest_accessible": "Guest accessible",
|
||||
|
||||
"section.title_label": "Title",
|
||||
"section.icon_label": "Icon",
|
||||
"section.icon_placeholder": "Optional",
|
||||
"section.sections": "Sections",
|
||||
"section.add": "Add Section",
|
||||
"section.create": "Create Section",
|
||||
"section.order": "Order: {order}",
|
||||
|
||||
"widget.add": "Add Widget",
|
||||
"widget.select_app": "Select App",
|
||||
"widget.choose_app": "Choose an app...",
|
||||
"widget.no_widgets": "No widgets in this section.",
|
||||
"widget.no_widgets_dnd": "No widgets. Drag widgets here or add one above.",
|
||||
"widget.type": "{type} widget",
|
||||
"widget.number": "Widget #{order}",
|
||||
"widget.remove": "Remove",
|
||||
|
||||
"app.title": "App Registry",
|
||||
"app.apps_registered": "{count} app(s) registered",
|
||||
"app.add": "Add App",
|
||||
"app.new": "New App",
|
||||
"app.no_apps": "No apps registered yet.",
|
||||
"app.no_apps_hint": "Click \"Add App\" to register your first application.",
|
||||
"app.all_categories": "All",
|
||||
"app.name": "Name",
|
||||
"app.name_placeholder": "My Application",
|
||||
"app.url": "URL",
|
||||
"app.url_placeholder": "https://my-app.local:8080",
|
||||
"app.description": "Description",
|
||||
"app.description_placeholder": "Brief description of this app",
|
||||
"app.category": "Category",
|
||||
"app.category_placeholder": "e.g. Media, Monitoring, Storage",
|
||||
"app.tags": "Tags",
|
||||
"app.tags_placeholder": "Comma-separated tags",
|
||||
"app.icon": "Icon",
|
||||
"app.icon_lucide": "Lucide Icon",
|
||||
"app.icon_simple": "Simple Icons",
|
||||
"app.icon_url": "Image URL",
|
||||
"app.icon_emoji": "Emoji",
|
||||
"app.icon_lucide_placeholder": "e.g. globe, server, home",
|
||||
"app.icon_simple_placeholder": "e.g. github, docker",
|
||||
"app.icon_url_placeholder": "https://example.com/icon.png",
|
||||
"app.icon_emoji_placeholder": "e.g. \ud83c\udf10",
|
||||
"app.icon_preview": "Icon preview",
|
||||
"app.save": "Save App",
|
||||
"app.saving": "Saving...",
|
||||
"app.healthcheck_toggle": "Healthcheck Settings",
|
||||
"app.healthcheck_show": "Show",
|
||||
"app.healthcheck_hide": "Hide",
|
||||
"app.healthcheck_enabled": "Enable Healthcheck",
|
||||
"app.healthcheck_method": "Method",
|
||||
"app.healthcheck_expected_status": "Expected Status",
|
||||
"app.healthcheck_timeout": "Timeout (ms)",
|
||||
"app.healthcheck_interval": "Interval (seconds)",
|
||||
"app.icon_board_label": "Icon (Lucide name)",
|
||||
|
||||
"admin.panel": "Admin Panel",
|
||||
"admin.users": "Users",
|
||||
"admin.groups": "Groups",
|
||||
"admin.settings": "Settings",
|
||||
|
||||
"admin.user_management": "User Management",
|
||||
"admin.create_user": "Create User",
|
||||
"admin.new_user": "New User",
|
||||
"admin.user_column": "User",
|
||||
"admin.email_column": "Email",
|
||||
"admin.role_column": "Role",
|
||||
"admin.provider_column": "Provider",
|
||||
"admin.groups_column": "Groups",
|
||||
"admin.actions_column": "Actions",
|
||||
"admin.role_user": "User",
|
||||
"admin.role_admin": "Admin",
|
||||
"admin.select_group": "Select group",
|
||||
"admin.add_to_group": "+ Add",
|
||||
"admin.remove_from_group": "Remove from group",
|
||||
"admin.no_users": "No users found.",
|
||||
|
||||
"admin.group_management": "Group Management",
|
||||
"admin.create_group": "Create Group",
|
||||
"admin.new_group": "New Group",
|
||||
"admin.name_column": "Name",
|
||||
"admin.description_column": "Description",
|
||||
"admin.members_column": "Members",
|
||||
"admin.default_column": "Default",
|
||||
"admin.default_group_hint": "Default group (auto-assign new users)",
|
||||
"admin.no_groups": "No groups found.",
|
||||
"admin.yes": "Yes",
|
||||
"admin.no": "No",
|
||||
|
||||
"admin.system_settings": "System Settings",
|
||||
"admin.settings_description": "Configure global application settings.",
|
||||
"admin.authentication": "Authentication",
|
||||
"admin.auth_mode": "Auth Mode",
|
||||
"admin.auth_local": "Local",
|
||||
"admin.auth_oauth": "OAuth",
|
||||
"admin.auth_both": "Both",
|
||||
"admin.registration_enabled": "Allow user registration",
|
||||
"admin.oauth_config": "OAuth Configuration",
|
||||
"admin.oauth_description": "Configure your OIDC provider (e.g. Authentik, Keycloak). Set Auth Mode to \"OAuth\" or \"Both\" above to enable OAuth login.",
|
||||
"admin.oauth_client_id": "Client ID",
|
||||
"admin.oauth_client_id_placeholder": "OAuth client ID",
|
||||
"admin.oauth_client_secret": "Client Secret",
|
||||
"admin.oauth_client_secret_placeholder": "OAuth client secret",
|
||||
"admin.oauth_discovery_url": "Discovery URL",
|
||||
"admin.oauth_discovery_url_placeholder": "https://example.com/.well-known/openid-configuration",
|
||||
"admin.oauth_test": "Test Connection",
|
||||
"admin.oauth_testing": "Testing...",
|
||||
"admin.oauth_connected": "Connected to issuer: {issuer}",
|
||||
"admin.oauth_network_error": "Network error \u2014 could not reach the server",
|
||||
"admin.theme_defaults": "Theme Defaults",
|
||||
"admin.default_theme": "Default Theme",
|
||||
"admin.default_primary_color": "Default Primary Color",
|
||||
"admin.healthcheck_defaults": "Healthcheck Defaults",
|
||||
"admin.healthcheck_defaults_description": "JSON configuration for default healthcheck behavior (interval, timeout, method).",
|
||||
"admin.healthcheck_defaults_label": "Defaults (JSON)",
|
||||
"admin.save_settings": "Save Settings",
|
||||
"admin.saving_settings": "Saving...",
|
||||
|
||||
"admin.perm_title": "Grant Permission",
|
||||
"admin.perm_entity_type": "Entity Type",
|
||||
"admin.perm_entity": "Entity",
|
||||
"admin.perm_target_type": "Target Type",
|
||||
"admin.perm_target": "Target",
|
||||
"admin.perm_level": "Level",
|
||||
"admin.perm_board": "Board",
|
||||
"admin.perm_app": "App",
|
||||
"admin.perm_user": "User",
|
||||
"admin.perm_group": "Group",
|
||||
"admin.perm_view": "View",
|
||||
"admin.perm_edit": "Edit",
|
||||
"admin.perm_admin": "Admin",
|
||||
"admin.perm_grant": "Grant",
|
||||
"admin.perm_revoke": "Revoke",
|
||||
"admin.perm_select": "Select...",
|
||||
"admin.perm_entity_column": "Entity",
|
||||
"admin.perm_target_column": "Target",
|
||||
"admin.perm_level_column": "Level",
|
||||
"admin.perm_action_column": "Action",
|
||||
"admin.perm_none": "No permissions configured.",
|
||||
|
||||
"search.placeholder": "Search apps and boards...",
|
||||
"search.trigger": "Search...",
|
||||
"search.min_chars": "Type at least 2 characters to search",
|
||||
"search.no_results": "No results for \"{query}\"",
|
||||
"search.apps": "Apps",
|
||||
"search.boards": "Boards",
|
||||
|
||||
"common.save": "Save",
|
||||
"common.cancel": "Cancel",
|
||||
"common.delete": "Delete",
|
||||
"common.create": "Create",
|
||||
"common.back": "Back",
|
||||
"common.edit": "Edit",
|
||||
"common.add": "Add",
|
||||
"common.confirm": "Confirm?",
|
||||
"common.yes": "Yes",
|
||||
"common.no": "No",
|
||||
"common.name": "Name",
|
||||
"common.description": "Description",
|
||||
"common.required": "*",
|
||||
|
||||
"status.online": "Online",
|
||||
"status.offline": "Offline",
|
||||
"status.degraded": "Degraded",
|
||||
"status.unknown": "Unknown",
|
||||
|
||||
"theme.dark": "Dark",
|
||||
"theme.light": "Light",
|
||||
"theme.system": "System",
|
||||
"theme.toggle": "Toggle theme (current: {mode})",
|
||||
"theme.title": "Theme: {mode}",
|
||||
|
||||
"bg.mesh": "Mesh Gradient",
|
||||
"bg.particles": "Particles",
|
||||
"bg.aurora": "Aurora",
|
||||
"bg.none": "None",
|
||||
"bg.title": "Background effect",
|
||||
"bg.aria_label": "Change background effect",
|
||||
|
||||
"sidebar.expand": "Expand sidebar",
|
||||
"sidebar.collapse": "Collapse sidebar",
|
||||
"sidebar.toggle": "Toggle sidebar",
|
||||
"sidebar.close": "Close sidebar",
|
||||
|
||||
"home.welcome": "Welcome, {name}. No default board is configured yet.",
|
||||
"home.view_boards": "View Boards",
|
||||
"home.browse_apps": "Browse Apps",
|
||||
|
||||
"language.label": "Language"
|
||||
}
|
||||
Reference in New Issue
Block a user