FileAccess Orion

PoFileLoader extends FileLoader
in package

ArrayLoader loads translations from a PHP array.

Tags
copyright

Copyright (c) 2010, Union of RAD https://github.com/UnionOfRAD/lithium

copyright

Copyright (c) 2012, Clemens Tolboom

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>
Return values
array<string|int, mixed>

Search results