发布与分享
本地化 PlayDrop 游戏及其商店页面
用 sdk.host.language 读取玩家的语言,选择要支持 PlayDrop 20 种语言中的哪些,并用 listingLocalizations 翻译商店页面及其图片。
PlayDrop 的网站和应用支持 20 种语言。游戏可以在两个独立的地方跟随玩家的语言:游戏本身,由你在代码中翻译;以及它的商店页面,由你在 catalogue.json 中翻译。
从英语加一种语言开始
先提供英语,如果你的用户使用其他语言,再加上这种语言。等你打算触达其他语言的玩家时,再添加更多语言。不完整的翻译比一款好的英语游戏体验更差,所以请整屏翻译。
翻译游戏
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。
js
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 是旧的值,只限于最初的十种语言,其他语言返回 en;请优先使用 language。在非常旧的宿主上,两者都可能抛出 host_locale_unavailable。阿拉伯语从右向左书写:镜像翻转布局,但不要翻转玩法;并用德语和芬兰语测试长单词。
翻译商店页面
把 sourceLocale 设为商店页面所用的语言,然后在 listingLocalizations 中为每种语言添加一份完整的翻译,以语言为键:
json
{
"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 语言相符的翻译;没有对应翻译时,则看到源语言。