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]

Bojím se, že jakýkoliv TextDiff mu nepomůže. TextDiff potřebuje bloky textu se změnami. Pokud jsou části dokumentů vůči sobě proházené, nebude TextDiff fungovat.

Opravdu by to chtělo minimálně naprogramovat něco, co by bloky uspořádalo dle abecedy.

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