Jak do nadpisů sloupců v reportech dostat češtinu

Tipy a návody pro tvorbu vlastních sestav a výstupů z TNG.
Falt
Příspěvky: 282
Registrován: 30 srp 2013 23:48
Kontaktovat uživatele:

Jak do nadpisů sloupců v reportech dostat češtinu

Příspěvekod Falt » 28 lis 2017 11:27

Pro počeštění nadpisů je někdy možnost zabudování českého výrazu přímo do SQL dotazu (v našem příkladu je to výraz Manžel a Manželka). POZOR! Do SQL dotazu nelze přímo zabudovat víceslovné výrazy. Další, i když menší, nevýhodou je, že si zabudováním českého výrazu přímo do SQL dotazu komplikujeme správné zobrazení nadpisů sloupců v dalších jazycích, pokud ovšem více jazyků používáme.
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í:

cust_text.gif
zápis do cust_text.php v prostředí PSPad
cust_text.gif (1.62 KiB) Zobrazeno 979 x

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.
:lol:

Zpět na “Reporty”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů