@pie-players/pie-players-shared 0.3.66 → 0.3.68

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 (89) hide show
  1. package/README.md +59 -0
  2. package/dist/formative/index.d.ts +16 -0
  3. package/dist/formative/index.js +5 -0
  4. package/dist/formative/mastery.d.ts +16 -0
  5. package/dist/formative/mastery.js +43 -0
  6. package/dist/formative/outcome.d.ts +19 -0
  7. package/dist/formative/outcome.js +90 -0
  8. package/dist/formative/policy.d.ts +37 -0
  9. package/dist/formative/policy.js +86 -0
  10. package/dist/formative/session.d.ts +19 -0
  11. package/dist/formative/session.js +113 -0
  12. package/dist/formative/state.d.ts +60 -0
  13. package/dist/formative/state.js +140 -0
  14. package/dist/formative/types.d.ts +164 -0
  15. package/dist/formative/types.js +13 -0
  16. package/dist/i18n/catalogs.d.ts +38 -0
  17. package/dist/i18n/catalogs.js +47 -0
  18. package/dist/i18n/index.d.ts +28 -4
  19. package/dist/i18n/index.js +34 -3
  20. package/dist/i18n/language-tags.d.ts +51 -0
  21. package/dist/i18n/language-tags.js +84 -0
  22. package/dist/i18n/messages/en-US.d.ts +601 -0
  23. package/dist/i18n/messages/en-US.js +617 -0
  24. package/dist/i18n/messages/nl-NL.d.ts +516 -0
  25. package/dist/i18n/messages/nl-NL.js +516 -0
  26. package/dist/i18n/provider.d.ts +168 -0
  27. package/dist/i18n/provider.js +472 -0
  28. package/dist/i18n/types.d.ts +177 -28
  29. package/dist/i18n/types.js +6 -2
  30. package/dist/index.d.ts +3 -1
  31. package/dist/index.js +2 -0
  32. package/dist/pie/custom-element-define.d.ts +24 -0
  33. package/dist/pie/custom-element-define.js +36 -6
  34. package/dist/pie/index.d.ts +1 -1
  35. package/dist/pie/index.js +1 -1
  36. package/dist/pie/versioned-tag.js +3 -2
  37. package/dist/security/sanitize-forbidden-lists.d.ts +8 -0
  38. package/dist/security/sanitize-forbidden-lists.js +41 -0
  39. package/dist/security/sanitize-item-markup.js +3 -36
  40. package/dist/security/sanitize-svg-icon.js +3 -25
  41. package/dist/security/wrap-overwide-images.d.ts +5 -10
  42. package/dist/security/wrap-overwide-images.js +13 -62
  43. package/dist/security/wrap-overwide-tables.d.ts +5 -10
  44. package/dist/security/wrap-overwide-tables.js +13 -62
  45. package/dist/security/wrap-overwide.d.ts +51 -0
  46. package/dist/security/wrap-overwide.js +91 -0
  47. package/dist/server/npm-auth-env.d.ts +13 -0
  48. package/dist/server/npm-auth-env.js +64 -0
  49. package/dist/timed-media/index.d.ts +17 -0
  50. package/dist/timed-media/index.js +16 -0
  51. package/dist/timed-media/media-element-source.d.ts +36 -0
  52. package/dist/timed-media/media-element-source.js +121 -0
  53. package/dist/timed-media/policy.d.ts +36 -0
  54. package/dist/timed-media/policy.js +297 -0
  55. package/dist/timed-media/session.d.ts +21 -0
  56. package/dist/timed-media/session.js +85 -0
  57. package/dist/timed-media/state.d.ts +66 -0
  58. package/dist/timed-media/state.js +357 -0
  59. package/dist/timed-media/types.d.ts +343 -0
  60. package/dist/timed-media/types.js +12 -0
  61. package/dist/tools/term-lookup.d.ts +189 -0
  62. package/dist/tools/term-lookup.js +284 -0
  63. package/dist/types/index.d.ts +105 -1
  64. package/dist/ui/attribute-coercion.d.ts +1 -0
  65. package/dist/ui/attribute-coercion.js +19 -0
  66. package/dist/ui/content-styles.d.ts +11 -3
  67. package/dist/ui/content-styles.js +42 -13
  68. package/dist/ui/first-focusable.d.ts +22 -0
  69. package/dist/ui/first-focusable.js +47 -0
  70. package/dist/ui/focus-trap.js +7 -2
  71. package/dist/ui/pointer-drag.d.ts +30 -0
  72. package/dist/ui/pointer-drag.js +34 -0
  73. package/package.json +35 -3
  74. package/dist/i18n/loader.d.ts +0 -35
  75. package/dist/i18n/loader.js +0 -132
  76. package/dist/i18n/simple-i18n.d.ts +0 -68
  77. package/dist/i18n/simple-i18n.js +0 -198
  78. package/dist/i18n/translations/ar/common.json +0 -36
  79. package/dist/i18n/translations/ar/toolkit.json +0 -48
  80. package/dist/i18n/translations/ar/tools.json +0 -103
  81. package/dist/i18n/translations/en/common.json +0 -36
  82. package/dist/i18n/translations/en/toolkit.json +0 -48
  83. package/dist/i18n/translations/en/tools.json +0 -103
  84. package/dist/i18n/translations/es/common.json +0 -36
  85. package/dist/i18n/translations/es/toolkit.json +0 -48
  86. package/dist/i18n/translations/es/tools.json +0 -103
  87. package/dist/i18n/translations/zh/common.json +0 -36
  88. package/dist/i18n/translations/zh/toolkit.json +0 -48
  89. package/dist/i18n/translations/zh/tools.json +0 -103
