PlayDrop ゲームとその掲載情報をローカライズする
sdk.host.language でプレイヤーの言語を読み取り、PlayDrop の20言語のうちどれに対応するかを選び、listingLocalizations で掲載情報とそのアートを翻訳します。
PlayDrop のウェブサイトとアプリは20の言語に対応しています。ゲームは、2つの別々の場所でプレイヤーの言語に合わせられます。コードで翻訳するゲーム本体と、catalogue.json で翻訳する掲載情報です。
まずは英語ともう1言語から
英語に加えて、ユーザーの言語が英語と違う場合はその言語でもリリースしましょう。ほかの言語は、その言語のプレイヤーに届けるつもりになったら追加します。中途半端な翻訳は、よくできた英語のゲームよりも印象が悪くなるので、画面単位で丸ごと翻訳してください。
ゲームを翻訳する
sdk.host.language は、PlayDrop の20言語のうちのプレイヤーの言語です。en、fr、de、es、pt-BR、it、nl、sv、nb、fi、pl、tr、ar、th、vi、id、ja、ko、zh-Hans、zh-Hant のいずれかです。
const STRINGS = { en: { play: "Play" }, fr: { play: "Jouer" } };
let language = "en";
try { language = sdk.host.language; } catch { /* older host */ }
const t = STRINGS[language] ?? STRINGS[language.split("-")[0]] ?? STRINGS.en;sdk.host.locale は古い値で、最初の10言語に限られ、それ以外の言語では en になります。language を使ってください。とても古いホストでは、どちらも host_locale_unavailable を投げることがあります。アラビア語は右から左に書くので、ゲームプレイではなくレイアウトを左右反転させてください。また、ドイツ語とフィンランド語の長い単語でもテストしましょう。
掲載情報を翻訳する
sourceLocale に掲載情報を書いた言語を設定し、listingLocalizations に言語をキーとして、言語ごとに完全な翻訳を1つずつ追加します。
{
"sourceLocale": "en",
"displayName": "Moon Jump",
"description": "Jump between lunar platforms and reach the flag.",
"listingLocalizations": {
"fr": {
"displayName": "Saut lunaire",
"subtitle": "Des plateformes lunaires contre la montre",
"description": "Sautez de plateforme en plateforme et atteignez le drapeau.",
"controls": "Touchez ou appuyez sur Espace pour sauter.",
"listing": { "heroLandscape": "listing/locales/fr/hero-landscape.png" }
}
}
}- 翻訳ごとに専用の
displayNameが必要です。subtitle、description、inspirationPrompt、controls、makingOf、releaseNotesも翻訳できます。 - タイトルを翻訳したキービジュアルなど、翻訳したアートは、翻訳の
listingオブジェクトに入れます。フィールドはメインの掲載情報と同じです。 - PlayDrop は、各翻訳が元のテキストのどのバージョンに対応しているかを記録します。元の掲載情報を変更したときは、同じアップロードで翻訳も更新してください。
掲載情報を翻訳してもゲームは翻訳されず、ゲームを翻訳しても掲載情報は翻訳されません。ゲームが実際に対応している言語だけを掲載してください。
プレイヤーと検索
ウェブサイトは言語ごとに別のアドレスでページを配信し、各バージョンを相互にリンクしているので、検索エンジンは読み手の言語のページを表示できます。プレイヤーには PlayDrop の言語設定に合った翻訳が表示され、ない場合は元の言語が表示されます。