ビデオゲーム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 番目の文字列は良いことを示しています。