Jak przygotować grę do lokalizacji?


48

Wiele projektów nie myśli o lokalizacji, dopóki gra się nie zakończy. Następnie lokalizacja odbywa się jako włamanie i oczywiste jest, że została dodana później. Niektóre szczególne obszary zainteresowania:

  • Ciągi tekstowe (oczywiście)
  • Klipy audio, takie jak muzyka i / lub narracje
  • Tekst renderowany na teksturach (np. Etykieta na skrzyni)
  • Tekst renderowany w ramkach w renderowanych filmach
  • Czcionki / zestawy znaków dla różnych języków
  • Itp.

Jakie są dobre sposoby na przygotowanie się na te wyzwania na początkowych etapach rozwoju, abyś mógł to ułatwić bez ponoszenia zbyt dużych kosztów z góry?


8
Ostatnio grałem w Dawn of Discovery - Wenecja, zlokalizowaną w języku angielskim z niemieckiego. Jest to około 99% poprawne. . . i co jakiś czas jedna z postaci w niewytłumaczalny sposób mówi po niemiecku dla linii, lub jeden z raportów o stanie budynku ma umlauty, lub (raz na jakiś czas) jestem informowany, że mogę kupić Przedmiot Debugowania w lokalnym sklepie. Niezależnie od wybranej metody upewnij się, że łatwo jest wykryć nieprzetłumaczone linie - jeśli musisz przeczytać je wizualnie lub zagrać w grę i mieć nadzieję, że się pojawią, robisz to źle.
ZorbaTHut,

@ZorbaTHut Czy element debugowania jest sposobem zgłaszania błędów w tłumaczeniu, czy też programiści DoD używali DLC do łatania błędów lokalizacyjnych?
Dan Neely

Tworzenie fałszywego języka, który programiści mogą czytać i pisać, może być korzystne. Google ma język „hakerów”, a Facebook ma Pirate. To świetna zabawa dla programistów i jest to coś, co mogą przetestować samodzielnie, bez nauki nowego języka.
John McDonald,

Aby dodać do powyższych odpowiedzi, sugeruję przejść przez rundę pseudolokalizacji (zasadniczo formalna nazwa i proces „Uczyń brakujący zlokalizowany tekst oczywistym” punktem w górnej odpowiedzi). Będziesz w stanie wyeliminować potencjalne problemy z implementacją jeszcze przed rozpoczęciem tłumaczenia.
Anthony,

Odpowiedzi:


49

Nie jestem ekspertem, ale oto kilka podstawowych rzeczy:

Upewnij się, że twoje łańcuchy mogą obsłużyć więcej niż tylko ASCII

Będziesz potrzebował niektórych znaków spécîål, które nie pasują do ASCII, a twoja klasa ciągów lepiej nie zapominać o nich. UTF-8 jest powszechnym kodowaniem, ponieważ zajmuje niewiele miejsca. Cokolwiek zrobisz, przetestuj wcześnie i rozwiąż załamania.

Naprawdę dobrym pomysłem jest użycie rzeczywistej klasy strun, a nie tylko char *wszędzie, bo będziesz w świecie bólu.

Nie zapomnij swoich czcionek. Upewnij się, że wszystkie używane czcionki mają potrzebne znaki.

Wyciągnij łańcuchy z kodu

To jest najważniejsze. Upewnij się, że wszystkie ciągi tekstowe są przechowywane poza kodem w pliku danych, który można zamienić. Przygotowanie rurociągu do tego celu może być uciążliwe, ale pozwoli ci zaoszczędzić mnóstwo czasu później. Będziesz potrzebować prostego interfejsu API, aby za każdym razem, gdy potrzebujesz łańcucha w kodzie, był tak prosty, jak:

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

Nie konkatenuj ani nie buduj ciągów w kodzie

Ważne jest, aby nie przyjmować żadnych założeń dotyczących tego, w jaki sposób tekst składa się z mniejszych słów. Nawet coś tak nieszkodliwego jak:

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

stanowi problem, ponieważ inne języki mogą umieszczać znak waluty po numerze. Zamiast tego użyj ciągów formatu, które same są zlokalizowane, takie jak:

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

W ten sposób lokalizatory mogą zmieniać kolejność słów w ciągu formatu.

Zminimalizuj ilość tekstu pojawiającego się w dziełach sztuki, zwłaszcza wideo

