{"id":17645438,"url":"https://github.com/thesoenke/translation-proxy-phraseapp","last_synced_at":"2025-09-21T16:14:15.459Z","repository":{"id":97236036,"uuid":"122504447","full_name":"theSoenke/translation-proxy-phraseapp","owner":"theSoenke","description":"Translation Proxy for PhraseApp","archived":false,"fork":false,"pushed_at":"2018-11-26T10:35:00.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-05T09:18:39.782Z","etag":null,"topics":["api","localization","phraseapp","proxy","translations"],"latest_commit_sha":null,"homepage":"","language":"Go","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/theSoenke.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}},"created_at":"2018-02-22T16:29:33.000Z","updated_at":"2018-05-04T15:45:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"1d42ed27-6bc7-40b3-bce7-f2924984b811","html_url":"https://github.com/theSoenke/translation-proxy-phraseapp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theSoenke%2Ftranslation-proxy-phraseapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theSoenke%2Ftranslation-proxy-phraseapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theSoenke%2Ftranslation-proxy-phraseapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theSoenke%2Ftranslation-proxy-phraseapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theSoenke","download_url":"https://codeload.github.com/theSoenke/translation-proxy-phraseapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246285818,"owners_count":20752957,"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","localization","phraseapp","proxy","translations"],"created_at":"2024-10-23T10:56:20.043Z","updated_at":"2025-09-21T16:14:10.408Z","avatar_url":"https://github.com/theSoenke.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# translation-proxy-phraseapp\n\n[PhraseApp](https://phraseapp.com) translation proxy to cache translations for unlimited API requests and faster responses.\n\n## Run\n### Docker\n\n    docker build -t translation-proxy-phraseapp .\n    docker run -it -p 8080:8080 -e PHRASEAPP_ACCESS_TOKEN=\u003caccess_token\u003e translation-proxy-phraseapp\n\n### Build from source\n\n    go get\n    go build\n    export PHRASEAPP_ACCESS_TOKEN=\u003caccess_token\u003e\n    ./translation-proxy\n\n## Supported Endpoints\nThe translation proxy replicates the API from PhraseApp of multiple GET endpoints. The following endpoints are supported:\n- [List Locales](https://phraseapp.com/docs/api/v2/locales/#index) `GET /v2/projects/:project_id/locales`\n- [Download Locales](https://phraseapp.com/docs/api/v2/locales/#download) `GET /v2/projects/:project_id/locales/:id/download`\n- [List Translations](https://phraseapp.com/docs/api/v2/translations/#index) `GET /v2/projects/:project_id/translations\n`\n\n### Webhooks\nBy default the translations will be cached for 10 minutes. To immediately clear the cache and get the newest translations the translation proxy supports webhooks.\n\nThe translation proxy will print the webhooks URL containing a secret on start: `/webhooks/:secret`. The secret will change after every restart. The webhooks URL then has to be added in the project on PhraseApp with events that should trigger a cache reset like: `translations:update`\n\n## Load Test\n1. `go get -u github.com/tsenart/vegeta`\n2. `cat vegeta/requests.txt | vegeta attack -rate=1000 -duration=30s | vegeta report`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesoenke%2Ftranslation-proxy-phraseapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthesoenke%2Ftranslation-proxy-phraseapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesoenke%2Ftranslation-proxy-phraseapp/lists"}