@@ -1,198 +0,0 @@
1
- /**
2
- * Simple I18n Implementation
3
- *
4
- * Lightweight i18n without external dependencies.
5
- * Used for standalone components that don't need the full service architecture.
6
- */
7
- /**
8
- * Simple I18n class for standalone use
9
- */
10
- export class SimpleI18n {
11
- locale = "en";
12
- fallbackLocale = "en";
13
- direction = "ltr";
14
- translations = new Map();
15
- listeners = new Set();
16
- loadingPromises = new Map();
17
- config;
18
- constructor(config = {}) {
19
- this.config = config;
20
- this.fallbackLocale = config.fallbackLocale || "en";
21
- // Load bundled translations
22
- if (config.bundledTranslations) {
23
- for (const [locale, bundle] of Object.entries(config.bundledTranslations)) {
24
- this.translations.set(locale, bundle);
25
- }
26
- }
27
- }
28
- /**
29
- * Initialize with locale
30
- */
31
- async initialize(config) {
32
- Object.assign(this.config, config);
33
- const locale = config.locale || this.detectBrowserLocale();
34
- await this.setLocale(locale);
35
- }
36
- /**
37
- * Translate a key
38
- */
39
- t(key, params) {
40
- const translation = this.getTranslation(key);
41
- return this.interpolate(translation, params);
42
- }
43
- /**
44
- * Translate with pluralization
45
- */
46
- tn(key, count, params) {
47
- const translation = this.getTranslation(key);
48
- if (typeof translation === "object") {
49
- const pluralForm = this.selectPluralForm(count, this.locale);
50
- const text = translation[pluralForm] || translation.other;
51
- return this.interpolate(text, { ...params, count });
52
- }
53
- return this.interpolate(translation, { ...params, count });
54
- }
55
- /**
56
- * Get current locale
57
- */
58
- getLocale() {
59
- return this.locale;
60
- }
61
- /**
62
- * Change locale
63
- */
64
- async setLocale(locale) {
65
- // Check if already loading
66
- if (this.loadingPromises.has(locale)) {
67
- await this.loadingPromises.get(locale);
68
- return;
69
- }
70
- // Check if already loaded
71
- if (this.translations.has(locale)) {
72
- this.applyLocale(locale);
73
- return;
74
- }
75
- // Load translations
76
- const loadingPromise = this.loadTranslationsForLocale(locale);
77
- this.loadingPromises.set(locale, loadingPromise);
78
- try {
79
- await loadingPromise;
80
- this.applyLocale(locale);
81
- }
82
- finally {
83
- this.loadingPromises.delete(locale);
84
- }
85
- }
86
- /**
87
- * Get current direction
88
- */
89
- getDirection() {
90
- return this.direction;
91
- }
92
- /**
93
- * Get available locales
94
- */
95
- getAvailableLocales() {
96
- return Array.from(this.translations.keys());
97
- }
98
- /**
99
- * Check if locale is loaded
100
- */
101
- isLocaleLoaded(locale) {
102
- return this.translations.has(locale);
103
- }
104
- /**
105
- * Subscribe to changes
106
- */
107
- subscribe(listener) {
108
- this.listeners.add(listener);
109
- return () => {
110
- this.listeners.delete(listener);
111
- };
112
- }
113
- /**
114
- * Check if key exists
115
- */
116
- hasKey(key) {
117
- const bundle = this.translations.get(this.locale);
118
- return !!bundle?.translations[key];
119
- }
120
- notifyListeners() {
121
- for (const listener of this.listeners) {
122
- listener();
123
- }
124
- }
125
- applyLocale(locale) {
126
- const bundle = this.translations.get(locale);
127
- if (!bundle)
128
- return;
129
- this.locale = locale;
130
- this.direction = bundle.direction;
131
- this.applyDOMDirection();
132
- this.notifyListeners();
133
- }
134
- applyDOMDirection() {
135
- if (typeof document === "undefined")
136
- return;
137
- document.documentElement.setAttribute("dir", this.direction);
138
- document.documentElement.setAttribute("lang", this.locale);
139
- }
140
- async loadTranslationsForLocale(locale) {
141
- if (!this.config.loadTranslations) {
142
- throw new Error(`No translation loader configured for locale: ${locale}`);
143
- }
144
- const bundle = await this.config.loadTranslations(locale);
145
- this.translations.set(locale, bundle);
146
- }
147
- getTranslation(key) {
148
- // Try current locale
149
- const currentBundle = this.translations.get(this.locale);
150
- if (currentBundle?.translations[key]) {
151
- return currentBundle.translations[key];
152
- }
153
- // Try fallback locale
154
- const fallbackBundle = this.translations.get(this.fallbackLocale);
155
- if (fallbackBundle?.translations[key]) {
156
- return fallbackBundle.translations[key];
157
- }
158
- // Missing key
159
- if (this.config.onMissingKey) {
160
- this.config.onMissingKey(key, this.locale);
161
- }
162
- return key;
163
- }
164
- interpolate(text, params) {
165
- if (!params)
166
- return text;
167
- return text.replace(/\{(\w+)\}/g, (match, key) => {
168
- return params[key]?.toString() || match;
169
- });
170
- }
171
- selectPluralForm(count, locale) {
172
- // Use Intl.PluralRules if available
173
- if (typeof Intl !== "undefined" && Intl.PluralRules) {
174
- try {
175
- const rules = new Intl.PluralRules(locale);
176
- const category = rules.select(count);
177
- return category;
178
- }
179
- catch {
180
- // Fall through to simple rules
181
- }
182
- }
183
- // Fallback to simple rules
184
- if (count === 0)
185
- return "zero";
186
- if (count === 1)
187
- return "one";
188
- return "other";
189
- }
190
- detectBrowserLocale() {
191
- if (typeof navigator === "undefined")
192
- return "en";
193
- const browserLang = navigator.language ||
194
- (navigator.languages && navigator.languages[0]) ||
195
- "en";
196
- return browserLang.split("-")[0];
197
- }
198
- }
@@ -1,36 +0,0 @@
1
- {
2
- "common": {
3
- "save": "حفظ",
4
- "cancel": "إلغاء",
5
- "close": "إغلاق",
6
- "loading": "جار التحميل...",
7
- "error": "خطأ",
8
- "retry": "إعادة المحاولة",
9
- "back": "رجوع",
10
- "next": "التالي",
11
- "previous": "السابق",
12
- "submit": "إرسال",
13
- "continue": "متابعة",
14
- "finish": "إنهاء",
15
- "yes": "نعم",
16
- "no": "لا",
17
- "ok": "موافق",
18
- "settings": "الإعدادات",
19
- "language": "اللغة",
20
- "theme": "المظهر",
21
- "settings_aria": "فتح قائمة الإعدادات",
22
- "rtl_notice": "اتجاه النص من اليمين إلى اليسار نشط",
23
- "question": {
24
- "one": "سؤال",
25
- "other": "أسئلة"
26
- },
27
- "item": {
28
- "one": "عنصر",
29
- "other": "عناصر"
30
- },
31
- "character": {
32
- "one": "حرف",
33
- "other": "حروف"
34
- }
35
- }
36
- }
@@ -1,48 +0,0 @@
1
- {
2
- "assessment": {
3
- "title": "التقييم",
4
- "questions": {
5
- "one": "{count} سؤال",
6
- "other": "{count} أسئلة"
7
- },
8
- "question_of": "السؤال {current} من {total}",
9
- "student_name": "اسم الطالب",
10
- "fullscreen": "ملء الشاشة",
11
- "exit_fullscreen": "الخروج من ملء الشاشة",
12
- "enter_fullscreen_aria": "الدخول إلى ملء الشاشة",
13
- "exit_fullscreen_aria": "الخروج من ملء الشاشة"
14
- },
15
- "accommodation": {
16
- "audio": "صوت",
17
- "audio_aria": "تبديل الصوت/تحويل النص إلى كلام",
18
- "contrast": "التباين",
19
- "contrast_aria": "تبديل تباين الألوان"
20
- },
21
- "navigation": {
22
- "back": "← رجوع",
23
- "next": "التالي ←",
24
- "previous": "السابق",
25
- "submit": "إرسال",
26
- "navigate_to": "الانتقال إلى السؤال {index}",
27
- "section": "القسم"
28
- },
29
- "section": {
30
- "title": "بنية التقييم",
31
- "add": "+ إضافة قسم",
32
- "untitled": "قسم بدون عنوان",
33
- "remove": "حذف القسم",
34
- "items": {
35
- "one": "{count} عنصر",
36
- "other": "{count} عناصر"
37
- },
38
- "aria_label": "القسم: {title}",
39
- "drop_zone": "إسقاط العناصر هنا",
40
- "unassigned": "عناصر غير مخصصة",
41
- "unassigned_instruction": "اسحب هذه العناصر إلى الأقسام",
42
- "unassigned_item_aria": "سؤال غير مخصص: {title}"
43
- },
44
- "item": {
45
- "load_error": "تعذر تحميل السؤال.",
46
- "untitled": "بدون عنوان"
47
- }
48
- }
@@ -1,103 +0,0 @@
1
- {
2
- "tool": {
3
- "calculator": "آلة حاسبة",
4
- "calculator_aria": "فتح الآلة الحاسبة",
5
- "graph": "رسم بياني",
6
- "graph_aria": "فتح أداة الرسم البياني",
7
- "periodic_table": "الجدول الدوري",
8
- "periodic_table_aria": "فتح الجدول الدوري",
9
- "protractor": "منقلة",
10
- "protractor_aria": "فتح المنقلة",
11
- "ruler": "مسطرة",
12
- "ruler_aria": "فتح المسطرة",
13
- "line_reader": "قارئ السطر",
14
- "line_reader_aria": "فتح قارئ السطر",
15
- "text_to_speech": "تحويل النص إلى كلام",
16
- "text_to_speech_aria": "فتح تحويل النص إلى كلام",
17
- "color_scheme": "نظام الألوان",
18
- "color_scheme_aria": "فتح محدد نظام الألوان",
19
- "annotation": "التعليق التوضيحي",
20
- "annotation_aria": "فتح شريط أدوات التعليق التوضيحي",
21
- "answer_eliminator": "محذف الإجابات"
22
- },
23
- "tts": {
24
- "title": "تحويل النص إلى كلام",
25
- "close_aria": "إغلاق تحويل النص إلى كلام",
26
- "failed_init": "فشل في تهيئة TTS",
27
- "initializing": "جار التهيئة...",
28
- "select_text": "حدد نصًا على الصفحة لقراءته بصوت عالٍ.",
29
- "selected": "{count} {character} محددة",
30
- "speed": "السرعة:",
31
- "rate_slow": "بطيء",
32
- "rate_slower": "أبطأ",
33
- "rate_normal": "عادي",
34
- "rate_faster": "أسرع",
35
- "rate_fast": "سريع",
36
- "rate_very_fast": "سريع جدًا",
37
- "play": "تشغيل",
38
- "pause": "إيقاف مؤقت",
39
- "resume": "استئناف",
40
- "stop": "إيقاف",
41
- "speaking": "يتحدث...",
42
- "paused": "متوقف مؤقتًا"
43
- },
44
- "calculator": {
45
- "title": "آلة حاسبة",
46
- "aria_label": "أداة الآلة الحاسبة - استخدم Alt+مفاتيح الأسهم للتحرك، Escape للإغلاق",
47
- "settings": "إعدادات الآلة الحاسبة",
48
- "close": "إغلاق الآلة الحاسبة",
49
- "settings_title": "إعدادات الآلة الحاسبة",
50
- "type": "نوع الآلة الحاسبة",
51
- "basic": "أساسي",
52
- "scientific": "علمي",
53
- "graphing": "رسم بياني",
54
- "configuration": "التكوين",
55
- "config_help": "هذه الإعدادات مفيدة للاختبار. قد تكون مخفية أو مقيدة للطلاب في الإنتاج.",
56
- "restricted_mode": "الوضع المقيد (وضع الاختبار)",
57
- "angle_mode": "وضع الزاوية",
58
- "degrees": "درجات",
59
- "radians": "راديان",
60
- "qwerty": "لوحة مفاتيح QWERTY",
61
- "screen_reader": "دعم قارئ الشاشة",
62
- "accessible_display": "عرض يمكن الوصول إليه",
63
- "settings_menu": "قائمة الإعدادات",
64
- "notes": "ملاحظات",
65
- "folders": "مجلدات",
66
- "sliders": "أشرطة التمرير",
67
- "display_mode": "وضع العرض",
68
- "classic": "كلاسيكي",
69
- "mathprint": "MathPrint"
70
- },
71
- "color_scheme": {
72
- "title": "نظام الألوان",
73
- "description": "حدد نظام الألوان لتحسين سهولة القراءة وتقليل إجهاد العين.",
74
- "close_aria": "إغلاق محدد نظام الألوان",
75
- "select_aria": "تحديد نظام الألوان",
76
- "default": "افتراضي",
77
- "default_desc": "ألوان PIE القياسية",
78
- "black_on_white": "أسود على أبيض",
79
- "black_on_white_desc": "تباين عالٍ لسهولة القراءة",
80
- "white_on_black": "أبيض على أسود",
81
- "white_on_black_desc": "تباين عالٍ معكوس",
82
- "rose_on_green": "وردي على أخضر",
83
- "rose_on_green_desc": "يقلل من الوهج",
84
- "yellow_on_blue": "أصفر على أزرق",
85
- "yellow_on_blue_desc": "بديل تباين عالٍ",
86
- "black_on_rose": "أسود على وردي",
87
- "black_on_rose_desc": "خلفية دافئة",
88
- "light_gray_on_dark_gray": "رمادي فاتح على رمادي داكن",
89
- "light_gray_on_dark_gray_desc": "سطوع مخفض"
90
- },
91
- "annotation": {
92
- "yellow_aria": "تمييز أصفر",
93
- "pink_aria": "تمييز وردي",
94
- "blue_aria": "تمييز أزرق",
95
- "green_aria": "تمييز أخضر",
96
- "read_selection": "قراءة التحديد",
97
- "translation": "طلب ترجمة",
98
- "clear": "مسح التمييزات"
99
- },
100
- "ruler": {
101
- "switched_to": "تم التبديل إلى {unit}"
102
- }
103
- }
@@ -1,36 +0,0 @@
1
- {
2
- "common": {
3
- "save": "Save",
4
- "cancel": "Cancel",
5
- "close": "Close",
6
- "loading": "Loading...",
7
- "error": "Error",
8
- "retry": "Retry",
9
- "back": "Back",
10
- "next": "Next",
11
- "previous": "Previous",
12
- "submit": "Submit",
13
- "continue": "Continue",
14
- "finish": "Finish",
15
- "yes": "Yes",
16
- "no": "No",
17
- "ok": "OK",
18
- "settings": "Settings",
19
- "language": "Language",
20
- "theme": "Theme",
21
- "settings_aria": "Open settings menu",
22
- "rtl_notice": "RTL text direction active",
23
- "question": {
24
- "one": "Question",
25
- "other": "Questions"
26
- },
27
- "item": {
28
- "one": "Item",
29
- "other": "Items"
30
- },
31
- "character": {
32
- "one": "character",
33
- "other": "characters"
34
- }
35
- }
36
- }
@@ -1,48 +0,0 @@
1
- {
2
- "assessment": {
3
- "title": "Assessment",
4
- "questions": {
5
- "one": "{count} Question",
6
- "other": "{count} Questions"
7
- },
8
- "question_of": "Question {current} of {total}",
9
- "student_name": "Student Name",
10
- "fullscreen": "Fullscreen",
11
- "exit_fullscreen": "Exit Fullscreen",
12
- "enter_fullscreen_aria": "Enter fullscreen",
13
- "exit_fullscreen_aria": "Exit fullscreen"
14
- },
15
- "accommodation": {
16
- "audio": "Audio",
17
- "audio_aria": "Toggle audio/text-to-speech",
18
- "contrast": "Contrast",
19
- "contrast_aria": "Toggle color contrast"
20
- },
21
- "navigation": {
22
- "back": "← Back",
23
- "next": "Next →",
24
- "previous": "Previous",
25
- "submit": "Submit",
26
- "navigate_to": "Navigate to question {index}",
27
- "section": "Section"
28
- },
29
- "section": {
30
- "title": "Assessment Structure",
31
- "add": "+ Add Section",
32
- "untitled": "Untitled Section",
33
- "remove": "Remove section",
34
- "items": {
35
- "one": "{count} item",
36
- "other": "{count} items"
37
- },
38
- "aria_label": "Section: {title}",
39
- "drop_zone": "Drop items here",
40
- "unassigned": "Unassigned Items",
41
- "unassigned_instruction": "Drag these items into sections",
42
- "unassigned_item_aria": "Unassigned question: {title}"
43
- },
44
- "item": {
45
- "load_error": "Question could not be loaded.",
46
- "untitled": "Untitled"
47
- }
48
- }
@@ -1,103 +0,0 @@
1
- {
2
- "tool": {
3
- "calculator": "Calculator",
4
- "calculator_aria": "Open calculator",
5
- "graph": "Graph",
6
- "graph_aria": "Open graphing tool",
7
- "periodic_table": "Periodic Table",
8
- "periodic_table_aria": "Open periodic table",
9
- "protractor": "Protractor",
10
- "protractor_aria": "Open protractor",
11
- "ruler": "Ruler",
12
- "ruler_aria": "Open ruler",
13
- "line_reader": "Line Reader",
14
- "line_reader_aria": "Open line reader",
15
- "text_to_speech": "Text-to-Speech",
16
- "text_to_speech_aria": "Open text-to-speech",
17
- "color_scheme": "Color Scheme",
18
- "color_scheme_aria": "Open color scheme selector",
19
- "annotation": "Annotation",
20
- "annotation_aria": "Open annotation toolbar",
21
- "answer_eliminator": "Answer Eliminator"
22
- },
23
- "tts": {
24
- "title": "Text-to-Speech",
25
- "close_aria": "Close text-to-speech",
26
- "failed_init": "Failed to initialize TTS",
27
- "initializing": "Initializing...",
28
- "select_text": "Select text on the page to read it aloud.",
29
- "selected": "{count} {character} selected",
30
- "speed": "Speed:",
31
- "rate_slow": "Slow",
32
- "rate_slower": "Slower",
33
- "rate_normal": "Normal",
34
- "rate_faster": "Faster",
35
- "rate_fast": "Fast",
36
- "rate_very_fast": "Very Fast",
37
- "play": "Play",
38
- "pause": "Pause",
39
- "resume": "Resume",
40
- "stop": "Stop",
41
- "speaking": "Speaking...",
42
- "paused": "Paused"
43
- },
44
- "calculator": {
45
- "title": "Calculator",
46
- "aria_label": "Calculator tool - Tab to reach title bar controls. On the title bar, Arrow keys move the window, Shift+Arrow resizes it, Home re-centers, and Escape closes.",
47
- "settings": "Calculator settings",
48
- "close": "Close calculator",
49
- "settings_title": "Calculator Settings",
50
- "type": "Calculator Type",
51
- "basic": "Basic",
52
- "scientific": "Scientific",
53
- "graphing": "Graphing",
54
- "configuration": "Configuration",
55
- "config_help": "These settings are useful for testing. They may be hidden or restricted for students in production.",
56
- "restricted_mode": "Restricted Mode (Test Mode)",
57
- "angle_mode": "Angle Mode",
58
- "degrees": "Degrees",
59
- "radians": "Radians",
60
- "qwerty": "QWERTY Keyboard",
61
- "screen_reader": "Screen Reader Support",
62
- "accessible_display": "Accessible Display",
63
- "settings_menu": "Settings Menu",
64
- "notes": "Notes",
65
- "folders": "Folders",
66
- "sliders": "Sliders",
67
- "display_mode": "Display Mode",
68
- "classic": "Classic",
69
- "mathprint": "MathPrint"
70
- },
71
- "color_scheme": {
72
- "title": "Color Scheme",
73
- "description": "Select a color scheme to improve readability and reduce eye strain.",
74
- "close_aria": "Close color scheme selector",
75
- "select_aria": "Select color scheme",
76
- "default": "Default",
77
- "default_desc": "Standard PIE colors",
78
- "black_on_white": "Black on White",
79
- "black_on_white_desc": "High contrast for readability",
80
- "white_on_black": "White on Black",
81
- "white_on_black_desc": "Inverse high contrast",
82
- "rose_on_green": "Rose on Green",
83
- "rose_on_green_desc": "Reduces glare",
84
- "yellow_on_blue": "Yellow on Blue",
85
- "yellow_on_blue_desc": "High contrast alternative",
86
- "black_on_rose": "Black on Rose",
87
- "black_on_rose_desc": "Warm background",
88
- "light_gray_on_dark_gray": "Light Gray on Dark Gray",
89
- "light_gray_on_dark_gray_desc": "Reduced brightness"
90
- },
91
- "annotation": {
92
- "yellow_aria": "Yellow highlight",
93
- "pink_aria": "Pink highlight",
94
- "blue_aria": "Blue highlight",
95
- "green_aria": "Green highlight",
96
- "read_selection": "Read selection",
97
- "translation": "Translation request",
98
- "clear": "Clear highlights"
99
- },
100
- "ruler": {
101
- "switched_to": "Switched to {unit}"
102
- }
103
- }
@@ -1,36 +0,0 @@
1
- {
2
- "common": {
3
- "save": "Guardar",
4
- "cancel": "Cancelar",
5
- "close": "Cerrar",
6
- "loading": "Cargando...",
7
- "error": "Error",
8
- "retry": "Reintentar",
9
- "back": "Atrás",
10
- "next": "Siguiente",
11
- "previous": "Anterior",
12
- "submit": "Enviar",
13
- "continue": "Continuar",
14
- "finish": "Finalizar",
15
- "yes": "Sí",
16
- "no": "No",
17
- "ok": "OK",
18
- "settings": "Configuración",
19
- "language": "Idioma",
20
- "theme": "Tema",
21
- "settings_aria": "Abrir menú de configuración",
22
- "rtl_notice": "Dirección de texto RTL activa",
23
- "question": {
24
- "one": "Pregunta",
25
- "other": "Preguntas"
26
- },
27
- "item": {
28
- "one": "Ítem",
29
- "other": "Ítems"
30
- },
31
- "character": {
32
- "one": "carácter",
33
- "other": "caracteres"
34
- }
35
- }
36
- }
@@ -1,48 +0,0 @@
1
- {
2
- "assessment": {
3
- "title": "Evaluación",
4
- "questions": {
5
- "one": "{count} Pregunta",
6
- "other": "{count} Preguntas"
7
- },
8
- "question_of": "Pregunta {current} de {total}",
9
- "student_name": "Nombre del Estudiante",
10
- "fullscreen": "Pantalla Completa",
11
- "exit_fullscreen": "Salir de Pantalla Completa",
12
- "enter_fullscreen_aria": "Entrar en pantalla completa",
13
- "exit_fullscreen_aria": "Salir de pantalla completa"
14
- },
15
- "accommodation": {
16
- "audio": "Audio",
17
- "audio_aria": "Alternar audio/texto a voz",
18
- "contrast": "Contraste",
19
- "contrast_aria": "Alternar contraste de color"
20
- },
21
- "navigation": {
22
- "back": "← Atrás",
23
- "next": "Siguiente →",
24
- "previous": "Anterior",
25
- "submit": "Enviar",
26
- "navigate_to": "Navegar a la pregunta {index}",
27
- "section": "Sección"
28
- },
29
- "section": {
30
- "title": "Estructura de Evaluación",
31
- "add": "+ Agregar Sección",
32
- "untitled": "Sección Sin Título",
33
- "remove": "Eliminar sección",
34
- "items": {
35
- "one": "{count} ítem",
36
- "other": "{count} ítems"
37
- },
38
- "aria_label": "Sección: {title}",
39
- "drop_zone": "Soltar ítems aquí",
40
- "unassigned": "Ítems No Asignados",
41
- "unassigned_instruction": "Arrastra estos ítems a las secciones",
42
- "unassigned_item_aria": "Pregunta no asignada: {title}"
43
- },
44
- "item": {
45
- "load_error": "No se pudo cargar la pregunta.",
46
- "untitled": "Sin Título"
47
- }
48
- }