Apple .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.
/* Novus example app - Japanese (ja) Localizable.strings
ENCODING FIXTURE: this file is UTF-16 Little Endian with a BOM (FF FE), which is what Xcode
has historically written for .strings and what a naive UTF-8 reader turns into mojibake or a
decode error. The bytes are otherwise an ordinary .strings file: LF line endings encoded as
0A 00, and every ASCII character followed by a 00 byte. */
"browser_title" = "ファイル";
"move_to_trash" = "ゴミ箱に入れる";
"move_confirm" = "%1$@ を %2$@ に移動しますか?";
"replace_confirm" = "%1$@ を %2$@ で置き換えますか?";
"quota_used" = "%1$@ がクォータの %2$ld%% を使用しています";
"disk_full" = "空き容量がありません。\n500 MB 以上空けてください。";
/* Full-width punctuation and a wide space — useful for width and line-breaking tests. */
"search_placeholder" = "ファイル名で検索 (例:報告書.pdf)";
Specifications
- Format
- Apple .strings
- Locale
- ja
- Encoding
- UTF-16 LE
- Bom
- FF FE
- Canonical Name
- Localizable.strings
- Keys
- 7
- Line Endings
- LF encoded as 0A 00
- Features
- full-width punctuation | ideographic space U+3000
- Seed
- 20260807
- Wave
- p7
Testing contract
Expected to pass- Scenario
- Read the file with an encoding-sniffing loader and again with a hard-coded UTF-8 reader.
- Expected result
- The sniffing loader detects FF FE, decodes UTF-16 LE and returns seven keys; the UTF-8 reader either raises or returns NUL-interleaved mojibake. Every ASCII character occupies two bytes and each line ends 0A 00.
What is a .strings file?
An Apple .strings file is a plain-text localization catalog used by iOS and macOS apps. Each line maps a quoted key to a quoted translated value with a trailing semicolon, optionally preceded by a comment, and placeholders use printf-style tokens like %@ and %d. It is typically stored per-locale in an .lproj folder.
How to use this file
Use an example .strings file to test Apple localization parsers, Xcode string catalogs, .strings-to-XLIFF converters, and tooling that reads iOS/macOS translations.
How to use this file for testing
“Apple .strings — UTF-16 LE with BOM (Japanese)” is a deterministic Novus Examples fixture for Internationalization, Encoding detection, 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 · UTF-16 LE · LF encoded as 0A 00. 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
plutil -lint Localizable-ja-utf16le.strings # macOS validation
cat Localizable-ja-utf16le.strings # "key" = "value"; pairsRelated files
- txtBidi — bracket mirroring in RTL paragraphs (Hebrew and Arabic)Mirroring is a rendering property of the bidi algorithm, not a transformation of the text: a U+0028 LEFT PARENTHESIS inside an RTL run is DRAWN as ')' while the stored byte never changes. These Hebrew and Arabic lines make that testable, and list the neutral characters that look like they should mirror but do not.

- txtBidi — where a mark is actually required (Arabic)Six Arabic sentences containing a Latin filename, a phone number, a version range, a mixed-script path, a percentage and a bracketed insertion — each shown first as a translator usually delivers it and then with the one invisible character that makes it render correctly. The two forms differ by exactly one code point.

- csvBilingual CSV — English→Arabic RTLBilingual EN→AR RTL CSV SAMPLE for spreadsheet CAT and RTL review tools.

- csvBilingual CSV — English→SpanishBilingual EN→ES CSV SAMPLE for spreadsheet-based localization workflows.

- jsonCrowdin-Style Export — FrenchCrowdin-shaped SAMPLE French bilingual export for TMS round-trip tests.

- jsonCrowdin-Style Export — SpanishCrowdin-shaped SAMPLE bilingual export JSON for localization TMS importers.

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