Android string resources

Android specific file format for translating applications.

The same file format is also used by JetBrains Compose Multiplatform Kotlin Resources.

Android string resources are monolingual, the Monolingual base language file is stored in a different location from the other files – res/values/strings.xml.

Weblate does following escaping of strings:

  • If a strings is valid XML, it is inserted as XML to translation.

  • ? and @ are escaped with a \\ at the beginning of the string to avoid interpreting them as style or resource references.

  • In case string contains multiple spaces, it is quoted with double quotes (").

  • Newlines are escaped as \\n, but the actual newline is kept for readability as well.

Note

Android string-array structures are not currently supported. To work around this, you can break your string arrays apart:

<string-array name="several_strings">
    <item>First string</item>
    <item>Second string</item>
</string-array>

become:

<string-array name="several_strings">
    <item>@string/several_strings_0</item>
    <item>@string/several_strings_1</item>
</string-array>
<string name="several_strings_0">First string</string>
<string name="several_strings_1">Second string</string>

The string-array that points to the string elements should be stored in a different file, and not be made available for translation.

This script may help pre-process your existing strings.xml files and translations: https://gist.github.com/paour/11291062

Hint

To avoid translating some strings, these can be marked as non-translatable. This can be especially useful for string references:

<string name="foobar" translatable="false">@string/foo</string>

Weblate configuration for Android resource strings

Typical Weblate Component configuration

File mask

res/values-*/strings.xml

Monolingual base language file

res/values/strings.xml

Template for new translations

Empty

File format

Android String Resource

Weblate configuration for JetBrains Compose Multiplatform Kotlin Resources

Typical Weblate Component configuration

File mask

commonMain/composeResources/values-*/strings.xml

Monolingual base language file

commonMain/composeResources/values/strings.xml

Template for new translations

Empty

File format

Android String Resource