RenPy Translator is a tool designed to simplify the translation workflow for Ren'Py visual novel games.
The tool scans Ren'Py script files (.rpy), extracts dialogue text, and prepares it for translation and patch generation.
The goal of this project is to make creating translation patches for Ren'Py games easier and more accessible.
Current and planned features:
- Scan Ren'Py game directories
- Detect
.rpyscript files - Extract dialogue text
- Store dialogue data for translation
- Translation editor interface (planned)
- Patch generation system (planned)
- Auto translation support (future)
The system is designed as a modular pipeline.
flowchart TD
A[Ren'Py Game Folder]
B[Scanner Module]
C[Parser Module]
D[Dialogue Model]
E[Translation Interface]
F[Patch Generator]
G[Translated Patch]
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
Pipeline overview:
- The scanner locates
.rpyscript files. - The parser extracts dialogue from the scripts.
- Dialogue data is stored using structured models.
- The UI editor allows translators to modify text.
- A patch generator builds the final translation patch.
renpy-translator
│
├─ core/ # Core translation engine
│ ├─ parser.py
│ ├─ scanner.py
│ └─ models.py
│
├─ ui/ # User interface
│ └─ app.py
│
├─ tests/ # Unit tests
│ └─ test_parser.py
│
├─ docs/ # Technical documentation
│ ├─ architecture.md
│ └─ parser_design.md
│
├─ assets/ # Icons and resources
│
├─ .pre-commit-config.yaml
├─ .gitignore
├─ requirements.txt
├─ LICENSE
└─ README.md
Clone the repository:
git clone https://github.com/YOUR_USERNAME/renpy-translator.git
Navigate to the project folder:
cd renpy-translator
Create a virtual environment:
python -m venv venv
Activate the environment.
Windows:
venv\Scripts\activate
Linux / macOS:
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
This project uses pre-commit hooks to ensure consistent code formatting.
Install hooks:
pre-commit install
Run checks manually:
pre-commit run --all-files
Development tools used:
- Black → code formatter
- Ruff → Python linter
- isort → import sorting
Run the application entry point:
python ui/app.py
Current output:
RenPy Translator UI starting...
This is currently a placeholder while the core engine is under development.
Planned development phases:
- Implement
.rpyscanner - Build dialogue parser
- Design dialogue data models
- Extract dialogue from scripts
- Manage translation data
- Generate Ren'Py translation patches
- Translation editor UI
- File management tools
- Automatic translation support
- Translation memory
- Improved parser compatibility
Contributions are welcome.
If you'd like to contribute:
- Fork the repository
- Create a new branch
- Commit your changes
- Submit a Pull Request
You can also open issues for bug reports or feature requests.
This project is licensed under the MIT License.