Gettext PO — Korean
A Korean (ko) gettext PO catalog with seven UI strings — for i18n toolchain tests.
# Korean translation for the Novus example app.
msgid ""
msgstr ""
"Project-Id-Version: novus-example 1.0\n"
"Language: ko\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. greeting
msgid "Hello"
msgstr "안녕하세요"
#. welcome
msgid "Welcome, %s"
msgstr "환영합니다, %s"
#. save
msgid "Save"
msgstr "저장"
#. cancel
msgid "Cancel"
msgstr "취소"
#. search
msgid "Search"
msgstr "검색"
#. settings
msgid "Settings"
msgstr "설정"
#. logout
msgid "Log out"
msgstr "로그아웃"
Specifications
- Locale
- ko
- Format
- gettext PO
- Messages
- 7
Testing contract
Expected to pass- Scenario
- Exercise Gettext PO — Korean in its gettext workflow. A Korean (ko) gettext PO catalog with seven UI strings — for i18n toolchain tests.
- Expected result
- 35 text lines, decoded as UTF-8; first nonempty line is '# Korean translation for the Novus example app.'. Declared feature checks: locale=ko; messages=7. The declared comparison counterpart is loc-wc-mo-ko; preserve the stated difference instead of expecting the container bytes to match.
What is a .po file?
A PO file (.po, Portable Object) is a gettext translation catalog: a plain-text list of msgid (source string) and msgstr (translation) pairs, with a header defining the language and plural rules, source-location comments, and support for plural forms. It is the working file translators edit and is compiled to a binary .mo for runtime.
How to use this file
Use an example .po file to test gettext parsers, PO editors and CAT tools, translation-memory importers, and PO-to-JSON/XLIFF converters, or to exercise plural-form handling.
How to use this file for testing
“Gettext PO — Korean” is a deterministic Novus Examples fixture for Internationalization, Encoding detection. Parallel text and accented, multi-script content, for testing translation pipelines, Unicode handling, and localization tooling.
Documented properties for this file: 7 messages · gettext PO. 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 polib # pip install polib
po = polib.pofile("app_ko.po")
print(len(po), "entries,", round(po.percent_translated()), "% translated")
for e in po[:3]:
print(e.msgid, "->", e.msgstr)Related files
- poGettext PO — FrenchA French (fr) gettext PO catalog with seven UI strings — for i18n toolchain tests.

- poGettext PO — GermanA German (de) gettext PO catalog with seven UI strings — for i18n toolchain tests.

- poGettext PO — Portuguese (Brazil)A Portuguese (Brazil) (pt-BR) gettext PO catalog with seven UI strings — for i18n toolchain tests.

- 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.

- 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.

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