From ece805a6d25f62e8bc112eeadf77e284c8f9239e Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Fri, 13 Mar 2026 16:17:54 -0400 Subject: [PATCH] feat: Add support for Russian, Hebrew (RTL), and Arabic (RTL) with visual width validation --- docs/ar/AGENTS.md | 41 +++++++++ docs/ar/CONTRIBUTING.md | 42 ++++++++++ docs/ar/docker.md | 16 ++++ docs/ar/templates.md | 14 ++++ docs/ar/troubleshooting.md | 60 +++++++++++++ docs/ar/usage.md | 130 +++++++++++++++++++++++++++++ docs/he/AGENTS.md | 41 +++++++++ docs/he/CONTRIBUTING.md | 42 ++++++++++ docs/he/docker.md | 16 ++++ docs/he/templates.md | 14 ++++ docs/he/troubleshooting.md | 60 +++++++++++++ docs/he/usage.md | 130 +++++++++++++++++++++++++++++ docs/ru/AGENTS.md | 41 +++++++++ docs/ru/CONTRIBUTING.md | 42 ++++++++++ docs/ru/docker.md | 16 ++++ docs/ru/templates.md | 14 ++++ docs/ru/troubleshooting.md | 60 +++++++++++++ docs/ru/usage.md | 130 +++++++++++++++++++++++++++++ site/download/voxvera-portable.zip | Bin 11905209 -> 11913629 bytes site/index.html | 50 ++++++++++- voxvera/cli.py | 24 ++++-- voxvera/locales/ar.json | 92 ++++++++++++++++++++ voxvera/locales/he.json | 92 ++++++++++++++++++++ voxvera/locales/ru.json | 92 ++++++++++++++++++++ voxvera/src/index-master.html | 48 ++++++++++- 25 files changed, 1297 insertions(+), 10 deletions(-) create mode 100644 docs/ar/AGENTS.md create mode 100644 docs/ar/CONTRIBUTING.md create mode 100644 docs/ar/docker.md create mode 100644 docs/ar/templates.md create mode 100644 docs/ar/troubleshooting.md create mode 100644 docs/ar/usage.md create mode 100644 docs/he/AGENTS.md create mode 100644 docs/he/CONTRIBUTING.md create mode 100644 docs/he/docker.md create mode 100644 docs/he/templates.md create mode 100644 docs/he/troubleshooting.md create mode 100644 docs/he/usage.md create mode 100644 docs/ru/AGENTS.md create mode 100644 docs/ru/CONTRIBUTING.md create mode 100644 docs/ru/docker.md create mode 100644 docs/ru/templates.md create mode 100644 docs/ru/troubleshooting.md create mode 100644 docs/ru/usage.md create mode 100644 voxvera/locales/ar.json create mode 100644 voxvera/locales/he.json create mode 100644 voxvera/locales/ru.json diff --git a/docs/ar/AGENTS.md b/docs/ar/AGENTS.md new file mode 100644 index 0000000..667fff5 --- /dev/null +++ b/docs/ar/AGENTS.md @@ -0,0 +1,41 @@ +# AI Agent Instructions for VoxVera + +This guide is for AI agents (like Gemini, Claude, or GPT) contributing to the VoxVera project. Follow these protocols to maintain the architectural integrity and multi-language support. + +## Core Mandates + +1. **Security-First**: VoxVera is a Tor-based tool. Never suggest features that leak IP addresses or use non-Tor external resources (CDNs, etc.). +2. **Local-First**: All assets (fonts, dependencies, binaries) must be self-contained within the `voxvera/` package to support the Universal Mirroring model. +3. **Tokenized UI**: Never hardcode user-facing strings. Always add them to `voxvera/locales/en.json` and use the `t('cli.token')` helper. +4. **Markdown Redaction**: Use `~~text~~` in locale JSONs for strike-through effects. Both the build system and the JS engine handle the conversion to `` automatically. + +## Localization Protocol + +When adding a new language or updating an existing one: +- **CLI/Flyers**: Update `voxvera/locales/{lang}.json`. Include `meta`, `cli`, `web`, and `landing` categories. +- **Landing Page**: + - Directly update the `const locales` object in `site/index.html`. + - **Crucial**: Run `voxvera build-site` to generate the latest portable bundle and refresh the pre-rendered HTML. +- **Documentation**: + - Master templates live in `docs/templates/`. + - Localized overrides live in `voxvera/locales/{lang}/docs/`. + - **Crucial**: After any change to locales or templates, you MUST run `voxvera build-docs` to synchronize the output in `docs/{en,es,de}/`. + +## Universal Mirroring + +VoxVera propagates through its own flyers. +- Every `voxvera build` and `voxvera build-site` generates `voxvera-portable.zip`. +- If you modify the core source code, ensure the `bundle_portable` function in `voxvera/cli.py` still correctly captures all necessary directories (especially `vendor/`, `locales/`, and `resources/`). + +## Verification Checklist + +Before finishing a task, ensure you have: +1. Run unit tests: `pytest tests/test_cli.py`. +2. Verified the localization: `voxvera --lang {lang} check`. +3. Rebuilt the documentation: `voxvera build-docs`. +4. Synchronized the public site: `voxvera build-site`. +5. Verified the portable bundle exists: `ls -l voxvera/host/*/download/voxvera-portable.zip` and `ls -l site/download/voxvera-portable.zip`. + +--- + +Follow these rules to ensure VoxVera remains a robust, viral, and decentralized tool for truth. diff --git a/docs/ar/CONTRIBUTING.md b/docs/ar/CONTRIBUTING.md new file mode 100644 index 0000000..7c0ec5a --- /dev/null +++ b/docs/ar/CONTRIBUTING.md @@ -0,0 +1,42 @@ +# Contributing to VoxVera + +Thank you for your interest in contributing to VoxVera! This project aims to be a global, censorship-resistant tool, and your help—especially with translations—is vital. + +## Adding a New Language + +VoxVera uses a centralized token system for the CLI and Web components, and a template-based system for Documentation. To add a new language (e.g., French/`fr`), follow this checklist: + +### 1. The Token File +Create a new JSON file in `voxvera/locales/{lang_code}.json`. +- Use `en.json` as your master template. +- **`meta`**: Include the native language name and a flag emoji. +- **`cli`**: Translate all strings used in the terminal interface. +- **`web`**: Translate strings used on the generated landing pages and flyers. +- **`landing`**: Translate the specific content for the official VoxVera website. +- **Formatting**: You can use Markdown-style strike-throughs (`~~redacted text~~`) in any of these strings; they will be automatically converted to the stylized "redacted" effect on the flyers. + +### 2. The Landing Page +The main landing page (`site/index.html`) must be synchronized to include your new language. +- Open `site/index.html` and add your language to the `const locales` object in the `