Rozwidlanie zasobów sztuki jest obowiązkiem. Prawdopodobnie będziesz musiał to zrobić trochę dla niektórych elementów interfejsu, ale jest to kłopotliwe. Rozwidlanie FMV to ogromny ból, ponieważ teraz musisz renderować i przechowywać duplikaty swoich kopii.

Testuj dokładnie w różnych językach

W większości baz kodu zbyt łatwo jest po prostu powiedzieć printf("Hi there");lub loadTexture("someTexture");zapomnieć, że muszą przejść przez interfejs API lokalizacji. Ktoś zapomni, a skończysz z czymś, co jest poprawne w twoim podstawowym języku, ale złe w innych. Jedynym sposobem na ich znalezienie jest przetestowanie testerów w językach innych niż podstawowe.

Spraw, aby brakujący zlokalizowany tekst był oczywisty

Zazwyczaj tłumaczysz tekst na późniejszym etapie cyklu, więc przez większość czasu po prostu nie będzie danych dla niektórych języków. To dobrze, ponieważ pozwala iterować na twoich treściach bez konieczności ciągłego ponownego tłumaczenia. Minusem jest to, że łatwo przegapić rzeczy i zapomnieć o tłumaczeniu niektórych rzeczy.

Jedną tanią rzeczą, którą możesz zrobić, jest to, aby brakujący tekst pojawiał się w sposób bardzo oczywisty, taki jak „!!! POTRZEBNA TŁUMACZENIA DLA ID #blah bla !!!” w grze, gdy jej brakuje.

Zaprojektuj interfejs użytkownika w najgorszym języku

Różne języki mają zwykle dłuższe lub krótsze słowa. Interfejs użytkownika, który wygląda pięknie w języku angielskim, może zawierać tekst, który biegnie poza jego granice, jest przycinany lub niepoprawnie zawija się w dłuższym języku. Musisz wprowadzić zmiany w interfejsie użytkownika, aby dostosować je do najgorszego języka (lub rozwidlić interfejs, ale prawdopodobnie nie to chcesz zrobić).

Irytujące jest to, że angielski jest często najkrótszym językiem z tych zwykle zlokalizowanych, więc twoi projektanci prawdopodobnie nieumyślnie projektują najlepszy przypadek. Spraw, by podczas projektowania używali wyjątkowo długiego tekstu dla swoich symboli zastępczych. Załóżmy, że dowolny fragment tekstu może być o około 30% dłuższy niż w języku angielskim. Tłumacz Google może być dobry do uzyskania przybliżonego fragmentu tekstu zastępczego.

Czas na tłumaczenie

Tłumaczenie tekstu zwykle dzieje się późno, gdy zespół jest zmęczony i tak naprawdę go to nie obchodzi. Niemniej jednak dostaniesz wiele błędów, kiedy to się stanie. Słowa będą przekraczać granice, tłumacze popełniają błędy itp. Co gorsza, czas oczekiwania na powtórzenie tekstu może być długi, jeśli będziesz musiał wysłać tekst do osób za granicą i poczekać na ich zmiany. Przydziel czas na tę pracę.


4
Ach, połączone struny. Co za tyłek. Działa świetnie w języku ojczystym do szybkiego i łatwego budowania różnorodności. Ale potem wchodzisz w język o innej gramatyce i jest to kompletna porażka. Wszystkie pozostałe punkty też są dobre. „Ustawienia” w języku niemieckim to „Einstellungen”, który pochłania sporo dodatkowej przestrzeni ekranu, gdy jej potrzebujesz.
Casey Wagner

13

Oprócz innych sugestii, jedną rzeczą, którą zrobiłem w przeszłości, która bardzo pomaga w znalezieniu przetłumaczonego tekstu wykrwającego się ze składników interfejsu użytkownika, jest specjalny tryb językowy dla twojej gry, który, wyświetlając dowolny ciąg znaków, patrzy na wszystkie języki i wybiera najdłuższą wersję tego ciągu. W ten sposób, po dopasowaniu wszystkich ciągów znaków w tym trybie, wiesz, że naprawiłeś wszystkie spadki tekstu w każdym języku.


9

Prawidłowa lokalizacja gry jest cholernie trudna .

