66 lines
1.2 KiB
Markdown
66 lines
1.2 KiB
Markdown
# po-parser
|
|
|
|
Parses and serializes `.po` file content.
|
|
|
|
Zero-dependency. ~2kb minified & gzipped.
|
|
|
|
## Usage
|
|
|
|
### Parse
|
|
|
|
```typescript
|
|
import POParser from 'po-parser';
|
|
|
|
const content = `
|
|
msgid ""
|
|
msgstr ""
|
|
"POT-Creation-Date: 2025-10-27 16:00+0000\n"
|
|
|
|
#: src/Greeting.tsx
|
|
#. Greets the user
|
|
msgid "+YJVTi"
|
|
msgstr "Hey"
|
|
`;
|
|
|
|
const result = POParser.parse(content);
|
|
```
|
|
|
|
### Serialize
|
|
|
|
```typescript
|
|
import POParser from 'po-parser';
|
|
|
|
const catalog = {
|
|
meta: {
|
|
'POT-Creation-Date': '2025-10-27 16:00+0000'
|
|
},
|
|
messages: [
|
|
{
|
|
msgid: '+YJVTi',
|
|
msgstr: 'Hey',
|
|
extractedComments: ['Greets the user'],
|
|
references: [{path: 'src/Greeting.tsx', line: 10}]
|
|
}
|
|
]
|
|
};
|
|
|
|
const result = POParser.serialize(catalog);
|
|
```
|
|
|
|
## Supported features
|
|
|
|
- `msgid` and `msgstr` (message entries)
|
|
- `msgctxt` (message context for namespacing)
|
|
- References (`#:` comments, with optional line numbers)
|
|
- Extracted comments (`#.` comments)
|
|
- Flag comments (`#,` comments, e.g. `#, fuzzy`)
|
|
- Metadata (from empty `msgid`/`msgstr` entry at the beginning)
|
|
- Single-line quoted strings
|
|
|
|
## Unsupported features
|
|
|
|
- Translator comments (`#` comments)
|
|
- Previous string key comments (`#|` comments)
|
|
- Plural forms (`msgid_plural`)
|
|
- Multi-line strings
|