This product was not featured by Product Hunt yet. It will not be visible on their landing page and won't be ranked (cannot win product of the day regardless of upvotes).
Product upvotes vs the next 3
Waiting for data. Loading
Product comments vs the next 3
Waiting for data. Loading
Product upvote speed vs the next 3
Waiting for data. Loading
Product upvotes and comments
Waiting for data. Loading
Product vs the next 3
Loading
Malmoi
Open-source localization for your GitHub & GitLab repos
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.
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.
About Malmoi on Product Hunt
“Open-source localization for your GitHub & GitLab repos”
Malmoi was submitted on Product Hunt and earned 3 upvotes and 1 comments, placing #114 on the daily leaderboard. 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.
On the analytics side, Malmoi competes within Open Source, Languages, Developer Tools and GitHub — topics that collectively have 646.4k followers on Product Hunt. The dashboard above tracks how Malmoi performed against the three products that launched closest to it on the same day.
Who hunted Malmoi?
Malmoi was hunted by Sinhyeok Kang. A “hunter” on Product Hunt is the community member who submits a product to the platform — uploading the images, the link, and tagging the makers behind it. Hunters typically write the first comment explaining why a product is worth attention, and their followers are notified the moment they post. Around 79% of featured launches on Product Hunt are self-hunted by their makers, but a well-known hunter still acts as a signal of quality to the rest of the community. See the full all-time top hunters leaderboard to discover who is shaping the Product Hunt ecosystem.
For a complete overview of Malmoi including community comment highlights and product details, visit the product overview.
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.