{"id":28762517,"url":"https://github.com/woozymasta/dayz-stringtable","last_synced_at":"2026-01-21T21:01:50.554Z","repository":{"id":295317555,"uuid":"989791012","full_name":"WoozyMasta/dayz-stringtable","owner":"WoozyMasta","description":"A lightweight Go CLI that streamlines CSV ↔ Gettext localization workflows for DayZ stringtables.","archived":false,"fork":false,"pushed_at":"2025-05-25T01:32:15.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-17T08:08:44.263Z","etag":null,"topics":["cli","csv","dayz","devtools","gettext","go","l18n","localization","stringtables"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WoozyMasta.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-24T20:43:56.000Z","updated_at":"2025-05-25T01:30:51.000Z","dependencies_parsed_at":"2025-05-26T12:02:11.764Z","dependency_job_id":null,"html_url":"https://github.com/WoozyMasta/dayz-stringtable","commit_stats":null,"previous_names":["woozymasta/dayz-stringtable"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/WoozyMasta/dayz-stringtable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fdayz-stringtable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fdayz-stringtable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fdayz-stringtable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fdayz-stringtable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WoozyMasta","download_url":"https://codeload.github.com/WoozyMasta/dayz-stringtable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fdayz-stringtable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28642695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T18:04:35.752Z","status":"ssl_error","status_checked_at":"2026-01-21T18:03:55.054Z","response_time":86,"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":["cli","csv","dayz","devtools","gettext","go","l18n","localization","stringtables"],"created_at":"2025-06-17T08:08:43.322Z","updated_at":"2026-01-21T21:01:50.548Z","avatar_url":"https://github.com/WoozyMasta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DayZ StringTable GetText CLI\n\nA simple CLI tool for managing localization of DayZ `stringtables.csv`\nand Gettext formats.\n\nThis utility helps you:\n\n* **Generate a POT template** from your base CSV of original strings.\n* **Create PO files** (per language) from CSV, with empty translations.\n* **Merge PO files** back into a full CSV of translations.\n* **Update existing PO** files when you add new strings to CSV.\n* **Show translation statistics** with completion percentages\n  and untranslated strings.\n\nUnder the hood it uses simplified [gettext] `.pot` and `.po` formats.\n\n## About POT \u0026 PO\n\n* `.pot`: template with all `msgid` (original texts) and `msgctxt` (keys),\n  empty `msgstr`.\n* `.po`: one `.po` per language, where `msgstr` holds actual translations.\n\n### Workflow\n\n1. **Get** your source strings in CSV.\n2. `pot` \u0026rarr; **generate** `.pot` template.\n3. `pos` \u0026rarr; **create** new `.po` files with blank translations.\n4. **Edit** `.po` files using Poedit, Crowdin, LLM-assisted scripts,\n  or manually.\n5. `make` \u0026rarr; **export** translations back into CSV.\n6. When new strings appear: `update` \u0026rarr; **merge** into existing `.po`.\n\nUsing Git, translators can work on just their own `.po` files in separate\nbranches/PRs, avoiding noise in other locales.\n\n## Installation\n\nDownload the latest binary from releases or build from source:\n\n|           | MacOS                           | Linux                          | Windows                          |\n| --------- | ------------------------------- | ------------------------------ | -------------------------------- |\n| **AMD64** | [dayz-stringtable-darwin-amd64] | [dayz-stringtable-linux-amd64] | [dayz-stringtable-windows-amd64] |\n| **ARM64** | [dayz-stringtable-darwin-arm64] | [dayz-stringtable-linux-arm64] | [dayz-stringtable-windows-arm64] |\n\n```bash\ngit clone https://github.com/woozymasta/dayz-stringtable.git\ncd dayz-stringtable\ngo build ./cmd/dayz-stringtable\n```\n\nOr use Makefile for building:\n\n```bash\nmake build    # Build for current platform\nmake release  # Build for all supported platforms\nmake test     # Run tests\nmake lint     # Run linter\n```\n\n## Usage\n\n```bash\ndayz-stringtable [OPTIONS] \u003ccommand\u003e\n```\n\n### Options\n\n* `-v, --version` show version and build info\n* `-h, --help` show help\n\n### Commands\n\n#### `pot`\n\nGenerate a POT template (empty translations):\n\n```bash\ndayz-stringtable pot -i stringtable.csv -o stringtable.pot\n```\n\n#### `pos`\n\nCreate PO files per language (empty `msgstr`):\n\n```bash\ndayz-stringtable pos -i stringtable.csv -o l18n\n# or for specific langs:\ndayz-stringtable pos -i stringtable.csv -l russian,spanish -o l18n\n```\n\n#### `make`\n\nMerge all PO files into one CSV of translations:\n\n```bash\ndayz-stringtable make -i stringtable.csv -d l18n -o translated.csv\n```\n\n#### `update`\n\nAdd new strings from CSV to existing PO files:\n\n```bash\ndayz-stringtable update -i stringtable.csv -d l18n\n# to a separate folder:\ndayz-stringtable update -i stringtable.csv -d l18n -o updated_l18n\n```\n\n#### `stats`\n\nShow translation statistics for PO files:\n\n```bash\n# Basic statistics for all languages\ndayz-stringtable stats -i stringtable.csv -d l18n\n\n# Filter by specific language\ndayz-stringtable stats -i stringtable.csv -d l18n -l russian -l english\n\n# Verbose mode with untranslated strings\ndayz-stringtable stats -i stringtable.csv -d l18n -V\n\n# JSON format (useful for AI agents and automation)\ndayz-stringtable stats -i stringtable.csv -d l18n -cV -f json\n```\n\nThe `stats` command displays:\n\n* **Translated count**: Number of translated strings\n* **Total count**: Total number of strings\n* **Completion percentage**: Percentage of translated strings\n* **Remaining count**: Number of untranslated strings\n* **Untranslated details** (with `--verbose`): List of untranslated strings\n  with row numbers, keys, and original text\n\nJSON output format includes all statistics in a structured format suitable\nfor AI agents and automation scripts.\n\nWhen used with `--clear-only` flag (`-c`), the command excludes entries\nwith `# notranslate` comment from translated count, making it useful\nfor machine translation workflows where you need to identify strings\nthat actually need translation (excluding intentionally untranslated ones).\n\n#### `clean`\n\nRemove `msgstr` that duplicate `msgid` in PO files:\n\n```bash\ndayz-stringtable clean -d l18n\n# Only specific languages:\ndayz-stringtable clean -d l18n -l russian -l english\n# Remove unused entries (not present in CSV):\ndayz-stringtable clean -d l18n -i stringtable.csv --remove-unused\n# Clear only, don't add notranslate comment:\ndayz-stringtable clean -d l18n --clear-only\n```\n\nThe command scans all `.po` files in the directory\n(optionally filtered by `-l`)\nand clears `msgstr` where it is identical to `msgid`.\nBy default, it also adds a `# notranslate` comment to cleaned entries.\nUse `--clear-only` to skip adding the comment.\nUse `--remove-unused` with `-i`\nto remove entries that are no longer present in the CSV file.\n\n## Integrations \u0026 Tools\n\nFor integration into your project or CI, you can check out the examples\nof automation scripts\n[strings.sh](tools/strings.sh) and [strings.ps1](tools/strings.ps1)\n\n* **Poedit** – GUI editor that can auto-translate using DeepL/Google APIs.\n* **Crowdin/Lokalise/POEditor** – cloud localization platform.\n* **LLMs** – you can script `translate-toolkit` with LibreTranslate or\n  OpenAI to auto-fill `msgstr`.\n\n\u003c!-- omit in toc --\u003e\n## 👉 [Support Me](https://gist.github.com/WoozyMasta/7b0cabb538236b7307002c1fbc2d94ea)\n\nYour support is greatly appreciated!\n\n\u003c!-- Links --\u003e\n[dayz-stringtable-darwin-arm64]: https://github.com/WoozyMasta/dayz-stringtable/releases/latest/download/dayz-stringtable-darwin-arm64 \"MacOS arm64 file\"\n[dayz-stringtable-darwin-amd64]: https://github.com/WoozyMasta/dayz-stringtable/releases/latest/download/dayz-stringtable-darwin-amd64 \"MacOS amd64 file\"\n[dayz-stringtable-linux-amd64]: https://github.com/WoozyMasta/dayz-stringtable/releases/latest/download/dayz-stringtable-linux-amd64 \"Linux amd64 file\"\n[dayz-stringtable-linux-arm64]: https://github.com/WoozyMasta/dayz-stringtable/releases/latest/download/dayz-stringtable-linux-arm64 \"Linux arm64 file\"\n[dayz-stringtable-windows-amd64]: https://github.com/WoozyMasta/dayz-stringtable/releases/latest/download/dayz-stringtable-windows-amd64.exe \"Windows amd64 file\"\n[dayz-stringtable-windows-arm64]: https://github.com/WoozyMasta/dayz-stringtable/releases/latest/download/dayz-stringtable-windows-arm64.exe \"Windows arm64 file\"\n[gettext]: https://www.gnu.org/software/gettext/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoozymasta%2Fdayz-stringtable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwoozymasta%2Fdayz-stringtable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoozymasta%2Fdayz-stringtable/lists"}