Fix part of https://github.com/friendica/friendica/issues/4665 `php [shell file]` does not work, so use `php [php file]` instead. `php bin/console.php` is more robust than e.g. `bin/console` which does not work on Windows, or *nix systems without Bash
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| Utilities
 | |
| 
 | |
| php bin/console.php typo - is a crude syntax checker to avoid checking in files with simple
 | |
| typos. It basically just loads each of our project files at once. Run from
 | |
| cmdline and see if any parsing errors are reported.
 | |
| 
 | |
| 
 | |
| 
 | |
| Internationalisation
 | |
| 
 | |
| php bin/console.php extract - extracts translatable strings from our project files. It
 | |
| currently doesn't pick up strings in other libraries we might be using such as
 | |
| the HTML parsers.
 | |
| 
 | |
| In order for extract to do its job, every use of the L10n::t() translation function
 | |
| must be preceded by one space. The string also can not contain parentheses. If
 | |
| parens are required in a string which requires translation, please use hex escapes.
 | |
| 
 | |
| \x28 = (
 | |
| \x29 = )
 | |
| 
 | |
| This only applies to English. Other languages may use parens in strings
 | |
| because they don't require extraction.
 | |
| 
 | |
| strings.php - a recent run of the strings program. This provides output that
 | |
| is suitable for direct inclusion in the program.
 | |
| 
 | |
| There are also translatable strings in the various files in the view/lang/en
 | |
| directory. By setting $lang = 'something' in .htconfig.php, the application
 | |
| will search for view/lang/something/filename prior to the English version in
 | |
| view/lang/en/filename when loading templates and view files.
 | |
| 
 | |
| The translated string table should be placed in view/lang/$lang/strings.php for
 | |
| automatic inclusion.
 | |
| 
 | |
| You are not restricted to using known languages. You may also use this to
 | |
| translate the software into "pirate", "surfer" or merely to replace certain
 | |
| text which you don't care for.
 | |
| 
 | |
| Note: The view/lang/en directory contains many HTML template files, some of which
 | |
| only have a few words of English text amongst the HTML. Over time we will move
 | |
| the translation to the replace_macros() function which calls these files and
 | |
| 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 represents a dynamic string, like in "Welcome to %s"
 | |
| %d represents 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 L10n::tt() function supports plural form. The extract command writes 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 modeled 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 bin/run_xgettext.sh script (on *unix sistems, with GNU xgettext installed)
 | |
| 	This script runs xgettext on source tree, extracting strings from L10n::t() and L10n::tt()
 | |
| 	functions, and creates a util/messages.po file.
 | |
| 
 | |
| 	$ cd bin; ./run_xgettext.sh
 | |
| 
 | |
| 2. copy util/messages.po to view/lang/<language>/messages.po
 | |
| 	Replace <language> with the language you are working on - e.g. 'es', 'fr', 'de', etc.
 | |
| 
 | |
| 3. open view/lang/<language>/messages.po with a text editor and fill in infos in
 | |
| 	"Last-Translator: FULL NAME <EMAIL@ADDRESS>"
 | |
| 	"Language-Team: LANGUAGE <LL@li.org>\n"
 | |
| 	"Language: \n"
 | |
| 
 | |
| 	(eg:
 | |
| 	"Last-Translator: Guybrush Threepwood <gb@host.com>"
 | |
| 	"Language-Team: Pirate Friendika <pirate-friendika-ml@host.com>\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 bin/console.php po2php view/lang/<language>/messages.po
 | |
|  	to create the strings.php file
 | |
| 
 | |
| When strings are added or modified in source, you could run
 | |
| 	$ cd bin; ./run_xgettext.sh ../view/lang/<language>/messages.po
 | |
| 	to extract 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 Friendica using strings.php, you could import your old
 | |
| translation to messages.po. Run:
 | |
| $ php bin/console.php php2po view/lang/<language>/strings.php
 |