redmatrix ec9e914798 revup + strings #337 4 years ago
..
fpostit 857f21eb32 fpostit by Devlon Duthied added to utils 8 years ago
generate-hooks-index 4bd0e083d1 Put generated date at end of data. 4 years ago
hubzilla_er 46e4d2d573 bring back the schemaspy makefile 4 years ago
shredder 457cc48043 Type of script 4 years ago
zotsh a3c37f1458 first pass name change 5 years ago
.htaccess c3fa0a3ca7 Compatible update for .htaccess. 4 years ago
Doxyfile a3c37f1458 first pass name change 5 years ago
Doxygen.footer ed2ff18cac remove date on the footer 7 years ago
README 9abd95fad3 static App 4 years ago
add_addon_repo 01ad485f65 SECURITY: Do not link unknown and unverified code repositories to the project without some form of confirmation that one accepts the significant risks involved. 4 years ago
add_theme_repo 01ad485f65 SECURITY: Do not link unknown and unverified code repositories to the project without some form of confirmation that one accepts the significant risks involved. 4 years ago
add_widget_repo 01ad485f65 SECURITY: Do not link unknown and unverified code repositories to the project without some form of confirmation that one accepts the significant risks involved. 4 years ago
addons 9abd95fad3 static App 4 years ago
config 9abd95fad3 static App 4 years ago
config.md c450049a0a document the config cli tool 7 years ago
db_update.php 552f03122c db abstraction layer 7 years ago
docblox_errorchecker.php e0c659b34b Enabled automated doc building. Changes: 8 years ago
extract.php 9abd95fad3 static App 4 years ago
fresh 9abd95fad3 static App 4 years ago
fresh.md 34526e8253 doc cleanup 7 years ago
friendica-to-smarty-tpl.py 09ece497f7 more work on settings - move template utils to utils and get rid of mods 7 years ago
hmessages.po ec9e914798 revup + strings #337 4 years ago
hstrings.php 9abd95fad3 static App 4 years ago
hz b58177e3c6 Use ctrl-d for multi-line messages. 4 years ago
importdoc f20933e1e0 more work on db storage of doco 4 years ago
makedocs 5e4b9d7766 disable pcss when installing since modules don't yet work and pcss uses the view module, plus weekly doc update 7 years ago
messages.po 1c8f63f1e5 rev update 4 years ago
pconfig 9abd95fad3 static App 4 years ago
php2po.php 9abd95fad3 static App 4 years ago
po2php.php 9abd95fad3 static App 4 years ago
precompile_smarty3.php c74fd78993 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. 5 years ago
run_xgettext.sh cd2b811555 move string files to hmessages.po and hstrings.php for hubzilla to avoid endless merge conflicts. 4 years ago
schemaspy 0c8219e683 Correct directory (this runs from inside hubzilla_er 4 years ago
service_class 9abd95fad3 static App 4 years ago
strings.php 9abd95fad3 static App 4 years ago
tpldebug.php 25a55219ec quick and dirty (real dirty) template doco 6 years ago
typo.php 40f3857691 change call to App::init() to bring back include path (only in typocheck) 4 years ago
typohelper.php 995555f357 ditto for typohelper 4 years ago
udall 6729c27b77 git update everything 4 years ago
update_addon_repo b1f4b9759b Abort addon update if repo does not exist 4 years ago
update_theme_repo ba7acf88ad also change the update_ scripts 4 years ago
update_widget_repo ba7acf88ad also change the update_ scripts 4 years ago
updatetpl.py 57aa2449e7 allow empty path input to use '.' rather than bail with error 7 years ago

README

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:

App::$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//messages.po
3. open view//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 util/po2php.php view//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//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//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.