Rensa en ts-fil

Här behandlar vi program för ordbehandling, kalkyl, presentation och även e-post.
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Rensa en ts-fil

Inlägg av eson57 »

Någon som har en bra metod att rensa en .ts-fil från gamla översättningar? Jag vill alltså ta bort allt som finns mellan taggarna <translation> och </translation>.

Edit:
En textredigerare med "Sök & ersätt" som stöder jokertecken hade varit bra, om någon känner till en sådan.
I Notepad++ (Windows) kunde man använda RegEx tillsammans med "Sök & ersätt". Mina RegEx-kunskaper är dock minimala.
Senast redigerad av 2 eson57, redigerad totalt 8 gång.
Alltid på kanelen!
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Har kommit en bit på väg. Det går att lösa med hjälp av RegEx i t.ex. jEdit, som en av många textredigerare.
I "Search and replace" klistrar jag in, som söksträng...

Kod: Markera allt

<translation>[A-Za-zÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n0-9-,.-?!:;%&=()]*</translation>
Som ersättningssträng kör jag...

Kod: Markera allt

<translation type="unfinished"></translation>
Detta fixar de flesta strängar, men som den noob jag är på RegEx, lyckas jag inte få till det med några tecken som också behöver vara med i söksträngen. Som t.ex. [ ] och /. De strängar som innehåller dessa tecken, hittas helt enkelt inte.
Någon som är haj på RegEx och kan ge mig ett handtag?
Alltid på kanelen!
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Löst!

Jag kom på det till slut. Vissa tecken måste argumenteras ut för att söksträngen skall fungera. I det här fallet var det hakparentesen som spökade.
"Rätt" söksträng skall se ut som följer...

Kod: Markera allt

<translation>[A-Za-zÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ \t\r\n0-9-,.-?!:;%&\/=+-'{}()\[\]$£@*_~]*</translation>
Tilläggas kan, att det i framtiden förmodligen kan dyka upp fler tecken som behöver vara med i denna sträng, men efter att ha rensat en ts-fil med 670 tyska översättningssträngar, är jag för tillfället nöjd.
Senast redigerad av 1 eson57, redigerad totalt 12 gånger.
Alltid på kanelen!
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Rensa en ts-fil [Löst]

Inlägg av Gunnar Hjalmarsson »

Hade det inte räckt med:

<translation>[^<]*</translation>

(ej testat)
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil [Löst]

Inlägg av eson57 »

Jo, det verkar så. Testade på en svensk språkfil och det ser ut att funka.

Kände hela tiden att det måste finnas ett övergripande tecken, men hittade det inte, så tack!
Har vetat länge att möjligheten finns, men som sagt, aldrig riktigt försökt sätta mig in i det tidigare. Får nog ta och plugga lite. Det kan vara användbart vid fler tillfällen.
Alltid på kanelen!
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Rensa en ts-fil [Löst]

Inlägg av Gunnar Hjalmarsson »

[^<] betyder vilket tecken som helst utom <. Det fungerar förstås inte om < förekommer i översättningarna, men det kanske någon/något redan har tagit hand om genom att förekomsten av sådana tecken konverterats till t ex <.

Använde Perl en del för några år sedan, och lärde mig en del om 'regular expressions' därigenom.
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil [Löst]

Inlägg av eson57 »

Taggar av diverse slag, förekommer ofta i översättningssträngar, så det har någon mycket riktigt tänkt på och ersatt <whatever> med <whatever>

Tack för hjälpen hur som helst! Jag kommer att ha stor nytta av detta uttryck, eftersom utvecklare ofta "glömmer" att publicera oöversatta ts-filer (templates). De få gånger jag bett om en rensad fil, har dom inte haft en aning om hur dom skall fixa det. :)
Jag är ju inte programmerare så jag gjorde nu äntligen slag i saken, tog den långa vägen och googlade mig fram. Fattar inte att jag inte hittade det korta uttrycket för alla tecken. ???
Alltid på kanelen!
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Hittade en bra sida där man kan testa sina regex. Man får bra förklaringar på vad de olika komponenterna gör och vilka som inte fungerar, samt hur det åtgärdas.

https://regex101.com/
Alltid på kanelen!
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Rensa en ts-fil

Inlägg av Gunnar Hjalmarsson »

eson57 skrev: https://regex101.com/
Ser ut att vara en användbar lathund.
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Jo, jag såg t.ex att ett snedstreck (/) måste argumenteras bort med ett bakåtlutat snedstreck (\). ;D
Alltid på kanelen!
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Stötte på en skum sak när jag skulle rensa en po-fil, på samma sätt som med ts-filer. Det korta uttrycket [^<]* fungerade inte. Det ville radera i princip all text i hela filen. Har ingen aning om varför, men det borde ju ha med po syntax att göra... eller?

Vad jag försökte göra, var alltså att ta bort allt mellan citationstecknen i översättningssträngen...

Kod: Markera allt

msgstr "Översatt textrad"
Jag försökte då söka på...

Kod: Markera allt

msgstr "[^<]*"
...och ersätta med...

Kod: Markera allt

msgstr ""
Det fungerade alltså inte. Mitt långa uttryck med "alla" tecken, fungerade däremot utmärkt.
Alltid på kanelen!
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Rensa en ts-fil

Inlägg av Gunnar Hjalmarsson »

eson57 skrev:Jag försökte då söka på...

Kod: Markera allt

msgstr "[^<]*"
...och ersätta med...

Kod: Markera allt

msgstr ""
Det fungerade alltså inte.
Nej, det gör det förstås inte eftersom strängen i en PO-fil inte avgränsas av något som börjar med '<'. Du skulle i så fall ha behövt:

Kod: Markera allt

msgstr "[^"]*"
Men det funkar bara om strängen inte är uppdelad på flera rader och om den inte innehåller escapade citattecken (\").
eson57 skrev:Mitt långa uttryck med "alla" tecken, fungerade däremot utmärkt.
Det är nog säkrare i PO-filer. Men det eventuella problemet med strängar uppdelade på flera rader kvarstår.
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Tack, då förstår jag bättre. Knepigt det här. Skall man få med flerradig översättning, så klipper den även originalspråket (msgid). Lyckades hitta en fil med flerradig översättning och prova.

Nåja, i går var nog första gången jag stötte på behovet av att rensa en po-fil, så det kanske inte är något man behöver fördjupa sig i. Filen i går, hade inga flerradiga översättningar.
Alltid på kanelen!
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Rensa en ts-fil

Inlägg av Gunnar Hjalmarsson »

När gettext används för översättning, finns väl normalt en mall (POT-fil) tillgänglig som man kan utgå från för att starta översättning till ett nytt språk.
Användarvisningsbild
eson57
Inlägg: 1103
Blev medlem: 06 dec 2014, 10:44
OS: Linux Mint

Re: Rensa en ts-fil

Inlägg av eson57 »

Jo, för det mesta. Vissa utvecklare slarvar med publiceringen dock. Det är ju inte alla som finns på Launchpad.
Fick för mig att ta en titt på Electrum i går och kunde inte finna någon källfil, men har i och för sig inte frågat heller. Ville först ta en titt för att bedöma svårighetsgraden.
Han verkar använda Crowdin för översättning, men svenska saknas bland tillgängliga språk.
Alltid på kanelen!
Skriv svar

Återgå till "Kontor"