appshots-translation
Installation
SKILL.md
App Screenshots Translation
Multi-language screenshot translation with AI or manual input, per-locale layout customization, and quality verification.
Why Localize?
Apple reports that localized screenshots can increase downloads by up to 4×. Localization goes beyond text translation — it includes font selection, layout adjustment, and cultural adaptation.
AI Translation Workflow
# 1. Set context for better, more relevant translations
appshots translate set-prompt --prompt "Habit tracking & productivity app for iOS"
# 2. Get all text overlays from all designs (useful for review)
appshots --json translate get-texts
# 3. AI-translate to multiple locales at once
appshots translate all --from en --to ja,ko,de,fr,es,pt,zh
# 4. Preview each locale in the editor
appshots translate preview --locale ja
Text Expansion Reference
English is one of the most compact languages. Always design with expansion room:
| Language | Expansion | Key Challenge | Fix |
|---|---|---|---|
| German (de) | +30-40% | Long compound words | --font-size 72 (reduce ~20%) |
| Finnish (fi) | +30-40% | Very long words | --font-size 70 |
| French (fr) | +15-25% | Articles lengthen | --font-size 80 |
| Spanish (es) | +15-20% | Slightly longer | Minor reduction |
| Portuguese (pt) | +15-25% | Similar to French | Minor reduction |
| Hindi (hi) | +20-30% | Devanagari spacing | --font-size 72 |
| Japanese (ja) | Same or shorter | Needs CJK font | --font "Noto Sans JP" |
| Korean (ko) | Same or shorter | Needs CJK font | --font "Noto Sans KR" |
| Chinese (zh) | -10-30% shorter | Needs CJK font | --font "Noto Sans SC" |
| Arabic (ar) | Varies | RTL layout | May need --x / position flip |
| Thai (th) | Varies | Tall stacking marks | Consider --font-size increase |
Per-Locale Style Overrides
When a locale's text doesn't fit, override the font, size, or position for that specific locale:
# Reduce font size for German (text too long)
appshots translate override-overlay --locale de \
--overlay-id <id> --font-size 72
# Use CJK font for Japanese
appshots translate override-overlay --locale ja \
--overlay-id <id> --font "Noto Sans JP" --font-size 80
# Use CJK font for Korean
appshots translate override-overlay --locale ko \
--overlay-id <id> --font "Noto Sans KR"
# Reposition text for Arabic (RTL)
appshots translate override-overlay --locale ar \
--overlay-id <id> --x 50 --y 100
# Multiple properties at once
appshots translate override-overlay --locale de \
--overlay-id <id> \
--font "Inter" --font-size 70 \
--width 900 --scale 0.9
Override Properties
| Option | Description |
|---|---|
--font |
Google Font name (e.g., "Noto Sans JP") |
--font-size |
Font size in points |
--x, --y |
Position override |
--scale |
Scale factor |
--rotation |
Rotation |
--width |
Text box width |
--color |
Text color (hex) |
--font-weight |
Weight index (0-8) |
Per-Locale Screenshot Images
Some locales need different app screenshots (localized UI):
appshots translate set-locale-image --locale ja --file /path/to/ja_screenshot.png
appshots translate set-locale-image --locale ko --file /path/to/ko_screenshot.png
Manual Translation
# Edit a single overlay's translation
appshots translate edit --locale ja --overlay-id <id> --text "習慣トラッカー"
# Bulk apply translations (JSON: overlayId → text)
# For multi-screenshots, key format is "designIndex:overlayId"
appshots translate apply-manual --locale ja \
--translations '{"0:<overlayId>":"翻訳テキスト","1:<overlayId>":"テキスト2"}'
Post-Translation Verification Workflow
This is the most critical step. Always verify every locale visually.
# Check worst offenders first (German = usually longest)
appshots translate preview --locale de
# → Is text cut off? Does it wrap properly? Readable?
# Check CJK rendering
appshots translate preview --locale ja
# → Is the CJK font applied? Glyphs correct?
appshots translate preview --locale ko
appshots translate preview --locale zh
# Check RTL if applicable
appshots translate preview --locale ar
# Check remaining locales
appshots translate preview --locale fr
appshots translate preview --locale es
appshots translate preview --locale pt
# Fix any issues found
appshots translate override-overlay --locale de --overlay-id <id> --font-size 70
# Clear preview when done
appshots translate preview --locale none
# Save with all translations
appshots multi save-design --name "My Screenshots" --override
Per-Locale Export
Export separate screenshot sets per locale:
for locale in ja ko de fr es pt zh; do
appshots translate preview --locale $locale
appshots editor export-all --dir ~/Desktop/screenshots/$locale
done
appshots translate preview --locale none
Remove a Locale
appshots translate remove-locale --locale ko
Commands Reference
| Command | Description |
|---|---|
translate state |
Translation state & locale statuses |
translate get-texts |
Get all texts from all designs |
translate all --from en --to ja,ko |
AI-translate to targets |
translate preview --locale ja |
Preview locale in editor |
translate edit |
Edit single translation |
translate apply-manual |
Bulk manual translations |
translate remove-locale |
Remove all translations for locale |
translate set-prompt |
Set AI context prompt |
translate override-overlay |
Per-locale style override |
translate set-locale-image |
Per-locale screenshot image |
Related skills