@jjlmoya/utils-tabletop 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/package.json +1 -1
  2. package/src/category/TabletopCategorySEO.astro +2 -7
  3. package/src/category/i18n/en.ts +4 -4
  4. package/src/category/i18n/ru.ts +2 -2
  5. package/src/category/i18n/zh.ts +8 -8
  6. package/src/category/index.ts +2 -1
  7. package/src/entries.ts +14 -1
  8. package/src/index.ts +1 -0
  9. package/src/pages/[locale]/[slug].astro +7 -6
  10. package/src/tests/locale_completeness.test.ts +1 -1
  11. package/src/tests/no_em_dash.test.ts +47 -0
  12. package/src/tests/seo_length.test.ts +1 -0
  13. package/src/tests/title_quality.test.ts +1 -1
  14. package/src/tests/tool_validation.test.ts +1 -1
  15. package/src/tool/board-game-timer/modules/ColorHelper.ts +2 -2
  16. package/src/tool/board-game-timer/modules/DuelViewManager.ts +4 -4
  17. package/src/tool/board-game-timer/modules/GameRunner.ts +1 -1
  18. package/src/tool/board-game-timer/modules/MultiplayerViewManager.ts +2 -2
  19. package/src/tool/board-game-timer/modules/SetupPanelManager.ts +1 -1
  20. package/src/tool/board-game-timer/modules/TimerEngine.ts +1 -1
  21. package/src/tool/board-game-timer/types.ts +1 -1
  22. package/src/tool/decision-wheel/audio.ts +78 -0
  23. package/src/tool/decision-wheel/bibliography.astro +16 -0
  24. package/src/tool/decision-wheel/bibliography.ts +8 -0
  25. package/src/tool/decision-wheel/client.ts +226 -0
  26. package/src/tool/decision-wheel/component.astro +48 -0
  27. package/src/tool/decision-wheel/components/SegmentEditor.astro +22 -0
  28. package/src/tool/decision-wheel/components/SpinHistory.astro +17 -0
  29. package/src/tool/decision-wheel/components/SpinResult.astro +13 -0
  30. package/src/tool/decision-wheel/components/WheelCanvas.astro +23 -0
  31. package/src/tool/decision-wheel/decision-wheel.css +632 -0
  32. package/src/tool/decision-wheel/drawing.ts +144 -0
  33. package/src/tool/decision-wheel/entry.ts +48 -0
  34. package/src/tool/decision-wheel/i18n/de.ts +97 -0
  35. package/src/tool/decision-wheel/i18n/en.ts +251 -0
  36. package/src/tool/decision-wheel/i18n/es.ts +93 -0
  37. package/src/tool/decision-wheel/i18n/fr.ts +93 -0
  38. package/src/tool/decision-wheel/i18n/id.ts +93 -0
  39. package/src/tool/decision-wheel/i18n/it.ts +93 -0
  40. package/src/tool/decision-wheel/i18n/ja.ts +93 -0
  41. package/src/tool/decision-wheel/i18n/ko.ts +93 -0
  42. package/src/tool/decision-wheel/i18n/nl.ts +93 -0
  43. package/src/tool/decision-wheel/i18n/pl.ts +93 -0
  44. package/src/tool/decision-wheel/i18n/pt.ts +93 -0
  45. package/src/tool/decision-wheel/i18n/ru.ts +75 -0
  46. package/src/tool/decision-wheel/i18n/sv.ts +93 -0
  47. package/src/tool/decision-wheel/i18n/tr.ts +93 -0
  48. package/src/tool/decision-wheel/i18n/zh.ts +93 -0
  49. package/src/tool/decision-wheel/index.ts +9 -0
  50. package/src/tool/decision-wheel/logic.test.ts +163 -0
  51. package/src/tool/decision-wheel/logic.ts +145 -0
  52. package/src/tool/decision-wheel/seo.astro +16 -0
  53. package/src/tool/decision-wheel/types.ts +14 -0
  54. package/src/tool/decision-wheel/ui.ts +121 -0
  55. package/src/tool/dice-roller-simulator/client.ts +2 -2
  56. package/src/tool/dice-roller-simulator/i18n/ru.ts +8 -8
  57. package/src/tool/dice-roller-simulator/modules/history.ts +1 -1
  58. package/src/tool/fantasy-runes-translator/bibliography.astro +16 -0
  59. package/src/tool/fantasy-runes-translator/bibliography.ts +16 -0
  60. package/src/tool/fantasy-runes-translator/client.ts +205 -0
  61. package/src/tool/fantasy-runes-translator/component.astro +95 -0
  62. package/src/tool/fantasy-runes-translator/entry.ts +56 -0
  63. package/src/tool/fantasy-runes-translator/fantasy-runes-translator.css +712 -0
  64. package/src/tool/fantasy-runes-translator/i18n/de.ts +139 -0
  65. package/src/tool/fantasy-runes-translator/i18n/en.ts +139 -0
  66. package/src/tool/fantasy-runes-translator/i18n/es.ts +139 -0
  67. package/src/tool/fantasy-runes-translator/i18n/fr.ts +139 -0
  68. package/src/tool/fantasy-runes-translator/i18n/id.ts +139 -0
  69. package/src/tool/fantasy-runes-translator/i18n/it.ts +139 -0
  70. package/src/tool/fantasy-runes-translator/i18n/ja.ts +139 -0
  71. package/src/tool/fantasy-runes-translator/i18n/ko.ts +139 -0
  72. package/src/tool/fantasy-runes-translator/i18n/nl.ts +139 -0
  73. package/src/tool/fantasy-runes-translator/i18n/pl.ts +139 -0
  74. package/src/tool/fantasy-runes-translator/i18n/pt.ts +139 -0
  75. package/src/tool/fantasy-runes-translator/i18n/ru.ts +139 -0
  76. package/src/tool/fantasy-runes-translator/i18n/sv.ts +139 -0
  77. package/src/tool/fantasy-runes-translator/i18n/tr.ts +139 -0
  78. package/src/tool/fantasy-runes-translator/i18n/zh.ts +139 -0
  79. package/src/tool/fantasy-runes-translator/index.ts +9 -0
  80. package/src/tool/fantasy-runes-translator/logic.ts +174 -0
  81. package/src/tool/fantasy-runes-translator/seo.astro +16 -0
  82. package/src/tool/fantasy-runes-translator/types.ts +26 -0
  83. package/src/tool/first-player-selector/bibliography.astro +16 -0
  84. package/src/tool/first-player-selector/bibliography.ts +12 -0
  85. package/src/tool/first-player-selector/client.ts +197 -0
  86. package/src/tool/first-player-selector/component.astro +77 -0
  87. package/src/tool/first-player-selector/entry.ts +42 -0
  88. package/src/tool/first-player-selector/first-player-selector.css +303 -0
  89. package/src/tool/first-player-selector/i18n/de.ts +226 -0
  90. package/src/tool/first-player-selector/i18n/en.ts +226 -0
  91. package/src/tool/first-player-selector/i18n/es.ts +226 -0
  92. package/src/tool/first-player-selector/i18n/fr.ts +227 -0
  93. package/src/tool/first-player-selector/i18n/id.ts +226 -0
  94. package/src/tool/first-player-selector/i18n/it.ts +227 -0
  95. package/src/tool/first-player-selector/i18n/ja.ts +227 -0
  96. package/src/tool/first-player-selector/i18n/ko.ts +227 -0
  97. package/src/tool/first-player-selector/i18n/nl.ts +226 -0
  98. package/src/tool/first-player-selector/i18n/pl.ts +227 -0
  99. package/src/tool/first-player-selector/i18n/pt.ts +226 -0
  100. package/src/tool/first-player-selector/i18n/ru.ts +227 -0
  101. package/src/tool/first-player-selector/i18n/sv.ts +226 -0
  102. package/src/tool/first-player-selector/i18n/tr.ts +226 -0
  103. package/src/tool/first-player-selector/i18n/zh.ts +227 -0
  104. package/src/tool/first-player-selector/index.ts +9 -0
  105. package/src/tool/first-player-selector/modules/AnimationEffects.ts +256 -0
  106. package/src/tool/first-player-selector/modules/SelectionEngine.ts +249 -0
  107. package/src/tool/first-player-selector/modules/SoundEffects.ts +87 -0
  108. package/src/tool/first-player-selector/modules/TouchTracker.ts +148 -0
  109. package/src/tool/first-player-selector/seo.astro +16 -0
  110. package/src/tool/first-player-selector/types.ts +21 -0
  111. package/src/tool/rpg-initiative-tracker/bibliography.astro +16 -0
  112. package/src/tool/rpg-initiative-tracker/bibliography.ts +12 -0
  113. package/src/tool/rpg-initiative-tracker/client.ts +201 -0
  114. package/src/tool/rpg-initiative-tracker/component.astro +23 -0
  115. package/src/tool/rpg-initiative-tracker/components/AddForm.astro +49 -0
  116. package/src/tool/rpg-initiative-tracker/components/CombatantList.astro +16 -0
  117. package/src/tool/rpg-initiative-tracker/components/TurnControls.astro +28 -0
  118. package/src/tool/rpg-initiative-tracker/entry.ts +50 -0
  119. package/src/tool/rpg-initiative-tracker/i18n/de.ts +266 -0
  120. package/src/tool/rpg-initiative-tracker/i18n/en.ts +263 -0
  121. package/src/tool/rpg-initiative-tracker/i18n/es.ts +264 -0
  122. package/src/tool/rpg-initiative-tracker/i18n/fr.ts +263 -0
  123. package/src/tool/rpg-initiative-tracker/i18n/id.ts +263 -0
  124. package/src/tool/rpg-initiative-tracker/i18n/it.ts +263 -0
  125. package/src/tool/rpg-initiative-tracker/i18n/ja.ts +263 -0
  126. package/src/tool/rpg-initiative-tracker/i18n/ko.ts +263 -0
  127. package/src/tool/rpg-initiative-tracker/i18n/nl.ts +263 -0
  128. package/src/tool/rpg-initiative-tracker/i18n/pl.ts +264 -0
  129. package/src/tool/rpg-initiative-tracker/i18n/pt.ts +263 -0
  130. package/src/tool/rpg-initiative-tracker/i18n/ru.ts +264 -0
  131. package/src/tool/rpg-initiative-tracker/i18n/sv.ts +263 -0
  132. package/src/tool/rpg-initiative-tracker/i18n/tr.ts +263 -0
  133. package/src/tool/rpg-initiative-tracker/i18n/zh.ts +263 -0
  134. package/src/tool/rpg-initiative-tracker/index.ts +9 -0
  135. package/src/tool/rpg-initiative-tracker/logic.test.ts +121 -0
  136. package/src/tool/rpg-initiative-tracker/logic.ts +122 -0
  137. package/src/tool/rpg-initiative-tracker/rpg-initiative-tracker.css +617 -0
  138. package/src/tool/rpg-initiative-tracker/seo.astro +16 -0
  139. package/src/tool/rpg-initiative-tracker/types.ts +15 -0
  140. package/src/tool/score-tracker/bibliography.astro +16 -0
  141. package/src/tool/score-tracker/bibliography.ts +12 -0
  142. package/src/tool/score-tracker/client.ts +248 -0
  143. package/src/tool/score-tracker/component.astro +34 -0
  144. package/src/tool/score-tracker/components/Leaderboard.astro +19 -0
  145. package/src/tool/score-tracker/components/PlayerSetup.astro +32 -0
  146. package/src/tool/score-tracker/components/RoundScoring.astro +22 -0
  147. package/src/tool/score-tracker/components/ScoreHistory.astro +25 -0
  148. package/src/tool/score-tracker/entry.ts +57 -0
  149. package/src/tool/score-tracker/i18n/de.ts +278 -0
  150. package/src/tool/score-tracker/i18n/en.ts +278 -0
  151. package/src/tool/score-tracker/i18n/es.ts +251 -0
  152. package/src/tool/score-tracker/i18n/fr.ts +278 -0
  153. package/src/tool/score-tracker/i18n/id.ts +278 -0
  154. package/src/tool/score-tracker/i18n/it.ts +278 -0
  155. package/src/tool/score-tracker/i18n/ja.ts +278 -0
  156. package/src/tool/score-tracker/i18n/ko.ts +278 -0
  157. package/src/tool/score-tracker/i18n/nl.ts +278 -0
  158. package/src/tool/score-tracker/i18n/pl.ts +278 -0
  159. package/src/tool/score-tracker/i18n/pt.ts +278 -0
  160. package/src/tool/score-tracker/i18n/ru.ts +278 -0
  161. package/src/tool/score-tracker/i18n/sv.ts +278 -0
  162. package/src/tool/score-tracker/i18n/tr.ts +278 -0
  163. package/src/tool/score-tracker/i18n/zh.ts +278 -0
  164. package/src/tool/score-tracker/index.ts +9 -0
  165. package/src/tool/score-tracker/logic.test.ts +83 -0
  166. package/src/tool/score-tracker/logic.ts +122 -0
  167. package/src/tool/score-tracker/score-tracker.css +1029 -0
  168. package/src/tool/score-tracker/seo.astro +16 -0
  169. package/src/tool/score-tracker/types.ts +17 -0
  170. package/src/tools.ts +10 -0
  171. package/src/types.ts +1 -2
