Skip to main content
Glama

localize-screenshots

Translate text in app screenshots to multiple languages using AI, supporting phone and tablet images for international app store optimization.

Instructions

Translate app screenshots to multiple languages using Gemini API.

IMPORTANT: This tool uses the search-app tool internally to validate the app. You can provide an approximate name, bundleId, or packageName.

This tool:

  1. Validates the app exists in registered-apps.json

  2. Reads supported locales from public/products/{slug}/locales/ directory

  3. Scans screenshots from the primary locale's screenshots folder

  4. Uses Gemini API (imagen-3.0-generate-002) to translate text in images

  5. Validates output image dimensions match source and resizes if needed

Requirements:

  • GEMINI_API_KEY or GOOGLE_API_KEY environment variable must be set

  • Screenshots must be in: public/products/{slug}/screenshots/{locale}/phone/ and /tablet/

  • Locale files must exist in: public/products/{slug}/locales/

Example structure:

public/products/my-app/
├── config.json
├── locales/
│   ├── en-US.json (primary)
│   ├── ko-KR.json
│   └── ja-JP.json
└── screenshots/
    └── en-US/
        ├── phone/
        │   ├── 1.png
        │   └── 2.png
        └── tablet/
            └── 1.png

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appNameYesApp name, slug, bundleId, or packageName to search for. Will be validated using search-app.
targetLocalesNoSpecific target locales to translate to. If not provided, all supported locales from the product will be used.
deviceTypesNoDevice types to process (default: both phone and tablet)
dryRunNoPreview mode - shows what would be translated without actually translating
skipExistingNoSkip translation if target file already exists (default: true)
screenshotNumbersNoSpecific screenshot numbers to process. Can be: - Array for all devices: [1, 3, 5] - Object for per-device: { phone: [1, 2], tablet: [1, 3, 5] } If not provided, all screenshots will be processed.
preserveWordsNoWords to keep untranslated (e.g., brand names, product names). Example: ["Pabal", "Pro", "AI"]
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains the tool's process in 5 steps, including validation, file reading, scanning, translation via Gemini API, and image resizing. It also details prerequisites like environment variables and file paths, and mentions a 'dryRun' option for previewing translations, which adds valuable context beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections like 'IMPORTANT', numbered steps, 'Requirements', and an example, making it easy to scan. It is appropriately sized for a complex tool, but some sentences could be more concise, such as the detailed file path explanations, which might be slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations, no output schema), the description is largely complete. It covers the purpose, process, requirements, and structure, though it lacks details on error handling or output format. Since there's no output schema, additional information on return values would enhance completeness, but the current description is sufficient for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already documents all parameters. The description does not add specific parameter details beyond what's in the schema, such as explaining 'appName' validation or 'targetLocales' usage. However, it implies parameter context by mentioning the tool uses 'search-app' internally and references file structures, providing some high-level guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Translate app screenshots to multiple languages using Gemini API.' It specifies the verb ('translate'), resource ('app screenshots'), and method ('using Gemini API'), making it distinct from sibling tools like 'search-app' or 'validate-aso' which have different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool, mentioning it uses 'search-app tool internally to validate the app' and listing requirements like environment variables and file structures. However, it does not explicitly state when NOT to use it or name alternatives among siblings, such as 'improve-public' or 'public-to-aso', which might handle related tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/quartz-labs-dev/pabal-resource-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server