Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Nástroj na utřídění textu pro účely překladu

Vstupní info:

Překlad textů hry. Vývojáři postupně přidávají další addony (a texty), bohužel je to vždy naprosto rozházené v rámci jednoho souboru. Chci se vypořádat s přidáním nových řetězců ke stávajícímu českému překladu.

-----------

Existuje "nový" soubor s texty, viz příklad:

#. "BUILDING_TITLE[Panda Sanctuary]:0"
msgid "Panda Sanctuary"
msgstr ""
#. "BUILDING_TITLE[Temple]:0"
msgid "Temple Complex"
msgstr ""
#. "BUILDING_TITLE[Oriental Pearl Tower]:0"
msgid "Oriental Pearl Tower"
msgstr ""

Vedle toho existuje "dříve přeložený" soubor, kde jsou ale jednotlivé řetězce jinak seřazeny. Na pořadí řetězců v souboru nezáleží. Do anglického souboru postupně přibývají další a další řetězce, ty je potřeba přidat i do českého souboru/překladu a přeložit. Hledat v mnoha tisících řetězcích ale nejde. Je potřeba to nějak seřadit a porovnat. Přidat (do českého), co přibylo.

Každý jednotlivý řetězec má formát:

#. "NEPREKLADANA_KATEGORIE[Neprekladany nazev retezce]:0"
msgid "přeložený text"
msgstr "další případně přeložený text"

Základem je tedy fakt, že každý řetězec začíná #. a končí posledním znakem před dalším #
V editoru to vypadá takto:
[80064-npplus-png]

Jak porovnat dva takové soubory? Aby výsledkem bylo to, co v novém anglickém přibylo? Abych mohl nové anglické řetězce snadno přidat k původnímu českému souboru?

Používám Notepad++, nebráním se použití jakéhokoliv jiného nástroje zdarma.

Díky za jakékoliv tipy.

Předmět Autor Datum
- Nevim. * Jen me napadalo, rozdelit texty do promenych BLOKY nic vic, kde by jsi novou verzi porovn…
XoXoChanel 21.10.2017 13:20
XoXoChanel
Ono by bylo dobré, kdyby 1 string = 1 řádek. Bohužel tomu tak není. Někdy je to 10 řádků... Na ten p…
L-Core 21.10.2017 13:38
L-Core
Kdyby to bylo v obou souborech popořádku, asi by to fungovalo. Ale ty jednotlivé řetězce jsou v obou…
L-Core 21.10.2017 13:55
L-Core
Zkus Csdiff
jirka44 21.10.2017 15:40
jirka44
Bojím se, že jakýkoliv TextDiff mu nepomůže. TextDiff potřebuje bloky textu se změnami. Pokud jsou č…
Jan Fiala 22.10.2017 09:16
Jan Fiala
Podľa mňa najjednoduchšie je napísať na to program. Osobne by som si na takúto vec zvolil node.js, a…
moose 21.10.2017 18:40
moose
Já programovat neumím (uměl jsem to před 35 lety, v Cobolu, Fotranu, částečně v Assembleru). Takže r…
L-Core 22.10.2017 08:33
L-Core
V prílohe je program, ktorý vypíše chýbajúce kľúče. Použitie je napr. "localize original.txt transla…
moose 22.10.2017 23:32
moose
Díky. Opravdu to vypíše řádky s #, které ve starém přeloženém souboru chybí. Jenže to moc dopřelože…
L-Core 23.10.2017 09:17
L-Core
Nerozumiem, v čom je problém, že sú reťazce rozhádzané po celom súbore. Veď to len znamená, že ich t… poslední
moose 23.10.2017 15:50
moose
Zdravím, Poedit by mal vedieť aktualizovať katalóg z .pot šablóny. Skúste sa pozrieť, či by Vám nev…
StarySkeptik 23.10.2017 09:02
StarySkeptik

- Nevim.
* Jen me napadalo, rozdelit texty do promenych BLOKY nic vic, kde by jsi novou verzi porovnal BLOK vs BLOCK , treba blok TITLE obsahuje 10 souboru|Odstavcu tak upozorni na stary ktery ma jen 8, sice nenajde radek s rozdilem ale block by mohl fungovat, kde bude jednodusi porovnat 10-20 radku v jednom BLOKU jak 30stran textu..

TiP ~ Ale neboj priteli ! Existuji i jiné moznosti, jak porovat primo i obsah, v [Notepad ++] muzes zkusit (a urcite zkus) Compare Pluig : https://sourceforge.net/projects/npp-compare/
[notepad_compare_feature.png]
[14809801335_d148f4c763_o.png]

Podľa mňa najjednoduchšie je napísať na to program. Osobne by som si na takúto vec zvolil node.js, ale je to v podstate jedno aký jazyk, dal by sa napísať aj plugin do Notepad++ v C++.

Ak nemáš problém s púšťaním skriptov v node.js, tak ti na to môžem napísať jednoduchý skript. Prípadne ak by si chcel radšej natívny program, tak si môžem skúsiť Rust. Len daj vedieť, ktorú možnosť preferuješ.

V prílohe je program, ktorý vypíše chýbajúce kľúče. Použitie je napr. "localize original.txt translated.txt", kde "original.txt" je pôvodný súbor so všetkými textami a "translated.txt" je súbor s prekladmi, kde niektoré kľúče chýbajú. Program len vypíše zoznam chýbajúcich kľúčov (v náhodnom poradí).

Je to 64-bitová binárka, takže ak chceš 32-bitový build, tak daj vedieť. Ak to má ešte niečo spraviť (doplniť chýbajúce kľúče na koniec súboru), tak to môžem ešte doplniť. Je to prvý krát, čo sa hrám s Rustom, tak snáď to robí to, čo to má robiť. Chcel som ho vyskúšať, lebo by to malo byť nezávislé na hocijakom runtime a malo by to byť malé. Tento jednoduchý program (55 riadkov) má 165 kB, čo vyzerá v pohode.

Edit: Inak bez použitia programu by si to možno mohol spraviť tak, že z oboch súborov vyhodiš riadky nezačinajúce mriežkou, usporiadaš ich a porovnáš.

Díky.

Opravdu to vypíše řádky s #, které ve starém přeloženém souboru chybí. Jenže to moc dopřeložení neulehčí.
- nové řetězce jsou rozházeny po celém souboru. Už ten současný český má zcela jiné pořadí stringů
- nestačí jen řádky s #, ale na něj navazují vždy další řádky.. řetězec končí až posledním znakem před dalším #

Teď to odložím (moc práce s DPH), mrknu na to po 25.10.

Nerozumiem, v čom je problém, že sú reťazce rozhádzané po celom súbore. Veď to len znamená, že ich tam môžeš doplniť v akomkoľvek poradí a nespôsobuje to žiaden problém.

Doplnil som do výpisu aj tie nadväzujúce riadky. Keď to spustíš, tak ti to vypíše všetky nové kľúče aj s ich hodnotami. Ak to chceš doplniť do súboru, tak môžeš použiť napr. cmd:

localize original.txt translated.txt 2>NUL >> translated.txt

Zpět do poradny Odpovědět na původní otázku Nahoru