Nejběžnější postup je počeštění výrazů přes soubor cust_text.php. Ve složce languages, v podsložce Czech-UTF8, je uložen soubor cust_text.php. Tento soubor slouží k tomu, abychom, podle potřeby, mohli zavádět textové proměnné, které se na stránkách TNG opakovaně vyskytují a my chceme, aby se zobrazovaly česky správně. Při tomto postupu již víceslovné výrazy ničemu nevadí.
Poznámka: Využití souborů cust_text.php nám umožňuje správné zobrazení textové proměnné ve všech jazykových mutacích, které používáme. Pro češtinu nám v TNG zcela vystačí jenom znaková sada UTF8.
Pro počeštění platí několik doporučení:
- • Udržujme si v souboru cust_text.php dobrý přehled. Lze doporučit soustředit textové proměnné pro všechny reporty do bloku, který začíná komentářem // Reports a který je zakončen komentářem //End of Reports či obdobná úprava pro lepší přehled
• Nepoužívat mínus/pomlčku –
• Přesně dodržovat syntaxi zápisu textových proměnných podle vzoru $text['WifeID'] = "ID manželky";
• Nezavádět duplicitní textové proměnné (mnohé anglické výrazy jsou již v TNG přeloženy) a je nezbytné je respektovat
Jako příklad použiji report z odkazu http://legacyczech.com/forum/viewtopic.php?f=41&t=565
Tady si mohu dovolit přímo vložit do SQL dotazu výrazy Manžel a Manželka (ale mohu je ještě lépe zapsat do souboru cust_text,php). Výraz marrdate nebudu překládat, protože je již přeložen a uložen v souboru text.php jako Datum sňatku. Výrazy HusbandID a WifeID však přeložit v cust_text.php musím – budou totiž dvouslovné. Musím je zapsat do skupiny proměnných pro reporty se správnou syntaxí:
Po počeštění názvů sloupců bude výsledný SQL dotaz vypadat takto:
SELECT
CONCAT('<a href = \"getperson.php?personID=', p1.personID, '&tree=', p1.gedcom, '\">', p1.personID, '</a>') AS HusbandID
,CONCAT(UPPER(p1.lastname), ', ', p1.firstname) AS Manžel
,f1.marrdate
,CONCAT('<a href = \"getperson.php?personID=', p2.personID, '&tree=', p2.gedcom, '\">', p2.personID, '</a>') AS WifeID
,CONCAT(UPPER(p2.lastname), ', ', p2.firstname) AS Manželka
FROM
tng_families f1
INNER JOIN
tng_people p1
ON
f1.gedcom = p1.gedcom
AND
f1.husband = p1.personID
INNER JOIN
tng_people p2
ON
f1.gedcom = p2.gedcom
AND
f1.wife = p2.personID
WHERE
p1.famc <> ""
AND
p2.famc <> ""
AND
(p1.gedcom, CONCAT(CASE WHEN p1.famc < p2.famc THEN p1.famc ELSE p2.famc END, CASE WHEN p1.famc > p2.famc THEN p1.famc ELSE p2.famc END)) IN
(SELECT
q2.gedcom
,CONCAT(q2.family1, q2.family2) AS Parents
FROM
(SELECT
f1.gedcom
,CASE WHEN p1.famc < p2.famc THEN p1.famc ELSE p2.famc END AS Family1
,CASE WHEN p1.famc > p2.famc THEN p1.famc ELSE p2.famc END AS Family2
, COUNT(*) AS Frequency
FROM
tng_families f1
INNER JOIN
tng_people p1
ON
f1.gedcom = p1.gedcom
AND
f1.husband = p1.personID
INNER JOIN
tng_people p2
ON
f1.gedcom = p2.gedcom
AND
f1.wife = p2.personID
WHERE
p1.famc <> ""
AND
p2.famc <> ""
GROUP BY
Family1
,Family2
HAVING
Frequency > 1) AS q2)
ORDER BY
p1.gedcom
,CASE WHEN p1.famc < p2.famc THEN p1.famc ELSE p2.famc END
,CASE WHEN p1.famc > p2.famc THEN p1.famc ELSE p2.famc END
,f1.marrdatetr
Poznámka: Pokud používám ve své prezentaci jenom jediný strom, je sloupec s nadpisem strom zbytečný, a proto jsem si dovolil jej vynechat.
Shrnutí: Vytvořím report a podívám se, jak výsledek vypadá. Tam, kde jsou názvy v záhlaví české, je jasné, že si TNG sáhlo pro již existující výraz do jazykových souborů (většinou text.php nebo admintext.php). Tam, kde jsou názvy v záhlaví anglické, použiji zápis do cust_text.php, výjimečně využiji přímý zápis do SQL dotazu. Pokud provozuji TNG s výběrem z více jazyků, musím zabezpečit pro všechny použité jazyky zápis do jejich cust_text.php.
![Smějící se :lol:](./images/smilies/icon_lol.gif)