@jjlmoya/utils-creative 1.7.0 → 1.8.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 (100) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +9 -0
  3. package/src/category/i18n/id.ts +9 -0
  4. package/src/category/i18n/it.ts +9 -0
  5. package/src/category/i18n/ja.ts +9 -0
  6. package/src/category/i18n/ko.ts +9 -0
  7. package/src/category/i18n/nl.ts +9 -0
  8. package/src/category/i18n/pl.ts +9 -0
  9. package/src/category/i18n/pt.ts +9 -0
  10. package/src/category/i18n/ru.ts +9 -0
  11. package/src/category/i18n/sv.ts +9 -0
  12. package/src/category/i18n/tr.ts +9 -0
  13. package/src/category/i18n/zh.ts +9 -0
  14. package/src/category/index.ts +12 -0
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +2 -2
  18. package/src/tests/title_quality.test.ts +3 -3
  19. package/src/tool/bead-pattern-generator/i18n/de.ts +115 -0
  20. package/src/tool/bead-pattern-generator/i18n/en.ts +1 -1
  21. package/src/tool/bead-pattern-generator/i18n/es.ts +1 -1
  22. package/src/tool/bead-pattern-generator/i18n/fr.ts +1 -1
  23. package/src/tool/bead-pattern-generator/i18n/id.ts +115 -0
  24. package/src/tool/bead-pattern-generator/i18n/it.ts +115 -0
  25. package/src/tool/bead-pattern-generator/i18n/ja.ts +115 -0
  26. package/src/tool/bead-pattern-generator/i18n/ko.ts +115 -0
  27. package/src/tool/bead-pattern-generator/i18n/nl.ts +115 -0
  28. package/src/tool/bead-pattern-generator/i18n/pl.ts +115 -0
  29. package/src/tool/bead-pattern-generator/i18n/pt.ts +115 -0
  30. package/src/tool/bead-pattern-generator/i18n/ru.ts +115 -0
  31. package/src/tool/bead-pattern-generator/i18n/sv.ts +115 -0
  32. package/src/tool/bead-pattern-generator/i18n/tr.ts +115 -0
  33. package/src/tool/bead-pattern-generator/i18n/zh.ts +115 -0
  34. package/src/tool/bead-pattern-generator/index.ts +12 -0
  35. package/src/tool/dice-roller/i18n/de.ts +138 -0
  36. package/src/tool/dice-roller/i18n/id.ts +138 -0
  37. package/src/tool/dice-roller/i18n/it.ts +138 -0
  38. package/src/tool/dice-roller/i18n/ja.ts +138 -0
  39. package/src/tool/dice-roller/i18n/ko.ts +138 -0
  40. package/src/tool/dice-roller/i18n/nl.ts +138 -0
  41. package/src/tool/dice-roller/i18n/pl.ts +138 -0
  42. package/src/tool/dice-roller/i18n/pt.ts +138 -0
  43. package/src/tool/dice-roller/i18n/ru.ts +138 -0
  44. package/src/tool/dice-roller/i18n/sv.ts +138 -0
  45. package/src/tool/dice-roller/i18n/tr.ts +138 -0
  46. package/src/tool/dice-roller/i18n/zh.ts +138 -0
  47. package/src/tool/dice-roller/index.ts +12 -0
  48. package/src/tool/excuse-generator/i18n/de.ts +122 -0
  49. package/src/tool/excuse-generator/i18n/id.ts +122 -0
  50. package/src/tool/excuse-generator/i18n/it.ts +122 -0
  51. package/src/tool/excuse-generator/i18n/ja.ts +122 -0
  52. package/src/tool/excuse-generator/i18n/ko.ts +122 -0
  53. package/src/tool/excuse-generator/i18n/nl.ts +122 -0
  54. package/src/tool/excuse-generator/i18n/pl.ts +122 -0
  55. package/src/tool/excuse-generator/i18n/pt.ts +122 -0
  56. package/src/tool/excuse-generator/i18n/ru.ts +122 -0
  57. package/src/tool/excuse-generator/i18n/sv.ts +122 -0
  58. package/src/tool/excuse-generator/i18n/tr.ts +122 -0
  59. package/src/tool/excuse-generator/i18n/zh.ts +122 -0
  60. package/src/tool/excuse-generator/index.ts +12 -0
  61. package/src/tool/fortune-cookie/i18n/de.ts +127 -0
  62. package/src/tool/fortune-cookie/i18n/id.ts +127 -0
  63. package/src/tool/fortune-cookie/i18n/it.ts +127 -0
  64. package/src/tool/fortune-cookie/i18n/ja.ts +127 -0
  65. package/src/tool/fortune-cookie/i18n/ko.ts +127 -0
  66. package/src/tool/fortune-cookie/i18n/nl.ts +127 -0
  67. package/src/tool/fortune-cookie/i18n/pl.ts +127 -0
  68. package/src/tool/fortune-cookie/i18n/pt.ts +127 -0
  69. package/src/tool/fortune-cookie/i18n/ru.ts +127 -0
  70. package/src/tool/fortune-cookie/i18n/sv.ts +127 -0
  71. package/src/tool/fortune-cookie/i18n/tr.ts +127 -0
  72. package/src/tool/fortune-cookie/i18n/zh.ts +127 -0
  73. package/src/tool/fortune-cookie/index.ts +12 -0
  74. package/src/tool/synesthesia-painter/i18n/de.ts +122 -0
  75. package/src/tool/synesthesia-painter/i18n/fr.ts +2 -2
  76. package/src/tool/synesthesia-painter/i18n/id.ts +122 -0
  77. package/src/tool/synesthesia-painter/i18n/it.ts +122 -0
  78. package/src/tool/synesthesia-painter/i18n/ja.ts +122 -0
  79. package/src/tool/synesthesia-painter/i18n/ko.ts +122 -0
  80. package/src/tool/synesthesia-painter/i18n/nl.ts +122 -0
  81. package/src/tool/synesthesia-painter/i18n/pl.ts +122 -0
  82. package/src/tool/synesthesia-painter/i18n/pt.ts +122 -0
  83. package/src/tool/synesthesia-painter/i18n/ru.ts +122 -0
  84. package/src/tool/synesthesia-painter/i18n/sv.ts +122 -0
  85. package/src/tool/synesthesia-painter/i18n/tr.ts +122 -0
  86. package/src/tool/synesthesia-painter/i18n/zh.ts +122 -0
  87. package/src/tool/synesthesia-painter/index.ts +12 -0
  88. package/src/tool/zalgo-generator/i18n/de.ts +113 -0
  89. package/src/tool/zalgo-generator/i18n/id.ts +113 -0
  90. package/src/tool/zalgo-generator/i18n/it.ts +113 -0
  91. package/src/tool/zalgo-generator/i18n/ja.ts +113 -0
  92. package/src/tool/zalgo-generator/i18n/ko.ts +113 -0
  93. package/src/tool/zalgo-generator/i18n/nl.ts +113 -0
  94. package/src/tool/zalgo-generator/i18n/pl.ts +113 -0
  95. package/src/tool/zalgo-generator/i18n/pt.ts +113 -0
  96. package/src/tool/zalgo-generator/i18n/ru.ts +113 -0
  97. package/src/tool/zalgo-generator/i18n/sv.ts +113 -0
  98. package/src/tool/zalgo-generator/i18n/tr.ts +113 -0
  99. package/src/tool/zalgo-generator/i18n/zh.ts +113 -0
  100. package/src/tool/zalgo-generator/index.ts +12 -0
