Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
168 changes: 158 additions & 10 deletions client/src/app/features/constants/state-party-labels.ts
Original file line number Diff line number Diff line change
@@ -1,53 +1,201 @@
// ISO 3166-1 alpha-3 country code -> Japanese country name
export const statePartyLabels: Record<string, string> = {
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: "コソボ",
};
19 changes: 13 additions & 6 deletions client/src/app/features/heritages/mappers/to-world-heritage-vm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
Expand All @@ -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 {
Expand All @@ -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,

Expand Down
Loading