Skip to content
/ babylon Public

A lightweight collaborative translation tool for creative projects — cozy, minimal, and in the retro-futuristic style of The Wizard and TrinketOS.

License

Notifications You must be signed in to change notification settings

ismslv/babylon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Babylon is a lightweight collaborative translation tool for creative projects — cozy, minimal, and in the retro-futuristic style of The Wizard.

Use it to organize and collaborate on translations for games, apps, stories, or anything else that needs localization.

Supports multiple languages, fuzzy matches, and a charming pixel-art interface that feels right at home in the TrinketOS universe.

Free to use, easy to host, and ready to help your words cross borders.

Features

  • Web-based, clean & minimal UI
  • SQLite backend — no external DB needed
  • Support for 10–15 translators and ~1000 strings without performance issues
  • Modular support for file formats:
    • Android XML
    • CSV (Godot, Unity-style)
    • PO/POT (gettext)
  • Import & export translations per language or all languages at once in zip archive
  • Supports versioning of strings (optional)
  • Per-language assignment for translators
  • Admin panel for user & language management
  • Login-based, with simple password system
  • Real-time online presence tracking
  • Customizable UI labels (custom_names) to adapt terminology to your team or project.

Installation

  1. Upload the code to your PHP server (works with PHP 7+)
  2. Make sure the folder is writable (to create the translations.db)
  3. Create config.json file
  4. Login as admin with password admin. On first load, the system initializes the database and prefills it from config.json if available
  5. Change your password in public area
  6. Start adding languages and users in admin area

Configuration

All settings are in config.json. Use sample_config.json as a reference. All settings are optional: without any config, default language will be en and user admin will be created.

Options:

Key Description
project_name Name of your project (shown in UI).
use_versions Enable string versioning (true/false).
languages List of language codes & names.
users Initial users with roles & assigned languages.
config_csv CSV-specific settings (delimiter, key column).
custom_names Custom UI labels.

Passwords for all users default to their username at first login. Users can change their password afterwards.

Usage

Admin Area

Accessible via admin.php. Here you can:

  • Manage languages (add, rename, delete).
  • Manage users (add, rename, delete, assign languages, change roles).
  • Manage files (import/export, per-language or ZIP, multiple formats).

Translation Area

Accessible via index.php.

  • Translators see only the languages assigned to them.
  • Sidebar shows who’s online.
  • Strings are listed with their keys, base language source, and input field for translations.
  • Untranslated & fuzzy strings are highlighted.
  • Versions are displayed if enabled.

File Formats

Android XML

  • Standard value & .
  • Versions stored as version="1.0" attributes.

CSV

  • Supports Godot (keys,en,fr,ja) and Unity-style (Key,English(en),French(fr)).
  • Multi-language per file.
  • Configurable delimiter and key column.

PO/POT

  • Standard gettext .po & .pot files.
  • Base language exported as .pot template.
  • .po files include translations per language.

Customization

UI Labels

If you want to add your own flair, you can define custom_names in config.json to adapt the terminology:

Key Meaning
languages Column heading for languages
translators Column heading for users
greeting Greeting in header
password Password change button
admin Link to admin area
public Link to public area
exit Logout link

Modules

File format modules live in formats/. You can implement your own by extending FormatInterface and adding it there.

Development

Modules declare their UI menu via: public static function menu(): array;

Example:

public static function menu(): array {
  return [
    ['text', 'PO/POT (gettext) — English strings are keys'],
    ['by_lang_import_export', 'import', 'export'],
    ['zip', 'export all languages as .po in zip']
  ];
}

Supported menu tags:

Tag Meaning
text Informational text (placeholders replaced from config)
import Generic import
export Generic export
by_lang_import Per-language import
by_lang_export Per-language export
by_lang_import_export Both
zip Export all in a ZIP

License

Babylon is free software created for translators and creators, not for businessmen or corporate entities.

✅ You are free to:

  • Use Babylon for any free or commercial project you’re translating.
  • Modify Babylon for your own use.
  • Share screenshots, showcase it, and talk about it.

🚫 You are not allowed to:

  • Sell Babylon as your product.
  • Redistribute Babylon (or modified versions) as your own software or service.

If you modify it significantly and want to share your changes, please contact me or link back to the original project so everyone knows where it came from.

Made with ☕ & ✨ by The Wizard

Happy translating!

If you like Babylon, feel free to ⭐ the repo and send PRs with improvements or new modules.

About

A lightweight collaborative translation tool for creative projects — cozy, minimal, and in the retro-futuristic style of The Wizard and TrinketOS.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published