{"id":43366018,"url":"https://github.com/rangzen/t2","last_synced_at":"2026-02-02T04:45:07.276Z","repository":{"id":57630867,"uuid":"409189480","full_name":"rangzen/t2","owner":"rangzen","description":"Traduction Translation aka T2 can help you improve when writing in a foreign language.","archived":false,"fork":false,"pushed_at":"2022-12-24T04:13:47.000Z","size":117,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T03:30:01.508Z","etag":null,"topics":["translation"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rangzen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-22T12:07:59.000Z","updated_at":"2022-07-18T11:52:40.000Z","dependencies_parsed_at":"2023-01-30T20:15:23.550Z","dependency_job_id":null,"html_url":"https://github.com/rangzen/t2","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/rangzen/t2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rangzen%2Ft2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rangzen%2Ft2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rangzen%2Ft2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rangzen%2Ft2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rangzen","download_url":"https://codeload.github.com/rangzen/t2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rangzen%2Ft2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29006075,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T04:25:24.522Z","status":"ssl_error","status_checked_at":"2026-02-02T04:24:51.069Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["translation"],"created_at":"2026-02-02T04:45:02.174Z","updated_at":"2026-02-02T04:45:07.267Z","avatar_url":"https://github.com/rangzen.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Traduction Translation aka T2\n\nCheck how your test resists to double translation.\n\nI’m French, so when I write in english, I sometimes use double translation to check how the translated english \"sounds\".\nOn a translation software, I write directly in English, I translate into French and translate back again into English.  \nThe name \"Traduction Translation\" comes from there, \"traduction\" being \"translation\" in French.\n\nAs a developer, I wanted to try to automate this thing and share it with you.  \nJust copy some text, then run `t2 clipboard`, and \"voilà\".  \nI hope it will help you.\n\nYes, documentation was checked with t2 :)\n\n## Examples\n\nIn a terminal, the diff version will appear in color:\n\n![diff screenshot](https://raw.githubusercontent.com/rangzen/t2/main/doc/Screenshot_20210925_diff.png)\n\nDon't forget the `--diff-only` or `-d` flag if you want to display only this part.\n\n### Translate from CLI\n\n```shell\n$ t2 \"I want speak english.\"\nUsing config file: /home/user/.t2.yaml\n# Original text\nI want speak english.\n# Pivot text\nJe veux parler anglais.\n# Double translated text\nI want to speak English.\n# Diff version\nI want to speak eEnglish.\n```\n\n### Translate from the clipboard\n\nDon't bother with copy/paste operations, quoting text, etc. Just copy what you want to check and then `t2 clipboard`.\nYou can add the `-c` flag to return the result to the clipboard.\n\n```shell\n$ t2 clipboard\nUsing config file: /home/user/.t2.yaml\n# Original text\nSome text this was in clipboard.\n# Pivot text\nCertains textes étaient dans le presse-papiers.\n# Double translated text\nSome texts were in the clipboard.\n# Diff version\nSome text this wasere in the clipboard.\n```\n\n### Usage\n\n```shell\n$ t2 usage\nUsing config file: /home/user/.t2.yaml\nUsage: 12477/500000\n```\n\n## Installation\n\n```shell\ngo install github.com/rangzen/t2@latest\n```\n\n## Translation services\n\n#### Configuration\n\n* Create a `.t2.yaml` file configuration with:\n\n```yaml\nTranslationServices:\n  DeepL:\n    Endpoint: https://api-free.deepl.com/v2/translate\n    ApiKey: redacted-0123-0123-0123-redacted:fx\n  Google:\n    Endpoint: https://translation.googleapis.com/language/translate/v2\n    ApiKey: redactedredactedredacted\n```\n\nSee the `t2-example.yaml` file for an example.\n\n### DeepL\n\nThe actual default service for translation is [DeepL](https://deepl.com).  \nYou’ll need a Pro free account because the free account is almost always out of limits.  \nI don’t have a Pro paid account, but I think that you just have to change the Endpoint configuration.\n\n### Google Cloud Translation\n\nFor using [Google Cloud Translation](https://cloud.google.com/translate/), you need:\n* a Google Cloud account,\n* a Paid account,\n* an API key without restriction.\n\n\"The `usage` command doesn't work with Google!\"  \nI know. If you know the API endpoint for usage, please let me know.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frangzen%2Ft2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frangzen%2Ft2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frangzen%2Ft2/lists"}