diff --git a/util/README b/util/README index 285358b286..c6bc032a54 100644 --- a/util/README +++ b/util/README @@ -44,5 +44,77 @@ then relocate the files to the view directory. The files in the top-level view directory are template files which do not require translation. +Placeholders + +Do not translate placeholders in strings! Things like %s, %d, %1$s and $somename +are used to add dynamic content to the string. + +%s rappresent a dynamic string, like in "Welcome to %s" +%d rappresent a dynamic number, like in "%d new messages" +$somename is a variable like in php +In %1$s %2$s, the numbers are the position index of multiple dynamic content. +You could swap position in string of indexed placeholders. +e.g. +"%1$s's %2$s" => "John's photo", "John's item" +"%2$s di %1$s" => "foto di John", "elemento di John" + + +Plural + +The tt() function supports plural form. Script extract.php write this in +strings.php as an array, one string for every plural form language supports: + +$a->string["%d message sent"] = Array( + 0 => "%d message sent", + 1 => "%d messages sent", +); + +The function string_plural_select($n) defined in strings.php, return the string +index to use, related to the numbers of item (value of $n). + +This is modelled after ngettext function of GNU gettext. +More info at http://www.gnu.org/software/hello/manual/gettext/Plural-forms.html + + +Xgettext and .po workflow + +1. Run utils/run_xgettext.sh script (on *unix sistems, with GNU xgettext installed) + This script runs xgettext on source tree, extracting strings from t() and tt() + functions, and creates a utils/messages.po file. +2. copy utils/messages.po to views//messages.po +3. open views//messages.po with a text editor and fill in infos in + "Last-Translator: FULL NAME " + "Language-Team: LANGUAGE \n" + "Language: \n" + + (eg: + "Last-Translator: Guybrush Threepwood " + "Language-Team: Pirate Friendika \n" + "Language: pi\n" + ) + + For the line + "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + read GNU gettext manual at + http://www.gnu.org/software/hello/manual/gettext/Plural-forms.html + +4. You could then translate the strings in text editor, but I suggest to use one + of the many .po editors out there, like QtLinguist + +5. run + $ php utils/po2php.php views//messages.po + to create the strings.php file + +When strings are added or modified in source, you could run + $ utils/run_xgettext.sh views//messages.po + to extraxt strings from source files and join them with the existing .po file: + new strings are added, the existing are not overwritten. + +If you already translated Friendika using strings.php, you could import your old +translation to messages.po. Run: +$ php utils/php2po.php views//strings.php + + +