localize-strings
GitHub指导在 macOS/iOS 开发中同步代码与本地化字符串目录,确保新增或修改的用户可见文本在所有六种语言中均有对应翻译,并执行测试验证覆盖度。
Trigger Scenarios
Install
npx skills add rokartur/BetterCmdTab --skill localize-strings -g -y
SKILL.md
Frontmatter
{
"name": "localize-strings",
"description": "Keep the string catalogs (Localizable.xcstrings, InfoPlist.xcstrings) in lockstep with the code. Use whenever code adds, edits, or removes any user-facing string or Info.plist usage description, or when LocalizationCatalogTests fails."
}
Localize strings
Every user-facing string ships translated in six locales. The catalog is
version-controlled JSON and LocalizationCatalogTests pins full coverage —
an English-only key fails the suite, it does not silently ship.
1. Use the localized form in code
User-facing text is String(localized: "…"); enum display names localize
too. A bare literal in UI code ships untranslated — wrap it.
2. Add the catalog entries
Edit BetterCmdTab/Localizable.xcstrings directly (it is JSON). For each new
key add translations for all of: de, es, fr, pl, ru, zh-Hans.
Copy the exact JSON shape of a neighboring entry, keep keys sorted where the
surrounding file is sorted, and keep format specifiers (%@, %d, …)
identical across every locale — specifier drift is a test failure. Remove
catalog entries whose code key was deleted.
Info.plist strings live in BetterCmdTab/InfoPlist.xcstrings and the same
suite covers them, with two extra rules.
Key a usage description by its plist key name
(NSAppleEventsUsageDescription), not by its English value — the value form
compiles fine and never resolves at runtime. Document-type names
(CFBundleTypeName, UTTypeDescription) are the exception: those are keyed
by value.
Every key in this catalog also needs an explicit en entry. A key-named one
has no other source of English: without it Xcode emits the key as its own
value and the prompt reads NSAppleEventsUsageDescription. For a value-keyed
one it is redundant, but the test requires it uniformly.
Keep that en value byte-identical to its source — the INFOPLIST_KEY_*
build setting in project.pbxproj (both configurations) for key-named
entries, BetterCmdTab/Info.plist for document-type names.
en.lproj/InfoPlist.strings overrides Info.plist, so editing only the build
setting changes nothing.
3. Verify
xcodebuild -scheme "BetterCmdTab Debug" -destination 'platform=macOS' test \
-only-testing:BetterCmdTabTests/LocalizationCatalogTests
Complete when: the suite passes with the new keys present in all six locales.
Version History
-
1168eb6
Current 2026-09-27 13:34
新增俄语(ru)支持;将 InfoPlist.xcstrings 纳入本地化测试覆盖范围;修复自动化提示词键名错误,确保运行时正确解析。
- 30e25b6 2026-07-30 22:00


