[파이썬] `pygame`에서의 로컬화 및 다국어 지원

Pygame은 파이썬으로 게임을 개발하기 위한 강력한 라이브러리입니다. 하지만 게임을 국제 시장에 출시한다면, 다국어 지원과 로컬화는 매우 중요한 요소가 될 수 있습니다. 이번 블로그 포스트에서는 Pygame에서 로컬화와 다국어 지원을 어떻게 구현할 수 있는지 살펴보겠습니다.

다국어 문자열 파일 생성하기

먼저, 각 언어에 해당하는 문자열을 저장하는 파일을 생성해야 합니다. 이 파일은 각 언어별로 텍스트를 포함하고 있으며, 게임에서 사용되는 모든 문자열을 포함해야 합니다. 파일의 형식은 일반적으로 .po 또는 .mo 형식을 사용합니다.

# strings.po

msgid ""
msgstr ""
"Language: ko\n"
"Content-Type: text/plain; charset=utf-8\n"
"Plural-Forms: nplurals=1; plural=0;\n"

msgid "Welcome to the game!"
msgstr "게임에 오신 것을 환영합니다!"

msgid "Play"
msgstr "플레이"

msgid "Options"
msgstr "옵션"

...

위의 예제에서는 한국어로 번역된 문자열을 보여주고 있습니다. 게임을 다른 언어로 지원하려면, 같은 형식으로 해당 언어의 문자열을 추가하면 됩니다.

Pygame에서 다국어 문자열 사용하기

Pygame에서 다국어 문자열을 사용하려면, 지원하는 각 언어에 대한 po 또는 mo 파일을 로드한 후, 현재 언어에 해당하는 문자열을 가져올 수 있도록 설정해야 합니다.

import pygame
import gettext

def set_language(language):
    # 언어 설정
    locale = gettext.translation('strings', localedir='locales', languages=[language])
    locale.install()
    _ = locale.gettext

def main():
    pygame.init()
    screen = pygame.display.set_mode((800, 600))

    # 현재 언어 설정
    set_language("ko")

    # 다국어 문자열 사용
    welcome_text = _("Welcome to the game!")
    play_text = _("Play")
    options_text = _("Options")

    ...

    # 게임 루프
    while True:
        ...

        # 문자열 그리기
        screen.blit(font.render(welcome_text, True, (255, 255, 255)), (100, 100))
        screen.blit(font.render(play_text, True, (255, 255, 255)), (100, 200))
        screen.blit(font.render(options_text, True, (255, 255, 255)), (100, 300))

        ...

        pygame.display.flip()

if __name__ == "__main__":
    main()

위의 예제에서는 gettext 라이브러리를 사용하여 다국어 문자열을 처리하고 있습니다. set_language 함수를 호출하여 현재 언어를 설정한 후, _ 함수를 사용하여 다국어 문자열을 가져옵니다. 이렇게 가져온 문자열은 게임에서 그대로 사용할 수 있습니다.

언어 변경하기

게임에서 언어를 변경하려면, set_language 함수를 호출하여 새로운 언어를 설정하고, 문자열을 다시 가져와야 합니다.

set_language("en")
welcome_text = _("Welcome to the game!")

이와 같이 언어를 변경한 후에는 변경된 언어에 해당하는 문자열을 가져와서 사용하면 됩니다.

결론

Pygame에서 로컬화와 다국어 지원을 구현하는 방법을 알아보았습니다. 문자열 파일을 생성하고, Pygame에서 다국어 문자열을 사용하고, 언어를 변경하는 방법을 살펴보았습니다. 이러한 기능을 사용하면 전 세계 다양한 사용자들에게 게임을 제공할 수 있습니다.