Fix translation pluralization format for next-intl

- Convert i18next pluralization format to next-intl ICU format
- Change from with_count_one/with_count_other to ICU plural syntax
- Update footer.remixes.label to use # for count formatting
- Update party.details.turns to use proper plural format

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Justin Edmund 2025-09-02 21:15:35 -07:00
parent 59bd37e806
commit 903ab8aeb1
3 changed files with 62 additions and 65 deletions

View file

@ -29,7 +29,7 @@ const RemixedToast = ({
return (
<Toast
altText={t('toasts.remixed', { title: partyName })}
altText={t('toasts.remixed_alt', { title: partyName })}
open={open}
duration={2400}
type="foreground"

View file

@ -14,8 +14,8 @@
"confirm_logout": "Are you sure you want to log out?",
"incompatible_weapon": "You've selected a weapon that can't be added to the Additional Weapon slots.",
"unsaved_changes": {
"party": "You will lose all changes to your party <strong>{{objectName}}</strong> if you continue.<br/><br/>Are you sure you want to continue without saving?",
"object": "You will lose all changes to <strong>{{objectName}}</strong> if you continue.<br/><br/>Are you sure you want to continue without saving?",
"party": "You will lose all changes to your party <strong>{objectName}</strong> if you continue.<br/><br/>Are you sure you want to continue without saving?",
"object": "You will lose all changes to <strong>{objectName}</strong> if you continue.<br/><br/>Are you sure you want to continue without saving?",
"buttons": {
"confirm": "Continue without saving",
"cancel": "Nevermind"
@ -25,17 +25,17 @@
"ax": {
"no_skill": "No AX Skill",
"errors": {
"value_too_low": "{{name}} must be at least {{minValue}}{{suffix}}",
"value_too_high": "{{name}} cannot be greater than {{maxValue}}{{suffix}}",
"value_not_whole": "{{name}} must be a whole number",
"value_empty": "{{name}} must have a value"
"value_too_low": "{name} must be at least {minValue}{suffix}",
"value_too_high": "{name} cannot be greater than {maxValue}{suffix}",
"value_not_whole": "{name} must be a whole number",
"value_empty": "{name} must have a value"
}
},
"awakening": {
"no_type": "No awakening",
"errors": {
"value_too_low": "Awakening level must be at least {{minValue}}",
"value_too_high": "Awakening level cannot be greater than {{maxValue}}",
"value_too_low": "Awakening level must be at least {minValue}",
"value_too_high": "Awakening level cannot be greater than {maxValue}",
"value_not_whole": "Awakening level must be a whole number",
"value_empty": "Awakening must have a level"
}
@ -77,10 +77,10 @@
},
"earring": {
"errors": {
"value_too_low": "{{name}} must be at least {{minValue}}",
"value_too_high": "{{name}} cannot be greater than {{maxValue}}",
"value_not_whole": "{{name}} must be a whole number",
"value_empty": "{{name}} must have a value"
"value_too_low": "{name} must be at least {minValue}",
"value_too_high": "{name} cannot be greater than {maxValue}",
"value_not_whole": "{name} must be a whole number",
"value_empty": "{name} must have a value"
}
},
"elements": {
@ -144,17 +144,15 @@
"empty": "This team doesn't have a description"
},
"remixes": {
"label_zero": "Remixes",
"label_one": "{{count}} Remix",
"label_other": "{{count}} Remixes",
"label": "{count, plural, =0 {Remixes} =1 {# Remix} other {# Remixes}}",
"empty": "No one has remixed this team yet"
}
},
"header": {
"anonymous": "Anonymous",
"untitled_team": "Untitled team by {{username}}",
"untitled_team": "Untitled team by {username}",
"new_team": "New team",
"byline": "{{partyName}} by {{username}}"
"byline": "{partyName} by {username}"
},
"job_skills": {
"all": "All skills",
@ -213,7 +211,7 @@
"conflict": {
"character": "Only one <strong>version of a character</strong> can be included in each party. Do you want to change your party members?",
"weapon": {
"generic": "Only one weapon from the <strong>{{series}} Series</strong> can be included in each party. Do you want to change your weapons?",
"generic": "Only one weapon from the <strong>{series} Series</strong> can be included in each party. Do you want to change your weapons?",
"opus-draconic": "Only one <strong>Dark Opus</strong> or <strong>Draconic Weapon</strong> can be included in each party. Do you want to change your weapons?"
},
"buttons": {
@ -391,7 +389,7 @@
},
"agreement": "By signing up, I agree to the <br/><2>Privacy Policy</2> and <1>Usage Guidelines</1>.",
"errors": {
"field_in_use": "This {{field}} is already in use",
"field_in_use": "This {field} is already in use",
"empty_email": "Please enter your email",
"invalid_email": "That email address is not valid",
"username_too_short": "Username must be at least 3 characters",
@ -467,8 +465,8 @@
"roadmap": "Roadmap / granblue.team",
"discover": "Discover teams / granblue.team",
"new": "Create a new team / granblue.team",
"profile": "@{{username}}'s Teams / granblue.team",
"team": "{{emoji}} {{teamName}} by {{username}} / granblue.team",
"profile": "@{username}'s Teams / granblue.team",
"team": "{emoji} {teamName} by {username} / granblue.team",
"saved": "Your saved teams / granblue.team"
},
"descriptions": {
@ -477,8 +475,8 @@
"roadmap": "Upcoming planned features for granblue.team",
"discover": "Save and discover teams to use in Granblue Fantasy and search by raid, element or recency",
"new": "Create and theorycraft teams to use in Granblue Fantasy and share with the community",
"profile": "Browse @{{username}}'s Teams and filter by raid, element or recency",
"team": "Browse this team for {{raidName}} by {{username}} and others on granblue.team"
"profile": "Browse @{username}'s Teams and filter by raid, element or recency",
"team": "Browse this team for {raidName} by {username} and others on granblue.team"
}
},
"party": {
@ -505,8 +503,7 @@
"seconds": "s"
},
"turns": {
"with_count_one": "{{count}} turn",
"with_count_other": "{{count}} turns"
"with_count": "{count, plural, =1 {# turn} other {# turns}}"
}
},
"notices": {
@ -564,11 +561,11 @@
},
"search": {
"recent": "Recently added",
"result_count": "{{record_count}} results",
"result_count": "{record_count} results",
"errors": {
"start_typing": "Start typing the name of a {{object}}",
"start_typing": "Start typing the name of a {object}",
"min_length": "Type at least 3 characters",
"no_results": "No results found for '{{query}}'",
"no_results": "No results found for '{query}'",
"no_results_generic": "No results found",
"end_results": "No more results",
"type": "Keep typing..."
@ -633,6 +630,7 @@
"toasts": {
"copied": "This party's URL was copied to your clipboard",
"remixed": "You remixed <strong>{title}</strong>",
"remixed_alt": "You remixed {title}",
"update": {
"title": "New update",
"description": {
@ -653,7 +651,7 @@
"highlight": "Highlight",
"link": "Add a link",
"youtube": "Add a Youtube video",
"heading": "Heading {{level}}",
"heading": "Heading {level}",
"bulletList": "Bullet list",
"orderedList": "Numbered list"
}
@ -673,7 +671,7 @@
"equipped": "Equipped",
"coming_soon": "Coming Soon",
"new_party": "New party",
"no_accessory": "No {{accessory}} equipped",
"no_accessory": "No {accessory} equipped",
"no_title": "Untitled",
"no_raid": "No raid",
"no_user": "Anonymous",

View file

@ -14,8 +14,8 @@
"confirm_logout": "ログアウトしますか",
"incompatible_weapon": "Additional Weaponsに装備できない武器を入れました。",
"unsaved_changes": {
"party": "<strong>「{{objectName}}」</strong>という編成の変更は保存していません。<br/><br/>変更を保存せずに続けますか?",
"object": "<strong>「{{objectName}}」</strong>の変更は保存していません。<br/><br/>変更を保存せずに続けますか?",
"party": "<strong>「{objectName}」</strong>という編成の変更は保存していません。<br/><br/>変更を保存せずに続けますか?",
"object": "<strong>「{objectName}」</strong>の変更は保存していません。<br/><br/>変更を保存せずに続けますか?",
"buttons": {
"confirm": "変更せずに続ける",
"cancel": "キャンセル"
@ -25,17 +25,17 @@
"ax": {
"no_skill": "EXスキルなし",
"errors": {
"value_too_low": "{{name}}は最低{{minValue}}{{suffix}}を入力してください",
"value_too_high": "{{name}}は最大{{maxValue}}{{suffix}}を入力してください",
"value_not_whole": "{{name}}は整数でなければなりません",
"value_empty": "{{name}}を入力してください"
"value_too_low": "{name}は最低{minValue}{suffix}を入力してください",
"value_too_high": "{name}は最大{maxValue}{suffix}を入力してください",
"value_not_whole": "{name}は整数でなければなりません",
"value_empty": "{name}を入力してください"
}
},
"awakening": {
"no_type": "覚醒タイプなし",
"errors": {
"value_too_low": "覚醒レベルは最低{{minValue}}を入力してください",
"value_too_high": "覚醒レベルは最大{{maxValue}}を入力してください",
"value_too_low": "覚醒レベルは最低{minValue}を入力してください",
"value_too_high": "覚醒レベルは最大{maxValue}を入力してください",
"value_not_whole": "覚醒レベルは整数でなければなりません",
"value_empty": "覚醒レベルを入力してください"
}
@ -77,10 +77,10 @@
},
"earring": {
"errors": {
"value_too_low": "{{name}}は最低{{minValue}}を入力してください",
"value_too_high": "{{name}}は最大{{maxValue}}を入力してください",
"value_not_whole": "{{name}}は整数でなければなりません",
"value_empty": "{{name}}を入力してください"
"value_too_low": "{name}は最低{minValue}を入力してください",
"value_too_high": "{name}は最大{maxValue}を入力してください",
"value_not_whole": "{name}は整数でなければなりません",
"value_empty": "{name}を入力してください"
}
},
"elements": {
@ -144,16 +144,15 @@
"empty": "この編成には説明がありません"
},
"remixes": {
"label_zero": "リミックス",
"label": "リミックス: {{count}}個",
"label": "{count, plural, =0 {リミックス} other {リミックス: #個}}",
"empty": "この編成はリミックスされていません"
}
},
"header": {
"anonymous": "無名",
"untitled_team": "{{username}}さんからの無題編成",
"untitled_team": "{username}さんからの無題編成",
"new_team": "新編成",
"byline": "{{username}}さんからの{{partyName}}"
"byline": "{username}さんからの{partyName}"
},
"job_skills": {
"all": "全てのアビリティ",
@ -202,7 +201,7 @@
"awakening": "覚醒"
},
"messages": {
"remove": "<strong>{{character}}</strong>を編成から削除しますか?"
"remove": "<strong>{character}</strong>を編成から削除しますか?"
},
"buttons": {
"confirm": "キャラクターを変更する",
@ -212,7 +211,7 @@
"conflict": {
"character": "<strong>同じ名前のキャラクター</strong>がパーティに編成されています。<br />以下のキャラクターを入れ替えますか?",
"weapon": {
"generic": "<strong>{{series}}</strong>の武器に装備制限があり、武器が既に装備されています。<br /><br />以下の武器を入れ替えますか?",
"generic": "<strong>{series}</strong>の武器に装備制限があり、武器が既に装備されています。<br /><br />以下の武器を入れ替えますか?",
"opus-draconic": "<strong>終末の神器シリーズ</strong>と<strong>ドラコニックシリーズ</strong>から1本しか装備できない制限があり、武器が既に装備されています。<br /><br />以下の武器を入れ替えますか?"
},
"buttons": {
@ -315,7 +314,7 @@
},
"job_skills": {
"messages": {
"remove": "<strong>{{job_skill}}</strong>を編成から削除しますか?"
"remove": "<strong>{job_skill}</strong>を編成から削除しますか?"
},
"buttons": {
"remove": "ジョブスキルを削除する"
@ -340,8 +339,8 @@
"remix_team": {
"title": "編成をリミックス",
"description": {
"creator": "既に<strong>{{name}}</strong>の作家のため, 本当にリミックスでコピーを作成しますか?",
"viewer": "編成をリミックスすると変更をするために自アカウントにコピーを作成します。<strong>{{name}}</strong>をリミックスをしますか?"
"creator": "既に<strong>{name}</strong>の作家のため, 本当にリミックスでコピーを作成しますか?",
"viewer": "編成をリミックスすると変更をするために自アカウントにコピーを作成します。<strong>{name}</strong>をリミックスをしますか?"
},
"buttons": {
"confirm": "リミックス",
@ -387,7 +386,7 @@
},
"agreement": "続行することで<1>利用規約</1>に同意し、<br/><1>プライバシーポリシー</1>を読んだものとみなされます。",
"errors": {
"field_in_use": "入力された{{field}}は既に登録済みです",
"field_in_use": "入力された{field}は既に登録済みです",
"empty_email": "メールアドレスを入力して下さい",
"invalid_email": "メールアドレスは有効ではありません",
"username_too_short": "ユーザーネームは3文字以上で入力してください",
@ -458,8 +457,8 @@
"roadmap": "ロードマップ / granblue.team",
"discover": "編成を見出す / granblue.team",
"new": "新しい編成 / granblue.team",
"profile": "@{{username}}さんの作った編成 / granblue.team",
"team": "{{emoji}} {{teamName}}、{{username}}さんから / granblue.team",
"profile": "@{username}さんの作った編成 / granblue.team",
"team": "{emoji} {teamName}、{username}さんから / granblue.team",
"saved": "保存した編成"
},
"descriptions": {
@ -468,8 +467,8 @@
"roadmap": "granblue.teamの開発予定機能",
"discover": "グランブルーファンタジーの編成をマルチ、属性、作った時間などで探したり保存したりできる",
"new": "グランブルーファンタジーの編成を作成し、騎空士とシェアできるサイトgranblue.team",
"profile": "@{{username}}の編成を調査し、マルチ、属性、または作った時間でフィルターする",
"team": "granblue.teamで{{username}}さんが作った{{raidName}}の編成を調査できる"
"profile": "@{username}の編成を調査し、マルチ、属性、または作った時間でフィルターする",
"team": "granblue.teamで{username}さんが作った{raidName}の編成を調査できる"
}
},
"party": {
@ -497,8 +496,7 @@
},
"turns": {
"with_count_one": "{{count}}ターン",
"with_count_other": "{{count}}ターン"
"with_count": "{count, plural, other {#ターン}}"
}
},
"notices": {
@ -556,11 +554,11 @@
},
"search": {
"recent": "最近追加した",
"result_count": "{{record_count}}件",
"result_count": "{record_count}件",
"errors": {
"start_typing": "{{object}}名を入力してください",
"start_typing": "{object}名を入力してください",
"min_length": "3文字以上を入力してください",
"no_results": "'{{query}}'の検索結果が見つかりませんでした",
"no_results": "'{query}'の検索結果が見つかりませんでした",
"no_results_generic": "検索結果が見つかりませんでした",
"end_results": "検索結果これ以上ありません",
"type": "もっと入力してください"
@ -624,7 +622,8 @@
},
"toasts": {
"copied": "この編成のURLはクリップボードにコピーされました",
"remixed": "{{title}}をリミックスしました",
"remixed": "<strong>{title}</strong>をリミックスしました",
"remixed_alt": "{title}をリミックスしました",
"update": {
"title": "新アプデ",
"description": {
@ -645,7 +644,7 @@
"highlight": "ハイライト",
"link": "リンクを挿入",
"youtube": "Youtube動画を埋め込む",
"heading": "見出し {{level}}",
"heading": "見出し {level}",
"bulletList": "箇条書き",
"orderedList": "番号リスト"
}
@ -665,7 +664,7 @@
"sephira_guidebooks": "セフィラ導本",
"coming_soon": "開発中",
"new_party": "新しい編成",
"no_accessory": "{{accessory}}は装備していません",
"no_accessory": "{accessory}は装備していません",
"no_title": "無題",
"no_raid": "マルチなし",
"no_user": "無名",