현지화를 위해 게임을 준비하는 방법?


48

많은 프로젝트는 게임이 끝날 때까지 현지화에 대해 생각하지 않습니다. 그런 다음 현지화는 해킹으로 수행되며 나중에 추가 된 것이 분명합니다. 일부 특정 관심 분야 :

  • 텍스트 문자열 (분명히)
  • 음악 및 / 또는 내러티브와 같은 오디오 클립
  • 텍스처에 렌더링 된 텍스트 (예 : 상자의 레이블)
  • 사전 렌더링 된 동영상에서 프레임으로 렌더링 된 텍스트
  • 다른 언어의 글꼴 / 문자 세트
  • 기타.

초기 개발 단계에서 이러한 과제를 준비 할 수있는 좋은 방법은 무엇입니까?


8
나는 최근 새벽 발견 베니스-베니스에서 독일어로 영어로 현지화했습니다. 약 99 % 정확합니다. . . 가끔 캐릭터들 중 한 사람이 한 줄에 대해 독일어를 말로 표현할 수 없거나 건물 상태 보고서 중 하나에 움라우트가 있거나 현지 상점에서 디버그 아이템을 구매할 수 있다는 알림을받습니다. 어떤 방법을 사용하든 번역되지 않은 줄을 쉽게 감지 할 수 있어야합니다. 시각적으로 읽거나 게임을하고 표시되기를 원한다면 잘못하고 있습니다.
ZorbaTHut

@ZorbaTHut 디버그 항목이 번역 오류를보고하는 방법입니까, 아니면 DoD 개발자가 DLC를 사용하여 현지화 결함을 패치 했습니까?
Dan Neely

프로그래머가 읽고 쓸 수있는 가짜 언어를 만드는 것이 도움이 될 수 있습니다. Google에는 "해커"언어가 있고 Facebook에는 해적이 있습니다. 개발자에게는 재미 있고 새로운 언어를 배우지 않고도 스스로 테스트 할 수 있습니다.
존 맥도날드

위의 답변에 추가하기 위해 의사 의사 지역화 라운드를 수행하는 것이 좋습니다 (실제로 답변 이 "현지화 된 현지화 된 텍스트를 명확하게 표시하지 않음"지점의 공식 이름 및 프로세스). 번역이 시작되기 전에 잠재적 인 구현 문제를 제거 할 수 있습니다.
Anthony

답변:


49

나는 전문가가 아니지만 몇 가지 기본 사항이 있습니다.

문자열이 ASCII 이상을 처리 할 수 ​​있는지 확인하십시오

ASCII에는 맞지 않는 특수 문자가 필요하며 문자열 클래스는 바프하지 않는 것이 좋습니다. UTF-8은 공간 효율적이기 때문에 일반적인 인코딩입니다. 무엇을 하든지 일찍 테스트하고 꼬임을 다림질하십시오.

char *모든 곳에서가 아니라 실제 문자열 클래스를 사용하는 것이 정말 좋습니다 .

서체를 잊지 마십시오. 사용중인 모든 글꼴에 필요한 문자가 있는지 확인하십시오.

줄을 코드에서 꺼내십시오

이것이 가장 중요한 것입니다. 텍스트 문자열이 모두 코드 외부에 스왑 아웃 할 수있는 일부 데이터 파일에 저장되어 있는지 확인하십시오. 이를 위해 파이프 라인을 설정하는 것은 번거로운 일이지만 나중에 많은 시간을 절약 할 수 있습니다. 코드에 문자열이 필요할 때마다 다음과 같이 간단한 API를 원할 것입니다.

String text = Locale::getString("some unique identifier");

코드에서 문자열을 연결하거나 빌드하지 마십시오

작은 단어로 텍스트를 구성하는 방법에 대해 어떤 가정도하지 않는 것이 중요합니다. 무해한 것조차 :

String currency = Locale::getCurrencyString() + money.toString();
// creates $123

다른 언어가 숫자 뒤에 통화 표시를 할 수 있기 때문에 문제가됩니다. 대신 다음과 같이 현지화 된 형식 문자열을 사용하십시오.

String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());

이렇게하면 지역화 도구가 형식 문자열 내에서 단어를 재 배열 할 수 있습니다.

