mariohahn

Stars and mentions

Last 30 days, Oct 4 – Nov 2

GitHub stars0
mentions1
01234Oct 4Oct 18Nov 2
UTC days · repositories mariohahn owns1 repositories

Package downloads

No package download history available yet.

Top repositories

mariohahn’s repositories ranked by new stars, as on trending.

Loading

Contributes to

Repositories outside mariohahn’s account where mariohahn opened or reviewed pull requests in the past 365 days.

Who noticed mariohahn

Everyone who starred or forked mariohahn’s repositories since the archive began in 2011.

Notable accounts

Ordered by the stars their own repositories have received.

Biggest fans

Accounts that starred the most of these repositories.

Breakout weeks

Each repository’s best week of new stars, with the release published around it.

Mentions

1post
Nov 30 posts
  1. I let my coding agent do the whole localization job, from messy keys to approved translations Every app I ship exists on iOS and Android, some on the web too. After a few releases the strings were a mess: - half of them hard-coded in SwiftUI views and Compose screens - the rest in Localizable.xcstrings under keys like "Sign in", account.login and login_button, all for the same button - the Android app with its own names for everything (R.string.login_btn) - the web app with a third set (auth.signIn) Three names for one text means three translations, three chances to drift, and nobody knows which one is right. What I wanted Say "localize this app" to my coding agent, and get it done properly: not a quick translation that breaks a placeholder or puts a German sentence into a toolbar button. So I built locli, and now this is what my agent (Claude Code, but Cursor and Codex work the same) does on its own. 1. Move every text into the catalog Hard-coded strings go into the app's own catalog: the String Catalog on iOS, strings.xml on Android, ICU JSON on the web or backend. The code switches to looking them up by key. 2. One identifier per meaning, on every platform Every text gets one lower_snake_case identifier with a feature prefix: account_login settings_language_title cart_checkout The same identifier on iOS, Android and web. So "Sign in" is one key, translated once, used everywhere. Where a platform really needs different wording, it gets a variant of that key instead of a new one. 3. Merge the duplicates This is the part I used to dread. The agent finds keys that mean the same thing (account.login on iOS, account_login on Android), merges them into one, keeps every translation, and switches the code to the new name. It only stops and asks me where two values really conflict, for example two different German texts for the same button. It never just picks one. 4. Translate, with context locli push uploads the keys and texts (it never overwrites what a translator changed). Then the agent translates, using: - the project's tone per language and a glossary ("workspace", never "project") - where each text is used: locli context reads the code and knows that cart_checkout is a toolbar item and cart_title a screen title !locli context output Every upload is checked: placeholders like %lld or {count} in every language, plural forms per language (Polish and Arabic need more than "one" and "other"), glossary terms. 5. I approve, then it ships The one thing the agent can't do is ship. I go through the changed texts in the locli web app, each with a diff, and approve the release. Only then does locli pull write exactly that release into the app. Builds stay reproducible, and a bad translation never reaches the store just because an agent was confident. Six apps in I run six of my own apps on it, about 2,650 keys across iOS, Android, web and backend, and locli localizes its own web app. Dogfooding found real bugs, and each got a fix and a test: current Xcode saves String Catalogs as version 1.1, which the CLI refused at first. Try it In your app's repository: npx @locli/cli init or tell your agent: "Set up locli for this app's texts." For Claude Code there's a plugin: /plugin marketplace add mariohahn/locli /plugin install locli@locli The CLI and MCP server are MIT and have no dependencies: mariohahn/locli. One project is free. I'd love to hear how messy your keys are, and where this breaks on your project.

Trending awards, every completed day and week
Gold
01st place finishes
Silver
02nd place finishes
Bronze
03rd place finishes
Awarded repositories
0Owned by mariohahn now

No trending awards yet

None of the repositories mariohahn owns has finished in the top three of a completed trending day or week, by stars, forks or PR authors. See who is trending now.

A repository earns an award for finishing first, second or third in a completed trending day or week, ranked by new stars, new forks or pull request authors. Awards follow a repository through renames and transfers and count toward its current owner. Weeks run Monday to Sunday, UTC.