Entwicklung/Codedoku: Unterschied zwischen den Versionen
Entwicklung/Codedoku (Quelltext anzeigen)
Version vom 15. September 2015, 09:53 Uhr
, 15. September 2015→Funktionsweise
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 440: | Zeile 440: | ||
=== Funktionsweise === | === Funktionsweise === | ||
Der OC-Code ist mehrsprachig und | 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}}). | ||
Ü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 | |||
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 == |