diff --git a/client/src/app/features/constants/state-party-labels.ts b/client/src/app/features/constants/state-party-labels.ts index 9569e45..d71f963 100644 --- a/client/src/app/features/constants/state-party-labels.ts +++ b/client/src/app/features/constants/state-party-labels.ts @@ -1,53 +1,201 @@ +// ISO 3166-1 alpha-3 country code -> Japanese country name export const statePartyLabels: Record = { + AFG: "アフガニスタン", ALB: "アルバニア", + DZA: "アルジェリア", AND: "アンドラ", + AGO: "アンゴラ", + ATG: "アンティグア・バーブーダ", + ARG: "アルゼンチン", ARM: "アルメニア", + AUS: "オーストラリア", AUT: "オーストリア", AZE: "アゼルバイジャン", + BHS: "バハマ", + BHR: "バーレーン", + BGD: "バングラデシュ", + BRB: "バルバドス", + BLR: "ベラルーシ", BEL: "ベルギー", - BGR: "ブルガリア", + BLZ: "ベリーズ", + BEN: "ベナン", + BTN: "ブータン", + BOL: "ボリビア", BIH: "ボスニア・ヘルツェゴビナ", - BLR: "ベラルーシ", - CHE: "スイス", + BWA: "ボツワナ", + BRA: "ブラジル", + BRN: "ブルネイ", + BGR: "ブルガリア", + BFA: "ブルキナファソ", + BDI: "ブルンジ", + KHM: "カンボジア", + CMR: "カメルーン", + CAN: "カナダ", + CPV: "カーボベルデ", + CAF: "中央アフリカ共和国", + TCD: "チャド", + CHL: "チリ", + CHN: "中国", + COL: "コロンビア", + COM: "コモロ", + COG: "コンゴ共和国", + COD: "コンゴ民主共和国", + COK: "クック諸島", + CRI: "コスタリカ", + CIV: "コートジボワール", + HRV: "クロアチア", + CUB: "キューバ", CYP: "キプロス", CZE: "チェコ", - DEU: "ドイツ", DNK: "デンマーク", - ESP: "スペイン", + DJI: "ジブチ", + DMA: "ドミニカ国", + DOM: "ドミニカ共和国", + ECU: "エクアドル", + EGY: "エジプト", + SLV: "エルサルバドル", + GNQ: "赤道ギニア", + ERI: "エリトリア", EST: "エストニア", + SWZ: "エスワティニ", + ETH: "エチオピア", + FJI: "フィジー", FIN: "フィンランド", FRA: "フランス", - GBR: "イギリス", + GAB: "ガボン", + GMB: "ガンビア", GEO: "ジョージア", + DEU: "ドイツ", + GHA: "ガーナ", GRC: "ギリシャ", - HRV: "クロアチア", + GRD: "グレナダ", + GTM: "グアテマラ", + GIN: "ギニア", + GNB: "ギニアビサウ", + GUY: "ガイアナ", + HTI: "ハイチ", + HND: "ホンジュラス", HUN: "ハンガリー", - IRL: "アイルランド", ISL: "アイスランド", + IND: "インド", + IDN: "インドネシア", + IRN: "イラン", + IRQ: "イラク", + IRL: "アイルランド", + ISR: "イスラエル", ITA: "イタリア", + JAM: "ジャマイカ", JPN: "日本", + JOR: "ヨルダン", KAZ: "カザフスタン", + KEN: "ケニア", + KIR: "キリバス", + KWT: "クウェート", + KGZ: "キルギス", + LAO: "ラオス", LVA: "ラトビア", + LBN: "レバノン", + LSO: "レソト", + LBR: "リベリア", + LBY: "リビア", + LIE: "リヒテンシュタイン", LTU: "リトアニア", LUX: "ルクセンブルク", - MDA: "モルドバ", - MKD: "北マケドニア", + MDG: "マダガスカル", + MWI: "マラウイ", + MYS: "マレーシア", + MDV: "モルディブ", + MLI: "マリ", MLT: "マルタ", + MHL: "マーシャル諸島", + MRT: "モーリタニア", + MUS: "モーリシャス", + MEX: "メキシコ", + FSM: "ミクロネシア連邦", + MDA: "モルドバ", + MCO: "モナコ", + MNG: "モンゴル", MNE: "モンテネグロ", + MAR: "モロッコ", + MOZ: "モザンビーク", + MMR: "ミャンマー", + NAM: "ナミビア", + NRU: "ナウル", + NPL: "ネパール", NLD: "オランダ", + NZL: "ニュージーランド", + NIC: "ニカラグア", + NER: "ニジェール", + NGA: "ナイジェリア", + NIU: "ニウエ", + PRK: "北朝鮮", + MKD: "北マケドニア", NOR: "ノルウェー", + OMN: "オマーン", + PAK: "パキスタン", + PLW: "パラオ", + PSE: "パレスチナ", + PAN: "パナマ", + PNG: "パプアニューギニア", + PRY: "パラグアイ", + PER: "ペルー", + PHL: "フィリピン", POL: "ポーランド", PRT: "ポルトガル", + QAT: "カタール", ROU: "ルーマニア", RUS: "ロシア", + RWA: "ルワンダ", + KNA: "セントクリストファー・ネイビス", + LCA: "セントルシア", + VCT: "セントビンセント・グレナディーン", + WSM: "サモア", SMR: "サンマリノ", + STP: "サントメ・プリンシペ", + SAU: "サウジアラビア", + SEN: "セネガル", SRB: "セルビア", + SYC: "セーシェル", + SLE: "シエラレオネ", + SGP: "シンガポール", SVK: "スロバキア", SVN: "スロベニア", + SLB: "ソロモン諸島", + SOM: "ソマリア", + ZAF: "南アフリカ", + KOR: "韓国", + SSD: "南スーダン", + ESP: "スペイン", + LKA: "スリランカ", + SDN: "スーダン", + SUR: "スリナム", SWE: "スウェーデン", + CHE: "スイス", + SYR: "シリア", TJK: "タジキスタン", + TZA: "タンザニア", + THA: "タイ", + TLS: "東ティモール", + TGO: "トーゴ", + TON: "トンガ", + TTO: "トリニダード・トバゴ", + TUN: "チュニジア", TUR: "トルコ", + TKM: "トルクメニスタン", + TUV: "ツバル", + UGA: "ウガンダ", UKR: "ウクライナ", + ARE: "アラブ首長国連邦", + GBR: "イギリス", + USA: "アメリカ合衆国", + URY: "ウルグアイ", + UZB: "ウズベキスタン", + VUT: "バヌアツ", VAT: "バチカン市国", + VEN: "ベネズエラ", + VNM: "ベトナム", + YEM: "イエメン", + ZMB: "ザンビア", + ZWE: "ジンバブエ", XKX: "コソボ", }; diff --git a/client/src/app/features/heritages/mappers/to-world-heritage-vm.ts b/client/src/app/features/heritages/mappers/to-world-heritage-vm.ts index 8b90863..b16ed79 100644 --- a/client/src/app/features/heritages/mappers/to-world-heritage-vm.ts +++ b/client/src/app/features/heritages/mappers/to-world-heritage-vm.ts @@ -48,8 +48,15 @@ const descriptionOf = (data: ApiWorldHeritageDto, locale: Locale): string => { return data.short_description || ""; }; -const toStatePartyLabelsJp = (codes: readonly string[]): string[] => - codes.map((code) => statePartyLabels[code]).filter((label): label is string => Boolean(label)); +const toStatePartyLabels = (codes: readonly string[], locale: Locale): string[] => { + if (locale !== "ja") { + return [...codes]; + } + + return codes + .map((code) => statePartyLabels[code]) + .filter((label): label is string => Boolean(label)); +}; const normalizeStatePartiesMeta = ( meta: ApiWorldHeritageDto["state_parties_meta"], @@ -72,12 +79,12 @@ const normalizeStatePartiesMeta = ( export function toWorldHeritageVm(data: ApiWorldHeritageDto, locale: Locale): WorldHeritageVm { const criteriaCodes = normalizeCriteria(data.criteria); const statePartyCodesRaw = data.state_party_codes ?? []; - const statePartyLabelsJp = toStatePartyLabelsJp(statePartyCodesRaw); + const statePartyLabelsLocalized = toStatePartyLabels(statePartyCodesRaw, locale); let stateParty: string | null = data.state_party; - if (!stateParty && statePartyLabelsJp.length > 0) { - stateParty = statePartyLabelsJp.join(", "); + if (!stateParty && statePartyLabelsLocalized.length > 0) { + stateParty = statePartyLabelsLocalized.join(", "); } return { @@ -102,7 +109,7 @@ export function toWorldHeritageVm(data: ApiWorldHeritageDto, locale: Locale): Wo shortDescription: data.short_description, shortDescriptionJp: data.short_description_jp, unescoSiteUrl: data.unesco_site_url, - statePartyCodes: statePartyLabelsJp, + statePartyCodes: statePartyLabelsLocalized, statePartiesMeta: normalizeStatePartiesMeta(data.state_parties_meta), primaryStatePartyCode: null,