Apple .stringsdict — English (2 rules)
English Apple plural rules as a .stringsdict property list — the only place iOS and macOS accept plural variants, since a plain .strings file has no plural concept at all. Ships as .xml because the bytes are an XML plist; rename to Localizable.stringsdict to use it.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Item count in the status bar -->
<key>files</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@files@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld file</string>
<key>other</key>
<string>%ld files</string>
</dict>
</dict>
<!-- Selection summary -->
<key>folders_selected</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@folders_selected@</string>
<key>folders_selected</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld folder selected</string>
<key>other</key>
<string>%ld folders selected</string>
</dict>
</dict>
<!-- Undo toast after a delete -->
<key>deleted_items</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@deleted_items@</string>
<key>deleted_items</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>Specifications
- Format
- Apple .stringsdict (XML property list)
- Locale
- en
- Canonical Name
- Localizable.stringsdict
- Install Path
- en.lproj/Localizable.stringsdict
- Keys
- 4
- Rule Type
- NSStringPluralRuleType
- Value Type
- ld
- Categories
- one, other
- Seed
- 20260807
- Wave
- p7
- Line Endings
- LF
Testing contract
Expected to pass- Scenario
- Place in an .lproj bundle and call NSLocalizedString / String(format:) with counts covering every category, or parse with plistlib.
- Expected result
- The plist parses to a dict of 4 format keys, each holding an NSStringPluralRuleType sub-dictionary with the 2 category keys en uses; the NSStringLocalizedFormatKey value references its variable with the %#@name@ syntax.
What is a .xml file?
XML (Extensible Markup Language) is a verbose, self-describing markup language using nested tags, attributes, and namespaces to represent structured, hierarchical data. It supports schemas, entities, and validation and underlies many document and data formats. It remains common in enterprise, publishing, and interchange contexts.
How to use this file
Use an example XML file to test parsers, namespace and schema validation, XPath queries, and protection against entity-expansion and external-entity attacks.
How to use this file for testing
“Apple .stringsdict — English (2 rules)” is a deterministic Novus Examples fixture for Internationalization, Localization catalogs. Parallel text and accented, multi-script content — for testing translation pipelines, Unicode handling, and localization tooling.
Documented properties for this file: seed 20260807 · LF · Apple .stringsdict (XML property list). Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Translation-catalog fixtures carry the same message set across formats, each with its native placeholder syntax. Test your i18n loader, catalog converter, or translation-memory tool, and use the RTL and CJK variants to check bidirectional text and Unicode handling.
Load the catalog with your i18n framework and verify placeholder interpolation and plural handling; the RTL and CJK variants exercise bidirectional text and font fallback.
Code examples
import xml.etree.ElementTree as ET
tree = ET.parse("Localizable-en.stringsdict.xml")
root = tree.getroot()
print(root.tag, [c.tag for c in root][:5])Related files
- stringsApple .strings — EnglishAn Apple Localizable.strings file (English) — quoted key = value pairs with comments and %@ placeholders, as iOS/macOS apps use per-locale in .lproj folders.

- stringsApple .strings — positional arguments that reorder (German)A German .strings file whose replace_confirm value puts %2$@ before %1$@, because German inverts the pair English uses. Also covers %% as a literal percent, an escaped double quote, a doubled-backslash UNC path and an escaped newline inside a value.

- stringsApple .strings — SpanishThe Spanish twin of the Apple .strings catalog — for testing .strings parsers and en/es diffing against the same keys.

- stringsApple .strings — UTF-16 LE with BOM (Japanese)The encoding fixture the .strings format needs: a Japanese catalog written as UTF-16 Little Endian with a byte-order mark, which is what Xcode has historically produced and what a UTF-8-only reader turns into mojibake or a decode error. Also carries full-width punctuation and an ideographic space for width and line-breaking tests.

- resx.NET RESX — composite format strings (Arabic (Egypt))A Arabic (Egypt) resource file built around composite format strings — {0:N2}, {2:P1}, {0:C}, {0:d} and {0:t} — whose rendered output depends entirely on CultureInfo. Includes a whitespace-significant resource guarded by xml:space, and documents the suffixed-key convention .NET falls back on because String.Format has no plural selector.

- resx.NET RESX — composite format strings (English (United States))A English (United States) resource file built around composite format strings — {0:N2}, {2:P1}, {0:C}, {0:d} and {0:t} — whose rendered output depends entirely on CultureInfo. Includes a whitespace-significant resource guarded by xml:space, and documents the suffixed-key convention .NET falls back on because String.Format has no plural selector.

Generated by generation/localization_p7.py. Free for any use, no attribution required — license.