PoFileLoader
extends FileLoader
in package
ArrayLoader loads translations from a PHP array.
Tags
Table of Contents
- load() : MessageCatalogue
- Loads a locale.
- loadResource() : array<string|int, mixed>
- Parses portable object (PO) format.
- addMessage() : mixed
- Save a translation item to the messages.
- flatten() : array<string|int, mixed>
- Flattens an nested array of translations.
Methods
load()
Loads a locale.
public
load(mixed $resource, mixed $locale[, mixed $domain = 'messages' ]) : MessageCatalogue
Parameters
- $resource : mixed
-
A resource
- $locale : mixed
-
A locale
- $domain : mixed = 'messages'
-
The domain
Return values
MessageCatalogue —A MessageCatalogue instance
loadResource()
Parses portable object (PO) format.
protected
loadResource(mixed $resource) : array<string|int, mixed>
From https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files we should be able to parse files having:
white-space
translator-comments
#. extracted-comments #: reference... #, flag... #| msgid previous-untranslated-string msgid untranslated-string msgstr translated-string
extra or different lines are:
#| msgctxt previous-context #| msgid previous-untranslated-string msgctxt context
#| msgid previous-untranslated-string-singular #| msgid_plural previous-untranslated-string-plural msgid untranslated-string-singular msgid_plural untranslated-string-plural msgstr[0] translated-string-case-0 ... msgstr[N] translated-string-case-n
The definition states:
- white-space and comments are optional.
- msgid "" that an empty singleline defines a header.
This parser sacrifices some features of the reference implementation the differences to that implementation are as follows.
- No support for comments spanning multiple lines.
- Translator and extracted comments are treated as being the same type.
- Message IDs are allowed to have other encodings as just US-ASCII.
Items with an empty id are ignored.
Parameters
- $resource : mixed
Return values
array<string|int, mixed> —addMessage()
Save a translation item to the messages.
private
addMessage(array<string|int, mixed> &$messages, array<string|int, mixed> $item) : mixed
A .po file could contain by error missing plural indexes. We need to fix these before saving them.
Parameters
- $messages : array<string|int, mixed>
- $item : array<string|int, mixed>
Return values
mixed —flatten()
Flattens an nested array of translations.
private
flatten(array<string|int, mixed> $messages) : array<string|int, mixed>
The scheme used is: 'key' => ['key2' => ['key3' => 'value']] Becomes: 'key.key2.key3' => 'value'
Parameters
- $messages : array<string|int, mixed>