0

ビデオゲームhttps://github.com/mdtrooper/Obbを翻訳しようとしていますが、 gettext メソッド _("string") は非ユニコード文字列を返します。

問題を示す簡単な例を作成しました。

ファイルは utf8 エンコーディングです。

# -*- coding: utf-8 -*-

import pygame, os

import locale
import gettext

gettext.textdomain('caca')
_ = gettext.gettext

def main():
    path_i18n = os.getcwd() + '/i18n/'
    gettext.bindtextdomain('caca', path_i18n)

    pygame.init()
    screen = pygame.display.set_mode((640, 480), 0, 32)
    screen.fill(pygame.Color(255, 255, 255, 255))

    font = pygame.font.Font("Isuckatgolf.ttf", 30)

    text = font.render(_("caca"), True, pygame.Color(0, 0, 0, 255))
    screen.blit(text, (0,0))

    unstraslate_text = font.render(u"ñadu", True, pygame.Color(0, 0, 0, 255))
    screen.blit(unstraslate_text, (100, 100))

    pygame.display.update()

    exit = False

    while not exit:
        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                exit = True
            elif e.type == pygame.KEYDOWN:
                if e.key == pygame.K_ESCAPE:
                    exit = True 

    pygame.quit()

if __name__ == '__main__':

これはスペイン語の po ファイルです。

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-30 14:06+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: UTF-8\n"

#: test.py:19
msgid "caca"
msgstr "ñandu"

もちろん、フォントには Ñ または ñ の文字はありませんが、この文字を追加するために変更しました。http://depositfiles.com/files/dwwmp912mにあります。

例では、最初の文字列 (翻訳された文字列) は悪いことを示していますが、2 番目の文字列は良いことを示しています。

4

1 に答える 1

0

見つけた。

私は他のファイル (i18n.py) にコードを書きました:

# -*- coding: utf-8 -*-

import locale
import gettext
import os

path_i18n = os.getcwd() + '/i18n/'

t = gettext.translation('Obb', path_i18n)
_ = t.ugettext

しかし、問題はpythonスローエラーです:

NameError: global name '_' is not defined

次のように使用しようとすると:

from i18n import *

しかし、コードでは:

from i18n import _

正常に動作します。

于 2013-03-31T15:36:53.743 に答える