Launching today
Malmoi
Open-source localization for your GitHub & GitLab repos
2 followers
Open-source localization for your GitHub & GitLab repos
2 followers
Translate your GitHub or GitLab repo in the browser. Malmoi finds your locale files, your team edits every language, and changes go back as one pull request. Free and open source, or self-host with Docker.










Hi Product Hunt 👋
I built Malmoi to use at my own company. Our developers kept the translation files in the repo, but the people who actually knew what the copy should say (PMs, designers, marketers) couldn't touch them. Fixes came in through spreadsheets and Slack messages, a developer pasted them into JSON by hand, and every wording change became a ticket.
I wanted a tool my non-developer teammates could open in a browser, and that still sent everything back through our normal pull request review. So I built it around one rule: the code decides which keys exist, and Malmoi holds the translated values. Nothing gets merged.
It's open source (MIT), and you can run it yourself. Use mal-moi.com for free, or deploy the same app on your own server with Docker Compose. Every release ships a container image on GHCR, so your strings and your team's accounts stay on your infrastructure.
• Connect a GitHub or GitLab repo. Malmoi detects your locale files and loads them: JSON, YAML, TS/JS dictionaries, Chrome _locales, Flutter ARB, Apple .strings and String Catalogs, and Android strings.xml. No config file, no upload.
• Invite teammates by email. They edit every language of a key side by side and never touch Git.
• Hit Publish. Every saved edit goes back as one pull request (a merge request on GitLab). Merging stays with your reviewers.
• Add or remove a language from the app. The file change ships in that same pull request.
• Stay in sync. A generated GitHub Actions workflow (or GitLab CI job) brings new keys in on every push, and a nightly sync covers the rest.
• Use your coding agent. Claude Code, Codex, or a claude.ai connector can do the same work over MCP. You sign in through the browser, so there's no token to copy. Malmoi itself never calls an AI model.
Every edit, sync, and publish is logged with who did it and the value before and after.
What it deliberately doesn't do: machine translation, translation memory, plural editing (ICU, .stringsdict, Android plurals are kept as-is), approval workflows. If you need those, Crowdin or Tolgee is a better fit.
The name comes from Malmoi (말모이, "gathering words"), a 1910s effort to collect scattered Korean words into one dictionary. Many people gathering words into one place is what this tool does.
I'd love to hear how your team handles translations today.