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ę.