예술에 나타나는 텍스트, 특히 비디오의 양을 최소화

예술 자산을 포크하는 것은 번거로운 일입니다. 일부 UI 요소에 대해서는 최소한 약간의 작업이 필요할 수 있지만 번거 로움이 있습니다. FMV를 포크하면 FMV의 사본을 렌더링하고 저장해야하므로 고통을 겪습니다.

다른 언어로 철저히 테스트

대부분의 코드베이스에서 현지화 API를 거쳐야한다는 것을 말 printf("Hi there");하거나 loadTexture("someTexture");잊어 버리는 것은 너무 쉽습니다 . 누군가는 잊고 당신은 당신의 모국어에서는 정확하지만 다른 것에서는 잘못된 것으로 끝날 것입니다. 이를 찾는 유일한 방법은 테스터가 기본 언어 이외의 언어로 테스트하도록하는 것입니다.

누락 된 현지화 된 텍스트를 분명하게 표시

일반적으로주기가 늦게 텍스트를 번역하므로 대부분의 경우 일부 언어에 대한 데이터는 없습니다. 끊임없이 재번역 할 필요없이 콘텐츠를 반복 할 수 있기 때문에 좋습니다. 단점은 물건을 놓치고 번역하는 것을 잊어 버리는 것이 쉽다는 것을 의미합니다.

할 수있는 한 가지 싼 일은 누락 된 텍스트가 "!!! # blah blah !!! 게임이 없을 때

최악의 언어를 중심으로 UI 디자인

다른 언어는 단어가 길거나 짧은 경향이 있습니다. 영어로 아름답게 보이는 UI에는 경계를 넘어 텍스트가 잘 리거나 더 긴 언어로 잘못 줄 바꿈 될 수 있습니다. 최악의 언어를 수용하기 위해 UI를 변경해야합니다 (또는 UI를 포크하지만 원하는 것은 아닐 것입니다).

짜증나게도, 영어는 일반적으로 현지화 된 언어 중 가장 짧은 언어이므로 설계자가 아마도 최상의 경우를 위해 실수로 디자인했을 것입니다. 디자인 할 때 자리 표시 자에 긴 텍스트를 사용하십시오. 주어진 텍스트가 영어보다 약 30 % 더 길 수 있다고 가정하십시오. Google 번역은 자리 표시 자에 대한 대략적인 텍스트를 얻는 데 유용 할 수 있습니다.

번역을위한 예산 시간

텍스트 번역은 일반적으로 팀이 피곤하고 실제로 신경 쓰지 않을 때 늦게 발생합니다. 그럼에도 불구하고 많은 버그가 발생합니다. 단어는 경계를 넘어서고 번역가는 실수를 할 것입니다. 설상가상으로, 텍스트를 해외 사람들에게 보내고 변경 사항을 기다려야하는 경우 텍스트를 반복하는 데 시간이 오래 걸릴 수 있습니다. 이 작업에 시간을 할당하십시오.


4
아, 연결된 줄. 엉덩이가 얼마나 아파요. 다양성을 빠르고 쉽게 구축 할 수 있도록 모국어에서 잘 작동합니다. 그러나 다른 문법으로 언어를 배우면 완전히 실패합니다. 다른 모든 점들도 좋은 점입니다. 독일어의 '설정'은 'Einstellungen'으로, 필요할 때 화면 공간을 추가로 차지합니다.
케이시 바그너

13

다른 제안 외에도 UI 구성 요소에서 번역 된 텍스트 블리딩을 찾는 데 도움이되는 과거에 한 가지 일은 문자열을 표시 할 때 모든 언어를보고 게임에 대한 특수 언어 모드를 갖는 것입니다. 해당 문자열의 가장 긴 버전을 선택합니다. 이렇게하면 모든 문자열을 해당 모드에 맞추면 모든 언어에서 모든 텍스트 블리드가 수정되었음을 알 수 있습니다.


9

게임을 올바르게 현지화하는 것은 어렵습니다 .