Możesz przeglądać Internet, czytać posty na blogu lub odpowiedzi StackOverflow; możesz nauczyć się tradycyjnych frameworków i18n, takich jak gettext ; czytać strony Wikipedii na temat internacjonalizacji i lokalizacji gier ; zapoznaj się z doskonałym przewodnikiem po języku Microsoft - ale lokalizowanie gier jest w rzeczywistości trudniejsze. W rzeczywistości w przypadku gier jest to prawdopodobnie trudniejsze niż w przypadku jakiejkolwiek innej aplikacji lub interfejsu internetowego. To dlatego, że gry są o wiele bardziej dynamiczne, bardziej żywe, bardziej żywe (cóż, przynajmniej dobre gry są).

Co więcej, prawdopodobnie należy podjąć następujące kroki:

Ustal granice.

Chcesz podjąć najważniejszą decyzję dotyczącą tego, które języki chcesz wcześniej obsługiwać. Im większy wybór, tym więcej założeń dotyczących zachowania się języka zostanie złamanych. Często te założenia są tak głęboko odciśnięte w naszych mózgach, że nawet nie możemy sobie wyobrazić, że mogą być one niepoprawne, jeśli ktoś ich nie wskaże. Co prowadzi nas do następnego punktu:

Znajdź ekspertów dla każdego języka, który chcesz wspierać.

Ekspert oznacza kogoś, kto ma wystarczającą umiejętność analityczną i znajomość języka, i że byłby w stanie wskazać ci, jakie założenia nie mówi w języku angielskim. Następnie musisz wymyślić strategię obejścia tych założeń.

Na przykład: w językach zachodnich uzasadniamy tekst w akapicie, wstawiając między słowami dodatkową spację. W języku arabskim tekst jest uzasadnione poprzez wstawienie znaków kashida wewnątrz słowa. Może tak to wyglądać .

Kolejny przykład: w języku rosyjskim istnieją 2 formy liczby mnogiej dla większości słów. Na przykład przetłumaczysz „1 moneta” / „3 monety” / „5 monet” jako „1 монета”, „3 монеты”, ale „5 монет”. Rzeczywista procedura wyboru właściwej liczby mnogiej wygląda następująco:

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;
}

Utwórz kontekstowy moduł tłumaczący.

Zapewne wiesz, że tłumaczenie zawsze zależy od kontekstu. I wiesz, że kontekst gry zmienia się cały czas. Co się stanie, jeśli połączymy te dwa stwierdzenia razem? Zasadniczo tłumaczenia powinny być tak dynamiczne, jak gra.

Na przykład prosta fraza „Zgadzam się” tłumaczy się na rosyjski jako „Я согласен” / „Я согласна” / „Я согласно”, w zależności od płci mówcy (mężczyzna / kobieta / transseksualista | queer | przesłuchanie). Jeśli jest to jedna z linii dialogowych, moduł językowy będzie musiał wybrać jedno z możliwych tłumaczeń w czasie wykonywania, w zależności od płci twojej postaci (zakładając, że oferujesz graczom taki wybór).

Ta sama fraza po przetłumaczeniu na japoński ponownie będzie miała różne tłumaczenia, w zależności od poziomu formalności relacji między mówcą a słuchaczem. Tak więc, jeśli wprowadzisz w swojej grze ideę reputacji, przyjaźni lub zmiennego poziomu wyższości (powiedzmy, że twoja postać może ewoluować z żółtodzioba do generała), będziesz musiał wziąć to pod uwagę przy tworzeniu tłumaczenia. (W rzeczywistości nie jest to specyficzne dla Japonii. Nawet w języku angielskim, w armii nigdy nie mówi się „proszę pana, proszę pana!” Komuś, kto ma niższą rangę.)

Masz sposób, aby przejść do kontekstu.

Twoi tłumacze powinni mieć możliwość zobaczenia kontekstu, w którym pojawia się określone wyrażenie. Czasami kontekst jest oczywisty, czasem trzeba go zobaczyć / usłyszeć / doświadczyć, aby poprawnie przetłumaczyć coś.

Nawet takie proste zdanie jak „Ta książka jest niebieska”. nie da się jednoznacznie przetłumaczyć bez spojrzenia na książkę i zobaczenia, jaki to konkretny odcień niebieskiego.

Unikaj gry słów, kalamburów i innych elementów specyficznych dla języka.

