|
Download README.md from build-small-hackathon/Vernacular: direct link, hf CLI and curl.
- Browser
- Download file 5.91 kB
-
https://huggingface.co/spaces/build-small-hackathon/Vernacular/resolve/main/README.md
- Command line
-
hf download hf://spaces/build-small-hackathon/Vernacular/README.md
-
curl -L -o README.md https://huggingface.co/spaces/build-small-hackathon/Vernacular/resolve/main/README.md
5.91 kB
| title: Vernacular | |
| emoji: π» | |
| colorFrom: gray | |
| colorTo: purple | |
| sdk: gradio | |
| sdk_version: 6.16.0 | |
| python_version: '3.10' | |
| app_file: app.py | |
| pinned: false | |
| license: mit | |
| short_description: Translate games. Keep every character's voice | |
| # Vernacular | |
| Vernacular is a Gradio review tool and character-aware translation pipeline for | |
| *An Elmwood Trail*, a narrative mystery mobile game, developed by our friends at **Techyonic** <https://www.techyonic.co/>. It translates source strings, | |
| uses character voice wikis to rewrite dialogue in the speaker's style, and lets | |
| a reviewer approve, reject, or edit every final line. | |
| The current app workflow also supports direct uploads: users can upload `.docx`, | |
| `.xlsx`, `.json`, `.txt`, or `.csv` files, build/update character wikis, download | |
| or re-upload the wiki JSON bundle, then press **Refresh** to send the uploaded | |
| file through the normal translation and tone workflow. | |
| Demo post: [LinkedIn showcase](https://www.linkedin.com/posts/sarthak-bhardwaj-_buildabrsmallabrhackathon-share-7472425190627512320-V6Sb/?utm_source=share&utm_medium=member_desktop&rcm=ACoAADPVRw4BotVBCyPE4DpwbuFzkKqoaQNohis) | |
| Video demo: [YouTube walkthrough](https://youtu.be/Lmw0X4opf6M) | |
| ``` | |
| Uploaded doc/xlsx ββΊ converter/docs.py or converter/sheets.py ββΊ English_JSON/Uploaded/ | |
| Uploaded wiki JSON ββββββββββββββββββββββββββββββββββββββββββββΊ character_wikis/*.md | |
| Uploaded source ββΊ wiki builder ββΊ character_wikis/*.md ββΊ character_wikis.json | |
| English_JSON/Uploaded/ ββΊ TranslateGemma ββΊ Gemma tone pass + character wiki | |
| β | |
| translations/<lang>/ review records | |
| β | |
| app.py review: approve / reject / edit | |
| ``` | |
| ## Setup | |
| Install the runtime dependencies: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| The app uses Hugging Face Transformers in-process, not local llama.cpp or Ollama | |
| servers. The model IDs are configured in `config.py`: | |
| ```python | |
| TRANSLATE_MODEL_ID = "google/translategemma-12b-it" | |
| TONE_MODEL_ID = "google/gemma-4-12B-it" | |
| ``` | |
| For Hugging Face Spaces, add an `HF_TOKEN` secret for reliable downloads and for | |
| access to gated Google Gemma models. The account behind that token must have | |
| accepted the model terms. | |
| Run the app locally: | |
| ```bash | |
| python app.py | |
| ``` | |
| ## App Workflow | |
| 1. Open the Gradio app. | |
| 2. In **Character wiki builder**, upload one or more source files. | |
| 3. Optionally upload an existing `character_wikis.json`. | |
| 4. Click **Build / update wiki JSON**. | |
| 5. Download the generated wiki JSON if you want to keep or reuse it later. | |
| 6. Click the existing **Refresh** button. | |
| 7. Select the uploaded file from the file dropdown and review its translated | |
| strings as usual. | |
| For `.docx` and `.xlsx` uploads, the app uses the same converter modules as the | |
| original pack conversion: | |
| | Upload type | Conversion path | | |
| |---|---| | |
| | `.docx` | `converter/docs.py` via `readLocalDoc()` | | |
| | `.xlsx` | `converter/sheets.py` via `readLocalSheet()` | | |
| | `.json`, `.txt`, `.csv` | Plain-text fallback wrapped as uploaded chat rows | | |
| If a converted doc/sheet produces no translatable strings, the app falls back to | |
| plain extracted text so the upload still enters the workflow. | |
| ## What Uploads Create | |
| Uploaded files are stored in app-managed paths: | |
| | Path | Purpose | | |
| |---|---| | |
| | `uploaded_wiki_sources/` | Plain text JSON used to build/update character wikis | | |
| | `English_JSON/Uploaded/Filler Chats/` | Converted source JSON used by translation/review | | |
| | `character_data/` | Character index entries pointing to uploaded files | | |
| | `character_wikis/*.md` | Per-character markdown wikis used by the tone pass | | |
| | `character_wikis/character_wikis.json` | Downloadable/uploadable wiki bundle | | |
| | `translations/<lang>/Uploaded/Filler Chats/` | Review records produced after Refresh | | |
| ## Existing Batch Workflow | |
| The original full-pack workflow is still available: | |
| ```bash | |
| python convert.py | |
| python build_character_data.py | |
| python build_character_wikis.py | |
| python -m pipeline.build_file_context | |
| python -m pipeline.translate_pack | |
| python app.py | |
| python -m pipeline.export_pack | |
| ``` | |
| `pipeline.translate_pack` remains resumable and supports targeted runs: | |
| ```bash | |
| python -m pipeline.translate_pack --dry-run | |
| python -m pipeline.translate_pack --filter Initial/ | |
| python -m pipeline.translate_pack --stage translate | |
| python -m pipeline.translate_pack --stage tone | |
| ``` | |
| Note: `build_character_wikis.py` is the older batch wiki builder and still uses | |
| its original local Ollama path. The Gradio upload workflow builds wikis through | |
| the in-process Hugging Face Gemma client instead. | |
| ## Changing The Target Language | |
| Edit the target values in `config.py`: | |
| ```python | |
| TARGET_LANG_CODE = "de" | |
| TARGET_LANG_NAME = "German" | |
| PACK_NAME = "German_JSON" | |
| ``` | |
| Then rerun the translation/review/export workflow. TranslateGemma supports many | |
| language pairs, but the selected Hugging Face model and token access must be | |
| available in the runtime. | |
| ## Repository Map | |
| | Path | Purpose | | |
| |---|---| | |
| | `app.py` | Gradio app: wiki upload/build, refresh, review UI | | |
| | `requirements.txt` | Space/local Python runtime dependencies | | |
| | `config.py` | Target language, paths, Hugging Face model settings | | |
| | `converter/` | `.docx` / `.xlsx` to structured JSON conversion | | |
| | `English_JSON/` | Source-of-truth JSON files, including uploaded files | | |
| | `character_data/` | Per-character file indexes | | |
| | `character_wikis/` | Markdown wikis and downloadable wiki JSON bundle | | |
| | `pipeline/clients.py` | In-process TranslateGemma and Gemma tone inference | | |
| | `pipeline/translate_pack.py` | Batch translation/tone driver | | |
| | `translations/<lang>/` | Review records used by the app | | |
| | `pipeline/export_pack.py` | Exports approved/edited translations to final pack | |