t.me/atinfo_chat Telegram группа по автоматизации тестирования

Заменить немецкие символы их unicode аналогами


(brext) #1

Есть скрипт на груви который парсит .xml в  .properties:

 

#!/usr/bin/env groovy
 
if (args.size() < 1) {
    println "Usage: locxml2prop.groovy <xml file>"
    return 
}
 
def xml = new XmlSlurper().parse(new File(args[0]))
 
xml.file.each { f ->
    def lang = (f.'@target-language' as String).replace('-', '_')
 
    new File("Messages_${lang}.properties").withWriter("UTF-8") { prop ->
        f.body.'trans-unit'.each { t ->
            prop << "${t.@id}=${t.target.text()?:t.source.text()}\n"
        }
    }
}
 
Вопрос: как его немного подпилить, чтобы он кушал еще и немецкие символы типа "ü" и остальных, а точнее заменял их на их unicode аналоги? Подозреваю нужно сделать что-то типа xml.replaceAll(a,b)

(brext) #2

никто не сталкивался с таким?


(Mykhailo Poliarush) #3

привет, не сталкивался 

но это полюбому надо работать с классом Character http://groovy.codehaus.org/JN1515-Characters

и надо читать текст с кодировкой http://glaforge.appspot.com/article/heads-up-on-file-and-stream-groovy-methods

вот тут def xml = new XmlSlurper().parse(new File(args[0]))

тут конечно, надо имет полный пример и ковыряться с кодом, по быстрому не скажешь


(brext) #4

вот часть контента из .xml файла:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
    <file target-language="fr-FR" datatype="html" source-language="en-US" original="">
        <header/>
        <body>            
            <trans-unit datatype="html" reformat="" approved="yes" id="account.order.lineitem.status.return.complete.text">
                <source xml:lang="en-US">Return Complete</source>
                <target xml:lang="de-DE" state="new">Rücksendung vollständig</target>
            </trans-unit>
<trans-unit datatype="html" reformat="" approved="yes" id="payment.direct.debit.credit.check.enabled.description">
                <source xml:lang="en-US">When enabled, a credit check is performed to determine if the consumer’s credit is good enough to use Direct Debit for their purchase</source>
                <target xml:lang="de-DE" state="new">When enabled, a credit check is performed to determine if the consumer’s credit is good enough to use Direct Debit for their purchase</target>
            </trans-unit>
        </body>
    </file>
</xliff>
 
 
Пробовал в скрипт подставлять и xml = xml.replace('&#252;','\\u00FC') и prop = prop.replaceAll('ü','\\u00FC') ексепшны валятся...