
PokeAPI 多语言数据快速上手5 分钟搞定宝可梦国际化【免费下载链接】pokeapiThe Pokémon API项目地址: https://gitcode.com/GitHub_Trending/po/pokeapi如果你的 App 要给东京和布拉格的用户展示宝可梦描述翻译怎么办PokeAPI 把 14 种语言的 Pokémon 数据做进了数据层一次请求就能取回名称和描述的多语言版本带你 5 分钟拿到它。谁需要多语言数据三个典型 Pokémon 本地化场景给海外用户展示本地化描述游戏里的官方描述flavor text随游戏版本变化的图鉴文案每种游戏语言各有一份只展示英文会让海外用户觉得出戏。PokeAPI 的描述数据按语言 × 游戏版本两把钥匙存储pokemon_species_flavor_text.csv 里每行就是一只宝可梦在某个语言、某套版本里的描述你按语言过滤即可。多语言 App 按语言查询宝可梦名称你的 App 切到日语宝可梦就该显示フシギダネ而不是Bulbasaur。名称翻译集中在 pokemon_species_names.csv一行一个宝可梦 × 语言的名称对顺带给出该语言下的分类词如种子宝可梦做多语言名称栏直接用。按地区拉取捷克语特性描述捷克语在官方数据里被标记为非官方语言但特性名和效果文案照样有捷克语行。做按地区拉取功能前先确认目标语言在数据里的 id 和覆盖范围再决定要不要准备英文回退。多语言数据从哪来定义、翻译与被调用的链路翻译数据分三层顺着往下看。第一层定义。languages.csv 是语言登记表每行登记一种语言的内部 id、ISO 639 语言代码和地区代码id,iso639,iso3166,identifier,official,order 9,en,us,en,1,7 10,cs,cz,cs,0,12 12,zh,cn,zh-hans,1,6第二层翻译。各名称/描述表都带 local_language_id 列指回这张登记表language_names.csv 存的是每种语言在别的语言里叫什么。宝可梦名称表实际长这样pokemon_species_id,local_language_id,name,genus 1,1,フシギダネ,たねポケモン 1,9,Bulbasaur,Seed Pokémon 1,12,妙蛙种子,种子宝可梦第三层被调用。这些 CSV 入库后由 pokemon_v2/urls.py 注册的 REST标准 HTTP 接口端点对外暴露/api/v2/language/ 返回语言列表/api/v2/pokemon-species/{id}/ 返回的 flavor_text_entries 就是按语言分组好的描述数组。动手一次真实的多语言 API 调用1. 拉语言登记表。先确认 PokeAPI 支持哪些语言因为后面所有过滤都依赖这里的 identifiercurl -s https://pokeapi.co/api/v2/language/ | python3 -m json.tool | head -202. 取一只宝可梦的全语言描述。这一步调 species 端点而不是 pokemon 端点因为描述挂在 species 下curl -s https://pokeapi.co/api/v2/pokemon-species/1/ | python3 -c import json,sys; djson.load(sys.stdin); [print(e[language][identifier], e[flavor_text][:30]) for e in d[flavor_text_entries]]3. 在你的应用里写语言回退。不是每种语言、每个版本都有描述比如捷克语只覆盖部分版本所以选语言时要留后路def pick(entries, wanted, fallbacken): for e in entries: if e[language][identifier] wanted: return e[flavor_text] return next(e[flavor_text] for e in entries if e[language][identifier] fallback)这个函数就是语言回退机制的全部优先用户语言缺了就回落英文。进阶与避坑GraphQL 查询、缓存与语言回退机制PokeAPI 还提供 GraphQL一种比 REST 更灵活的查询语言返回字段由你自己挑接口。按名字反查宝可梦时它比 REST 顺手仓库里现成例子 searchForPokemonInGerman.gql用正则 Ento.* 匹配德语名称能查到可达鸭和哥达鸭。⚠️为什么同一种语言会有多个 id登记表里日语有 ja-hrkt假名、ja-roma罗马字、ja 三条西班牙语有 es 和 es-419拉美两条。做回退时先精确匹配 identifier别按 iso639 前缀猜。⚠️为什么缓存的描述会串版本描述数据是语言 × 版本两个维度同一语言在不同游戏里文案不同。缓存键必须同时包含这两个维度。⚠️翻译数据能缓存多久名称和描述几乎不变按资源 id, 语言 id, 版本做长缓存没问题但要记得给缓存设过期等新游戏数据合入时能自然失效。下一步 一句话总结PokeAPI 把 14 种语言的 Pokémon 数据做成了按 id 可查的结构你的国际化i18n成本只剩选对语言 做好回退。想改查询去翻 graphql/v1beta/examples/ 里的 .gql 示例想自己加一门语言看 Resources/scripts/data/new_language/ 里的脚本说明。【免费下载链接】pokeapiThe Pokémon API项目地址: https://gitcode.com/GitHub_Trending/po/pokeapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考