인터넷을 탐색하거나 블로그 게시물을 읽거나 StackOverflow 답변을 읽을 수 있습니다. gettext 와 같은 전통적인 i18n 프레임 워크를 배울 수 있습니다 . 국제화게임 현지화 에 관한 Wikipedia 페이지를 읽으십시오 . 훌륭한 Microsoft 언어 가이드를 참조하십시오. 그러나 게임 현지화는 실제로 그보다 어렵습니다. 실제로 게임의 경우 다른 응용 프로그램이나 웹 인터페이스보다 어려울 수 있습니다. 이는 게임이 훨씬 더 역동적이고 활기차고 생생하기 때문입니다 (적어도 좋은 게임입니다).

요컨대 다음 단계를 수행해야 할 수도 있습니다.

경계를 설정하십시오.

어떤 언어를 일찍 지원하고 싶은지 결정하는 것이 중요합니다. 선택의 폭이 넓을수록 언어의 작동 방식에 대한 더 많은 가정이 깨질 것입니다. 종종 이러한 가정은 우리의 두뇌에 깊이 새겨 져 있기 때문에 누군가가 지적하지 않으면 그것이 잘못되었다고 상상조차 할 수 없습니다. 다음 단계로 넘어갑니다.

지원하려는 각 언어의 전문가를 찾으십시오.

전문가는 언어에 대한 충분한 분석 기술과 지식을 가진 사람을 말하며, 자신의 언어로되어 있지 않은 영어 사용자의 가정을 지적 할 수 있습니다. 그런 다음 이러한 가정을 해결하는 방법에 대한 전략을 세워야합니다.

예를 들어 서구 언어에서는 단어 사이에 여분의 공백을 삽입하여 단락의 텍스트를 정당화합니다. 아랍어로 텍스트는 단어 안에 카시다 문자를 삽입하여 정당화됩니다 . 다음과 같이 보일 수 있습니다 .

또 다른 예 : 러시아어에는 대부분의 단어에 대해 2 개의 복수형이 있습니다. 따라서 예를 들어 "1 코인"/ "3 코인"/ "5 코인"을 "1 монета", "3 монеты", "5 монет"로 번역합니다. 올바른 복수형을 결정하는 실제 절차는 다음과 같습니다.

function LocalRU::GetPlural(n, form0, form1, form2) {
    return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 : 
           (n%10) == 1? form1 : 
           (n%10) <= 4? form2 : form0;
}

상황 인식 번역 모듈을 만듭니다.

번역은 항상 상황에 따라 다르다는 것을 알고있을 것입니다. 그리고 당신은 게임의 맥락이 항상 변한다는 것을 알고 있습니다. 이 두 진술을 종합하면 어떻게됩니까? 일반적으로 번역은 게임처럼 역동적이어야합니다.

예를 들어, "동의합니다"라는 간단한 문구는 화자의 성별에 따라 "Я согласен"/ "Я согласна"/ "Я согласно"중 하나로 러시아어로 번역됩니다 (남성 / 여성 / 트랜스젠더). 대화 상자 중 하나 인 경우 언어 모듈은 캐릭터의 성별에 따라 런타임에 가능한 번역 중 하나를 선택해야합니다 (플레이어에게 그러한 선택을 제공한다고 가정).

일본어로 번역 할 때 동일한 문구는 스피커와 청취자 간의 관계의 형식 수준에 따라 다시 다른 번역을 갖습니다. 따라서 게임에서 평판이나 우정에 대한 아이디어 또는 다양한 수준의 우월성을 소개하는 경우 (예 : 캐릭터가 신인에서 일반으로 진화 할 수 있음) 번역을 작성할 때이 점을 고려해야합니다. (실제로, 이것은 일본어에 국한되지 않습니다. 영어로도 군대에서 당신은 아래에있는 누군가에게 "예, 선생님!"이라고 말하지 않습니다.)

상황에 뛰어들 수있는 방법을 찾으십시오.

번역가는 특정 문구가 나타나는 문맥을 볼 수 있어야합니다. 때로는 상황이 분명하고 때로는 무언가를 올바르게 번역하기 위해 직접보고 듣고 경험해야합니다.

"이 책은 파란색입니다."와 같은 간단한 문장조차도. 명확하게 나없이 변환 할 수없는 찾고 책에서 그리고 그것이 블루 특정되는 그늘보고.

