Vraag Probleem bij het instellen van de taal


Ik ben echt aan het worstelen met dit taalprobleem.

ik ging naar System->Administration->Language Support en verhuisde Turks (Türkçe) naar de top. Toen klikte ik op "Systeembreed toepassen" en opnieuw opgestart.

Na opnieuw opstarten, echo $LANG gerapporteerd en_US.utf8, dus ik ben uitgelogd en weer terug - en nu meldt het tr_CY.utf8.

Nu is hier het probleem:

  • Ik heb een bestand 'xxx.po' in /usr/share/locale/tr_CY/LC_MESSAGES
  • Ik voer de volgende Python-code uit:

    import gettext
    
    
    gettext.bindtextdomain("xxx","/usr/share/locale")
    gettext.textdomain("xxx")
    tr = gettext.translation("xxx",
                             "/usr/share/locale",
                             ["tr_CY"],
                             fallback=True)
    
    
    print tr.gettext("sample")
    

Hoewel 'sample' moet worden vertaald, is het dat niet.

Wat doe ik verkeerd?


4
2017-11-06 21:22


oorsprong


Dat tr_CY (betekent Cypriotisch Turks) heeft niets te maken met zelfs maar een paar honderdduizend Turk die op Cyprus wonen. Het zou moeten zijn tr_TR . Misschien werkt het na deze wijziging. Zelfs als het werkt na aanpassing, tr_CY is fout, het zou moeten zijn tr_TR . - marenostrum


antwoorden:


Ik heb een bestand 'xxx.po' in / usr / share / locale / tr_CY / LC_MESSAGES

De bestanden in /usr/share/locale/<LANG>/LC_MESSAGES moeten in een binair formaat ('.mo' extensie) zijn.

Dat bereik je door te rennen msgfmt in het '.po' bestand:

msgfmt -c -v -o OUTPUT.mo LANG.po

  • -c controleert het po-bestandsformaat,
  • -v is voor gedetailleerde uitvoer,
  • -o OUTPUT.mo specificeert het uitvoerbestand, waarbij OUTPUT de naam moet zijn die je hebt gebruikt in 'bindtextdomain' en 'textdomain',
  • LANG.po het vertaalbestand.

3
2017-11-06 22:42