@@ -0,0 +1,278 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ScoreTrackerUI } from '../entry';
4
+
5
+ const ui: ScoreTrackerUI = {
6
+ title: 'Score Tracker',
7
+ addPlayer: 'プレイヤーを追加',
8
+ removePlayer: '削除',
9
+ renamePlayer: '名前変更',
10
+ startRound: 'ラウンド1を開始',
11
+ nextRound: '次のラウンド',
12
+ resetGame: 'ゲームをリセット',
13
+ undoRound: '前のラウンドを元に戻す',
14
+ playerLabel: 'プレイヤー',
15
+ scoreLabel: 'スコア',
16
+ roundLabel: 'ラウンド',
17
+ totalLabel: '合計',
18
+ rankLabel: '順位',
19
+ leaderboardTitle: 'リーダーボード',
20
+ historyTitle: 'スコア履歴',
21
+ noPlayersHint: 'プレイヤーを追加してスコア入力を開始',
22
+ playerNamePlaceholder: 'プレイヤー名',
23
+ confirmLabel: '確認',
24
+ cancelLabel: 'キャンセル',
25
+ deleteRoundConfirm: '最後のラウンドを削除しますか?',
26
+ playerAdded: 'プレイヤーを追加しました',
27
+ playerRemoved: 'プレイヤーを削除しました',
28
+ roundStarted: 'ラウンドを開始しました',
29
+ gameReset: 'ゲームがリセットされました',
30
+ noRoundsYet: 'まだラウンドが記録されていません',
31
+ currentRoundLabel: '現在のラウンド',
32
+ scoringTitle: 'ラウンドスコア',
33
+ resetAllLabel: 'すべてリセット',
34
+ confirmResetAll: 'すべてのプレイヤーとスコアが削除されます。よろしいですか?',
35
+ };
36
+
37
+ export const content: ToolLocaleContent<ScoreTrackerUI> = {
38
+ slug: 'score-tracker',
39
+ title: 'Score Tracker: Maruchi pureiya Sukiaputa to Rida Boddo Maneeja',
40
+ description: 'あらゆるボードゲームのスコアを記録します。プレイヤーを追加し、ラウンドごとのスコアを記録し、自動ランキングでリーダーボードがリアルタイムに更新されるのを見守りましょう。',
41
+ ui,
42
+ seo: [
43
+ { type: 'title', text: 'ボードゲームのスコア管理:ミスなくスコアを記録する方法', level: 2 },
44
+ { type: 'paragraph', html: 'ボードゲームでのスコア記録は簡単そうに見えますが、5ラウンド目に入って誰かが計算を間違えていることに気づくまではそうです。ウィングスパン、テラフォーミングマーズ、カタン、または勝利点を使うどんなゲームでも、正確なスコア管理は公平なゲームと議論の分かれ目です。デジタルスコアトラッカーは計算ミスを排除し、ライブランキングを表示し、すべてのラウンドの完全な履歴を保持するため、最終集計を検証できます。' },
45
+ {
46
+ type: 'stats',
47
+ items: [
48
+ { value: '無制限', label: '対応プレイヤー数' },
49
+ { value: 'リアルタイム', label: 'リーダーボード更新' },
50
+ { value: '無制限', label: '記録ラウンド数' },
51
+ ],
52
+ columns: 3,
53
+ },
54
+ { type: 'title', text: 'よくあるスコア記録のミスとその回避方法', level: 2 },
55
+ { type: 'paragraph', html: '最も頻繁に起こるミスは、ラウンド終了ボーナスの追加忘れや数字の列の足し算ミスです。デジタルでスコアを記録すると、入力後に自動的に合計が更新されます。つまり、数字がおかしいと感じた瞬間にミスに気づくことができ、誰も正しい値を覚えていないゲーム終了時に発見する必要がありません。ラウンド履歴機能を使えば、過去のラウンドを監査し、ゲーム全体をやり直さずにエラーを修正できます。' },
56
+ {
57
+ type: 'tip',
58
+ title: 'スコア記録のクイックヒント',
59
+ html: '各ラウンド終了後、全員が結果を覚えているうちにすぐにスコアを入力しましょう。隠れた役割があるゲームでは、実際の名前ではなく色や派閥名などの説明的なラベルを使用してください。子供と遊ぶときは、ボタンを押させることでスコアリングプロセスに参加させましょう。',
60
+ },
61
+ {
62
+ type: 'title',
63
+ text: 'ラウンドごとのスコアリング vs 合計のみ',
64
+ level: 3,
65
+ },
66
+ {
67
+ type: 'proscons',
68
+ title: 'ラウンドごとのスコア vs 最終スコアのみ',
69
+ items: [
70
+ {
71
+ pro: 'ゲームの各段階で誰がリードしていたか、勢いがどのように変化したかがわかります。',
72
+ con: '最後に一度だけではなく、各ラウンド後にデータを入力する必要があります。',
73
+ },
74
+ {
75
+ pro: '個々のラウンドの入力を記憶と照合できるため、エラーを簡単に見つけられます。',
76
+ con: 'ゲームセッション中に少し時間がかかります。',
77
+ },
78
+ {
79
+ pro: 'プレイヤーは自分のラウンドスコアを確認でき、紛争を減らし信頼を構築します。',
80
+ con: '一人がデバイスを管理するか、プレイヤーが交代で行うのが最適です。',
81
+ },
82
+ ],
83
+ },
84
+ {
85
+ type: 'title',
86
+ text: '変わったスコアリングシステムのゲーム',
87
+ level: 3,
88
+ },
89
+ {
90
+ type: 'comparative',
91
+ items: [
92
+ {
93
+ title: '勝利点ゲーム',
94
+ description: 'ほとんどのユーロゲームでは、ゲーム全体を通じて与えられる勝利点を使用します。課題は、リソース、実績、エンドゲームボーナスなど複数のVPソースを追跡することです。デジタルトラッカーを使えば、ポイントが発生するたびに入力し、合計を確認できます。',
95
+ icon: 'mdi:chess-queen',
96
+ highlight: true,
97
+ points: [
98
+ '複数のスコアカテゴリを追跡',
99
+ 'エンドゲームボーナスの計算',
100
+ '即時タイブレイク解決',
101
+ ],
102
+ },
103
+ {
104
+ title: 'マイナススコアのあるゲーム',
105
+ description: '一部のゲームでは、特定のアクションに対してマイナス点でペナルティを与えます。デジタルスコアキーパーはマイナス値を自然に処理し、ペナルティがすぐにわかるように赤色で表示します。これは特にトリックテイキングゲームやペナルティメカニクスがある推理ゲームで役立ちます。',
106
+ icon: 'mdi:minus-circle-outline',
107
+ highlight: false,
108
+ points: [
109
+ '自動マイナス処理',
110
+ '視覚的なペナルティ表示',
111
+ '正確な累計合計',
112
+ ],
113
+ },
114
+ {
115
+ title: 'キャンペーンゲーム',
116
+ description: 'レガシーゲームやキャンペーンゲームでは、複数のセッションにわたってスコアを持ち越します。トラッカーがないと、ゲームナイトの間は紙のメモを保管する必要があります。デジタルツールを使えばキャンペーンのスコアを整理して管理し、自分の決定が全体的な順位にどのように影響したかを確認できます。',
117
+ icon: 'mdi:book-open-variant',
118
+ highlight: false,
119
+ points: [
120
+ 'キャンペーンの永続的な追跡',
121
+ 'セッション間の比較',
122
+ 'セッションごとの内訳',
123
+ ],
124
+ },
125
+ ],
126
+ columns: 3,
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'スコアリング用語集',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'glossary',
135
+ items: [
136
+ {
137
+ term: '勝利点(VP)',
138
+ definition: '最新のボードゲームの大半で使用される標準的なスコアリング単位。プレイヤーはアクションを通じてVPを獲得し、ゲーム終了時に最も多くのVPを持っている人が勝ちます。',
139
+ },
140
+ {
141
+ term: 'ラウンドスコアリング',
142
+ definition: 'ゲーム終了時だけでなく、各ラウンド終了時にスコアを記録すること。詳細な履歴が作成され、エラーチェックが容易になります。',
143
+ },
144
+ {
145
+ term: 'リーダーボード',
146
+ definition: '合計スコアに基づいて各プレイヤーの順位を表示するライブランキング。新しいスコアが入力されるとリーダーボードは自動的に並べ替えられます。',
147
+ },
148
+ {
149
+ term: 'マイナススコアリング',
150
+ definition: 'プレイヤーがペナルティや失敗したアクションによってポイントを失い、マイナスの合計になるスコアリングシステム。デジタルトラッカーは手動の引き算ミスなしでこれを処理します。',
151
+ },
152
+ ],
153
+ },
154
+ {
155
+ type: 'diagnostic',
156
+ variant: 'info',
157
+ title: 'スコアの紛争対処法',
158
+ icon: 'mdi:information-outline',
159
+ badge: 'ゲームのヒント',
160
+ html: 'プレイヤーがスコアに異議を唱えた場合、すぐに変更しないでください。最初にラウンド履歴を確認して、何が入力されたかを確認します。入力が間違っている場合は、+/-ボタンを使って修正すると合計が自動更新されます。ラウンド入力が正しいがプレイヤーが同意しない場合、履歴は全員が一緒に確認できる客観的な記録を提供します。',
161
+ },
162
+ ],
163
+ faq: [
164
+ {
165
+ question: '何人までのプレイヤーを追跡できますか?',
166
+ answer: '制限はありません。ゲームがサポートするだけのプレイヤーを追加でき、セッション中いつでも名前を変更できます。',
167
+ },
168
+ {
169
+ question: 'ミスを元に戻せますか?',
170
+ answer: 'はい。「前のラウンドを元に戻す」ボタンを使用すると、最新のスコアラウンドが削除され、すべての合計と順位が自動的に再計算されます。',
171
+ },
172
+ {
173
+ question: 'スコアトラッカーはデータを保存しますか?',
174
+ answer: 'スコアトラッカーはブラウザ上で完全に動作します。データは現在のセッション内で保持されます。ページを更新するとすべてのスコアがリセットされます。',
175
+ },
176
+ {
177
+ question: 'リーダーボードはどのように機能しますか?',
178
+ answer: 'リーダーボードは合計スコアの降順でプレイヤーを並べ替えます。各ラウンドでスコアを入力または変更すると、順位が自動的に更新されます。',
179
+ },
180
+ {
181
+ question: 'マイナスのスコアを追跡できますか?',
182
+ answer: 'はい。+/-ボタンでプラスとマイナスの両方の調整が可能で、ペナルティポイントや減点メカニクスがあるゲームに適しています。',
183
+ },
184
+ ],
185
+ bibliography,
186
+ howTo: [
187
+ {
188
+ name: 'プレイヤーを追加',
189
+ text: '「プレイヤーを追加」入力欄にプレイヤー名を入力します。ゲーム中いつでもプレイヤーを追加または削除できます。',
190
+ },
191
+ {
192
+ name: 'スコアリングを開始',
193
+ text: '「ラウンドを開始」をクリックして新しいスコアリングラウンドを開始します。+/-ボタンを使って各プレイヤーのスコアを調整します。',
194
+ },
195
+ {
196
+ name: 'ランキングを見る',
197
+ text: 'リーダーボードは自動的に更新されます。「スコア履歴」タブを参照して過去のラウンド入力を確認してください。',
198
+ },
199
+ ],
200
+ schemas: [
201
+ {
202
+ '@context': 'https://schema.org',
203
+ '@type': 'SoftwareApplication',
204
+ 'name': 'Score Tracker & Scorekeeper',
205
+ 'operatingSystem': 'All',
206
+ 'applicationCategory': 'UtilitiesApplication',
207
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
208
+ },
209
+ {
210
+ '@context': 'https://schema.org',
211
+ '@type': 'FAQPage',
212
+ 'mainEntity': [
213
+ {
214
+ '@type': 'Question',
215
+ 'name': '何人までのプレイヤーを追跡できますか?',
216
+ 'acceptedAnswer': {
217
+ '@type': 'Answer',
218
+ 'text': '制限はありません。ゲームがサポートするだけのプレイヤーを追加でき、セッション中いつでも名前を変更できます。',
219
+ },
220
+ },
221
+ {
222
+ '@type': 'Question',
223
+ 'name': 'ミスを元に戻せますか?',
224
+ 'acceptedAnswer': {
225
+ '@type': 'Answer',
226
+ 'text': 'はい。「前のラウンドを元に戻す」ボタンを使用すると、最新のスコアラウンドが削除され、すべての合計と順位が自動的に再計算されます。',
227
+ },
228
+ },
229
+ {
230
+ '@type': 'Question',
231
+ 'name': 'スコアトラッカーはデータを保存しますか?',
232
+ 'acceptedAnswer': {
233
+ '@type': 'Answer',
234
+ 'text': 'スコアトラッカーはブラウザ上で完全に動作します。データは現在のセッション内で保持されます。ページを更新するとすべてのスコアがリセットされます。',
235
+ },
236
+ },
237
+ {
238
+ '@type': 'Question',
239
+ 'name': 'リーダーボードはどのように機能しますか?',
240
+ 'acceptedAnswer': {
241
+ '@type': 'Answer',
242
+ 'text': 'リーダーボードは合計スコアの降順でプレイヤーを並べ替えます。各ラウンドでスコアを入力または変更すると、順位が自動的に更新されます。',
243
+ },
244
+ },
245
+ {
246
+ '@type': 'Question',
247
+ 'name': 'マイナスのスコアを追跡できますか?',
248
+ 'acceptedAnswer': {
249
+ '@type': 'Answer',
250
+ 'text': 'はい。+/-ボタンでプラスとマイナスの両方の調整が可能で、ペナルティポイントや減点メカニクスがあるゲームに適しています。',
251
+ },
252
+ },
253
+ ],
254
+ },
255
+ {
256
+ '@context': 'https://schema.org',
257
+ '@type': 'HowTo',
258
+ 'name': 'スコアトラッカーの使い方',
259
+ 'step': [
260
+ {
261
+ '@type': 'HowToStep',
262
+ 'name': 'プレイヤーを追加',
263
+ 'text': '「プレイヤーを追加」入力欄にプレイヤー名を入力します。ゲーム中いつでもプレイヤーを追加または削除できます。',
264
+ },
265
+ {
266
+ '@type': 'HowToStep',
267
+ 'name': 'スコアリングを開始',
268
+ 'text': '「ラウンドを開始」をクリックして新しいスコアリングラウンドを開始します。+/-ボタンを使って各プレイヤーのスコアを調整します。',
269
+ },
270
+ {
271
+ '@type': 'HowToStep',
272
+ 'name': 'ランキングを見る',
273
+ 'text': 'リーダーボードは自動的に更新されます。「スコア履歴」タブを参照して過去のラウンド入力を確認してください。',
274
+ },
275
+ ],
276
+ },
277
+ ],
278
+ };
@@ -0,0 +1,278 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ScoreTrackerUI } from '../entry';
4
+
5
+ const ui: ScoreTrackerUI = {
6
+ title: 'Score Tracker',
7
+ addPlayer: '플레이어 추가',
8
+ removePlayer: '제거',
9
+ renamePlayer: '이름 변경',
10
+ startRound: '라운드 1 시작',
11
+ nextRound: '다음 라운드',
12
+ resetGame: '게임 초기화',
13
+ undoRound: '마지막 라운드 취소',
14
+ playerLabel: '플레이어',
15
+ scoreLabel: '점수',
16
+ roundLabel: '라운드',
17
+ totalLabel: '합계',
18
+ rankLabel: '순위',
19
+ leaderboardTitle: '리더보드',
20
+ historyTitle: '점수 기록',
21
+ noPlayersHint: '플레이어를 추가하여 점수 기록 시작',
22
+ playerNamePlaceholder: '플레이어 이름',
23
+ confirmLabel: '확인',
24
+ cancelLabel: '취소',
25
+ deleteRoundConfirm: '마지막 라운드를 삭제하시겠습니까?',
26
+ playerAdded: '플레이어가 추가되었습니다',
27
+ playerRemoved: '플레이어가 제거되었습니다',
28
+ roundStarted: '라운드가 시작되었습니다',
29
+ gameReset: '게임이 초기화되었습니다',
30
+ noRoundsYet: '아직 기록된 라운드가 없습니다',
31
+ currentRoundLabel: '현재 라운드',
32
+ scoringTitle: '라운드 점수',
33
+ resetAllLabel: '모두 초기화',
34
+ confirmResetAll: '모든 플레이어와 점수가 삭제됩니다. 확실합니까?',
35
+ };
36
+
37
+ export const content: ToolLocaleContent<ScoreTrackerUI> = {
38
+ slug: 'score-tracker',
39
+ title: 'Score Tracker: Melliteo Peulleieo Seuko Keopowa Rideo Bodeu Maenijeo',
40
+ description: '모든 보드게임의 점수를 추적하세요. 플레이어를 추가하고, 라운드별로 점수를 기록하며, 자동 순위 매기기로 리더보드가 실시간으로 업데이트되는 것을 지켜보세요.',
41
+ ui,
42
+ seo: [
43
+ { type: 'title', text: '보드게임 점수 기록: 실수 없이 점수를 추적하는 방법', level: 2 },
44
+ { type: 'paragraph', html: '보드게임에서 점수를 기록하는 것은 5라운드까지 진행하고 누군가 계산을 잘못했다는 것을 깨닫기 전까지는 쉬워 보입니다. 윙스팬, 테라포밍 마즈, 카탄 또는 승점 게임을 하든, 정확한 점수 기록은 공정한 게임과 논쟁의 차이를 만듭니다. 디지털 점수 추적기는 산술 오류를 없애고, 실시간 순위를 표시하며, 모든 라운드의 전체 기록을 보관하여 최종 집계를 확인할 수 있게 해줍니다.' },
45
+ {
46
+ type: 'stats',
47
+ items: [
48
+ { value: '무제한', label: '지원 플레이어' },
49
+ { value: '실시간', label: '리더보드 업데이트' },
50
+ { value: '무제한', label: '기록 라운드' },
51
+ ],
52
+ columns: 3,
53
+ },
54
+ { type: 'title', text: '흔한 점수 기록 실수와 피하는 방법', level: 2 },
55
+ { type: 'paragraph', html: '가장 빈번한 점수 실수는 라운드 종료 보너스를 추가하는 것을 잊거나 숫자 열을 잘못 더하는 것입니다. 디지털로 점수를 추적하면 각 입력 후에 누계가 자동으로 업데이트됩니다. 즉, 숫자가 이상해 보이는 순간에 실수를 발견할 수 있으며, 아무도 올바른 값을 기억하지 못하는 게임 종료 시점에 발견할 필요가 없습니다. 라운드 기록 기능을 사용하면 이전 라운드를 감사하고 전체 게임을 다시 시작하지 않고도 오류를 수정할 수 있습니다.' },
56
+ {
57
+ type: 'tip',
58
+ title: '빠른 점수 기록 팁',
59
+ html: '각 라운드가 끝난 직후 모두가 결과를 기억하고 있을 때 점수를 입력하세요. 숨겨진 역할이 있는 게임의 경우 실제 이름 대신 색상이나 진영 이름과 같은 설명적인 플레이어 레이블을 사용하세요. 아이들과 게임할 때는 버튼을 직접 누르게 해서 점수 기록 과정에 참여하게 하세요.',
60
+ },
61
+ {
62
+ type: 'title',
63
+ text: '라운드별 점수 vs 최종 합계만',
64
+ level: 3,
65
+ },
66
+ {
67
+ type: 'proscons',
68
+ title: '라운드별 점수 vs 최종 점수만',
69
+ items: [
70
+ {
71
+ pro: '게임의 각 단계에서 누가 선두였고 어떻게 흐름이 바뀌었는지 확인할 수 있습니다.',
72
+ con: '마지막에 한 번이 아니라 각 라운드 후에 데이터를 입력해야 합니다.',
73
+ },
74
+ {
75
+ pro: '개별 라운드 항목을 기억과 대조할 수 있어 오류를 쉽게 찾을 수 있습니다.',
76
+ con: '게임 세션 중에 시간이 조금 더 소요됩니다.',
77
+ },
78
+ {
79
+ pro: '플레이어가 자신의 라운드 점수를 확인할 수 있어 분쟁을 줄이고 신뢰를 쌓습니다.',
80
+ con: '한 사람이 기기를 관리하거나 플레이어가 교대로 하는 것이 가장 좋습니다.',
81
+ },
82
+ ],
83
+ },
84
+ {
85
+ type: 'title',
86
+ text: '특이한 점수 시스템을 가진 게임',
87
+ level: 3,
88
+ },
89
+ {
90
+ type: 'comparative',
91
+ items: [
92
+ {
93
+ title: '승점 게임',
94
+ description: '대부분의 유로게임은 게임 전반에 걸쳐 수여되는 승점을 사용합니다. 과제는 자원, 업적, 엔드게임 보너스 등 여러 VP 소스를 추적하는 것입니다. 디지털 트래커를 사용하면 점수가 발생할 때 입력하고 누계를 확인할 수 있습니다.',
95
+ icon: 'mdi:chess-queen',
96
+ highlight: true,
97
+ points: [
98
+ '여러 점수 카테고리 추적',
99
+ '엔드게임 보너스 계산',
100
+ '즉시 동점자 해결',
101
+ ],
102
+ },
103
+ {
104
+ title: '마이너스 점수 게임',
105
+ description: '일부 게임은 특정 행동에 대해 플레이어에게 마이너스 점수 패널티를 부과합니다. 디지털 점수 기록기는 마이너스 값을 자연스럽게 처리하여 빨간색으로 표시해 패널티를 즉시 확인할 수 있습니다. 이것은 특히 트릭 테이킹 게임이나 패널티 메커니즘이 있는 추리 게임에서 유용합니다.',
106
+ icon: 'mdi:minus-circle-outline',
107
+ highlight: false,
108
+ points: [
109
+ '자동 마이너스 처리',
110
+ '시각적 패널티 표시기',
111
+ '정확한 누적 합계',
112
+ ],
113
+ },
114
+ {
115
+ title: '캠페인 게임',
116
+ description: '레거시 및 캠페인 게임은 여러 세션에 걸쳐 점수를 이어갑니다. 트래커가 없으면 게임하는 날 사이에 종이 기록을 보관해야 합니다. 디지털 도구는 캠페인 점수를 정리하여 관리하고 자신의 결정이 전체 순위에 어떻게 영향을 미쳤는지 검토할 수 있게 해줍니다.',
117
+ icon: 'mdi:book-open-variant',
118
+ highlight: false,
119
+ points: [
120
+ '지속적인 캠페인 추적',
121
+ '세션 간 비교',
122
+ '세션별 분석',
123
+ ],
124
+ },
125
+ ],
126
+ columns: 3,
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: '점수 기록 용어집',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'glossary',
135
+ items: [
136
+ {
137
+ term: '승점 (VP)',
138
+ definition: '대부분의 현대 보드게임에서 사용되는 표준 점수 단위입니다. 플레이어는 행동을 통해 VP를 획득하며, 게임 종료 시 가장 많은 VP를 가진 사람이 승리합니다.',
139
+ },
140
+ {
141
+ term: '라운드 점수',
142
+ definition: '게임 종료 시에만이 아니라 각 라운드 종료 시 점수를 기록하는 것. 상세한 기록을 생성하고 오류 확인을 쉽게 만듭니다.',
143
+ },
144
+ {
145
+ term: '리더보드',
146
+ definition: '총 점수를 기준으로 각 플레이어의 순위를 보여주는 실시간 순위표입니다. 새 점수가 입력되면 리더보드가 자동으로 재정렬됩니다.',
147
+ },
148
+ {
149
+ term: '마이너스 점수',
150
+ definition: '플레이어가 패널티나 실패한 행동을 통해 점수를 잃어 마이너스 합계가 발생하는 점수 시스템. 디지털 트래커는 수동 뺄셈 오류 없이 이를 처리합니다.',
151
+ },
152
+ ],
153
+ },
154
+ {
155
+ type: 'diagnostic',
156
+ variant: 'info',
157
+ title: '점수 분쟁 처리 방법',
158
+ icon: 'mdi:information-outline',
159
+ badge: '게임 팁',
160
+ html: '플레이어가 점수에 이의를 제기하면 즉시 변경하지 마세요. 먼저 라운드 기록을 확인하여 입력된 내용을 확인하세요. 항목이 잘못된 경우 +/- 버튼을 사용하여 수정하면 합계가 자동으로 업데이트됩니다. 라운드 항목이 올바르지만 플레이어가 동의하지 않는 경우, 기록은 모든 사람이 함께 검토할 수 있는 객관적인 증거를 제공합니다.',
161
+ },
162
+ ],
163
+ faq: [
164
+ {
165
+ question: '몇 명까지 플레이어를 추적할 수 있나요?',
166
+ answer: '제한이 없습니다. 게임이 지원하는 만큼 플레이어를 추가하고 세션 중 언제든지 이름을 변경할 수 있습니다.',
167
+ },
168
+ {
169
+ question: '실수를 취소할 수 있나요?',
170
+ answer: '네. "마지막 라운드 취소" 버튼을 사용하여 가장 최근 점수 라운드를 제거하면 모든 합계와 순위가 자동으로 재계산됩니다.',
171
+ },
172
+ {
173
+ question: '점수 추적기가 내 데이터를 저장하나요?',
174
+ answer: '점수 추적기는 브라우저에서 완전히 실행됩니다. 데이터는 현재 세션 동안 유지됩니다. 페이지를 새로고침하면 모든 점수가 초기화됩니다.',
175
+ },
176
+ {
177
+ question: '리더보드는 어떻게 작동하나요?',
178
+ answer: '리더보드는 총점 내림차순으로 플레이어를 정렬합니다. 각 라운드에서 점수를 입력하거나 수정하면 순위가 자동으로 업데이트됩니다.',
179
+ },
180
+ {
181
+ question: '마이너스 점수를 추적할 수 있나요?',
182
+ answer: '네. +/- 버튼으로 양수와 음수 조정이 모두 가능하므로 패널티 점수나 감점 메커니즘이 있는 게임에 적합합니다.',
183
+ },
184
+ ],
185
+ bibliography,
186
+ howTo: [
187
+ {
188
+ name: '플레이어 추가',
189
+ text: '"플레이어 추가" 입력란에 플레이어 이름을 입력하세요. 게임 중 언제든지 플레이어를 추가하거나 제거할 수 있습니다.',
190
+ },
191
+ {
192
+ name: '점수 기록 시작',
193
+ text: '"라운드 시작"을 클릭하여 새 점수 기록 라운드를 시작하세요. +/- 버튼을 사용하여 각 플레이어의 점수를 조정하세요.',
194
+ },
195
+ {
196
+ name: '순위 보기',
197
+ text: '리더보드가 자동으로 업데이트됩니다. "점수 기록" 탭을 찾아보고 이전 라운드 항목을 검토하세요.',
198
+ },
199
+ ],
200
+ schemas: [
201
+ {
202
+ '@context': 'https://schema.org',
203
+ '@type': 'SoftwareApplication',
204
+ 'name': 'Score Tracker & Scorekeeper',
205
+ 'operatingSystem': 'All',
206
+ 'applicationCategory': 'UtilitiesApplication',
207
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
208
+ },
209
+ {
210
+ '@context': 'https://schema.org',
211
+ '@type': 'FAQPage',
212
+ 'mainEntity': [
213
+ {
214
+ '@type': 'Question',
215
+ 'name': '몇 명까지 플레이어를 추적할 수 있나요?',
216
+ 'acceptedAnswer': {
217
+ '@type': 'Answer',
218
+ 'text': '제한이 없습니다. 게임이 지원하는 만큼 플레이어를 추가하고 세션 중 언제든지 이름을 변경할 수 있습니다.',
219
+ },
220
+ },
221
+ {
222
+ '@type': 'Question',
223
+ 'name': '실수를 취소할 수 있나요?',
224
+ 'acceptedAnswer': {
225
+ '@type': 'Answer',
226
+ 'text': '네. "마지막 라운드 취소" 버튼을 사용하여 가장 최근 점수 라운드를 제거하면 모든 합계와 순위가 자동으로 재계산됩니다.',
227
+ },
228
+ },
229
+ {
230
+ '@type': 'Question',
231
+ 'name': '점수 추적기가 내 데이터를 저장하나요?',
232
+ 'acceptedAnswer': {
233
+ '@type': 'Answer',
234
+ 'text': '점수 추적기는 브라우저에서 완전히 실행됩니다. 데이터는 현재 세션 동안 유지됩니다. 페이지를 새로고침하면 모든 점수가 초기화됩니다.',
235
+ },
236
+ },
237
+ {
238
+ '@type': 'Question',
239
+ 'name': '리더보드는 어떻게 작동하나요?',
240
+ 'acceptedAnswer': {
241
+ '@type': 'Answer',
242
+ 'text': '리더보드는 총점 내림차순으로 플레이어를 정렬합니다. 각 라운드에서 점수를 입력하거나 수정하면 순위가 자동으로 업데이트됩니다.',
243
+ },
244
+ },
245
+ {
246
+ '@type': 'Question',
247
+ 'name': '마이너스 점수를 추적할 수 있나요?',
248
+ 'acceptedAnswer': {
249
+ '@type': 'Answer',
250
+ 'text': '네. +/- 버튼으로 양수와 음수 조정이 모두 가능하므로 패널티 점수나 감점 메커니즘이 있는 게임에 적합합니다.',
251
+ },
252
+ },
253
+ ],
254
+ },
255
+ {
256
+ '@context': 'https://schema.org',
257
+ '@type': 'HowTo',
258
+ 'name': '점수 추적기 사용 방법',
259
+ 'step': [
260
+ {
261
+ '@type': 'HowToStep',
262
+ 'name': '플레이어 추가',
263
+ 'text': '"플레이어 추가" 입력란에 플레이어 이름을 입력하세요. 게임 중 언제든지 플레이어를 추가하거나 제거할 수 있습니다.',
264
+ },
265
+ {
266
+ '@type': 'HowToStep',
267
+ 'name': '점수 기록 시작',
268
+ 'text': '"라운드 시작"을 클릭하여 새 점수 기록 라운드를 시작하세요. +/- 버튼을 사용하여 각 플레이어의 점수를 조정하세요.',
269
+ },
270
+ {
271
+ '@type': 'HowToStep',
272
+ 'name': '순위 보기',
273
+ 'text': '리더보드가 자동으로 업데이트됩니다. "점수 기록" 탭을 찾아보고 이전 라운드 항목을 검토하세요.',
274
+ },
275
+ ],
276
+ },
277
+ ],
278
+ };