AI Glot websiteOpen AI Glot
File formatsAndroid and Apple
File formats

Translate Android and Apple strings

Translate Android strings.xml, iOS .strings and .stringsdict, and Xcode String Catalogs. Keys, comments and format specifiers stay, and plural forms are written per language.

Mobile app strings come in four formats here: Android resources (.xml in res/values, up to 12 MB), iOS and macOS .strings and .stringsdict (up to 4 MB) and Xcode String Catalogs (.xcstrings, up to 8 MB). Resource names and keys are structure and never change. Format specifiers such as %1$s, %d and %@ are kept in the translated string, and plural forms are written for the categories each target language uses.

What is translated, and what is left alone

FormatTranslatedLeft as it was
Android strings.xmlStrings, plurals and string-array itemsname attributes, translatable="false" strings, items with xliff:g markup
iOS .stringsThe value of each pairKeys, developer comments, escapes (newline, tab, quote, backslash)
iOS .stringsdictEvery plural formKeys, and the dictionary structure
Xcode .xcstringsEach key and language entryKeys, comments, states, substitutions and device variations

Plural handling is the main difference from a generic tool. Russian gains few and many, Polish and Arabic gain their own categories, and Japanese keeps only other. Quantities a language never uses are removed from Android files.

What you can ask

An Android app

Translates strings, plurals and arrays and keeps argument order.

Translate strings.xml into French. Keep format specifiers such as %1$s and %d, and leave the app_name string unchanged.

Only the new strings

A release catch-up that leaves reviewed work alone.

Translate only the strings that are missing from the German file and keep the existing German translations.

An iOS Localizable.strings

Keeps developer comments and escapes.

Translate the values into Spanish. Keep %@ and %1$@ unchanged and leave the comments as they are.

Plural rules

For .stringsdict: writes the plural categories of the target language.

Translate the plural rules into Polish and write every plural category Polish needs.

A String Catalog, several languages

Fills the catalog for German, Japanese and Portuguese in one job.

Fill the missing translations for German, Japanese and Portuguese. Leave the keys, the comments and the strings that are already translated unchanged.

Good to know

  • Android, .strings and .stringsdict hold one language: one target language per upload. If you ask for two, the plan translates one and says so. Run the file once for each values folder or .lproj you ship: the glossary carries over.
  • String Catalogs hold every language in one file, so they are the exception: several languages can be filled in one job.
  • Where the file goes. An Android result goes into res/values-fr/strings.xml or the qualifier you need, and .strings into the matching .lproj.
  • Format specifiers. Positional ones, such as %1$s, keep their index so a translator can reorder a sentence without breaking the argument order.
  • A generic .xml file that is not an Android resource is read as other XML.
  • Output filter. Not available for these formats: the whole file comes back.

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search AI Glot Docs documentation and read it in full, instead of answering from memory.

https://ai-glot.com/docs/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://ai-glot.com/docs/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.