2012-09-23 12 views
8

Non riesco a ottenere una traduzione di base per lavorare in Flask Babel.Flask Babel - 'translations/de/LC_MESSAGES/messages.po' è contrassegnato come fuzzy, saltando

Ecco i miei passi.

  1. ho questa in una pagina {{_("Hello")}}

  2. corro questo comando.

    pybabel extract -F babel.cfg -o messages.pot . 
    
  3. Quindi eseguo questo comando per il tedesco.

    pybabel init -i messages.pot -d translations -l de 
    
  4. Ecco il file mo per il tedesco in /app/translations/de/LC_MESSAGES/messages.po

    # German translations for PROJECT. 
    # Copyright (C) 2012 ORGANIZATION 
    # This file is distributed under the same license as the PROJECT project. 
    # FIRST AUTHOR <[email protected]>, 2012. 
    # 
    #, fuzzy 
    msgid "" 
    msgstr "" 
    "Project-Id-Version: PROJECT VERSION\n" 
    "Report-Msgid-Bugs-To: [email protected]\n" 
    "POT-Creation-Date: 2012-09-24 03:36+0800\n" 
    "PO-Revision-Date: 2012-09-24 03:37+0800\n" 
    "Last-Translator: FULL NAME <[email protected]>\n" 
    "Language-Team: de <[email protected]>\n" 
    "Plural-Forms: nplurals=2; plural=(n != 1)\n" 
    "MIME-Version: 1.0\n" 
    "Content-Type: text/plain; charset=utf-8\n" 
    "Content-Transfer-Encoding: 8bit\n" 
    "Generated-By: Babel 0.9.6\n" 
    
    #: templates/baseh5.html:129 
    msgid "Hello" 
    msgstr "Guten Tag" 
    
  5. corro questo comando.

    pybabel compile -d translations 
    

    Questo è quello che ottengo.

    catalog 'translations/de/LC_MESSAGES/messages.po' is marked as fuzzy, skipping 
    
  6. insieme questo è pallone

    app.config['BABEL_DEFAULT_LOCALE'] = 'de' 
    

Che cosa ottengo? Ottengo Hello. Perché Flask Babel non funzionava? Come mi occupo di fuzzy? Questo dovrebbe essere stato di base.

+0

Sei sicuro che non ci sono linee 'fuzzy' nel tuo file .po? A parte la linea in alto, questo è. Puoi forzare babel a compilarlo comunque con il flag '-f'. –

+0

dove posiziono quella bandiera? come appare la linea di comando? Puoi pubblicare una risposta? – Tampa

+0

Ha funzionato !!!!!!!!!! grazie – Tampa

risposta

8

È possibile forzare pybabel compile per compilare i messaggi contrassegnati come confusa con l'opzione della riga -f (o --use-fuzzy) comando:

pybabel compile -f -d translations 

messaggi 'Fuzzy' sono contrassegnati da una linea #, fuzzy sopra la linea msgid, e sono la risultato di un'unione in cui un messaggio viene considerato leggermente modificato rispetto alla versione precedente. Un messaggio contrassegnato come fuzzy dovrebbe essere guardato da un essere umano per assicurarsi che la traduzione non abbia bisogno di aggiornamento, dopo di che il traduttore umano rimuove quella bandiera.

+2

Non credo che la risposta si adatta molto bene. Costringere chiaramente la compilazione è la soluzione sbagliata - invece, una spiegazione del perché c'è un messaggio "sfocato" (vuoto) fuzzy sarebbe più utile. Ad esempio, non ho idea se dovrei contrassegnarlo come non-fuzzy o semplicemente rimuoverlo tutto insieme. – ThiefMaster

+0

@ThiefMaster: La mia risposta * già * tocca questo. Dovresti rimuovere la riga '#, fuzzy'; gli strumenti di traduzione si prendono cura di quella bandiera per te, di solito. –

3

Come indicato da pybabel: il catalogo stesso era contrassegnato come "fuzzy" (sesta riga). Se rimuovi quella linea, non hai bisogno dell'opzione 'forza'.