Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
vitorpamplona avatar

Find Missing Translations

  • 12 installs
  • 1.6k repo stars
  • Updated August 4, 2026
  • vitorpamplona/amethyst

Helps with ai & agent building tasks.

About

find-missing-translations is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • find-missing-translations
  • AI & Agent Building
  • AI-coding skill

Find Missing Translations by the numbers

  • 12 all-time installs (skills.sh)
  • Ranked #11,592 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vitorpamplona/amethyst --skill find-missing-translations

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs12
repo stars1.6k
Last updatedAugust 4, 2026
Repositoryvitorpamplona/amethyst

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

Find Missing Translations

Overview

Extract string resource keys from the default values/strings.xml that are absent in a target locale's strings.xml, excluding non-translatable entries. Outputs missing keys and offers to translate them.

When to Use

  • Need to find untranslated strings for a specific locale
  • Preparing a batch of strings for a translator
  • Checking translation coverage after adding new features

Target Locales

The default set of locales (unless the user specifies otherwise):

LocaleLanguageDirectory
cs-rCZCzechvalues-cs-rCZ
pt-rBRBrazilian Portuguesevalues-pt-rBR
sv-rSESwedishvalues-sv-rSE
de-rDEGermanvalues-de-rDE

Technique

1. Identify files

Default:  amethyst/src/main/res/values/strings.xml
Target:   amethyst/src/main/res/values-<locale>/strings.xml

2. Find missing keys using cs-rCZ as reference

Always diff against cs-rCZ first — it is the most complete locale and serves as the reference. Any keys missing in cs-rCZ will also be missing in the other target locales.

# Extract translatable keys from default (exclude translatable="false")
comm -23 \
  <(grep '<string name=' amethyst/src/main/res/values/strings.xml \
    | grep -v 'translatable="false"' \
    | sed 's/.*name="\([^"]*\)".*/\1/' | sort) \
  <(grep '<string name=' amethyst/src/main/res/values-cs-rCZ/strings.xml \
    | sed 's/.*name="\([^"]*\)".*/\1/' | sort)

This gives the list of missing key names. Do NOT diff each locale separately — assume the same keys are missing in all target locales.

3. Get English values for missing keys

For each missing key, extract its English value:

# For each missing key, extract the full line from default strings.xml
while IFS= read -r key; do
  grep "name=\"$key\"" amethyst/src/main/res/values/strings.xml
done < <(comm -23 \
  <(grep '<string name=' amethyst/src/main/res/values/strings.xml \
    | grep -v 'translatable="false"' \
    | sed 's/.*name="\([^"]*\)".*/\1/' | sort) \
  <(grep '<string name=' amethyst/src/main/res/values-cs-rCZ/strings.xml \
    | sed 's/.*name="\([^"]*\)".*/\1/' | sort))

4. Present results and ask to translate

Output the missing entries as raw XML resource lines (copy-paste ready):

    <string name="attestation_valid">Valid</string>
    <string name="attestation_valid_from">Valid from %1$s</string>
    <string name="feed_group_lists">Lists</string>

Also check <string-array> and <plurals> tags using the same approach if the project uses them.

Then ask the user: "Would you like me to translate these missing strings into [list of target locales]?"

5. Adding translations (if approved)

When adding translated strings to locale files:

  • Append new strings at the bottom of the file, just before the closing </resources> tag.
  • Do NOT try to insert them in alphabetical or matching order — a separate process handles ordering.

Common Mistakes

  • Forgetting `translatable="false"` — these should never appear in locale files
  • Not checking string-arrays/plurals — only checking <string> misses other resource types
  • Diffing each locale separately — only diff against cs-rCZ; assume the same keys are missing everywhere
  • Inserting strings in a specific position — always append at the bottom; ordering is handled separately

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.