-
-
Notifications
You must be signed in to change notification settings - Fork 8
Advanced Parsing
RenLocalizer uses a sophisticated multi-stage pipeline to extract text without breaking the underlying game logic or engine syntax.
The first layer of scanning uses highly optimized Regular Expressions to find standard Ren'Py dialogue and UI strings:
-
Dialogue:
character_name "Dialogue text" -
Direct strings:
_("Text")or"Text" -
Menu items:
menu:choice blocks.
When simple patterns aren't enough, RenLocalizer analyzes the script's structure using Python's ast module.
-
Capabilities:
- Finds strings inside nested functions.
- Extracts text from
init pythonblocks. - Distinguishes between technical code and translatable content.
Many "obfuscated" games hide their source code by deleting .rpy files.
- RPYC Reader: "Unpickles" binary RPYC files to extract the original logic. You can translate a game even if the source code is missing!
- RPYMC Reader: Handles screen cache files, ensuring complex UI elements are localized.
Enable Deep Scan in settings to trigger a recursive analysis of the entire project.
-
What it finds: Variable assignments and list items used as game text that don't follow standard
_()markers. -
Safety: Uses a "Technical String Filter" to skip engine internals like
renpy.dissolve.
Categorize and select exactly what you want to translate in Settings > Text Types:
- 📌 Core: Dialogue, Menus, Buttons.
- 📌 Interface: UI text, Input fields, Alt text.
- 📌 System: Notifications, Confirmation dialogs.
- 📌 Config: Game title, Version strings.
RenLocalizer automatically detects file encodings and normalizes them to UTF-8 with BOM.
🛡️ Benefit: Prevents "Mojibake" (broken characters) in languages like Russian, Chinese, or Japanese.
Sometime Ren'Py source code contains dynamic strings that are not wrapped in _() or !t flags. These strings often appear untranslated in games even after processing.
-
How it Works:
- RenLocalizer injects a small script (
01_renlocalizer_runtime.rpy) into the game folder. - This script hooks into the engine's text processing pipeline (
config.replace_text). - Every time a string is displayed, it checks if a translation exists in the current language files.
- RenLocalizer injects a small script (
- When to Use: Use this if you see quest descriptions, item names, or dynamic UI elements that remain untranslated.
- Status: Disabled by default to ensure maximum compatibility with other mods (like Zenpy). Enable it in Settings > Translation Settings.
- Advanced-Parsing
- RPA-Extraction
- Glossary-Management
- External-Translation-Memory — (NEW) Reuse translations across games
- Technical-Filtering
- Proxy-and-Rate-Limits
- Web-Google-Translate-Guide