@@ -0,0 +1,138 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { DiceRollerLocaleContent } from '../index';
3
+
4
+ const slug = 'dice-roller-ru';
5
+ const title = 'Симулятор костей';
6
+ const description = 'Полный симулятор костей для ваших RPG и настольных игр. Бросайте d4, d6, d8, d10, d12, d20 и d100 с модификаторами и историей.';
7
+
8
+ const faq: DiceRollerLocaleContent['faq'] = [
9
+ {
10
+ question: 'Как симулировать бросок с преимуществом (D&D)?',
11
+ answer: 'Добавьте два кубика d20 в мешочек, дважды нажав на кнопку d20. При броске обратите внимание на два отдельных результата и оставьте больший. Отображаемое общее число будет их суммой, но вы можете увидеть каждый кубик отдельно в детализации результатов.',
12
+ },
13
+ {
14
+ question: 'Что означает зеленый или красный цвет в результатах?',
15
+ answer: 'Зеленый результат означает, что на кубике выпало максимально возможное значение («критический успех»). Красный результат означает минимальное значение («1», худший из возможных результатов). Это позволяет мгновенно замечать «криты» и «провалы».',
16
+ },
17
+ {
18
+ question: 'Можно ли добавить несколько костей одного типа?',
19
+ answer: 'Да. Каждое нажатие на кубик добавляет его в мешочек. Если вы нажмете d6 три раза, в мешочке появится «3d6». Чтобы уменьшить количество, нажмите кнопку «−» рядом с группой кубиков в мешочке.',
20
+ },
21
+ {
22
+ question: 'Насколько цифровые кости случайны по сравнению с настоящими?',
23
+ answer: 'Статистически — абсолютно. Современные движки JavaScript используют алгоритмы псевдослучайных чисел (xorshift128+) с очень высоким качеством равномерного распределения. Настоящий физический кубик может иметь микродефекты изготовления, влияющие на результат; у цифрового кубика такой проблемы нет.',
24
+ },
25
+ {
26
+ question: 'Что такое d100 и как его использовать?',
27
+ answer: 'd100 (или d%) генерирует число от 1 до 100 и используется в игровых системах на основе процентов, таких как Call of Cthulhu или Warhammer Fantasy Roleplay. Он представляет собой «прямую вероятность»: если ваш навык Скрытность равен 65%, вам нужно выбросить 65 или меньше для успеха.',
28
+ },
29
+ ];
30
+
31
+ const howTo: DiceRollerLocaleContent['howTo'] = [
32
+ { name: 'Создайте пул костей', text: 'Нажимайте на кнопки кубиков (d4, d6, d8...), чтобы добавить их в свой пул. Каждое нажатие добавляет один кубик выбранного типа. Вы можете смешивать разные типы в одном броске.' },
33
+ { name: 'Настройте модификатор', text: 'Используйте кнопки «+» и «−» рядом с модификатором, чтобы применить бонусы или штрафы (например, модификатор характеристики в D&D). Модификатор автоматически добавляется к общей сумме.' },
34
+ { name: 'Бросайте кости', text: 'Нажмите кнопку «Бросить кости». На правой панели отобразится итоговая сумма и детализация каждого кубика: критические успехи (максимум) выделены зеленым, а провалы (минимум) — красным.' },
35
+ { name: 'История бросков', text: 'Каждый бросок записывается в историю с указанием формулы кубиков, общего результата и точного времени. Вы можете очистить историю соответствующей кнопкой.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faq.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowTo> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howTo.map((step) => ({
54
+ '@type': 'HowToStep',
55
+ name: step.name,
56
+ text: step.text,
57
+ })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: title,
64
+ description,
65
+ applicationCategory: 'UtilitiesApplication',
66
+ operatingSystem: 'Web',
67
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
68
+ inLanguage: 'ru',
69
+ };
70
+
71
+ export const content: DiceRollerLocaleContent = {
72
+ slug,
73
+ title,
74
+ description,
75
+ faqTitle: 'Часто задаваемые вопросы',
76
+ bibliographyTitle: 'Библиография случая',
77
+ ui: {
78
+ title: 'Симулятор костей',
79
+ description: 'Пусть удача сопутствует вам.',
80
+ rollBtn: 'Бросить кости',
81
+ totalLabel: 'Итого',
82
+ historyLabel: 'История',
83
+ clearHistoryBtn: 'Очистить историю',
84
+ faqTitle: 'FAQ',
85
+ bibliographyTitle: 'Ссылки',
86
+ addDiceLabel: 'Добавить кости в мешочек',
87
+ bagLabel: 'Мешочек костей',
88
+ emptyBagBtn: 'Очистить',
89
+ emptyBagText: 'Нажмите на кости, чтобы добавить их',
90
+ modifierLabel: 'Модификатор',
91
+ rollManyLabel: 'Бросить $COUNT костей',
92
+ rollOneLabel: 'Бросить $COUNT кость',
93
+ preRollText: 'Добавьте кости и бросайте',
94
+ emptyHistoryText: 'История бросков появится здесь'
95
+ },
96
+ seo: [
97
+ { type: 'title', text: 'Искусство случая: история и математика игровых костей', level: 2 },
98
+ { type: 'paragraph', html: 'Кости — один из старейших генераторов случайности, созданных человечеством. <strong>Астрагалы</strong> — пяточные кости овец и коз — использовались как примитивные четырехгранные кости еще в 5000 году до н. э. в Месопотамии и Египте. Эволюция от резной кости до современных икосаэдров из эпоксидной смолы — это не просто эстетика: это путь сквозь теорию вероятностей и проектирование игровых механик.' },
99
+ { type: 'title', text: 'Стандартное семейство костей', level: 3 },
100
+ { type: 'paragraph', html: 'Самый распространенный набор костей в ролевых играх, популяризированный <strong>Dungeons &amp; Dragons</strong> в 1974 году, состоит из пяти Платоновых тел и двух дополнительных форм: d4 (тетраэдр), d6 (куб), d8 (октаэдр), d10 (пентагональный трапецоэдр), d12 (додекаэдр), d20 (икосаэдр) и d100 (процентный кубик). Каждый многогранник гарантирует равномерное распределение: все грани имеют абсолютно одинаковую вероятность выпадения.' },
101
+ { type: 'list', items: [
102
+ '<strong>d4 — тетраэдр:</strong> Самый опасный, если наступить на него босиком. Четыре треугольные грани, вероятность 25% на каждую. Обычно используется для урона кинжалом или заклинаний низкого уровня.',
103
+ '<strong>d6 — куб:</strong> Самый универсальный кубик. Присутствует во всех настольных играх со времен египетского сенета. Его кубическая геометрия гарантирует идеальное равнораспределение.',
104
+ '<strong>d8 — октаэдр:</strong> Кубик копья или боевого топора. Восемь равносторонних треугольных граней. Вероятность 12,5% на грань.',
105
+ '<strong>d10 — пентагональный трапецоэдр:</strong> Единственное не Платоново тело в стандартном наборе. Две противоположные грани на каждую «вершину». Необходим для d100 (два кубика d10 вместе).',
106
+ '<strong>d12 — додекаэдр:</strong> Кубик варвара. Двенадцать пятиугольных граней. Недооценен во многих системах, главный инструмент варвара в D&D 5e.',
107
+ '<strong>d20 — икосаэдр:</strong> Король RPG. Двадцать треугольных граней. Главный герой системы d20: определяет успех или провал почти всех действий.',
108
+ '<strong>d100 — проценты:</strong> Два кубика d10 вместе (десятки + единицы). Определяет точные вероятности в таких системах, как Call of Cthulhu или Warhammer Fantasy.',
109
+ ]},
110
+ { type: 'stats', items: [
111
+ { value: '5000 лет до н.э.', label: 'Первые кости (астрагалы)', icon: 'mdi:history' },
112
+ { value: '1974', label: 'D&D популяризировала набор', icon: 'mdi:sword' },
113
+ { value: '7 типов', label: 'Стандартные кости RPG', icon: 'mdi:dice-multiple' },
114
+ { value: '2¹²⁸', label: 'Период случайности JS', icon: 'mdi:function-variant' },
115
+ ], columns: 4 },
116
+ { type: 'title', text: 'Вероятности и кривые распределения', level: 3 },
117
+ { type: 'paragraph', html: 'Когда вы бросаете один кубик, вы получаете <strong>дискретное равномерное распределение</strong>: каждый результат имеет абсолютно одинаковую вероятность (1/n). Но как только вы объединяете несколько кубиков, математическая магия превращает эту плоскую кривую в <strong>приблизительное нормальное распределение</strong>. Вот почему 2d6 — это не то же самое, что 1d12: с двумя шестигранными кубиками вероятность выбросить 7 составляет 6/36 ≈ 16,7%, в то время как крайние значения (2 и 12) выпадают лишь в 2,8% случаев.' },
118
+ { type: 'tip', title: 'Преимущество и помеха (D&D 5e)', html: 'Механика <strong>Преимущества</strong> заключается в броске 2d20 и выборе большего результата. Математически это поднимает среднее значение с 10,5 до примерно 13,8. <strong>Помеха</strong> делает обратное: берется меньший результат, что снижает среднее до 7,2. Наш симулятор позволяет это воссоздать, добавив два d20 в мешочек и сравнив результаты.' },
119
+ { type: 'title', text: 'Модификаторы: мост между кубиком и персонажем', level: 3 },
120
+ { type: 'paragraph', html: 'В большинстве ролевых систем кубик не действует в одиночку: добавляется или вычитается <strong>модификатор</strong>, представляющий способности персонажа. В D&D 5e модификатор Силы +5 означает, что вы бросаете 1d20, прибавляете 5 и сравниваете результат с Классом Брони врага. Наш симулятор включает управление модификатором, чтобы точно отражать эти механики.' },
121
+ { type: 'tip', title: 'Стандарт нотации костей', html: 'Нотация <strong>XdY+Z</strong> является стандартом де-факто в ролевых играх: X кубиков с Y гранями плюс модификатор Z. «3d6+2» означает бросок трех шестигранных костей и прибавление 2 к итогу. Наш инструмент использует эту нотацию в истории, чтобы вы могли легко делиться бросками или записывать их.' },
122
+ { type: 'glossary', items: [
123
+ { term: 'Критический успех', definition: 'Выпадение максимального значения на кубике (например, 20 на d20). Обычно вызывает особые бонусные эффекты в большинстве систем RPG.' },
124
+ { term: 'Провал / Натуральная 1', definition: 'Выпадение минимального значения (1) на кубике. Часто приводит к драматическому провалу или негативным последствиям.' },
125
+ { term: 'Пул костей', definition: 'Группа костей, бросаемых одновременно. Пул в нашем инструменте показывает каждый тип кубика, сгруппированный по количеству (например, 3d6 + 2d8).' },
126
+ { term: 'Модификатор', definition: 'Фиксированное число, прибавляемое к результату броска или вычитаемое из него, представляющее навык персонажа, бонус характеристики или штраф за ситуацию.' },
127
+ { term: 'Процентный бросок', definition: 'Бросок с использованием двух d10 для получения результата от 1 до 100, используется в системах навыков, где способности измеряются в процентах.' },
128
+ ]},
129
+ ],
130
+ faq,
131
+ bibliography: [
132
+ { name: 'D&D Beyond – правила механики костей', url: 'https://www.dndbeyond.com/sources/basic-rules/using-ability-scores' },
133
+ { name: 'Roll20 – виртуальный стол и системы костей', url: 'https://roll20.net/' },
134
+ { name: 'Pathfinder – справочник системы d20', url: 'https://paizo.com/pathfinder' },
135
+ ],
136
+ howTo,
137
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
138
+ };
@@ -0,0 +1,138 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { DiceRollerLocaleContent } from '../index';
3
+
4
+ const slug = 'tarningsgenerator';
5
+ const title = 'Tärningsgenerator';
6
+ const description = 'En komplett tärningssimulator för dina rollspel och brädspel. Slå d4, d6, d8, d10, d12, d20 och d100 med modifierare och historik.';
7
+
8
+ const faq: DiceRollerLocaleContent['faq'] = [
9
+ {
10
+ question: 'Hur kan jag simulera ett slag med fördel (advantage) som i D&D?',
11
+ answer: 'Lägg till två d20-tärningar i påsen genom att klicka på d20-knappen två gånger. När du slår, titta på de två individuella resultaten och behåll det högsta. Det visade totalvärdet kommer att vara summan, men du kan se varje tärning separat i resultatöversikten.',
12
+ },
13
+ {
14
+ question: 'Vad betyder den gröna eller röda färgen på resultaten?',
15
+ answer: 'Gröna resultat indikerar att tärningen slog sitt högsta möjliga värde (en "krit"). Röda resultat indikerar det lägsta värdet (en "1", det sämsta möjliga resultatet). Detta gör det enkelt att upptäcka kritiska framgångar och misslyckanden på ett ögonblick.',
16
+ },
17
+ {
18
+ question: 'Kan jag lägga till flera tärningar av samma typ?',
19
+ answer: 'Ja. Varje klick på en tärning lägger till den i påsen. Om du klickar på d6 tre gånger visar påsen "3d6". För att minska antalet, klicka på "−"-knappen som visas bredvid varje tärningsgrupp i påsen.',
20
+ },
21
+ {
22
+ question: 'Är digitala tärningar lika slumpmässiga som fysiska?',
23
+ answer: 'Statistiskt sett, ja. Moderna JavaScript-motorer använder pseudoslumpartade algoritmer (xorshift128+) med en mycket högkvalitativ likformig fördelning. En riktig fysisk tärning kan ha små tillverkningsdefekter som påverkar resultaten; den digitala tärningen har inte det problemet.',
24
+ },
25
+ {
26
+ question: 'Vad är d100 och hur används den?',
27
+ answer: 'd100 (eller d%) genererar ett tal från 1 till 100 och används i procentbaserade spelsystem, som Call of Cthulhu eller Warhammer Fantasy Roleplay. Den representerar "direkt sannolikhet": om din Stealth-färdighet är 65%, behöver du slå 65 eller lägre för att lyckas.',
28
+ },
29
+ ];
30
+
31
+ const howTo: DiceRollerLocaleContent['howTo'] = [
32
+ { name: 'Bygg din tärningspool', text: 'Klicka på tärningsknapparna (d4, d6, d8...) för att lägga till dem i din pool. Varje klick lägger till en tärning av den valda typen. Du kan blanda olika typer i samma slag.' },
33
+ { name: 'Justera modifieraren', text: 'Använd "+"- och "−"-knapparna bredvid modifieraren för att lägga till bonusar eller avdrag (som förmågemodifieraren i D&D). Modifieraren läggs automatiskt till i totalen.' },
34
+ { name: 'Slå tärningarna', text: 'Tryck på knappen "Slå tärning". Den högra panelen visar det slutliga resultatet och en översikt av varje enskild tärning, med "krits" (maxvärde) i grönt och misslyckanden (minvärde) i rött.' },
35
+ { name: 'Kontrollera historiken', text: 'Varje slag registreras i historiken med tärningsnotationen som användes, det totala resultatet och den exakta tidpunkten. Du kan rensa historiken med tillhörande knapp.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faq.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowTo> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howTo.map((step) => ({
54
+ '@type': 'HowToStep',
55
+ name: step.name,
56
+ text: step.text,
57
+ })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: title,
64
+ description,
65
+ applicationCategory: 'UtilitiesApplication',
66
+ operatingSystem: 'Web',
67
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
68
+ inLanguage: 'sv',
69
+ };
70
+
71
+ export const content: DiceRollerLocaleContent = {
72
+ slug,
73
+ title,
74
+ description,
75
+ faqTitle: 'Vanliga frågor',
76
+ bibliographyTitle: 'Slumpbibliografi',
77
+ ui: {
78
+ title: 'Tärningsgenerator',
79
+ description: 'Må lyckan vara med dig.',
80
+ rollBtn: 'Slå tärning',
81
+ totalLabel: 'Total',
82
+ historyLabel: 'Historik',
83
+ clearHistoryBtn: 'Rensa historik',
84
+ faqTitle: 'FAQ',
85
+ bibliographyTitle: 'Referenser',
86
+ addDiceLabel: 'Lägg till tärningar i påsen',
87
+ bagLabel: 'Tärningspåse',
88
+ emptyBagBtn: 'Töm',
89
+ emptyBagText: 'Klicka på tärningarna för att lägga till',
90
+ modifierLabel: 'Modifierare',
91
+ rollManyLabel: 'Slå $COUNT tärningar',
92
+ rollOneLabel: 'Slå $COUNT tärning',
93
+ preRollText: 'Lägg till tärningar och slå',
94
+ emptyHistoryText: 'Historik över slag visas här'
95
+ },
96
+ seo: [
97
+ { type: 'title', text: 'Slumpens konst: Tärningars historia och matematik', level: 2 },
98
+ { type: 'paragraph', html: 'Tärningar är en av mänsklighetens äldsta slumpgeneratorer. <strong>Astragaler</strong> — fotleder från får och getter — användes som primitiva fyrsidiga tärningar så tidigt som 5000 f.Kr. i Mesopotamien och Egypten. Evolutionen från snidade ben till moderna ikosaedrar i epoxiharts är inte bara estetisk: det är en resa genom sannolikhetsteori och spelmekanisk design.' },
99
+ { type: 'title', text: 'Den vanliga tärningsfamiljen', level: 3 },
100
+ { type: 'paragraph', html: 'Den mest spridda uppsättningen tärningar i rollspel — populariserad av <strong>Dungeons &amp; Dragons</strong> 1974 — består av de fem platonska kropparna plus två ytterligare former: d4 (tetraeder), d6 (kub), d8 (oktaeder), d10 (pentagonal trapetsoeder), d12 (dodekaeder), d20 (ikosaeder) och d100 (procenttärning). Varje polyeder garanterar en likformig fördelning: alla sidor har exakt samma sannolikhet att hamna uppåt.' },
101
+ { type: 'list', items: [
102
+ '<strong>d4 – Tetraeder:</strong> Den farligaste att trampa på barfota. Fyra triangulära sidor, 25% sannolikhet per sida. Används ofta för dolkskada eller trollformler på låg nivå.',
103
+ '<strong>d6 – Kub:</strong> Den mest universella tärningen. Har funnits i alla brädspel sedan det egyptiska senet. Dess kubiska geometri garanterar perfekt fördelning.',
104
+ '<strong>d8 – Oktaeder:</strong> Tärningen för spjut eller stridsyxa. Åtta liksidiga triangulära sidor. 12,5% sannolikhet per sida.',
105
+ '<strong>d10 – Pentagonal trapetsoeder:</strong> Den enda icke-platonska kroppen i standarduppsättningen. Två motsatta sidor per "hörn". Viktig för d100 (två d10:or kombinerade).',
106
+ '<strong>d12 – Dodekaeder:</strong> Barbarens tärning. Tolv femkantiga sidor. Underskattas i många system, men huvudperson för barbaren i D&D 5e.',
107
+ '<strong>d20 – Ikosaeder:</strong> Rollspelens kung. Tjugo triangulära sidor. Huvudperson i d20-systemet: avgör framgång eller misslyckande för nästan alla handlingar.',
108
+ '<strong>d100 – Procenttärning:</strong> Två d10:or kombinerade (tiotal + ental). Definierar exakta sannolikheter i system som Call of Cthulhu eller Warhammer Fantasy.',
109
+ ]},
110
+ { type: 'stats', items: [
111
+ { value: '5000 f.Kr.', label: 'Första tärningarna (astragaler)', icon: 'mdi:history' },
112
+ { value: '1974', label: 'D&D populariserade settet', icon: 'mdi:sword' },
113
+ { value: '7 typer', label: 'Standard-rollspelstärningar', icon: 'mdi:dice-multiple' },
114
+ { value: '2¹²⁸', label: 'JS-slumpens period', icon: 'mdi:function-variant' },
115
+ ], columns: 4 },
116
+ { type: 'title', text: 'Sannolikheter och fördelningskurvor', level: 3 },
117
+ { type: 'paragraph', html: 'När du slår en enkel tärning får du en <strong>diskret likformig fördelning</strong>: varje resultat har exakt samma sannolikhet (1/n). Men så fort du kombinerar flera tärningar omvandlas den platta kurvan till en <strong>approximativ normalfördelning</strong>. Det är därför 2d6 inte är samma sak som 1d12: med två sexsidiga tärningar är sannolikheten att slå en 7:a 6/36 ≈ 16,7%, medan extremvärdena (2 och 12) bara inträffar 2,8% av gångerna.' },
118
+ { type: 'tip', title: 'Fördel och nackdel (Advantage/Disadvantage, D&D 5e)', html: 'Mekaniken <strong>Fördel</strong> innebär att man slår 2d20 och behåller det högre resultatet. Matematiskt höjer detta genomsnittet från 10,5 till ca 13,8. <strong>Nackdel</strong> gör motsatsen: behåll det lägre, vilket sänker genomsnittet till ca 7,2. Vår generator låter dig simulera detta genom att lägga till två d20 i påsen och jämföra resultaten.' },
119
+ { type: 'title', text: 'Modifierare: Bron mellan tärning och karaktär', level: 3 },
120
+ { type: 'paragraph', html: 'I de flesta rollspelssystem agerar inte tärningen ensam: en <strong>modifierare</strong> som representerar karaktärens förmågor läggs till eller dras ifrån. I D&D 5e betyder en Strength-modifierare på +5 att du slår 1d20, lägger till 5 och jämför resultatet mot fiendens Armor Class. Vår generator innehåller en kontroll för modifierare för att troget återspegla dessa mekaniker.' },
121
+ { type: 'tip', title: 'Standard för tärningsnotation', html: 'Notation <strong>XdY+Z</strong> är standard inom rollspel: X tärningar med Y sidor med modifierare Z. "3d6+2" betyder slå tre sexsidiga tärningar och lägg till 2 till totalen. Vårt verktyg använder denna notation i historiken så att du enkelt kan dela eller spara dina slag.' },
122
+ { type: 'glossary', items: [
123
+ { term: 'Kritisk träff', definition: 'Ett slag med det högsta värdet på en tärning (t.ex. en 20:a på en d20). Utlöser vanligtvis speciella bonus-effekter i de flesta rollspelssystem.' },
124
+ { term: 'Fumble / Nat 1', definition: 'Att slå det lägsta värdet (1) på en tärning. Resulterar ofta i ett dramatiskt misslyckande eller negativa konsekvenser.' },
125
+ { term: 'Dice Pool', definition: 'En samling tärningar som slås samtidigt. Poolen i vårt verktyg visar varje tärningstyp grupperad efter antal (t.ex. 3d6 + 2d8).' },
126
+ { term: 'Modifierare', definition: 'Ett fast tal som läggs till eller dras ifrån ett resultat, och som representerar en karaktärs skicklighet, attributbonus eller situationell bestraffning.' },
127
+ { term: 'Procentslag', definition: 'Ett slag som använder två d10 för att producera ett resultat från 1–100, används i färdighetsbaserade system där förmågor mäts i procent.' },
128
+ ]},
129
+ ],
130
+ faq,
131
+ bibliography: [
132
+ { name: 'D&D Beyond – Tärningsmekanikens regler', url: 'https://www.dndbeyond.com/sources/basic-rules/using-ability-scores' },
133
+ { name: 'Roll20 – Virtuellt spelbord och tärningssystem', url: 'https://roll20.net/' },
134
+ { name: 'Pathfinder – d20 System Reference', url: 'https://paizo.com/pathfinder' },
135
+ ],
136
+ howTo,
137
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
138
+ };
@@ -0,0 +1,138 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { DiceRollerLocaleContent } from '../index';
3
+
4
+ const slug = 'zar-atma';
5
+ const title = 'Zar Atma';
6
+ const description = 'RPG ve masaüstü oyunlarınız için eksiksiz bir zar simülatörü. Değiştiriciler ve geçmiş kaydı ile d4, d6, d8, d10, d12, d20 ve d100 atın.';
7
+
8
+ const faq: DiceRollerLocaleContent['faq'] = [
9
+ {
10
+ question: 'Avantajlı zar atma (D&D) nasıl simüle edilir?',
11
+ answer: 'd20 düğmesine iki kez tıklayarak torbaya iki adet d20 zarı ekleyin. Zar atıldığında, her iki bireysel sonucu gözlemleyin ve yüksek olanı tutun. Görüntülenen toplam, iki zarın toplamı olacaktır ancak sonuç dökümünde her zarı ayrı ayrı görebilirsiniz.',
12
+ },
13
+ {
14
+ question: 'Sonuçlardaki yeşil veya kırmızı rengin anlamı nedir?',
15
+ answer: 'Yeşil sonuçlar, o zarın mümkün olan en yüksek değerini attığını ("kritik başarı") gösterir. Kırmızı sonuçlar ise en düşük değeri ("1", yani en kötü olası sonuç) gösterir. Bu, kritik başarıları ve başarısızlıkları bir bakışta tespit etmeyi kolaylaştırır.',
16
+ },
17
+ {
18
+ question: 'Aynı tipten birden fazla zar ekleyebilir miyim?',
19
+ answer: 'Evet. Bir zara her tıklandığında torbaya eklenir. d6\'ya üç kez tıklarsanız, torba "3d6" gösterecektir. Sayıyı azaltmak için, torbadaki her zar grubunun yanında görünen "−" düğmesine tıklayın.',
20
+ },
21
+ {
22
+ question: 'Dijital zarlar fiziksel olanlar kadar rastgele mi?',
23
+ answer: 'İstatistiksel olarak, evet. Modern JavaScript motorları, çok yüksek kalitede tekdüze dağılıma sahip yalancı rastgele (pseudorandom) algoritmalar (xorshift128+) kullanır. Gerçek bir fiziksel zar, sonuçları saptıran küçük üretim kusurlarına sahip olabilir; dijital zarlarda bu sorun yoktur.',
24
+ },
25
+ {
26
+ question: 'd100 nedir ve nasıl kullanılır?',
27
+ answer: 'd100 (veya d%), 1\'den 100\'e kadar bir sayı üretir ve Call of Cthulhu veya Warhammer Fantasy Roleplay gibi yüzde tabanlı oyun sistemlerinde kullanılır. "Doğrudan olasılığı" temsil eder: Gizlilik (Stealth) yeteneğiniz %65 ise, başarılı olmak için 65 veya daha düşük atmanız gerekir.',
28
+ },
29
+ ];
30
+
31
+ const howTo: DiceRollerLocaleContent['howTo'] = [
32
+ { name: 'Zar havuzunu oluşturun', text: 'Zar düğmelerine (d4, d6, d8...) tıklayarak havuzunuza ekleyin. Her bir tıklama, seçilen tiple bir zar ekler. Aynı atışta farklı tipleri karıştırabilirsiniz.' },
33
+ { name: 'Değiştiriciyi ayarlayın', text: 'Bonuslar veya cezalar uygulamak için (D&D\'deki yetenek değiştiricisi gibi) değiştiricinin yanındaki "+" ve "−" düğmelerini kullanın. Değiştirici otomatik olarak toplama eklenir.' },
34
+ { name: 'Zar atın', text: '"Zar At" düğmesine basın. Sağ panel, nihai toplamı ve her bir zarın dökümünü gösterir; kritik vuruşlar (maksimum) yeşil, başarısızlıklar (minimum) ise kırmızı ile belirtilir.' },
35
+ { name: 'Geçmişi kontrol edin', text: 'Her atış, kullanılan zar ifadesi, toplam sonuç ve tam zamanıyla birlikte geçmişe kaydedilir. Geçmişi ilgili düğme ile temizleyebilirsiniz.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faq.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowTo> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howTo.map((step) => ({
54
+ '@type': 'HowToStep',
55
+ name: step.name,
56
+ text: step.text,
57
+ })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: title,
64
+ description,
65
+ applicationCategory: 'UtilitiesApplication',
66
+ operatingSystem: 'Web',
67
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
68
+ inLanguage: 'tr',
69
+ };
70
+
71
+ export const content: DiceRollerLocaleContent = {
72
+ slug,
73
+ title,
74
+ description,
75
+ faqTitle: 'Sıkça Sorulan Sorular',
76
+ bibliographyTitle: 'Şans Kaynakçası',
77
+ ui: {
78
+ title: 'Zar Atma',
79
+ description: 'Şansınız bol olsun.',
80
+ rollBtn: 'Zar At',
81
+ totalLabel: 'Toplam',
82
+ historyLabel: 'Geçmiş',
83
+ clearHistoryBtn: 'Geçmişi Temizle',
84
+ faqTitle: 'SSS',
85
+ bibliographyTitle: 'Referanslar',
86
+ addDiceLabel: 'Torbaya zar ekleyin',
87
+ bagLabel: 'Zar torbası',
88
+ emptyBagBtn: 'Boşalt',
89
+ emptyBagText: 'Eklemek için zarlara tıklayın',
90
+ modifierLabel: 'Değiştirici',
91
+ rollManyLabel: '$COUNT zar at',
92
+ rollOneLabel: '$COUNT zar at',
93
+ preRollText: 'Zar ekle ve at',
94
+ emptyHistoryText: 'Zar geçmişi burada görünecektir'
95
+ },
96
+ seo: [
97
+ { type: 'title', text: 'Rastgeleliğin Sanatı: Zarın Tarihi ve Matematiği', level: 2 },
98
+ { type: 'paragraph', html: 'Zarlar insanlığın en eski rastgelelik oluşturucularından biridir. <strong>Astragali</strong> (koyun ve keçilerin aşık kemikleri), M.Ö. 5000 kadar eski bir tarihte Mezopotamya ve Mısır\'da ilkel dört yüzlü zarlar olarak kullanılıyordu. Oyulmuş kemikten modern epoksi reçine ikosahedronlara (yirmi yüzlü) geçiş sadece estetik bir evrim değil; olasılık teorisi ve oyun mekaniği tasarımı üzerinden geçen bir yolculuktur.' },
99
+ { type: 'title', text: 'Standart Zar Ailesi', level: 3 },
100
+ { type: 'paragraph', html: '1974\'te <strong>Dungeons &amp; Dragons</strong> tarafından popüler hale getirilen, rol yapma oyunlarındaki en geniş zar seti, beş Platonik cisim ve iki ek şekilden oluşur: d4 (tetrahedron), d6 (küp), d8 (oktahedron), d10 (beşgen trapezohedron), d12 (dodekahedron), d20 (ikosahedron) ve d100 (yüzdelik zar). Her bir çokyüzlü tekdüze dağılımı garanti eder: tüm yüzlerin gelme olasılığı tam olarak aynıdır.' },
101
+ { type: 'list', items: [
102
+ '<strong>d4 – Tetrahedron:</strong> Çıplak ayakla basıldığında en tehlikelisi. Dört üçgen yüzey, yüzey başına %25 olasılık. Genellikle hançer hasarı veya düşük seviyeli büyüler için kullanılır.',
103
+ '<strong>d6 – Küp:</strong> En evrensel zar. Mısır oyunu Senet\'ten beri tüm masa oyunlarında mevcuttur. Kübik geometrisi mükemmel eşit dağılımı garanti eder.',
104
+ '<strong>d8 – Oktahedron:</strong> Mızrak veya savaş baltası zarı. Sekiz eşkenar üçgen yüzey. Yüzey başına %12,5 olasılık.',
105
+ '<strong>d10 – Beşgen Trapezohedron:</strong> Standart set içindeki tek Platonik cisim olmayan şekil. "Tepe" başına iki zıt yüz. d100 (iki d10 birleşimi) için temeldir.',
106
+ '<strong>d12 – Dodekahedron:</strong> Barbarın zarı. On iki beşgen yüz. Birçok sistemde değeri hafife alınır, D&D 5e Barbar sınıfının yıldızıdır.',
107
+ '<strong>d20 – Ikosahedron:</strong> RPG\'nin kralı. Yirmi üçgen yüzey. d20 sisteminin ana kahramanıdır: neredeyse tüm eylemlerin başarısını veya başarısızlığını belirler.',
108
+ '<strong>d100 – Yüzdelik:</strong> İki d10 birleşimi (onluklar + birlikler). Call of Cthulhu veya Warhammer Fantasy gibi sistemlerde hassas olasılıkları tanımlar.',
109
+ ]},
110
+ { type: 'stats', items: [
111
+ { value: 'M.Ö. 5000', label: 'İlk zarlar (astragali)', icon: 'mdi:history' },
112
+ { value: '1974', label: 'D&D seti popülerleştirdi', icon: 'mdi:sword' },
113
+ { value: '7 tip', label: 'Standart RPG zarları', icon: 'mdi:dice-multiple' },
114
+ { value: '2¹²⁸', label: 'JS rastgelelik periyodu', icon: 'mdi:function-variant' },
115
+ ], columns: 4 },
116
+ { type: 'title', text: 'Olasılıklar ve Dağılım Eğrileri', level: 3 },
117
+ { type: 'paragraph', html: 'Tek bir zar attığınızda, <strong>ayrık tekdüze dağılım</strong> elde edersiniz: her sonucun olasılığı tam olarak aynıdır (1/n). Ancak birden fazla zarı birleştirdiğiniz anda, matematiksel sihir bu düz eğriyi <strong>yaklaşık normal dağılıma</strong> dönüştürür. Bu yüzden 2d6, 1d12 ile aynı değildir: iki adet altı yüzlü zarla 7 atma olasılığı 6/36 ≈ %16,7 iken, uç değerler (2 ve 12) zamanın yalnızca %2,8\'inde gerçekleşir.' },
118
+ { type: 'tip', title: 'Avantaj ve Dezavantaj (D&D 5e)', html: '<strong>Avantaj</strong> mekaniği, 2d20 atılıp yüksek olan sonucun tutulmasından oluşur. Matematiksel olarak bu, ortalamayı 10,5\'ten yaklaşık 13,8\'e yükseltir. <strong>Dezavantaj</strong> ise tam tersini yapar: düşük olanı alır, ortalamayı yaklaşık 7,2\'ye düşürür. Atıcımız, torbaya iki d20 ekleyip bireysel sonuçları karşılaştırarak bunu simüle etmenizi sağlar.' },
119
+ { type: 'title', text: 'Değiştiriciler: Zar ve Karakter Arasındaki Köprü', level: 3 },
120
+ { type: 'paragraph', html: 'Çoğu RPG sisteminde zar tek başına hareket etmez: karakterin yeteneklerini temsil eden bir <strong>değiştirici</strong> eklenir veya çıkarılır. D&D 5e\'de +5\'lik bir Güç değiştiricisi, 1d20 attığınızı, 5 eklediğinizi ve sonucu düşmanın Zırh Sınıfına (AC) karşı kontrol ettiğinizi ifade eder. Atıcımız, bu mekanikleri aslına uygun olarak yansıtmak için bir değiştirici kontrolü içerir.' },
121
+ { type: 'tip', title: 'Zar Gösterim Standardı', html: '<strong>XdY+Z</strong> gösterimi rol yapma oyunlarında fiili standarttır: Z değiştiricili Y yüzlü X zar sayısı. "3d6+2", üç adet altı yüzlü zar atıp toplama 2 ekle anlamına gelir. Aracımız, atışlarınızı kolayca paylaşabilmeniz veya kaydedebilmeniz için geçmişte bu gösterimi kullanır.' },
122
+ { type: 'glossary', items: [
123
+ { term: 'Kritik Vuruş', definition: 'Bir zarda maksimum değerin atılması (örneğin d20\'de 20 atmak). Çoğu RPG sisteminde genellikle özel bonus etkileri tetikler.' },
124
+ { term: 'Fumble / Doğal 1', definition: 'Bir zarda minimum değerin (1) atılması. Genellikle dramatik bir başarısızlık veya olumsuz sonuçla sonuçlanır.' },
125
+ { term: 'Dice Pool (Zar Havuzu)', definition: 'Aynı anda atılan zarlar koleksiyonu. Aracımızdaki havuz, her zar tipini sayıya göre gruplandırılmış olarak gösterir (örneğin 3d6 + 2d8).' },
126
+ { term: 'Modifier (Değiştirici)', definition: 'Bir karakterin becerisini, nitelik bonusunu veya durumsal cezasını temsil eden, bir zar sonucuna eklenen veya sonucundan çıkarılan sabit bir sayı.' },
127
+ { term: 'Yüzdelik Atış', definition: 'Yeteneklerin yüzde olarak ölçüldüğü beceri tabanlı sistemlerde kullanılan, 1–100 arası bir sonuç üretmek için iki d10 kullanan bir atış.' },
128
+ ]},
129
+ ],
130
+ faq,
131
+ bibliography: [
132
+ { name: 'D&D Beyond – Zar mekaniği kuralları', url: 'https://www.dndbeyond.com/sources/basic-rules/using-ability-scores' },
133
+ { name: 'Roll20 – Sanal masaüstü ve zar sistemleri', url: 'https://roll20.net/' },
134
+ { name: 'Pathfinder – d20 Sistem Referansı', url: 'https://paizo.com/pathfinder' },
135
+ ],
136
+ howTo,
137
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
138
+ };
@@ -0,0 +1,138 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { DiceRollerLocaleContent } from '../index';
3
+
4
+ const slug = 'dice-roller-zh';
5
+ const title = '在线掷骰子';
6
+ const description = '一个为您的 RPG 和桌面游戏而设计的全功能骰子模拟器。支持掷 d4、d6、d8、d10、d12、d20 和 d100,并带有修正值和历史记录功能。';
7
+
8
+ const faq: DiceRollerLocaleContent['faq'] = [
9
+ {
10
+ question: '我该如何模拟优势掷骰(Advantage, D&D)?',
11
+ answer: '点击两次 d20 按钮,将两个 d20 骰子放入袋中。掷骰后,观察两个独立的结果并取较高值。显示的“总计”将是两者的和,但您可以在结果明细中查看每个骰子的具体点数。',
12
+ },
13
+ {
14
+ question: '结果中的绿色或红色代表什么?',
15
+ answer: '绿色的结果表示该骰子掷出了可能的最大值(“大成功”或“暴击”)。红色的结果代表最小值(“1”,最糟糕的结果)。这让您能一眼发现关键成功或大失败。',
16
+ },
17
+ {
18
+ question: '我可以添加多个同类型的骰子吗?',
19
+ answer: '可以。每次点击一个骰子都会将其添加到投掷池中。如果您点击 d6 三次,投掷池将显示“3d6”。如需减少数量,点击投掷池中每个骰子组旁边的“−”按钮即可。',
20
+ },
21
+ {
22
+ question: '数字骰子和物理骰子一样随机吗?',
23
+ answer: '从统计学上讲,是的。现代 JavaScript 引擎使用高质量的均匀分布伪随机算法(xorshift128+)。现实中的物理骰子可能会因制造工艺的小瑕疵产生偏差;数字骰子则完全不存在这个问题。',
24
+ },
25
+ {
26
+ question: '什么是 d100,它该如何使用?',
27
+ answer: 'd100(或 d%)会生成 1 到 100 之间的数字,常用于基于百分比的游戏系统,如《克苏鲁的呼唤》或《战锤奇幻角色扮演》。它代表“直接概率”:如果您的潜行技能是 65%,那么您需要掷出 65 或更小的数字才能成功。',
28
+ },
29
+ ];
30
+
31
+ const howTo: DiceRollerLocaleContent['howTo'] = [
32
+ { name: '构建骰子池', text: '点击骰子按钮(d4、d6、d8...)将它们添加到池中。每次点击都会添加一个所选类型的骰子。您可以在同一次投掷中混合不同类型的骰子。' },
33
+ { name: '调整修正值', text: '使用修正值旁边的“+”和“−”按钮来应用奖励或惩罚(如 D&D 中的属性修正值)。修正值会自动累加到总计中。' },
34
+ { name: '掷骰子', text: '点击“掷骰子”按钮。右侧面板显示最终总计以及每个骰子的具体点数,大成功(最大值)以绿色标记,大失败(最小值)以红色标记。' },
35
+ { name: '查看历史记录', text: '每次投掷都会连同使用的骰子表达式、总计结果和精确时间一起记录在历史中。您可以使用相应按钮清除历史记录。' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faq.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowTo> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howTo.map((step) => ({
54
+ '@type': 'HowToStep',
55
+ name: step.name,
56
+ text: step.text,
57
+ })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: title,
64
+ description,
65
+ applicationCategory: 'UtilitiesApplication',
66
+ operatingSystem: 'Web',
67
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
68
+ inLanguage: 'zh',
69
+ };
70
+
71
+ export const content: DiceRollerLocaleContent = {
72
+ slug,
73
+ title,
74
+ description,
75
+ faqTitle: '常见问题解答',
76
+ bibliographyTitle: '概率文献',
77
+ ui: {
78
+ title: '在线掷骰子',
79
+ description: '愿运气与你同在。',
80
+ rollBtn: '掷骰子',
81
+ totalLabel: '总计',
82
+ historyLabel: '历史记录',
83
+ clearHistoryBtn: '清除历史',
84
+ faqTitle: '常见问题',
85
+ bibliographyTitle: '参考资料',
86
+ addDiceLabel: '将骰子添加到池中',
87
+ bagLabel: '投掷池',
88
+ emptyBagBtn: '清空',
89
+ emptyBagText: '点击骰子进行添加',
90
+ modifierLabel: '修正值',
91
+ rollManyLabel: '投掷 $COUNT 个骰子',
92
+ rollOneLabel: '投掷 $COUNT 个骰子',
93
+ preRollText: '添加骰子后掷骰',
94
+ emptyHistoryText: '投掷历史将显示在此处'
95
+ },
96
+ seo: [
97
+ { type: 'title', text: '随机的艺术:骰子的历史与数学', level: 2 },
98
+ { type: 'paragraph', html: '骰子是人类最古老的随机数生成器之一。早在公元前 5000 年,美索不达米亚和埃及就曾将<strong>距骨</strong>(牛羊的足踝骨)用作原始的四面骰子。从雕刻骨头到现代环氧树脂二十面体的演变不仅仅是美学上的追求,更是一段穿越概率论和游戏机制设计的旅程。' },
99
+ { type: 'title', text: '标准骰子系列', level: 3 },
100
+ { type: 'paragraph', html: '自 1974 年由 <strong>《龙与地下城》</strong> 推而广之以来,角色扮演游戏中最广泛使用的骰子组合由五个柏拉图多面体加上两个额外形状组成:d4(正四面体)、d6(正六面体/立方体)、d8(正八面体)、d10(五角偏方三八面体)、d12(正十二面体)、d20(正二十面体)以及 d100(百分比骰)。每种多面体都保证了均匀分布:所有面出现的概率完全相同。' },
101
+ { type: 'list', items: [
102
+ '<strong>d4 – 正四面体:</strong> 如果赤脚踩到它是最危险的。四个三角形面,每面概率 25%。通常用于匕首伤害或低级法术。',
103
+ '<strong>d6 – 立方体:</strong> 最通用的骰子。自埃及塞尼特棋以来就存在于所有棋盘游戏中。其立方几何形状保证了完美的等概率分布。',
104
+ '<strong>d8 – 正八面体:</strong> 长矛或战斧的骰子。八个等边三角形面,每面概率 12.5%。',
105
+ '<strong>d10 – 五角偏方三八面体:</strong> 标准组合中唯一的非柏拉图多面体。每个“顶点”有两个相对的面。是 d100(两个 d10 组合)的基础。',
106
+ '<strong>d12 – 正十二面体:</strong> 野蛮人之骰。十二个正五边形面。在很多系统中被低估,但在 D&D 5e 的野蛮人职业中是主角。',
107
+ '<strong>d20 – 正二十面体:</strong> RPG 之王。二十个三角形面。d20 系统的核心:决定了几乎所有动作的成败。',
108
+ '<strong>d100 – 百分比骰:</strong> 两个 d10 组合(十位+个位)。在《克苏鲁的呼唤》或《战锤》等系统中定义精细概率。',
109
+ ]},
110
+ { type: 'stats', items: [
111
+ { value: '5000 BC', label: '首个骰子(距骨)', icon: 'mdi:history' },
112
+ { value: '1974', label: 'D&D 普及了此组合', icon: 'mdi:sword' },
113
+ { value: '7 种', label: '标准 RPG 骰子', icon: 'mdi:dice-multiple' },
114
+ { value: '2¹²⁸', label: 'JS 随机周期', icon: 'mdi:function-variant' },
115
+ ], columns: 4 },
116
+ { type: 'title', text: '概率与分布曲线', level: 3 },
117
+ { type: 'paragraph', html: '当您掷单个骰子时,会得到<strong>离散均匀分布</strong>:每个结果的概率完全相同 (1/n)。但只要您组合多个骰子,数学魔法就会将平坦的曲线转化为<strong>近似正态分布</strong>。这就是为什么 2d6 不等于 1d12:使用两个六面骰子掷出 7 的概率是 6/36 ≈ 16.7%,而极端结果(2 和 12)仅占 2.8%。' },
118
+ { type: 'tip', title: '优势与劣势 (D&D 5e)', html: '<strong>优势</strong>机制是指掷 2d20 并取较高值。从数学上讲,这会将平均值从 10.5 提高到约 13.8。<strong>劣势</strong>反之:取较低值,平均值降至约 7.2。我们的模拟器允许您通过向袋中添加两个 d20 并比较结果来模拟这一点。' },
119
+ { type: 'title', text: '修正值:骰子与角色之间的桥梁', level: 3 },
120
+ { type: 'paragraph', html: '在大多数 RPG 系统中,骰子并非独立工作:会加减代表角色能力的<strong>修正值</strong>。在 D&D 5e 中,力量修正值为 +5 意味着您掷 1d20 后加 5,并根据敌人的护甲等级 (AC) 检查结果。我们的模拟器包含修正值控制功能,以如实反映这些机制。' },
121
+ { type: 'tip', title: '骰子记法标准', html: '<strong>XdY+Z</strong> 记法是角色扮演游戏中的事实标准:X 个 Y 面的骰子,带有修正值 Z。“3d6+2”意味着掷三个六面骰子并将结果加 2。我们的工具在历史记录中使用此记法,方便您轻松共享或记录您的掷骰结果。' },
122
+ { type: 'glossary', items: [
123
+ { term: '暴击 (Critical Hit)', definition: '掷出骰子的最大值(例如 d20 掷出 20)。在大多数 RPG 系统中通常会触发特殊的奖励效果。' },
124
+ { term: '大失败 / 自发 1 (Nat 1)', definition: '掷出骰子的最小值 (1)。通产导致戏剧性的失败或负面后果。' },
125
+ { term: '骰子池 (Dice Pool)', definition: '同时掷出的一组骰子。我们工具中的投掷池会按数量分组显示每种骰子类型(例如 3d6 + 2d8)。' },
126
+ { term: '修正值 (Modifier)', definition: '一个加在或减去掷骰结果的固定数值,代表角色的技能、属性奖励或环境惩罚。' },
127
+ { term: '百分号掷骰 (Percentile Roll)', definition: '使用两个 d10 产生 1-100 结果的掷骰,用于基于技能且能力以百分比衡量的系统。' },
128
+ ]},
129
+ ],
130
+ faq,
131
+ bibliography: [
132
+ { name: 'D&D Beyond – 掷骰机制规则', url: 'https://www.dndbeyond.com/sources/basic-rules/using-ability-scores' },
133
+ { name: 'Roll20 – 虚拟桌面与骰子系统', url: 'https://roll20.net/' },
134
+ { name: 'Pathfinder – d20 系统参考', url: 'https://paizo.com/pathfinder' },
135
+ ],
136
+ howTo,
137
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
138
+ };
@@ -33,6 +33,18 @@ export const diceRoller: CreativeToolEntry<DiceRollerUI> = {
33
33
  es: () => import('./i18n/es').then((m) => m.content),
34
34
  en: () => import('./i18n/en').then((m) => m.content),
35
35
  fr: () => import('./i18n/fr').then((m) => m.content),
36
+ de: () => import('./i18n/de').then((m) => m.content),
37
+ id: () => import('./i18n/id').then((m) => m.content),
38
+ it: () => import('./i18n/it').then((m) => m.content),
39
+ ja: () => import('./i18n/ja').then((m) => m.content),
40
+ ko: () => import('./i18n/ko').then((m) => m.content),
41
+ nl: () => import('./i18n/nl').then((m) => m.content),
42
+ pl: () => import('./i18n/pl').then((m) => m.content),
43
+ pt: () => import('./i18n/pt').then((m) => m.content),
44
+ ru: () => import('./i18n/ru').then((m) => m.content),
45
+ sv: () => import('./i18n/sv').then((m) => m.content),
46
+ tr: () => import('./i18n/tr').then((m) => m.content),
47
+ zh: () => import('./i18n/zh').then((m) => m.content),
36
48
  },
37
49
  };
38
50