+6
-6
src/svelte/sheet.svelte
+6
-6
src/svelte/sheet.svelte
···
2
2
import type { KingdomActor } from "../global";
3
3
import TabButton from "./tab-button.svelte";
4
4
import Tab from "./tab.svelte";
5
-
import { iter, kmLocalize } from "../utils";
5
+
import { iter, enrichAndLocalize } from "../utils";
6
6
import { socket } from "../socket";
7
7
8
8
let { actor, tabs } : {
···
47
47
<section class="container">
48
48
<div class="km-flex-row km-flex">
49
49
<div class="km-flex-1 km-flex-row">
50
-
<div class="km-label">{kmLocalize("sheet", "name")}</div>
50
+
<div class="km-label">{await enrichAndLocalize("sheet", "name")}</div>
51
51
<input type="text" bind:value={actor.flags["kingdom-homebrew"].name} onblur={updateKingdomName} placeholder="Name" />
52
52
</div>
53
53
<div class="km-flex-1 km-flex-row">
54
-
<div class="km-label" title={kmLocalize("sheet", "krpFull")}>{kmLocalize("sheet", "krp")}</div>
54
+
<div class="km-label" title={await enrichAndLocalize("sheet", "krpFull")}>{await enrichAndLocalize("sheet", "krp")}</div>
55
55
<select bind:value={actor.flags["kingdom-homebrew"].krp.current} onblur={krpCurrent}>
56
56
{#each iter(0, 4, 1) as i}
57
57
<option value={i}>{i}</option>
···
59
59
</select>
60
60
</div>
61
61
<div class="km-flex-1 km-flex-row">
62
-
<div class="km-label">{kmLocalize("sheet", "next")}</div>
62
+
<div class="km-label">{await enrichAndLocalize("sheet", "next")}</div>
63
63
<select bind:value={actor.flags["kingdom-homebrew"].krp.next} onblur={krpNext}>
64
64
{#each iter(0, 4, 1) as i}
65
65
<option value={i}>{i}</option>
···
67
67
</select>
68
68
</div>
69
69
<div class="km-flex-1 km-flex-row">
70
-
<div class="km-label">{kmLocalize("sheet", "level")}</div>
70
+
<div class="km-label">{await enrichAndLocalize("sheet", "level")}</div>
71
71
<select bind:value={actor.flags["kingdom-homebrew"].level} onchange={updateLevel}>
72
72
{#each iter(0, 20, 1) as i}
73
73
<option value={i + 1}>{i + 1}</option>
···
75
75
</select>
76
76
</div>
77
77
<div class="km-flex-1 km-flex-row">
78
-
<div class="km-label">{kmLocalize("sheet", "xp")}</div>
78
+
<div class="km-label">{await enrichAndLocalize("sheet", "xp")}</div>
79
79
<input type="text" bind:value={actor.flags["kingdom-homebrew"].xp} onblur={updateXP} placeholder="0" />
80
80
</div>
81
81
</div>
+5
-5
src/svelte/tabs/kingdom.svelte
+5
-5
src/svelte/tabs/kingdom.svelte
···
1
1
<script lang="ts">
2
2
import type { KingdomActor } from "../../global";
3
-
import { iter, kmLocalize } from "../../utils";
3
+
import { iter, enrichAndLocalize } from "../../utils";
4
4
import KingdomLevel from "./kingdom-level.svelte";
5
5
6
6
let { actor }: { actor: KingdomActor } = $props();
···
15
15
16
16
<div class="kingdom-tab-left">
17
17
<div class="kingdom-ability-outer">
18
-
<div class="kingdom-ability-label">{kmLocalize("attribute", "loyalty")}</div>
18
+
<div class="kingdom-ability-label">{await enrichAndLocalize("attribute", "loyalty")}</div>
19
19
<span class="kingdom-ability">{addOpp(actor.flags["kingdom-homebrew"].attributes.loyalty.mod)}</span>
20
20
</div>
21
21
<div class="kingdom-ability-outer">
22
-
<div class="kingdom-ability-label">{kmLocalize("attribute", "culture")}</div>
22
+
<div class="kingdom-ability-label">{await enrichAndLocalize("attribute", "culture")}</div>
23
23
<span class="kingdom-ability">{addOpp(actor.flags["kingdom-homebrew"].attributes.culture.mod)}</span>
24
24
</div>
25
25
<div class="kingdom-ability-outer">
26
-
<div class="kingdom-ability-label">{kmLocalize("attribute", "economy")}</div>
26
+
<div class="kingdom-ability-label">{await enrichAndLocalize("attribute", "economy")}</div>
27
27
<span class="kingdom-ability">{addOpp(actor.flags["kingdom-homebrew"].attributes.economy.mod)}</span>
28
28
</div>
29
29
<div class="kingdom-ability-outer">
30
-
<div class="kingdom-ability-label">{kmLocalize("attribute", "stability")}</div>
30
+
<div class="kingdom-ability-label">{await enrichAndLocalize("attribute", "stability")}</div>
31
31
<span class="kingdom-ability">{addOpp(actor.flags["kingdom-homebrew"].attributes.stability.mod)}</span>
32
32
</div>
33
33
</div>
+34
-34
src/svelte/tabs/levels/level-1.svelte
+34
-34
src/svelte/tabs/levels/level-1.svelte
···
1
1
<script lang="ts">
2
2
import type { KingdomActor } from "../../../global";
3
-
import { kmLocalize, } from "../../../utils";
3
+
import { enrichAndLocalize } from "../../../utils";
4
4
import { data } from "../../../data";
5
5
import type * as Data from "../../../data";
6
6
import { socket } from "../../../socket";
···
134
134
}
135
135
</script>
136
136
137
-
<h2>{kmLocalize("sheet", "level-1", "header")}</h2>
138
-
<h3>{kmLocalize("sheet", "level-1", "charter", "choose")}</h3>
139
-
<p>{kmLocalize("sheet", "level-1", "charter", "explanation")}</p>
137
+
<h2>{await enrichAndLocalize("sheet", "level-1", "header")}</h2>
138
+
<h3>{await enrichAndLocalize("sheet", "level-1", "charter", "choose")}</h3>
139
+
<p>{await enrichAndLocalize("sheet", "level-1", "charter", "explanation")}</p>
140
140
<select bind:value={actor.flags["kingdom-homebrew"].charter} onchange={parseCharter} id="kmhb-charter">
141
141
{#each data.charters as charter}
142
-
<option value={charter.id}>{kmLocalize("charter", charter.id, "title")}</option>
142
+
<option value={charter.id}>{await enrichAndLocalize("charter", charter.id, "title")}</option>
143
143
{/each}
144
144
</select>
145
145
<div class="km-flex">
146
146
<div class="km-flex-row" style="width:100%;">
147
-
<span class="km-flex-1">{kmLocalize("sheet", "level-1", "freeBoostChoose")}</span>
147
+
<span class="km-flex-1">{await enrichAndLocalize("sheet", "level-1", "freeBoostChoose")}</span>
148
148
<div class="km-flex-1">
149
149
<input type="radio" name="kmhb-charter-free" onchange={setFreeCharterBoost} id="kmhb-charter-free-loyalty" disabled={getBoostDisabled("charter", "loyalty")} checked={isFreeBoost("charter", "loyalty")} />
150
-
<label for="kmhb-charter-free-loyalty">{kmLocalize("attribute", "loyalty")}</label>
150
+
<label for="kmhb-charter-free-loyalty">{await enrichAndLocalize("attribute", "loyalty")}</label>
151
151
</div>
152
152
<div class="km-flex-1">
153
153
<input type="radio" name="kmhb-charter-free" onchange={setFreeCharterBoost} id="kmhb-charter-free-stability" disabled={getBoostDisabled("charter", "stability")} checked={isFreeBoost("charter", "stability")} />
154
-
<label for="kmhb-charter-free-stability">{kmLocalize("attribute", "stability")}</label>
154
+
<label for="kmhb-charter-free-stability">{await enrichAndLocalize("attribute", "stability")}</label>
155
155
</div>
156
156
<div class="km-flex-1">
157
157
<input type="radio" name="kmhb-charter-free" onchange={setFreeCharterBoost} id="kmhb-charter-free-economy" disabled={getBoostDisabled("charter", "economy")} checked={isFreeBoost("charter", "economy")} />
158
-
<label for="kmhb-charter-free-economy">{kmLocalize("attribute", "economy")}</label>
158
+
<label for="kmhb-charter-free-economy">{await enrichAndLocalize("attribute", "economy")}</label>
159
159
</div>
160
160
<div class="km-flex-1">
161
161
<input type="radio" name="kmhb-charter-free" onchange={setFreeCharterBoost} id="kmhb-charter-free-culture" disabled={getBoostDisabled("charter", "culture")} checked={isFreeBoost("charter", "culture")} />
162
-
<label for="kmhb-charter-free-culture">{kmLocalize("attribute", "culture")}</label>
162
+
<label for="kmhb-charter-free-culture">{await enrichAndLocalize("attribute", "culture")}</label>
163
163
</div>
164
164
</div>
165
165
</div>
166
-
<p>{actor.getFlag("kingdom-homebrew", "charter") == "" ? "" : kmLocalize("charter", actor.getFlag("kingdom-homebrew", "charter"), "description")}</p>
167
-
<h3>{kmLocalize("sheet", "level-1", "heartland", "choose")}</h3>
168
-
<p>{kmLocalize("sheet", "level-1", "heartland", "explanation")}</p>
166
+
<p>{@html actor.getFlag("kingdom-homebrew", "charter") == "" ? "" : await enrichAndLocalize("charter", actor.getFlag("kingdom-homebrew", "charter"), "description")}</p>
167
+
<h3>{await enrichAndLocalize("sheet", "level-1", "heartland", "choose")}</h3>
168
+
<p>{await enrichAndLocalize("sheet", "level-1", "heartland", "explanation")}</p>
169
169
<select bind:value={actor.flags["kingdom-homebrew"].heartland} onchange={parseHeartland} id="kmhb-heartland">
170
170
{#each data.heartlands as heartland}
171
-
<option value={heartland.id}>{kmLocalize("heartland", heartland.id, "title")}</option>
171
+
<option value={heartland.id}>{await enrichAndLocalize("heartland", heartland.id, "title")}</option>
172
172
{/each}
173
173
</select>
174
-
<p>{actor.getFlag("kingdom-homebrew", "heartland") == "" ? "" : kmLocalize("heartland", actor.getFlag("kingdom-homebrew", "heartland"), "description")}</p>
175
-
<h3>{kmLocalize("sheet", "level-1", "government", "choose")}</h3>
176
-
<p>{kmLocalize("sheet", "level-1", "government", "explanation")}</p>
174
+
<p>{@html actor.getFlag("kingdom-homebrew", "heartland") == "" ? "" : await enrichAndLocalize("heartland", actor.getFlag("kingdom-homebrew", "heartland"), "description")}</p>
175
+
<h3>{await enrichAndLocalize("sheet", "level-1", "government", "choose")}</h3>
176
+
<p>{await enrichAndLocalize("sheet", "level-1", "government", "explanation")}</p>
177
177
<select bind:value={actor.flags["kingdom-homebrew"].government} onchange={parseGovernment} id="kmhb-government">
178
178
{#each data.governments as government}
179
-
<option value={government.id}>{kmLocalize("government", government.id, "title")}</option>
179
+
<option value={government.id}>{await enrichAndLocalize("government", government.id, "title")}</option>
180
180
{/each}
181
181
</select>
182
182
<div class="km-flex">
183
183
<div class="km-flex-row" style="width:100%;">
184
-
<span class="km-flex-1">{kmLocalize("sheet", "level-1", "freeBoostChoose")}</span>
184
+
<span class="km-flex-1">{await enrichAndLocalize("sheet", "level-1", "freeBoostChoose")}</span>
185
185
<div class="km-flex-1">
186
186
<input type="radio" name="kmhb-government-free" onchange={setFreeGovernmentBoost} id="kmhb-government-free-loyalty" disabled={getBoostDisabled("government", "loyalty")} checked={isFreeBoost("government", "loyalty")} />
187
-
<label for="kmhb-government-free-loyalty">{kmLocalize("attribute", "loyalty")}</label>
187
+
<label for="kmhb-government-free-loyalty">{await enrichAndLocalize("attribute", "loyalty")}</label>
188
188
</div>
189
189
<div class="km-flex-1">
190
190
<input type="radio" name="kmhb-government-free" onchange={setFreeGovernmentBoost} id="kmhb-government-free-stability" disabled={getBoostDisabled("government", "stability")} checked={isFreeBoost("government", "stability")} />
191
-
<label for="kmhb-government-free-stability">{kmLocalize("attribute", "stability")}</label>
191
+
<label for="kmhb-government-free-stability">{await enrichAndLocalize("attribute", "stability")}</label>
192
192
</div>
193
193
<div class="km-flex-1">
194
194
<input type="radio" name="kmhb-government-free" onchange={setFreeGovernmentBoost} id="kmhb-government-free-economy" disabled={getBoostDisabled("government", "economy")} checked={isFreeBoost("government", "economy")} />
195
-
<label for="kmhb-government-free-economy">{kmLocalize("attribute", "economy")}</label>
195
+
<label for="kmhb-government-free-economy">{await enrichAndLocalize("attribute", "economy")}</label>
196
196
</div>
197
197
<div class="km-flex-1">
198
198
<input type="radio" name="kmhb-government-free" onchange={setFreeGovernmentBoost} id="kmhb-government-free-culture" disabled={getBoostDisabled("government", "culture")} checked={isFreeBoost("government", "culture")} />
199
-
<lable for="kmhb-government-free-culture">{kmLocalize("attribute", "culture")}</lable>
199
+
<lable for="kmhb-government-free-culture">{await enrichAndLocalize("attribute", "culture")}</lable>
200
200
</div>
201
201
</div>
202
202
</div>
203
-
<p>{actor.getFlag("kingdom-homebrew", "government") == "" ? "" : kmLocalize("government", actor.getFlag("kingdom-homebrew", "government"), "description")}</p>
204
-
<h3>{kmLocalize("sheet", "level-1", "leaders", "choose")}</h3>
205
-
<p>{kmLocalize("sheet", "level-1", "leaders", "explanation")}</p>
203
+
<p>{@html actor.getFlag("kingdom-homebrew", "government") == "" ? "" : await enrichAndLocalize("government", actor.getFlag("kingdom-homebrew", "government"), "description")}</p>
204
+
<h3>{await enrichAndLocalize("sheet", "level-1", "leaders", "choose")}</h3>
205
+
<p>{await enrichAndLocalize("sheet", "level-1", "leaders", "explanation")}</p>
206
206
{#each leaders as leader}
207
207
{@const leaderId = getLeader(actor.flags["kingdom-homebrew"].leaders, leader)}
208
208
<div class="kmhb-leader-select">
209
-
<span class="kmhb-leader-label">{kmLocalize("leader", leader)}</span>
209
+
<span class="kmhb-leader-label">{await enrichAndLocalize("leader", leader)}</span>
210
210
{#if leaderId == ""}
211
-
<span class="kmhb-leader-drop-label" ondragend={leaderDrop} role="form">{kmLocalize("sheet", "level-1", "leaders", "drop")}</span>
211
+
<span class="kmhb-leader-drop-label" ondragend={leaderDrop} role="form">{await enrichAndLocalize("sheet", "level-1", "leaders", "drop")}</span>
212
212
{:else}
213
213
{@const leaderActor = (game as foundry.Game).actors.get(leaderId)}
214
214
<img src={leaderActor.thumbnail} alt={leaderActor.name} />
215
215
{/if}
216
-
<span class="kmhb-leader-attribute">{kmLocalize("attribute", leaderAttributes[leader])}</span>
216
+
<span class="kmhb-leader-attribute">{await enrichAndLocalize("attribute", leaderAttributes[leader])}</span>
217
217
</div>
218
218
{/each}
219
-
<button onclick={createVillage}>{kmLocalize("sheet", "level-1", "createVillage")}</button>
220
-
<h3>{kmLocalize("sheet", "level-1", "fameInfamy", "title")}</h3>
221
-
<p>{kmLocalize("sheet", "level-1", "fameInfamy", "explanation")}</p>
219
+
<button onclick={createVillage}>{await enrichAndLocalize("sheet", "level-1", "createVillage")}</button>
220
+
<h3>{await enrichAndLocalize("sheet", "level-1", "fameInfamy", "title")}</h3>
221
+
<p>{await enrichAndLocalize("sheet", "level-1", "fameInfamy", "explanation")}</p>
222
222
<select onchange={setFameInfamy}>
223
-
<option value="fame">{kmLocalize("reputation", "fame")}</option>
224
-
<option value="infamy">{kmLocalize("reputation", "infamy")}</option>
223
+
<option value="fame">{await enrichAndLocalize("reputation", "fame")}</option>
224
+
<option value="infamy">{await enrichAndLocalize("reputation", "infamy")}</option>
225
225
</select>
+16
-2
src/utils.ts
+16
-2
src/utils.ts
···
1
-
import type { Kingdom } from "./kingdom";
2
-
3
1
export interface isocketlib {
4
2
registerModule: (moduleName: string) => Socket
5
3
}
···
27
25
28
26
export function kmLocalize(...args: string[]): string {
29
27
return (game as foundry.Game).i18n!.localize(`kingdom-homebrew.${args.join(".")}`);
28
+
}
29
+
30
+
export async function enrichText(raw: string, enrichedOptions: object = {}): Promise<string> {
31
+
return foundry.applications.ux.TextEditor.enrichHTML(raw, mergeObject(
32
+
{
33
+
documents: true,
34
+
links: true,
35
+
secrets: (game as foundry.Game).user.isGM,
36
+
rolls: true
37
+
},
38
+
enrichedOptions
39
+
));
40
+
}
41
+
42
+
export async function enrichAndLocalize(...args: string[]): Promise<string> {
43
+
return enrichText(kmLocalize(...args));
30
44
}