{"id":28443146,"url":"https://github.com/neo-vortex/translationmanager","last_synced_at":"2026-04-18T01:32:29.651Z","repository":{"id":293990407,"uuid":"985703927","full_name":"Neo-vortex/TranslationManager","owner":"Neo-vortex","description":"A Blazor application with API to handle translation in a single server","archived":false,"fork":false,"pushed_at":"2025-05-20T09:26:40.000Z","size":225,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T07:01:43.284Z","etag":null,"topics":["api","blazor","blazor-server","cache","postgresql","redis","translation"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Neo-vortex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-18T10:56:09.000Z","updated_at":"2025-05-20T09:26:43.000Z","dependencies_parsed_at":"2025-05-18T11:45:32.738Z","dependency_job_id":"109365be-b431-48a1-989b-00d321365437","html_url":"https://github.com/Neo-vortex/TranslationManager","commit_stats":null,"previous_names":["neo-vortex/translationmanager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Neo-vortex/TranslationManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neo-vortex%2FTranslationManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neo-vortex%2FTranslationManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neo-vortex%2FTranslationManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neo-vortex%2FTranslationManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neo-vortex","download_url":"https://codeload.github.com/Neo-vortex/TranslationManager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neo-vortex%2FTranslationManager/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262870852,"owners_count":23377309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","blazor","blazor-server","cache","postgresql","redis","translation"],"created_at":"2025-06-06T07:00:40.371Z","updated_at":"2025-10-14T23:42:18.165Z","avatar_url":"https://github.com/Neo-vortex.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Translation Manager Documentation\n\n## Introduction\n\nManaging translations using RESX files is outdated and inefficient—it often leads to merge conflicts and requires recompiling the application for even minor changes, making it unsuitable for agile workflows.\nThe Translation Manager provides a complete solution for managing application translations with a Blazor-based UI and REST API.\n![image](https://github.com/user-attachments/assets/b364e562-d9ca-4316-a280-efda34bd0329)\n## Features\n\n* **Web-based Management UI**\n\n  * Add, edit, and delete translations\n  * Search and filter functionality\n  * Multi-format export/import\n\n* **Supported Formats**\n\n  * JSON\n  * YAML\n  * Excel/CSV\n\n* **API Access**\n\n  * RESTful endpoints\n  * Caching support (5 min TTL for each translation)\n  * Culture-specific retrieval\n  * Optional parameter injection into translation strings\n\n## Installation\n\n### Prerequisites\n\n* .NET 9.0+\n* SQL Server\n* Redis\n\n### Setup Steps\n\n1. Clone repository:\n\n   ```bash\n   git clone https://github.com/yourusername/translation-manager.git\n   ```\n\n2. Configure database in `appsettings.json`:\n\n   ```json\n   \"ConnectionStrings\": {\n     \"Redis\" : \"localhost:6379\",\n     \"DefaultConnection\": \"Server=(localdb)\\\\mssqllocaldb;Database=TranslationManager;Trusted_Connection=True;\"\n   }\n   ```\n\n3. Apply migrations:\n\n   ```bash\n   dotnet ef database update\n   ```\n\n4. Run application:\n\n   ```bash\n   dotnet run\n   ```\n\n## API Documentation\n\n### Get Translation Endpoint\n\n```http\nGET /api/translations/{key}/{culture}?parameters=1,2\n```\n\n| Parameter    | Type   | Description                                                                             |\n| ------------ | ------ | --------------------------------------------------------------------------------------- |\n| `key`        | string | Translation key                                                                         |\n| `culture`    | string | Culture code (e.g., `en-US`)                                                            |\n| `parameters` | string | *(Optional)* Comma-separated values to inject into placeholders like `{0}`, `{1}`, etc. |\n\n### Response Codes\n\n* `200 OK`: Returns translated string\n* `404 Not Found`: Missing translation or culture-specific value\n* `400 Bad Request`: Format mismatch with parameters\n\n### Example Request\n\n```bash\ncurl -X GET \"https://yourapi.com/api/translations/welcome_message/en-US?parameters=John,3\"\n```\n\nIf the stored translation is:\n\n```\n\"Hello, {0}! You have {1} new messages.\"\n```\n\nThe response will be:\n\n```\n\"Hello, John! You have 3 new messages.\"\n```\n\n## Docker\n\n### Run using Docker\n\n```bash\ndocker run -d \\\n  -p 8080:8080 \\\n  -p 8081:8081 \\\n  -e ASPNETCORE_ENVIRONMENT=Production \\\n  -e ConnectionStrings__DefaultConnection=\"Host=postgres;Port=5432;Database=Translation;Username=postgres;Password=postgres\" \\\n  -e ConnectionStrings__Redis=\"redis:6379\" \\\n  --name translation-manager \\\n  docker.io/realneovortex/traslationmanagersharp\n```\n\n## UI Usage\n\n### Managing Translations\n\n* **Adding**\n\n  * Click \"Add New Translation\"\n  * Enter key and culture values\n\n* **Searching**\n\n  * Use search box\n  * Supports key/value filtering\n\n### Import/Export Formats\n\n| Format | Extension      | Notes                  |\n| ------ | -------------- | ---------------------- |\n| JSON   | `.json`        | Hierarchical structure |\n| YAML   | `.yaml`/`.yml` | Human-readable         |\n| Excel  | `.xlsx`/`.csv` | Spreadsheet format     |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneo-vortex%2Ftranslationmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneo-vortex%2Ftranslationmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneo-vortex%2Ftranslationmanager/lists"}