Entwicklung/Codedoku: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 440: Zeile 440:
=== Funktionsweise ===
=== Funktionsweise ===


Der OC-Code ist mehrsprachig und frei übersetzbar, mit Ausnahme
Der OC-Code ist mehrsprachig und vollständig übersetzbar, mit Ausnahme des Garmin-Download-Dialogs ({{Codepath2|htdocs|garmin.php}}), dessen untere Hälfte es teils nur in Englisch und teils in Deutsch und Englisch gibt (siehe {{Codepath|htdocs/resource2/ocstyle/js/GarminDisplay.js}}).
* der Benachrichtigungs-Emails, die es bislang nur in Deutsch gibt (-> http://redmine.opencaching.de/issues/141)
* des Garmin-Download-Dialogs ({{Codepath2|htdocs|garmin.php}}), dessen untere Hälfte es nur in Deutsch und Englisch gibt (siehe {{Codepath|htdocs/resource2/ocstyle/js/GarminDisplay.js}})
(weitere noch nicht lokalisierbare Module bitte ergänzen!)


Übersetzungen und Lokalisierungen befinden sich an folgender Stelle:
* {{Codepath|htdocs/doc/sql/static-data/data.sql}}: Tabellen countries_list_default, helppages, languages, languages_list_default, search_ignore (z.Zt. nur Deutsch), <u>sys_trans_text</u>
* {{Codepath|htdocs/templates2/ocstyle/articles}}
* {{Codepath|htdocs/config2/locale.inc.php}}
* ''htdocs/config2/settings.inc.php'': Städteauswahl für die kleine Cachekarte, domainabhängige Einstellungen
* {{Codepath|htdocs/lang/de/ocstyle/email}}
* {{Codepath|htdocs/resource2/ocstyle/images/thumb}}


Die Lokalisierung je nach gewählter Sprache erfolgt grundsätzlich mit folgenden Mechanismen:
 
Die Übersetzung je nach gewählter Sprache erfolgt grundsätzlich mit folgenden Mechanismen:
* In Templates über die Smarty-Tags <code>{t}English Text{/t}</code>. Hierbei können auch Variablen eingesetzt werden, z.B.
* In Templates über die Smarty-Tags <code>{t}English Text{/t}</code>. Hierbei können auch Variablen eingesetzt werden, z.B.
*:<code>{t 1=$cachename 2=$username}The geocache %1 has been found by %2{/t}</code>
*:<code>{t 1=$cachename 2=$username}The geocache %1 has been found by %2{/t}</code>
Zeile 470: Zeile 475:


Bei der Einbettung in JavaScript sind Texte zu escapen; dies geht mit dem Smarty-Modifizierer <code>escape=js</code>. Es gibt jedoch Spezialfälle in denen dies nicht im Template möglich ist; in dem Fall sind HTML-Entities (' " &) in data.sql ''doppelt'' zu escapen, z.B. ''Didn\\\'t find'' für den String ''Didn't find''. Das erste Escaping wird beim SQL-Import von data.sql aufgelöst, das zweite verhindet Kollissionen mit der JavaScript-Stringsyntax.
Bei der Einbettung in JavaScript sind Texte zu escapen; dies geht mit dem Smarty-Modifizierer <code>escape=js</code>. Es gibt jedoch Spezialfälle in denen dies nicht im Template möglich ist; in dem Fall sind HTML-Entities (' " &) in data.sql ''doppelt'' zu escapen, z.B. ''Didn\\\'t find'' für den String ''Didn't find''. Das erste Escaping wird beim SQL-Import von data.sql aufgelöst, das zweite verhindet Kollissionen mit der JavaScript-Stringsyntax.
Beim Aufruf von <code>$translate->t(...)</code> muss der zu übersetzend String in ''einfachen'' Kochkommata (<nowiki>''</nowiki>) stehen. Doppelte Hochkommata würden von ''translate.php -> Quelltexte durchsuchen'' nicht erkannt.


== Fehlerbehandlung ==
== Fehlerbehandlung ==
2.505

Bearbeitungen

Navigationsmenü