A może nie unikaj, ale przynajmniej zastanów się, co zrobić, gdy nie można przetłumaczyć gry słownej. Ponieważ prawdopodobnie nie będzie.

Przynajmniej nie powinieneś tworzyć żadnych zadań / łamigłówek / przedmiotów w grze, które polegałyby na tym, że niektóre słowa mają podwójne znaczenie lub są podobne do niektórych innych słów. Ponieważ po przetłumaczeniu złamiesz własną grę. (Na przykład w starej grze Fallout2 głównym zadaniem było znalezienie obiektu o nazwie GECK; w grze było też wiele potworów „Gekonów” (zmutowanych jaszczurek); naturalnie stworzyli wiele odniesień i zadań wokół tego podobieństwa nazw, które bardzo dobrze wykonał dobre tłumaczenia).

Rozchmurz się!

Lokalizacja gry jest trudna. Ale to jest trudne dla wszystkich. Jeśli podejmiesz wysiłek i zrobisz to poprawnie, nie zostanie to niezauważone przez krytyków gier w twoim kraju docelowym. Gra z dobrym tłumaczeniem będzie się wyróżniać i przynosić większe zyski. W końcu tekst jest tak samo ważny dla tworzenia atmosfery w grze, jak grafika (dlatego stare RPG oparte na tekście były tak wciągające).


Alternatywą dla „unikania gry słów” jest włączenie twórczego pisarza do zespołu tłumaczy języka i umożliwienie im zmiany dosłownego znaczenia. FFXIV robi to wyjątkowo dobrze w swojej angielskiej wersji, jako dobry przykład.
Patrick Hughes

3

Wil Shipley ma zdecydowanie najlepszy przewodnik na temat lokalizacji, jaki kiedykolwiek przeczytałem. Niestety jest to specyficzne dla iPhone'a, ale nadal można uzyskać powszechnie przydatne informacje. Ponadto zajmuje się lokalizacją zasobów i interfejsem użytkownika - dwoma większymi wyzwaniami związanymi z lokalizacją gier, jakie mogę sobie wyobrazić.


1

Zawsze ZAWSZE traktuj język źródłowy jako język zlokalizowany.

Jeśli więc Twoim językiem źródłowym jest EN, przechowuj wszystkie zasoby i łańcuchy EN w osobnym folderze EN i stamtąd.

Przeciągnij zasoby EN przez planowany potok lokalizacji.

Wykonując tę ​​jedną prostą rzecz, złapiesz może 80% problemów z lokalizacją i przygotujesz się na znacznie łatwiejszy proces lokalizacji.

Zlokalizowałem wiele gier i zawsze prowadzę za pomocą tego samorodka.


1

Widzę tu naprawdę świetne wskazówki!

Spróbuję sporządzić listę najczęstszych błędów, które mogą wahać się od utrudnienia lokalizacji do całkowitego zepsucia gry:

  • Myślenie o lokalizacji jako ostatnim etapie rozwoju gry
  • Nie izolowanie ciągów tekstowych od kodu źródłowego
  • Łączenie / łamanie wiersza w środku zdania.
  • Zakładając, że godziny, daty i jednostki nie wymagają lokalizacji
  • Niewystarczające materiały referencyjne dla tłumaczy / Brak odpowiedzi na pytania
  • Zakładając, że cały tekst z gry będzie w ASCII
  • Posiadanie tekstu w grafice
  • Posiadanie sztywnych pól tekstowych / interfejsu użytkownika
  • Zakładając, że wszystkie języki mają taką samą długość jak angielski
  • Korzystanie z Tłumacza Google / tłumaczenia maszynowego
  • Ignorowanie czynników kulturowych
  • Niewystarczający budżet na lokalizację

Lokalizacja powinna być zintegrowana z rozwojem tak wcześnie, jak to możliwe, i zawsze należy o tym pamiętać podczas projektowania gry.

Dzięki odpowiedniemu planowaniu i starannym badaniom rynku zaoszczędzisz sobie wielu kłopotów i wydatków na dalszych etapach.

Zdarza się, że jestem założycielem firmy zajmującej się lokalizacją gier, a kilka miesięcy temu opisaliśmy przygotowanie gry do lokalizacji na naszym blogu.

Oto infografika, która podsumowuje ten post: https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-wlocalization

Link do pełnego postu, który szczegółowo omawia te wskazówki, znajduje się na dole.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.