feat(i18n): full app + docs localization (de/en)
Build & Push Docker Image / build (push) Successful in 2m33s
Build & Push Docker Image / build (push) Successful in 2m33s
- translate remaining pages/components (admin, analytics, redundancy, trash, compare, browse, watchlist, admin tools tab, category combobox, theme toggle, tool preview card, tool-new/edit) to t() calls - locales: 453 keys each, parity verified - docs: bilingual handbook + release notes via *.en.md variants, language-aware docs.tsx (markdown paths, nav titles, search index), LanguageSwitcher in docs header - generate-docs: emit per-locale handbook/release/search output, localized index.json fields (fileEn/titleEn), en-aware snapshots
This commit is contained in:
@@ -53,7 +53,9 @@
|
||||
"loading": "Loading…",
|
||||
"all": "All",
|
||||
"none": "None",
|
||||
"language": "Language"
|
||||
"language": "Language",
|
||||
"viewDetails": "View details",
|
||||
"guideTooltip": "Guide in the documentation"
|
||||
},
|
||||
"home": {
|
||||
"welcome": "Welcome to toolr",
|
||||
@@ -80,6 +82,8 @@
|
||||
"category": "Category",
|
||||
"rating": "Rating",
|
||||
"reviews": "Reviews",
|
||||
"reviewCount_one": "{{count}} review",
|
||||
"reviewCount_other": "{{count}} reviews",
|
||||
"noToolsFound": "No tools found",
|
||||
"noToolsMatch": "We couldn't find any tools matching your current filters. Try adjusting your search criteria or add a new tool.",
|
||||
"addTool": "Add Tool",
|
||||
@@ -103,7 +107,9 @@
|
||||
"features": "Features",
|
||||
"minRating": "Min. rating",
|
||||
"any": "Any",
|
||||
"clearFilters": "Clear filters"
|
||||
"clearFilters": "Clear filters",
|
||||
"removeFeature": "Remove feature: {{feature}}",
|
||||
"removeMinRating": "Remove min rating"
|
||||
},
|
||||
"detail": {
|
||||
"ratingBreakdown": "Rating Breakdown",
|
||||
@@ -133,7 +139,65 @@
|
||||
"deleteToTrash": "This will move {{name}} to the trash. It can be restored later.",
|
||||
"deletePermanent": "This will permanently remove {{name}} and all its ratings. This cannot be undone.",
|
||||
"deleting": "Deleting…",
|
||||
"deleteAction": "Delete"
|
||||
"deleteAction": "Delete",
|
||||
"invalidToolId": "Invalid Tool ID",
|
||||
"backToBrowse": "Back to browse",
|
||||
"keyFeatures": "Key Features",
|
||||
"toolNotFound": "Tool not found.",
|
||||
"similarTools": "Similar Tools",
|
||||
"noSimilarTools": "No similar tools found.",
|
||||
"linkTool": "Link Tool",
|
||||
"linkSimilarTool": "Link Similar Tool",
|
||||
"linkSimilarToolSub": "Manually link this tool to another tool.",
|
||||
"toolId": "Tool ID",
|
||||
"toolIdPlaceholder": "Enter target tool ID",
|
||||
"relationType": "Relation Type",
|
||||
"relationSimilar": "Similar",
|
||||
"relationReplaces": "Replaces",
|
||||
"relationSupersededBy": "Superseded By",
|
||||
"notesOptional": "Notes (Optional)",
|
||||
"notesPlaceholder": "Why are these tools related?",
|
||||
"createLink": "Create Link",
|
||||
"noCostInfo": "No cost information added yet.",
|
||||
"costDialogSub": "Manage license cost information for this tool.",
|
||||
"licenseType": "License Type",
|
||||
"licenseFree": "Free",
|
||||
"licenseSubscription": "Subscription",
|
||||
"licenseOneTime": "One-Time",
|
||||
"licenseUsageBased": "Usage-Based",
|
||||
"billingPeriod": "Billing Period",
|
||||
"billingMonthly": "Monthly",
|
||||
"billingQuarterly": "Quarterly",
|
||||
"billingYearly": "Yearly",
|
||||
"costLabel": "Cost",
|
||||
"currency": "Currency",
|
||||
"costNotes": "Notes",
|
||||
"costNotesPlaceholder": "Billing details, contract info...",
|
||||
"commentOptional": "Comment (Optional)",
|
||||
"commentLabel": "Comment",
|
||||
"commentPlaceholder": "What do you think about this tool?",
|
||||
"nameOptional": "Name (Optional)",
|
||||
"nameLabel": "Name",
|
||||
"anonymousPlaceholder": "Anonymous",
|
||||
"anonymousEngineer": "Anonymous Engineer",
|
||||
"beFirstToReview": "Be the first to share your thoughts on this tool.",
|
||||
"shareExperience": "Share your experience with {{name}}",
|
||||
"score": "Score",
|
||||
"toastRelationCreated": "Relation created",
|
||||
"toastRelationFailed": "Failed to create relation",
|
||||
"toastRelationDeleted": "Relation deleted",
|
||||
"toastRelationDeleteFailed": "Failed to delete relation",
|
||||
"toastCostUpdated": "Cost updated",
|
||||
"toastCostAdded": "Cost added",
|
||||
"toastCostFailed": "Failed to save cost",
|
||||
"toastCostDeleted": "Cost deleted",
|
||||
"toastCostDeleteFailed": "Failed to delete cost",
|
||||
"toastRatingSubmitted": "Rating submitted",
|
||||
"toastRatingThanks": "Thank you for your feedback!",
|
||||
"toastRatingFailed": "Failed to submit rating",
|
||||
"toastToolDeleted": "Tool deleted",
|
||||
"toastDeleteFailed": "Failed to delete",
|
||||
"unexpectedError": "An unexpected error occurred."
|
||||
},
|
||||
"compare": {
|
||||
"title": "Compare Tools",
|
||||
@@ -176,7 +240,29 @@
|
||||
"deletePermanently": "Delete permanently",
|
||||
"emptyTrash": "Empty trash",
|
||||
"deletedAt": "Deleted at",
|
||||
"deletedBy": "Deleted by"
|
||||
"deletedBy": "Deleted by",
|
||||
"name": "Name",
|
||||
"category": "Category",
|
||||
"actions": "Actions",
|
||||
"selectAll": "Select all",
|
||||
"selectName": "Select {{name}}",
|
||||
"restoreAction": "Restore",
|
||||
"deleteAction": "Delete",
|
||||
"deleteConfirmTitle": "Delete {{count}} tool(s) permanently?",
|
||||
"deleteConfirmSub": "This permanently removes the selected tools along with all their ratings, costs and relations. This cannot be undone.",
|
||||
"emptyConfirmTitle": "Empty the trash?",
|
||||
"emptyConfirmSub": "This permanently removes all {{count}} tool(s) in the trash along with their ratings, costs and relations. This cannot be undone.",
|
||||
"toastRestored": "Tools restored",
|
||||
"toastRestoredSub": "{{count}} tool(s) restored.",
|
||||
"toastRestoreFailed": "Failed to restore",
|
||||
"toastDeleted": "Tools deleted",
|
||||
"toastDeletedSub": "{{count}} tool(s) permanently removed.",
|
||||
"toastDeleteFailed": "Failed to delete",
|
||||
"toastEmptied": "Trash emptied",
|
||||
"toastEmptiedSub": "{{count}} tool(s) permanently removed.",
|
||||
"toastEmptyFailed": "Failed to empty trash",
|
||||
"searchPlaceholder": "Search tools…",
|
||||
"toolCount": "{{count}} tool(s)"
|
||||
},
|
||||
"notFound": {
|
||||
"text": "This page doesn't exist.",
|
||||
@@ -191,7 +277,7 @@
|
||||
"latest": "Latest",
|
||||
"repo": "Repository",
|
||||
"nav": "Documentation",
|
||||
"guides": "Guide",
|
||||
"guides": "Guides",
|
||||
"endpoints": "Endpoints",
|
||||
"schemas": "Data models",
|
||||
"releases": "Release notes",
|
||||
@@ -209,7 +295,10 @@
|
||||
"parameter": "Parameter",
|
||||
"noResults": "No results",
|
||||
"fields": "Fields",
|
||||
"fieldHelpHint": "Note: form fields link via the ? icon directly to the respective rows of this table."
|
||||
"fieldHelpHint": "Note: form fields link via the ? icon directly to the respective rows of this table.",
|
||||
"name": "Name",
|
||||
"in": "In",
|
||||
"requestBody": "Request Body"
|
||||
},
|
||||
"command": {
|
||||
"navigate": "Navigate",
|
||||
@@ -217,5 +306,192 @@
|
||||
"tools": "Tools",
|
||||
"noResults": "No tools found for \"{{query}}\".",
|
||||
"startTyping": "Start typing to search tools."
|
||||
},
|
||||
"admin": {
|
||||
"accessRequired": "Admin Access Required",
|
||||
"accessRequiredSub": "You need admin rights to view this page.",
|
||||
"goHome": "Go Home",
|
||||
"panel": "Admin Panel",
|
||||
"panelSub": "Manage users and review system changes.",
|
||||
"redundancyDashboard": "Redundancy Dashboard",
|
||||
"tabUsers": "Users",
|
||||
"tabTools": "Tools",
|
||||
"tabAudit": "Audit Log",
|
||||
"tabSystem": "System",
|
||||
"localUsers": "Local Users",
|
||||
"localUsersSub": "Manage accounts for local authentication.",
|
||||
"addUser": "Add User",
|
||||
"noUsersYet": "No users yet.",
|
||||
"auditLog": "Audit Log",
|
||||
"auditLogSub": "All create, update and delete operations tracked by the system.",
|
||||
"by": "by",
|
||||
"noAuditEntries": "No audit entries yet.",
|
||||
"system": "System",
|
||||
"systemSub": "Build information of the currently live deployment.",
|
||||
"version": "Version",
|
||||
"commit": "Commit",
|
||||
"buildDate": "Build date",
|
||||
"trashRetention": "Trash retention",
|
||||
"days": "days",
|
||||
"keepForever": "Keep forever",
|
||||
"createNewUser": "Create New User",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"emailOptional": "Email (Optional)",
|
||||
"role": "Role",
|
||||
"roleUser": "User",
|
||||
"roleAdmin": "Admin",
|
||||
"plan": "Plan",
|
||||
"planFree": "Free",
|
||||
"planPremium": "Premium",
|
||||
"planEnterprise": "Enterprise",
|
||||
"creating": "Creating…",
|
||||
"createUser": "Create User",
|
||||
"editUser": "Edit User — {{username}}",
|
||||
"setPassword": "Set Password",
|
||||
"resetsPassword": "Resets the user's password immediately.",
|
||||
"idpManaged": "Password is managed by the identity provider (Keycloak). Reset it there.",
|
||||
"setting": "Setting…",
|
||||
"deleteUser": "Delete User",
|
||||
"deleteUserConfirm": "Are you sure you want to delete {{username}}? This cannot be undone.",
|
||||
"minPasswordPlaceholder": "min. 6 characters",
|
||||
"usernamePlaceholder": "username",
|
||||
"emailPlaceholder": "user@example.com",
|
||||
"toastUserCreated": "User created",
|
||||
"toastUserCreatedSub": "{{username}} has been created.",
|
||||
"toastUserCreateFailed": "Failed to create user",
|
||||
"toastUserUpdated": "User updated",
|
||||
"toastUserUpdateFailed": "Failed to update user",
|
||||
"toastPwTooShort": "Password too short",
|
||||
"toastPwTooShortSub": "Minimum 6 characters.",
|
||||
"toastPwUpdated": "Password updated",
|
||||
"toastPwUpdatedSub": "Password for {{username}} has been set.",
|
||||
"toastPwSetFailed": "Failed to set password",
|
||||
"toastUserDeleted": "User deleted",
|
||||
"toastUserDeletedSub": "{{username}} has been removed.",
|
||||
"toastUserDeleteFailed": "Failed to delete user"
|
||||
},
|
||||
"adminTools": {
|
||||
"accessRequired": "Admin access required.",
|
||||
"allTools": "All Tools",
|
||||
"toolCount": "{{count}} tool(s)",
|
||||
"selected": "{{count}} selected",
|
||||
"searchPlaceholder": "Search tools…",
|
||||
"moveToTrash": "Move to trash ({{count}})",
|
||||
"noMatch": "No tools match your search.",
|
||||
"noToolsYet": "No tools yet.",
|
||||
"selectAll": "Select all",
|
||||
"selectName": "Select {{name}}",
|
||||
"name": "Name",
|
||||
"category": "Category",
|
||||
"rating": "Rating",
|
||||
"createdBy": "Created by",
|
||||
"createdAt": "Created at",
|
||||
"actions": "Actions",
|
||||
"confirmTitle": "Move {{count}} tool(s) to trash?",
|
||||
"confirmSub": "The selected tools will be hidden from all public views and moved to the trash, where they can be restored or permanently deleted.",
|
||||
"moveToTrashAction": "Move to trash",
|
||||
"toastMoved": "Tools moved to trash",
|
||||
"toastMovedSub": "{{count}} tool(s) moved to trash.",
|
||||
"toastMoveFailed": "Failed to move to trash"
|
||||
},
|
||||
"analytics": {
|
||||
"title": "Platform Analytics",
|
||||
"subtitle": "Macro-level insights into tool performance and community engagement.",
|
||||
"totalToolsIndexed": "Total Tools Indexed",
|
||||
"totalRatingsCast": "Total Ratings Cast",
|
||||
"activeCategories": "Active Categories",
|
||||
"avgGlobalScore": "Avg Global Score",
|
||||
"top8Tools": "Top 8 Tools by Combined Score",
|
||||
"top8ToolsSub": "Highest rated tools across the platform",
|
||||
"toolsByCategory": "Tools by Category",
|
||||
"toolsByCategorySub": "Distribution of tools across categories",
|
||||
"globalRatingDistribution": "Global Rating Distribution",
|
||||
"globalRatingDistributionSub": "How users are voting across all tools",
|
||||
"radarTools": "Tools"
|
||||
},
|
||||
"redundancy": {
|
||||
"title": "Tool Analysis & Recommendations",
|
||||
"subtitle": "Automatic redundancy detection with cost and rating comparison. Admin can manually confirm which tool is the better choice.",
|
||||
"toolsComparisons": "{{tools}} tools, {{pairs}} comparisons",
|
||||
"totalMonthly": "/mo total",
|
||||
"reviews": "reviews",
|
||||
"features": "features",
|
||||
"comparisonsTitle": "Comparisons & Recommendations",
|
||||
"vs": "vs",
|
||||
"noTools": "No tools found.",
|
||||
"perMonth": "/mo",
|
||||
"toastEvalSaved": "Evaluation saved",
|
||||
"toastEvalFailed": "Failed to save evaluation"
|
||||
},
|
||||
"toolForm": {
|
||||
"backToBrowse": "Back to browse",
|
||||
"backToTool": "Back to tool",
|
||||
"addTitle": "Add a New Tool",
|
||||
"addSubtitle": "Submit a tool you use to let the community rate and review it.",
|
||||
"editTitle": "Edit Tool",
|
||||
"editSubtitle": "Update tool details and metadata.",
|
||||
"signInRequired": "Sign in required",
|
||||
"signInRequiredSub": "You must be signed in to submit a tool.",
|
||||
"toolDetails": "Tool Details",
|
||||
"toolDetailsNewSub": "Provide the basic information about the tool.",
|
||||
"toolDetailsEditSub": "Modify the tool information below.",
|
||||
"name": "Name",
|
||||
"nameMin": "Name must be at least 2 characters",
|
||||
"category": "Category",
|
||||
"categoryRequired": "Category is required",
|
||||
"websiteUrl": "Website URL",
|
||||
"websiteUrlOptional": "Website URL (Optional)",
|
||||
"iconUrl": "Icon / Logo URL",
|
||||
"iconUrlOptional": "Icon / Logo URL (Optional)",
|
||||
"iconPreview": "icon preview",
|
||||
"description": "Description",
|
||||
"descriptionMin": "Description must be at least 10 characters",
|
||||
"invalidUrl": "Must be a valid URL",
|
||||
"features": "Features",
|
||||
"featuresNewSub": "List key capabilities. Existing features from other tools are selectable.",
|
||||
"featuresEditSub": "Key capabilities of this tool. Existing features from other tools are selectable.",
|
||||
"addFeature": "Add Feature",
|
||||
"noFeatures": "No features added.",
|
||||
"featurePlaceholder": "e.g. Real-time collaboration",
|
||||
"tags": "Tags",
|
||||
"tagsNewSub": "Keywords to help find this tool. Existing tags from other tools are selectable.",
|
||||
"tagsEditSub": "Keywords for this tool. Existing tags from other tools are selectable.",
|
||||
"addTag": "Add Tag",
|
||||
"tag": "Tag",
|
||||
"namePlaceholder": "e.g. React, Next.js, Postgres",
|
||||
"urlPlaceholder": "https://...",
|
||||
"logoPlaceholder": "https://example.com/logo.png",
|
||||
"descriptionPlaceholderNew": "What does this tool do? Why do people use it?",
|
||||
"descriptionPlaceholderEdit": "What does this tool do?",
|
||||
"addingTool": "Adding Tool...",
|
||||
"submitTool": "Submit Tool",
|
||||
"saving": "Saving…",
|
||||
"saveChanges": "Save Changes",
|
||||
"toastAdded": "Tool added successfully",
|
||||
"toastAddedSub": "Your tool is now available for review.",
|
||||
"toastAddFailed": "Failed to add tool",
|
||||
"toastUpdated": "Tool updated",
|
||||
"toastUpdatedSub": "Changes saved successfully.",
|
||||
"toastUpdateFailed": "Failed to update tool",
|
||||
"tagsHelp": "Keywords to help find this tool. Existing tags from other tools are selectable.",
|
||||
"tagPlaceholder": "Tag"
|
||||
},
|
||||
"category": {
|
||||
"placeholder": "Select or type a category...",
|
||||
"searchPlaceholder": "Search or enter new category...",
|
||||
"noCategories": "No categories found.",
|
||||
"knownCategories": "Known categories",
|
||||
"createNew": "Create new",
|
||||
"create": "+ Create"
|
||||
},
|
||||
"theme": {
|
||||
"title": "Theme",
|
||||
"light": "Light",
|
||||
"dark": "Dark",
|
||||
"system": "System",
|
||||
"chooseTitle": "Choose theme",
|
||||
"switchLight": "Switch to light theme",
|
||||
"switchDark": "Switch to dark theme"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user