단어 놀이, 말장난 및 기타 언어 별 요소를 피하십시오.

또는 피하지 말고 적어도 단어 놀이를 번역 할 수 없을 때해야 할 일에 대한 전략을 염두에 두십시오. 아마 그렇지 않을 것입니다.

최소한 이중 의미가 있거나 다른 단어와 비슷한 특정 단어에 의존하는 퀘스트 / 퍼즐 / 게임 개체를 만들면 안됩니다. 일단 번역하면 자신의 게임을 깨뜨릴 수 있습니다. (예를 들어, 오래된 게임 Fallout2에서 주요 퀘스트는 GECK라는 오브젝트를 찾는 것이 었습니다. 또한 게임 주위에 수많은 "Gecko"몬스터 (돌연변이 도마뱀)도있었습니다. 좋은 번역을 매우 어렵게 만들었습니다).

힘내!

게임을 현지화하는 것은 어렵습니다. 그러나 모두에게 어려움이 있습니다. 노력하고 올바르게 수행하면 대상 국가의 게임 비평가에게 눈에 띄지 않을 것입니다. 번역이 잘되는 게임이 눈에 띄고 수익이 높아집니다. 결국, 텍스트는 그래픽처럼 게임에서 분위기를 만드는 데 중요합니다 (이것은 오래된 텍스트 기반 RPG가 몰입감이있는 이유입니다).


"단어 놀이를 피하십시오"의 대안은 언어 번역 팀에 창조적 인 작가를 포함시켜 문자 그대로의 의미를 수정할 수있게하는 것입니다. 좋은 예로 FFXIV는 영어 버전에서이 작업을 훌륭하게 수행합니다.
Patrick Hughes

3

Wil Shipley 는 내가 읽은 현지화에 대한 최고의 가이드를 제공합니다. 불행히도 iPhone에만 해당되지만 여전히 유용한 정보를 얻을 수 있습니다. 또한 그는 자산 및 UI의 현지화에 대해 설명합니다. 게임 현지화에서 가장 큰 두 가지 과제는 상상할 수 있습니다.


1

항상, 항상 지역화 된 언어로 소스 언어를 취급합니다.

따라서 소스 언어가 EN 인 경우 모든 EN 자산 및 문자열을 별도의 EN 폴더에 보관하고 거기서 가져옵니다.

원하는 현지화 파이프 라인을 통해 EN 자산을 가져옵니다.

이 간단한 작업을 수행하면 현지화 문제의 80 %를 파악하고 훨씬 쉬운 현지화 프로세스를 설정할 수 있습니다 .

나는 많은 게임을 현지화 했으며 항상이 너겟으로 이끌었습니다.


1

여기 정말 유용한 팁이 있습니다!

현지화를 어렵게 만드는 것부터 게임을 완전히 망칠 수 있는 가장 일반적인 실수 의 목록을 만들어 보겠습니다 .

  • 게임 개발의 마지막 단계로 현지화를 생각
  • 소스 코드에서 텍스트 문자열을 분리하지 않음
  • 문장 중간에 연결 / 줄 바꿈.
  • 시간, 날짜 및 단위를 현지화 할 필요가 없다고 가정
  • 번역가에게 충분한 참고 자료를 제공하지 않거나 질문에 대답하지 않음
  • 게임의 모든 텍스트가 ASCII로되어 있다고 가정
  • 영상에 텍스트를 갖는 것
  • 엄격한 텍스트 / UI 상자
  • 모든 언어의 길이가 영어와 같다고 가정
  • Google 번역 / 기계 번역 사용
  • 문화적 요소 무시
  • 현지화를위한 충분한 예산을 할당하지 않음

현지화는 가능한 빨리 개발에 통합해야하며 게임을 디자인 할 때 항상 명심해야합니다.

올바른 계획과 신중한 시장 조사를 통해 많은 문제와 비용을 절감 할 수 있습니다.

저는 게임 현지화 회사 의 창립자가 되었으며 몇 달 전에 블로그에서 현지화를위한 게임 준비를 다뤘습니다.

다음은 해당 게시물을 요약 한 인포 그래픽입니다. https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

자세한 내용을 다루는 전체 게시물 링크는 하단에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.