Packages
gettext
0.17.3
1.0.2
1.0.1
retired
1.0.0
0.26.2
0.26.1
0.26.0
retired
0.25.0
0.24.0
0.23.1
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.1
0.19.0
0.18.2
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.1
0.6.0
0.5.0
Internationalization and localization through gettext
Current section
Files
Jump to
Current section
Files
src/gettext_po_parser.yrl
Nonterminals grammar translations translation pluralizations pluralization
strings comments maybe_msgctxt.
Terminals str msgid msgid_plural msgctxt msgstr plural_form comment.
Rootsymbol grammar.
grammar ->
translations : '$1'.
% A series of translations. It can be just comments (which are discarded and can
% be empty anyways) or comments followed by a translation followed by other
% translations; in the latter case, comments are attached to the translation
% that follows them.
translations ->
comments : [].
translations ->
comments translation translations : [add_comments_to_translation('$2', '$1')|'$3'].
translation ->
maybe_msgctxt msgid strings msgstr strings : {translation, #{
comments => [],
msgctxt => '$1',
msgid => '$3',
msgstr => '$5',
po_source_line => extract_line('$2')
}}.
translation ->
maybe_msgctxt msgid strings msgid_plural strings pluralizations : {plural_translation, #{
comments => [],
msgctxt => '$1',
msgid => '$3',
msgid_plural => '$5',
msgstr => plural_forms_map_from_list('$6'),
po_source_line => extract_line('$2')
}}.
pluralizations ->
pluralization : ['$1'].
pluralizations ->
pluralization pluralizations : ['$1'|'$2'].
pluralization ->
msgstr plural_form strings : {'$2', '$3'}.
strings ->
str : [extract_simple_token('$1')].
strings ->
str strings : [extract_simple_token('$1')|'$2'].
comments ->
'$empty' : [].
comments ->
comment comments : [extract_simple_token('$1')|'$2'].
maybe_msgctxt ->
'$empty' : nil.
maybe_msgctxt ->
msgctxt strings : '$2'.
Erlang code.
extract_simple_token({_Token, _Line, Value}) ->
Value.
extract_line({_Token, Line}) ->
Line.
plural_forms_map_from_list(Pluralizations) ->
Tuples = lists:map(fun extract_plural_form/1, Pluralizations),
maps:from_list(Tuples).
extract_plural_form({{plural_form, _Line, PluralForm}, String}) ->
{PluralForm, String}.
add_comments_to_translation({TranslationType, Translation}, Comments) ->
{TranslationType, maps:put(comments, Comments, Translation)}.