Localizable Strings Dict

Last updated: March 19, 2026Author: Jakub Pomykała

localizable-strings-dict
File format value
localizable-strings-dict

Localization on macOS and iOS looks the same. Both platforms share the same concepts, programming language and localization approach. In Swift world, the most commonly used localization format for pluralization are *.stringsdict files. Each *.stringsdict file contains translated messages that has plural forms and device variants.

Translations format is based on XML, and it's similar to Android strings.xml format. Each translation file contains a dictionary with keys and values. Each value can be a string or a dictionary with plural forms. Each plural form is a dictionary with a key and a value. The key is a plural form name and the value is a translated message.

Note: Localizable.stringsdict files are used only for pluralization and device variants. For simple translations, use Localizable.strings file format.

File format example

<plist version="1.0">
    <dict>
        <!-- Pluralization -->
        <key>%d home(s) found</key>
        <dict>
            <key>NSStringLocalizedFormatKey</key>
            <string>%#@value@</string>
            <key>value</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>d</string>
                <key>zero</key>
                <string>No homes found</string>
                <key>one</key>
                <string>%d home found</string>
                <key>other</key>
                <string>%d homes found</string>
            </dict>
        </dict>

        <!-- Device specific translations -->
        <key>UserInstructions</key>
        <dict>
            <key>NSStringDeviceSpecificRuleType</key>
            <dict>
                <key>iphone</key>
                <string>Tap here</string>
                <key>mac</key>
                <string>Click here</string>
                <key>appletv</key>
                <string>Press here</string>
            </dict>
        </dict>
    </dict>
</plist>

Upload with CLI

simplelocalize upload --apiKey <PROJECT_API_KEY> \
  --uploadFormat localizable-strings-dict \
  --uploadPath ./{lang}/Localizable.stringsdict

Learn more about SimpleLocalize CLI and translations upload feature.

Download with CLI

simplelocalize download --apiKey <PROJECT_API_KEY> \
  --downloadFormat localizable-strings-dict \
  --downloadPath ./{lang}/Localizable.stringsdict

Learn more about SimpleLocalize CLI and translations download feature.

Universal placeholders

SimpleLocalize supports universal placeholders that allow you to convert native iOS/macOS format specifiers (like %@, %lld, %d, %f, %1$@) into a platform-independent format. This feature is useful when you manage translations for multiple platforms (Android + iOS/macOS) and want to keep a consistent placeholder format across all of them.

The universal placeholder format uses curly braces {} around the format specifier:

iOS/macOS nativeUniversal placeholderDescription
%@{%s}String (object)
%lld{%i}Integer (long long)
%d{%i}Integer
%f{%f}Float
%1$@{%1$s}Positional string
%1$lld{%1$i}Positional integer
%.2f{%.2f}Float with precision
%1$.2f{%1$.2f}Positional float with precision

Enabling universal placeholders

To enable universal placeholders, add UNIVERSAL_PLACEHOLDERS to the --uploadOptions or --downloadOptions parameter.

Import (upload) - converts native iOS/macOS placeholders to universal format:

simplelocalize upload --apiKey <PROJECT_API_KEY> \
  --uploadFormat localizable-strings-dict \
  --uploadPath ./{lang}/Localizable.stringsdict \
  --uploadOptions UNIVERSAL_PLACEHOLDERS

Export (download) - converts universal placeholders back to native iOS format:

simplelocalize download --apiKey <PROJECT_API_KEY> \
  --downloadFormat localizable-strings-dict \
  --downloadPath ./{lang}/Localizable.stringsdict \
  --downloadOptions UNIVERSAL_PLACEHOLDERS

Example

Given the following stringsdict plural value:

<key>one</key>
<string>%d home found</string>
<key>other</key>
<string>%d homes found</string>

After import with UNIVERSAL_PLACEHOLDERS option, the translations in SimpleLocalize will be stored with universal placeholders:

{%i} home found
{%i} homes found

During export with UNIVERSAL_PLACEHOLDERS option, they will be converted back to the native Apple format (%lld).

If you export to Android Strings format, the same universal placeholders will be converted to the appropriate Android format specifiers.

Resources