streams/util
2016-01-13 00:08:07 -08:00
..
fpostit fpostit by Devlon Duthied added to utils 2012-02-11 10:03:14 +01:00
generate-hooks-index Put generated date at end of data. 2015-11-03 21:19:16 -08:00
hubzilla_er bring back the schemaspy makefile 2015-12-15 20:00:48 -08:00
shredder Merge branch 'master' of https://github.com/redmatrix/redmatrix 2015-05-17 19:48:57 -07:00
zotsh first pass name change 2015-05-05 03:56:10 -07:00
.htaccess Compatible update for .htaccess. 2015-06-22 00:45:29 +02:00
add_addon_repo change sh to bash in shebang to make scripts work 2015-07-15 15:29:08 +02:00
add_theme_repo change sh to bash in shebang to make scripts work 2015-07-15 15:29:08 +02:00
add_widget_repo change sh to bash in shebang to make scripts work 2015-07-15 15:29:08 +02:00
addons very small tweaks to CLI plugin manager utility 2016-01-13 00:08:07 -08:00
config command line config utility, get set system configuration values 2013-01-14 14:25:34 -08:00
config.md document the config cli tool 2013-01-14 14:34:08 -08:00
db_update.php db abstraction layer 2013-04-22 20:02:21 -07:00
docblox_errorchecker.php Enabled automated doc building. Changes: 2012-03-01 11:44:33 +01:00
Doxyfile first pass name change 2015-05-05 03:56:10 -07:00
Doxygen.footer remove date on the footer 2013-02-26 19:01:56 -08:00
extract.php Merge branch 'master' of https://github.com/friendica/friendica 2012-04-05 13:39:15 +02:00
fresh local_user => local_channel 2015-01-28 20:56:04 -08:00
fresh.md doc cleanup 2013-05-10 03:59:11 -07:00
friendica-to-smarty-tpl.py more work on settings - move template utils to utils and get rid of mods 2013-02-02 16:10:27 -08:00
hmessages.po fix relative urls on some Diaspora profile photos 2016-01-09 14:02:58 -08:00
hstrings.php move string files to hmessages.po and hstrings.php for hubzilla to avoid endless merge conflicts. 2015-09-26 23:44:30 -07:00
hz Correct docs. 2016-01-12 18:51:57 -08:00
importdoc more work on db storage of doco 2015-07-05 19:52:41 -07:00
makedocs disable pcss when installing since modules don't yet work and pcss uses the view module, plus weekly doc update 2013-05-14 21:25:58 -07:00
messages.po rev update 2015-11-06 12:34:29 -08:00
pconfig a few clone sync fixes as well as some work on hubzilla clone sync back to redmatrix 2015-07-02 21:55:36 -07:00
php2po.php move string files to hmessages.po and hstrings.php for hubzilla to avoid endless merge conflicts. 2015-09-26 23:44:30 -07:00
po2php.php move string files to hmessages.po and hstrings.php for hubzilla to avoid endless merge conflicts. 2015-09-26 23:44:30 -07:00
precompile_smarty3.php move smarty compiled files to store/[data]/smarty3 - which puts all writeable areas of the server except the config file and logs under the "store" directory. We'll do logs at a future time. 2014-07-10 21:34:52 -07:00
README first pass name change 2015-05-05 03:56:10 -07:00
run_xgettext.sh move string files to hmessages.po and hstrings.php for hubzilla to avoid endless merge conflicts. 2015-09-26 23:44:30 -07:00
schemaspy Correct directory (this runs from inside hubzilla_er 2015-11-08 22:58:21 -08:00
service_class issue #106 2015-10-29 15:11:41 -07:00
strings.php fix some merge errors 2015-05-18 17:20:59 -07:00
tpldebug.php quick and dirty (real dirty) template doco 2013-06-03 16:39:50 -07:00
typo.php start of v4 2015-12-06 19:16:38 -08:00
typohelper.php Merge branch 'master' of https://github.com/friendica/friendica 2012-04-05 13:39:15 +02:00
update_addon_repo Abort addon update if repo does not exist 2015-11-30 07:49:56 -05:00
update_theme_repo also change the update_ scripts 2015-07-15 15:40:23 +02:00
update_widget_repo also change the update_ scripts 2015-07-15 15:40:23 +02:00
updatetpl.py allow empty path input to use '.' rather than bail with error 2013-02-07 15:01:26 -08:00

Utilities

typo.php  - 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

extract.php - extracts translatable strings from our project files. It 
currently doesn't pick up strings in other libraries we might be using such as 
tinymce, simplepie, and the HTML parsers.

In order for extract to do its job, every use of the 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/en
directory. By setting $lang = 'something' in .htconfig.php, the application 
will search for view/something/filename prior to the English version in 
view/en/filename when loading templates and view files. 

The translated string table should be placed in view/$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/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 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 util/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 util/messages.po file.

	% cd util; ./run_xgettext.sh ../view/{language}/messages.po

	Replace {language} with the language you are working on - e.g. 'es', 'fr', 'de', etc. 

2. copy util/messages.po to view/<langauage>/messages.po
3. open view/<langauage>/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 util/po2php.php view/<language>/messages.po
 	to create the strings.php file
 	
When strings are added or modified in source, you could run
	$ cd util; ./run_xgettext.sh ../view/<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 the Hubzilla using strings.php, you could import your old
translation to messages.po. Run:
$ php util/php2po.php view/<language>/strings.php


You may also use the util/string_translator.php web interface to translate the string file, but it is disabled for website security reasons. The web server will need write permission to your language directories and the "Deny ..." line in util/.htaccess will need to be modified or commented to use the utility.