All Collections
For Developers
File Formats
Apple Strings Files Localization
Apple Strings Files Localization

Learn how to localize Apple Strings files (.strings) files using Transifex.

T
Written by Transifex
Updated over a week ago

File Extension(s)

.strings

i18n type(s)

STRINGS, STRINGS_UTF8

Encoding(s)

UTF-16, UTF-8

Transifex supports two Apple Strings parsers:

  • Apple Strings File (UTF-16 encoding) (.strings).

  • Apple Strings File (UTF-8 encoding) (.strings).

When you upload an Apple Strings file to Transifex, select the one with the desired encoding.


Sample data

/* registration information: Username */ "username" = "Username:"; /* registration information: Password */ "password" = "Password:"; /* registration information: Email Address */ "email_address" = "Email Address:"; /* registration information: User Role */ "user_role" = "User Role"; /* registration information: Phone */ "phone" = "Phone"; /* registration information: Country */ "country" = "Country";

Each key-value pair enclosed in double quotation marks corresponds to a string entry.

  • Keys are on the left side of the equal sign and are considered the identifiers of the strings. This information is the one that our parser takes into account to parse the strings as unique entries. The entry's key is available in the Transifex Web Interface under the context tab in the editor.

  • Values are on the equal sign's right side and handled as translatable text. This is the text that the translator will see in the editor and translate it into other languages.

Transifex also supports developer notes that a translator can see under the context tab in the editor. Such comments are enclosed inside C-style comment delimiters (/* and */) and placed immediately before the entry they refer to, as shown in the sample above.

apple_strings_editor.png#asset:4581


Plural Support

Below are some illustrative examples based on the language plural rules that CLDR standards provide:

English file:

"time_minutes##{one}" = "%@ minute"; "time_minutes##{other}" = "%@ minutes"; "result##{one}" = "%@ Result"; "result##{other}" = "%@ Results";

Arabic file:

"time_minutes##{zero}" = "%@ دقيقة"; "time_minutes##{one}" = "%@ دقيقة"; "time_minutes##{two}" = "%@ دقيقة"; "time_minutes##{few}" = "%@ دقيقة"; "time_minutes##{many}" = "%@ دقيقة"; "time_minutes##{other}" = "%@ دقيقة"; "result##{zero}" = "%@ النتائج"; "result##{one}" = "%@ النتيجة"; "result##{two}" = "%@ النتائج"; "result##{few}" = "%@ النتائج"; "result##{many}" = "%@ النتائج"; "result##{other}" = "%@ النتائج";

📝 Note: Do you want to find out more about plurals in Transifex? Please check here.


Entries with identical keys

In case you have a .strings file where more than one entry has the same key/identifier, then:

  • Our parser will parse the first instance and ignore any other entries for which the same key has been provided. This means that the translator will see only the entry that was parsed first in the editor.

  • After the translation process is completed and the translation file is requested, all the entries will be included in the file, and the ones that were ignored during parsing will be translated accordingly upon export.


Parser behavior

The following table presents the downloaded translation files depending on download mode:

*The results are compatible with parser version 1


Lin

Lin is a useful helper tool that offers auto-completion in XCode for NSLocalizedString. Check out the GitHub repo.


Default placeholders

These are the default placeholders that you could have in your file, and they will be recognized:

match: ['%1$s', '%(key1)s', '%s', '%@', '%d', '%.2f', '%-5d', '%+2d']


Additional information


💡Tip

Looking for more help? Get support from our Transifex Community Forum!

Find answers or post to get help from Transifex Support and our Community.

Did this answer your question?