{"id":41635709,"url":"https://github.com/timokoenig/translate","last_synced_at":"2026-01-24T14:51:46.405Z","repository":{"id":170571096,"uuid":"634694298","full_name":"timokoenig/translate","owner":"timokoenig","description":"Lightweight simple translation platform to manage your localizations","archived":false,"fork":false,"pushed_at":"2025-06-24T10:46:36.000Z","size":1864,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-24T11:38:55.689Z","etag":null,"topics":["i18n","i18next","typescript","web"],"latest_commit_sha":null,"homepage":"https://translate.timokoenig.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timokoenig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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},"funding":{"ko_fi":"timokoenig"}},"created_at":"2023-04-30T23:51:35.000Z","updated_at":"2025-06-24T10:46:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"8c06b914-b29e-433f-bc0e-dae5c02b15fd","html_url":"https://github.com/timokoenig/translate","commit_stats":null,"previous_names":["timokoenig/translate"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/timokoenig/translate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timokoenig%2Ftranslate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timokoenig%2Ftranslate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timokoenig%2Ftranslate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timokoenig%2Ftranslate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timokoenig","download_url":"https://codeload.github.com/timokoenig/translate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timokoenig%2Ftranslate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28730301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["i18n","i18next","typescript","web"],"created_at":"2026-01-24T14:51:45.822Z","updated_at":"2026-01-24T14:51:46.397Z","avatar_url":"https://github.com/timokoenig.png","language":"TypeScript","funding_links":["https://ko-fi.com/timokoenig"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\" style=\"margin-bottom: 20px\"\u003e\n  \u003cimg src=\"./assets/translate-logo.png\" width=\"300px\" alt=\"Logo Translate\" /\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  Lightweight simple translation platform to manage your localizations\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./public/browser-mockup-dark.png\" width=\"400px\" alt=\"Translate Preview\" /\u003e\n\u003c/div\u003e\n\n## Getting Started\n\nSet the following environment variables in the `.env` file.\n\n```\nGITHUB_ID=xxx\nGITHUB_SECRET=xxx\nNEXTAUTH_URL=http://localhost:3000\nNEXTAUTH_SECRET=xxx\nNEXT_PUBLIC_SECURE_LOCAL_STORAGE_HASH_KEY=xxx\nNEXT_PUBLIC_SECURE_LOCAL_STORAGE_PREFIX=translate\n```\n\nThen run the following commands to install and build the application.\n\n```\npnpm install\npnpm run build\n```\n\nYou will be able to open the application in your browser with the URL `http://localhost:3000`.\n\nYou can also run the dev command for your local environment.\n\n```\npnpm run dev\n```\n\n### Github OAuth App\n\nCreate a Github OAuth app to allow the user to sign-in and manage their repository translations.\n\nYou can find information on how to do it on the [offical Github website](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app).\n\nAfter you created the app, set the environment variables `GITHUB_ID` and `GITHUB_SECRET` accordingly.\n\n### NextAuth\n\nThe application uses NextAuth.js for the OAuth authentication. You need to set the environmment variable `NEXTAUTH_SECRET` ([more information](https://next-auth.js.org/configuration/options#secret)) and `NEXTAUTH_URL` ([more information](https://next-auth.js.org/configuration/options#nextauth_url)).\n\nYou can use openssl to generate a secret for you `openssl rand -base64 32`.\n\n### Ko-Fi Support Button\n\nSet the `NEXT_PUBLIC_KOFI_USERNAME` environment variable to enable the ko-fi support button.\n\n### Imprint\n\nSet the `NEXT_PUBLIC_IMPRINT_URL` environment variable with a URL to your imprint HTML to enable the imprint page.\n\n## Why Translate?\n\nWhile I developed a NextJS application with many different localizations, I was tired of editing the json files directly and copying keys from one language to another. The more keys you have and the more languages your application supports the more difficult it gets to manage them. **Translate** provides a simple web interface to manage all translations directly in your Github repository.\n\n## How does it work?\n\nTBD\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimokoenig%2Ftranslate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimokoenig%2Ftranslate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimokoenig%2Ftranslate/lists"}