diff --git a/lang/en.json b/lang/en.json index 41441b61..a2c3dc79 100755 --- a/lang/en.json +++ b/lang/en.json @@ -210,7 +210,10 @@ "type": { "label": "Type" } }, "hordeDamage": "Horde Damage", - "horderHp": "Horde/HP" + "horderHp": "Horde/HP", + "adversaryReactionRoll": { + "headerTitle": "Adversary Reaction Roll" + } }, "Character": { "advantageSources": { @@ -333,7 +336,8 @@ "minor": "MIN", "major": "MAJ", "severe": "SEV" - } + }, + "triggerRestContent": "This will trigger a dialog to players make their downtime moves. Are you sure?" } }, "APPLICATIONS": { @@ -467,6 +471,10 @@ "defaultOwnershipTooltip": "The default player ownership of countdowns", "hideNewCountdowns": "Hide New Countdowns" }, + "CreateItemDialog": { + "createItem": "Create Item", + "browseCompendium": "Browse Compendium" + }, "DaggerheartMenu": { "title": "GM Tools", "refreshFeatures": "Refresh Features", @@ -681,6 +689,12 @@ "noPlayers": "No players to assign ownership to", "default": "Default Ownership" }, + "PendingReactionsDialog": { + "title": "Pending Reaction Rolls Found", + "unfinishedRolls": "Some Tokens still need to roll their Reaction Roll.", + "confirmation": "Are you sure you want to continue ?", + "warning": "Undone reaction rolls will be considered as failed" + }, "ReactionRoll": { "title": "Reaction Roll: {trait}" }, @@ -735,11 +749,11 @@ }, "GroupRollSelect": { "title": "Group Roll", + "aidingCharacters": "Aiding Characters", "leader": "Leader", "leaderRoll": "Leader Roll", "openDialogForAll": "Open Dialog For All", "startGroupRoll": "Start Group Roll", - "cancelGroupRoll": "Cancel", "finishGroupRoll": "Finish Group Roll", "cancelConfirmTitle": "Cancel Group Roll", "cancelConfirmText": "Are you sure you want to cancel the Group Roll? This will close it for all other players too." @@ -764,6 +778,11 @@ "session": "Next Session", "custom": "Custom" }, + "ActionAutomationChoices": { + "never": "Never", + "showDialog": "Show Dialog Only", + "always": "Always" + }, "AdversaryTrait": { "relentless": { "name": "Relentless", @@ -1293,6 +1312,11 @@ "on": "On", "onWithToggle": "On With Toggle" }, + "SceneRangeMeasurementTypes": { + "disable": "Disable Daggerheart Range Measurement", + "default": "Default", + "custom": "Custom" + }, "SelectAction": { "selectType": "Select Action Type", "selectAction": "Action Selection" @@ -2404,6 +2428,7 @@ "multiclass": "Multiclass", "newCategory": "New Category", "newThing": "New {thing}", + "next": "Next", "none": "None", "noTarget": "No current target", "partner": "Partner", @@ -2435,6 +2460,7 @@ "scalable": "Scalable", "scars": "Scars", "situationalBonus": "Situational Bonus", + "searchPlaceholder": "Search...", "spent": "Spent", "step": "Step", "stress": "Stress", @@ -3010,6 +3036,9 @@ "resourceRoll": { "playerMessage": "{user} rerolled their {name}" }, + "saveRoll": { + "reactionRollAllTargets": "Reaction Roll All Targets" + }, "tagTeam": { "title": "Tag Team", "membersTitle": "Members" @@ -3040,7 +3069,6 @@ "title": "Daggerheart Compendium Browser", "hint": "Select a Folder in sidebar to start browsing through the compendium", "browserSettings": "Browser Settings", - "searchPlaceholder": "Search...", "columnName": "Name", "tooltipFilters": "Filters", "tooltipErase": "Erase", @@ -3076,7 +3104,7 @@ "weapons": "Weapons", "armors": "Armors", "consumables": "Consumables", - "loots": "Loots" + "loots": "Loot" } }, "Notifications": { @@ -3171,6 +3199,7 @@ "companion": "Level {level} - {partner}", "companionNoPartner": "No Partner", "duplicateToNewTier": "Duplicate to New Tier", + "createAdversary": "Create Adversary", "pickTierTitle": "Pick a new tier for this adversary" }, "daggerheartMenu": { diff --git a/module/applications/dialogs/groupRollDialog.mjs b/module/applications/dialogs/groupRollDialog.mjs index 2a7be791..a47dd0a8 100644 --- a/module/applications/dialogs/groupRollDialog.mjs +++ b/module/applications/dialogs/groupRollDialog.mjs @@ -116,7 +116,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat initializationPart.insertAdjacentHTML('afterend', '
'); initializationPart.insertAdjacentHTML( 'afterend', - `
${game.i18n.localize('Aiding Characters')}
` + `
${game.i18n.localize('DAGGERHEART.APPLICATIONS.GroupRollSelect.aidingCharacters')}
` ); const teamContainer = this.element.querySelector('.team-container'); diff --git a/module/applications/settings/appearanceSettings.mjs b/module/applications/settings/appearanceSettings.mjs index 151648e1..64e5a076 100644 --- a/module/applications/settings/appearanceSettings.mjs +++ b/module/applications/settings/appearanceSettings.mjs @@ -118,8 +118,13 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App break; case 'footer': partContext.buttons = [ - { type: 'button', action: 'reset', icon: 'fa-solid fa-arrow-rotate-left', label: 'Reset' }, - { type: 'submit', icon: 'fa-solid fa-floppy-disk', label: 'Save Changes' } + { + type: 'button', + action: 'reset', + icon: 'fa-solid fa-arrow-rotate-left', + label: game.i18n.localize('ACTIONS.Reset') + }, + { type: 'submit', icon: 'fa-solid fa-floppy-disk', label: game.i18n.localize('EDITOR.Save') } ]; break; } diff --git a/module/applications/sheets/actors/adversary.mjs b/module/applications/sheets/actors/adversary.mjs index d8a3df29..04be3efb 100644 --- a/module/applications/sheets/actors/adversary.mjs +++ b/module/applications/sheets/actors/adversary.mjs @@ -217,8 +217,8 @@ export default class AdversarySheet extends DHBaseActorSheet { static #reactionRoll(event) { const config = { event, - title: `Reaction Roll: ${this.actor.name}`, - headerTitle: 'Adversary Reaction Roll', + title: game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll'), + headerTitle: game.i18n.localize('DAGGERHEART.ACTORS.Adversary.adversaryReactionRoll.headerTitle'), roll: { type: 'trait' }, diff --git a/module/applications/sheets/actors/party.mjs b/module/applications/sheets/actors/party.mjs index d4545f63..a7eeccdf 100644 --- a/module/applications/sheets/actors/party.mjs +++ b/module/applications/sheets/actors/party.mjs @@ -288,7 +288,7 @@ export default class Party extends DHBaseActorSheet { title: game.i18n.localize(`DAGGERHEART.APPLICATIONS.Downtime.${button.dataset.type}.title`), icon: button.dataset.type === 'shortRest' ? 'fa-solid fa-utensils' : 'fa-solid fa-bed' }, - content: 'This will trigger a dialog to players make their downtime moves, are you sure?', + content: game.i18n.localize('DAGGERHEART.ACTORS.Party.triggerRestContent'), classes: ['daggerheart', 'dialog', 'dh-style'] }); diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index 64f62405..e93ce774 100644 --- a/module/applications/sheets/api/application-mixin.mjs +++ b/module/applications/sheets/api/application-mixin.mjs @@ -644,12 +644,12 @@ export default function DHApplicationMixin(Base) { buttons: [ { action: 'create', - label: 'Create Item', + label: game.i18n.localize('DAGGERHEART.APPLICATIONS.CreateItemDialog.createItem'), icon: 'fa-solid fa-plus' }, { action: 'browse', - label: 'Browse Compendium', + label: game.i18n.localize('DAGGERHEART.APPLICATIONS.CreateItemDialog.browseCompendium'), icon: 'fa-solid fa-book' } ] diff --git a/module/applications/sidebar/tabs/actorDirectory.mjs b/module/applications/sidebar/tabs/actorDirectory.mjs index 9d8f16e1..e9484553 100644 --- a/module/applications/sidebar/tabs/actorDirectory.mjs +++ b/module/applications/sidebar/tabs/actorDirectory.mjs @@ -76,7 +76,7 @@ export default class DhActorDirectory extends foundry.applications.sidebar.tabs. window: { title: 'DAGGERHEART.UI.Sidebar.actorDirectory.pickTierTitle' }, content, ok: { - label: 'Create Adversary', + label: 'DAGGERHEART.UI.Sidebar.actorDirectory.createAdversary', callback: (event, button, dialog) => Number(button.form.elements.tier.value) } }); diff --git a/module/applications/ui/fearTracker.mjs b/module/applications/ui/fearTracker.mjs index 82dda215..4e5e1132 100644 --- a/module/applications/ui/fearTracker.mjs +++ b/module/applications/ui/fearTracker.mjs @@ -22,7 +22,7 @@ export default class FearTracker extends HandlebarsApplicationMixin(ApplicationV tag: 'div', window: { frame: true, - title: 'Fear', + title: 'DAGGERHEART.GENERAL.fear', positioned: true, resizable: true, minimizable: false diff --git a/module/applications/ui/itemBrowser.mjs b/module/applications/ui/itemBrowser.mjs index 2d2e8cdc..9ca328a0 100644 --- a/module/applications/ui/itemBrowser.mjs +++ b/module/applications/ui/itemBrowser.mjs @@ -207,8 +207,23 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { label: game.i18n.localize(col.label) })); + const splitPath = folderId?.split('.') ?? []; + const { pathLabels } = splitPath.reduce( + (acc, curr) => { + acc.currentPath = !acc.currentPath ? curr : [acc.currentPath, curr].join('.'); + if (curr === 'folder') return acc; + + const label = foundry.utils.getProperty(this.config, acc.currentPath)?.label; + if (label) acc.pathLabels.push(game.i18n.localize(label)); + + return acc; + }, + { pathLabels: [], currentPath: '' } + ); + this.selectedMenu = { - path: folderId?.split('.') ?? [], + path: splitPath, + pathLabels: pathLabels, data: { ...folderData, columns: columns diff --git a/module/applications/ux/filter-menu.mjs b/module/applications/ux/filter-menu.mjs index 065d08f9..791c0e1f 100644 --- a/module/applications/ux/filter-menu.mjs +++ b/module/applications/ux/filter-menu.mjs @@ -188,7 +188,7 @@ export default class FilterMenu extends foundry.applications.ux.ContextMenu { })); const damageTypeFilter = Object.values(CONFIG.DH.GENERAL.damageTypes).map(({ id, abbreviation }) => ({ - group: 'Damage Type', //TODO localize + group: game.i18n.localize('DAGGERHEART.GENERAL.damageType'), name: game.i18n.localize(abbreviation), filter: { field: 'system.damage.type', diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 4a3d672d..58a9dff9 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -955,15 +955,15 @@ export const countdownAppMode = { export const sceneRangeMeasurementSetting = { disable: { id: 'disable', - label: 'Disable Daggerheart Range Measurement' + label: 'DAGGERHEART.CONFIG.SceneRangeMeasurementTypes.disable' }, default: { id: 'default', - label: 'Default' + label: 'DAGGERHEART.CONFIG.SceneRangeMeasurementTypes.default' }, custom: { id: 'custom', - label: 'Custom' + label: 'DAGGERHEART.CONFIG.SceneRangeMeasurementTypes.custom' } }; diff --git a/module/config/itemBrowserConfig.mjs b/module/config/itemBrowserConfig.mjs index 3b10409c..c2e87c20 100644 --- a/module/config/itemBrowserConfig.mjs +++ b/module/config/itemBrowserConfig.mjs @@ -7,7 +7,8 @@ export const typeConfig = { }, { key: 'system.type', - label: 'DAGGERHEART.GENERAL.type' + label: 'DAGGERHEART.GENERAL.type', + format: type => (type ? `DAGGERHEART.CONFIG.AdversaryType.${type}.label` : '-') } ], filters: [ @@ -318,7 +319,12 @@ export const typeConfig = { }, { key: 'system.domains', - label: 'DAGGERHEART.GENERAL.Domain.plural' + label: 'DAGGERHEART.GENERAL.Domain.plural', + format: domains => + domains + .map(x => (!x ? null : game.i18n.localize(`DAGGERHEART.GENERAL.Domain.${x}.label`))) + .filter(x => x) + .join(', ') } ], filters: [ @@ -367,7 +373,8 @@ export const typeConfig = { }, { key: 'system.spellcastingTrait', - label: 'DAGGERHEART.ITEMS.Subclass.spellcastingTrait' + label: 'DAGGERHEART.ITEMS.Subclass.spellcastingTrait', + format: trait => (trait ? `DAGGERHEART.CONFIG.Traits.${trait}.name` : '-') } ], filters: [ diff --git a/module/config/settingsConfig.mjs b/module/config/settingsConfig.mjs index de4d96be..74315a8b 100644 --- a/module/config/settingsConfig.mjs +++ b/module/config/settingsConfig.mjs @@ -46,18 +46,14 @@ export const gameSettings = { export const actionAutomationChoices = { never: { id: 'never', - label: 'Never' + label: 'DAGGERHEART.CONFIG.ActionAutomationChoices.never' }, showDialog: { id: 'showDialog', - label: 'Show Dialog only' + label: 'DAGGERHEART.CONFIG.ActionAutomationChoices.showDialog' }, - // npcOnly: { - // id: "npcOnly", - // label: "Always for non-characters" - // }, always: { id: 'always', - label: 'Always' + label: 'DAGGERHEART.CONFIG.ActionAutomationChoices.always' } }; diff --git a/module/data/fields/action/damageField.mjs b/module/data/fields/action/damageField.mjs index 7839bf5a..30a5ad7c 100644 --- a/module/data/fields/action/damageField.mjs +++ b/module/data/fields/action/damageField.mjs @@ -320,7 +320,7 @@ export class DHDamageData extends DHResourceData { required: true }), { - label: 'Type' + label: game.i18n.localize('DAGGERHEART.GENERAL.type') } ) }; diff --git a/module/data/tagTeamData.mjs b/module/data/tagTeamData.mjs index 25158606..640c2f6c 100644 --- a/module/data/tagTeamData.mjs +++ b/module/data/tagTeamData.mjs @@ -33,7 +33,7 @@ export class MemberData extends foundry.abstract.DataModel { required: true, choices: CONFIG.DH.GENERAL.tagTeamRollTypes, initial: CONFIG.DH.GENERAL.tagTeamRollTypes.trait.id, - label: 'Roll Type' + label: game.i18n.localize('DAGGERHEART.APPLICATIONS.TagTeamSelect.rollType') }), rollChoice: new fields.StringField({ nullable: true, initial: null }), rollData: new fields.JSONField({ nullable: true, initial: null }), diff --git a/module/documents/chatMessage.mjs b/module/documents/chatMessage.mjs index 307677bb..ad64336f 100644 --- a/module/documents/chatMessage.mjs +++ b/module/documents/chatMessage.mjs @@ -178,8 +178,8 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { const pendingingSaves = targets.filter(t => t.saved.success === null); if (pendingingSaves.length) { const confirm = await foundry.applications.api.DialogV2.confirm({ - window: { title: 'Pending Reaction Rolls found' }, - content: `

Some Tokens still need to roll their Reaction Roll.

Are you sure you want to continue ?

Undone reaction rolls will be considered as failed

` + window: { title: game.i18n.localize('DAGGERHEART.APPLICATIONS.PendingReactionsDialog.title') }, + content: `

${game.i18n.localize('DAGGERHEART.APPLICATIONS.PendingReactionsDialog.unfinishedRolls')}

${game.i18n.localize('DAGGERHEART.APPLICATIONS.PendingReactionsDialog.confirmation')}

${game.i18n.localize('DAGGERHEART.APPLICATIONS.PendingReactionsDialog.warning')}

` }); if (!confirm) return; } diff --git a/templates/characterCreation/footer.hbs b/templates/characterCreation/footer.hbs index 95b86cfb..51eef110 100644 --- a/templates/characterCreation/footer.hbs +++ b/templates/characterCreation/footer.hbs @@ -1,8 +1,8 @@ \ No newline at end of file diff --git a/templates/dialogs/characterReset.hbs b/templates/dialogs/characterReset.hbs index 298826e5..59f88437 100644 --- a/templates/dialogs/characterReset.hbs +++ b/templates/dialogs/characterReset.hbs @@ -28,6 +28,6 @@ - + \ No newline at end of file diff --git a/templates/dialogs/deathMove.hbs b/templates/dialogs/deathMove.hbs index 341659df..97900022 100644 --- a/templates/dialogs/deathMove.hbs +++ b/templates/dialogs/deathMove.hbs @@ -17,7 +17,7 @@ \ No newline at end of file diff --git a/templates/dialogs/groupRollDialog/footer.hbs b/templates/dialogs/groupRollDialog/footer.hbs index cb041247..e401966b 100644 --- a/templates/dialogs/groupRollDialog/footer.hbs +++ b/templates/dialogs/groupRollDialog/footer.hbs @@ -1,6 +1,6 @@
- +
\ No newline at end of file diff --git a/templates/dialogs/image-select/footer.hbs b/templates/dialogs/image-select/footer.hbs index cd7d3d1a..58a60cc4 100644 --- a/templates/dialogs/image-select/footer.hbs +++ b/templates/dialogs/image-select/footer.hbs @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/templates/dialogs/multiclassChoice.hbs b/templates/dialogs/multiclassChoice.hbs index 3c89ff1a..55365939 100644 --- a/templates/dialogs/multiclassChoice.hbs +++ b/templates/dialogs/multiclassChoice.hbs @@ -16,7 +16,7 @@ diff --git a/templates/levelup/tabs/footer.hbs b/templates/levelup/tabs/footer.hbs index 2ee7a316..d487e657 100644 --- a/templates/levelup/tabs/footer.hbs +++ b/templates/levelup/tabs/footer.hbs @@ -20,7 +20,7 @@ {{/if}} {{#unless levelupAuto}} {{/unless}} diff --git a/templates/settings/automation-settings/footer.hbs b/templates/settings/automation-settings/footer.hbs index 54939c17..7e9d1991 100644 --- a/templates/settings/automation-settings/footer.hbs +++ b/templates/settings/automation-settings/footer.hbs @@ -1,10 +1,10 @@ \ No newline at end of file diff --git a/templates/settings/downtime-config/footer.hbs b/templates/settings/downtime-config/footer.hbs index 5e5f31dd..199aea15 100644 --- a/templates/settings/downtime-config/footer.hbs +++ b/templates/settings/downtime-config/footer.hbs @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/templates/settings/homebrew-settings/footer.hbs b/templates/settings/homebrew-settings/footer.hbs index 954572de..ba1b5ada 100644 --- a/templates/settings/homebrew-settings/footer.hbs +++ b/templates/settings/homebrew-settings/footer.hbs @@ -1,10 +1,10 @@ \ No newline at end of file diff --git a/templates/settings/metagaming-settings/footer.hbs b/templates/settings/metagaming-settings/footer.hbs index 54939c17..7e9d1991 100644 --- a/templates/settings/metagaming-settings/footer.hbs +++ b/templates/settings/metagaming-settings/footer.hbs @@ -1,10 +1,10 @@ \ No newline at end of file diff --git a/templates/settings/variant-rules.hbs b/templates/settings/variant-rules.hbs index df7accb3..31316dc6 100644 --- a/templates/settings/variant-rules.hbs +++ b/templates/settings/variant-rules.hbs @@ -32,11 +32,11 @@ diff --git a/templates/sheets/actors/character/inventory.hbs b/templates/sheets/actors/character/inventory.hbs index a05fed35..711d0c9f 100644 --- a/templates/sheets/actors/character/inventory.hbs +++ b/templates/sheets/actors/character/inventory.hbs @@ -5,7 +5,7 @@
- + diff --git a/templates/sheets/actors/character/loadout.hbs b/templates/sheets/actors/character/loadout.hbs index 0319d56f..5e4c9f54 100644 --- a/templates/sheets/actors/character/loadout.hbs +++ b/templates/sheets/actors/character/loadout.hbs @@ -5,7 +5,7 @@
- +
diff --git a/templates/sheets/actors/party/inventory.hbs b/templates/sheets/actors/party/inventory.hbs index 92371b8d..186e2e99 100644 --- a/templates/sheets/actors/party/inventory.hbs +++ b/templates/sheets/actors/party/inventory.hbs @@ -5,7 +5,7 @@
- +
diff --git a/templates/sheets/actors/party/party-members.hbs b/templates/sheets/actors/party/party-members.hbs index bc0c6672..aa41aeaa 100644 --- a/templates/sheets/actors/party/party-members.hbs +++ b/templates/sheets/actors/party/party-members.hbs @@ -7,11 +7,11 @@
{{/if}} - {{#if (and hasSave currentTargets.length)}}
Reaction Roll All Targets
{{/if}} + {{#if (and hasSave currentTargets.length)}}
{{localize "DAGGERHEART.UI.Chat.saveRoll.reactionRollAllTargets"}}
{{/if}} {{#each currentTargets}}
diff --git a/templates/ui/itemBrowser/itemBrowser.hbs b/templates/ui/itemBrowser/itemBrowser.hbs index 137693fc..d4946c1f 100644 --- a/templates/ui/itemBrowser/itemBrowser.hbs +++ b/templates/ui/itemBrowser/itemBrowser.hbs @@ -1,14 +1,14 @@
{{#if menu.path.length }}
@@ -17,7 +17,7 @@
- +
diff --git a/templates/ui/tooltip/action.hbs b/templates/ui/tooltip/action.hbs index 29d44dde..959188f3 100644 --- a/templates/ui/tooltip/action.hbs +++ b/templates/ui/tooltip/action.hbs @@ -16,7 +16,7 @@ {{#if (gt item.cost.length 0)}} {{#each item.cost as | cost |}}
- {{localize "Type"}} {{#with (lookup @root.config.GENERAL.abilityCosts cost.type) as | type |}}{{localize type.label}}{{/with}} + {{localize "DAGGERHEART.GENERAL.type"}} {{#with (lookup @root.config.GENERAL.abilityCosts cost.type) as | type |}}{{localize type.label}}{{/with}}
{{localize "DAGGERHEART.GENERAL.value"}} {{cost.value}} diff --git a/templates/ui/tooltip/adversary.hbs b/templates/ui/tooltip/adversary.hbs index bba7e696..f96fe2a0 100644 --- a/templates/ui/tooltip/adversary.hbs +++ b/templates/ui/tooltip/adversary.hbs @@ -11,7 +11,7 @@ {{/with}}
- + {{#with (lookup adversaryTypes item.system.type) as | type |}}
{{localize type.label}}
{{/with}} diff --git a/templates/ui/tooltip/battlepoints.hbs b/templates/ui/tooltip/battlepoints.hbs index d793fe8c..9672698a 100644 --- a/templates/ui/tooltip/battlepoints.hbs +++ b/templates/ui/tooltip/battlepoints.hbs @@ -1,6 +1,6 @@
-

{{localize "Adversaries"}} ({{currentBP}}/{{maxBP}})

+

{{localize "DAGGERHEART.GENERAL.Adversary.plural"}} ({{currentBP}}/{{maxBP}})

{{#each categories as |category key|}} @@ -17,7 +17,7 @@
-

{{localize "Modifiers"}}

+

{{localize "DAGGERHEART.GENERAL.Modifier.plural"}}

{{#each toggles as |toggle|}}