visualifyjs 2.5.3-2.dev → 3.0.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 (252) hide show
  1. package/.claude/mem/TIMELINE.md +36 -0
  2. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
  3. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
  4. package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
  5. package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
  6. package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
  7. package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
  8. package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
  9. package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
  10. package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
  11. package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
  12. package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
  13. package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
  14. package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
  15. package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
  16. package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
  17. package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
  18. package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
  19. package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
  20. package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
  21. package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
  22. package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
  23. package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
  24. package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
  25. package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
  26. package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
  27. package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
  28. package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
  29. package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
  30. package/.claude/settings.local.json +21 -0
  31. package/.github/workflows/static.yml.bak +51 -51
  32. package/.sisyphus/boulder.json +65 -0
  33. package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
  34. package/LICENSE +674 -674
  35. package/README.md +94 -59
  36. package/config-overrides.js +31 -31
  37. package/dist/stats.html +4949 -0
  38. package/dist/visualify-3d.esm.js +1 -0
  39. package/dist/visualify-3d.js +1 -0
  40. package/dist/visualify-core.esm.js +1 -0
  41. package/dist/visualify-core.js +1 -0
  42. package/dist/visualify-docs.esm.js +1 -0
  43. package/dist/visualify-docs.js +1 -0
  44. package/dist/visualify-loader.js +1 -0
  45. package/dist/visualify-pages.esm.js +1 -0
  46. package/dist/visualify-pages.js +1 -0
  47. package/dist/visualify-portal.esm.js +1 -0
  48. package/dist/visualify-portal.js +1 -0
  49. package/dist/visualify-shared.js +26571 -0
  50. package/dist/visualify.js +1 -188
  51. package/docs/CHANGELOG.md +148 -0
  52. package/docs/cli/commands.md +513 -0
  53. package/docs/configuration/visualify-json.md +474 -0
  54. package/docs/docs/3d-visualization.md +374 -0
  55. package/docs/docs/CLI.md +303 -34
  56. package/docs/docs/README.md +65 -65
  57. package/docs/docs/Rechart/bar.md +190 -190
  58. package/docs/docs/Rechart/funnel.md +241 -241
  59. package/docs/docs/Rechart/line.md +355 -355
  60. package/docs/docs/Rechart/pie.md +225 -225
  61. package/docs/docs/Rechart/radar.md +253 -253
  62. package/docs/docs/Rechart/scatter.md +298 -298
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -44
  66. package/docs/docs/components/dotBio.md +87 -34
  67. package/docs/docs/components/echart.md +171 -82
  68. package/docs/docs/components/html.md +61 -34
  69. package/docs/docs/components/macaron.md +156 -145
  70. package/docs/docs/components/markdown.md +42 -0
  71. package/docs/docs/components/more.md +183 -142
  72. package/docs/docs/components/plotly.md +132 -62
  73. package/docs/docs/components/scatterL.md +171 -70
  74. package/docs/docs/components/visium.md +112 -57
  75. package/docs/docs/configuration.md +121 -121
  76. package/docs/docs/deploy.md +31 -31
  77. package/docs/docs/docsify-plugin.md +655 -0
  78. package/docs/docs/hmr.md +165 -0
  79. package/docs/docs/i18n.md +332 -0
  80. package/docs/docs/log.md +30 -9
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -124
  83. package/docs/docs/rechart-attributes.md +74 -74
  84. package/docs/docs/rechart-basic-usage.md +160 -162
  85. package/docs/docs/theme.md +5 -5
  86. package/docs/docs/typescript.md +306 -0
  87. package/docs/docs/visual-editor.md +359 -0
  88. package/docs/index.html +85 -71
  89. package/docs/manifest.json +23 -23
  90. package/docs/migration/v3-migration.md +392 -0
  91. package/docs/static/css/fluff-stuff.css +169 -169
  92. package/docs/static/css/font-awesome.min.css +4 -4
  93. package/docs/static/css/visualify.css +6 -25
  94. package/docs/static/js/3d-viz-examples.js +181 -0
  95. package/docs/static/js/configuration.js +630 -448
  96. package/docs/static/js/visualify.js +1 -188
  97. package/package.json +106 -84
  98. package/rollup.config.mjs +766 -76
  99. package/src/_css/404.css +115 -115
  100. package/src/_css/App.css +37 -37
  101. package/src/_css/autoSuggestion.css +26 -26
  102. package/src/_css/circular-progress.css +32 -32
  103. package/src/_css/index.css +36 -36
  104. package/src/_css/modern.css +350 -25
  105. package/src/_media/corner.svg +8 -8
  106. package/src/_media/download.svg +3 -3
  107. package/src/_media/logo.svg +14 -14
  108. package/src/_test/App.test.js +15 -15
  109. package/src/_utils/reportWebVitals.js +13 -13
  110. package/src/a11y/README.md +177 -0
  111. package/src/a11y/aria-labels.js +339 -0
  112. package/src/a11y/color-contrast.js +535 -0
  113. package/src/a11y/index.js +197 -0
  114. package/src/a11y/keyboard-nav.js +523 -0
  115. package/src/a11y/styles.css +165 -0
  116. package/src/cli/commands/dev.js +214 -0
  117. package/src/cli/commands/docs.js +521 -0
  118. package/src/cli/commands/edit.js +379 -0
  119. package/src/cli/commands/init.js +213 -0
  120. package/src/cli/commands/portal.js +236 -0
  121. package/src/cli/dev-server.js +530 -0
  122. package/src/cli/hmr.js +456 -0
  123. package/src/cli/index.js +180 -0
  124. package/src/cli/utils/config.js +207 -0
  125. package/src/cli/utils/logger.js +241 -0
  126. package/src/config/defaults.ts +122 -0
  127. package/src/config/index.ts +72 -0
  128. package/src/config/loader.ts +478 -0
  129. package/src/config/schema.ts +227 -0
  130. package/src/config/validator.ts +337 -0
  131. package/src/core/appContext.js +34 -27
  132. package/src/core/components/Bar.js +383 -0
  133. package/src/core/components/Bar3D.js +473 -0
  134. package/src/core/components/LargeDatasetChart.js +296 -0
  135. package/src/core/components/Line3D.js +310 -0
  136. package/src/core/components/Scatter.js +392 -188
  137. package/src/core/components/Scatter3D.js +455 -0
  138. package/src/core/components/ScatterBio.js +601 -572
  139. package/src/core/components/Surface3D.js +326 -0
  140. package/src/core/components/ThreeCustom.js +648 -0
  141. package/src/core/components/ThreeScene.js +459 -0
  142. package/src/core/components/VisiumPlot.js +191 -165
  143. package/src/core/components/browser.js +42 -42
  144. package/src/core/components/dotplot.js +413 -413
  145. package/src/core/components/html.js +29 -29
  146. package/src/core/components/list.js +178 -178
  147. package/src/core/components/macaron.js +206 -201
  148. package/src/core/components/markdown.js +56 -56
  149. package/src/core/components/parser.scatterBio.js +582 -587
  150. package/src/core/components/ratio.js +82 -80
  151. package/src/core/components/scatterL.js +206 -173
  152. package/src/core/components/searchbar.js +156 -131
  153. package/src/core/components/selection.js +310 -193
  154. package/src/core/components/timeline.js +236 -281
  155. package/src/core/components/visium.js +114 -97
  156. package/src/core/data-processor.js +413 -0
  157. package/src/core/fetch/condfetch.js +82 -82
  158. package/src/core/fetch/fetch.js +92 -92
  159. package/src/core/fetch/json.js +29 -29
  160. package/src/core/fetch/vfetch.js +42 -42
  161. package/src/core/hmr-client.js +724 -0
  162. package/src/core/liveEditor.js +44 -44
  163. package/src/core/modules/codeEditorWithPreview.js +104 -104
  164. package/src/core/modules/echarts/common.js +20 -20
  165. package/src/core/modules/echarts/gl.js +228 -0
  166. package/src/core/modules/echarts/presetHandler.js +41 -41
  167. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
  168. package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
  169. package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
  170. package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
  171. package/src/core/modules/echarts.js +70 -71
  172. package/src/core/modules/echartsUtils.js +43 -43
  173. package/src/core/modules/echartswitcher.js +227 -152
  174. package/src/core/modules/replotly/presetHandler.js +24 -24
  175. package/src/core/modules/replotly/presets/minimum.js +18 -18
  176. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
  177. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
  178. package/src/core/modules/replotly.js +74 -71
  179. package/src/core/modules/threejs/Camera.js +373 -0
  180. package/src/core/modules/threejs/Lighting.js +459 -0
  181. package/src/core/modules/threejs/Renderer.js +364 -0
  182. package/src/core/modules/threejs/Scene.js +266 -0
  183. package/src/core/modules/threejs/index.js +155 -0
  184. package/src/core/pages/404.js +50 -50
  185. package/src/core/pages/error.js +27 -27
  186. package/src/core/pages/jsonPage.js +62 -62
  187. package/src/core/pages/loading.js +44 -44
  188. package/src/core/parser/echart.data.js +204 -183
  189. package/src/core/parser/echart.features.js +125 -125
  190. package/src/core/parser/echart.general.js +147 -147
  191. package/src/core/parser/echart.hilbert.js +57 -57
  192. package/src/core/parser/echart.parser.js +210 -210
  193. package/src/core/parser/echart.series.js +67 -67
  194. package/src/core/parser/echart.types.js +76 -76
  195. package/src/core/parser/plotly.config.js +10 -10
  196. package/src/core/parser/plotly.data.js +132 -132
  197. package/src/core/parser/plotly.layout.js +9 -9
  198. package/src/core/parser/plotly.violin.js +18 -18
  199. package/src/core/recharts.js +361 -62
  200. package/src/core/router/alias.js +49 -49
  201. package/src/core/router/jsonRouter.js +31 -31
  202. package/src/core/themes/modern.js +32 -32
  203. package/src/core/themes/themeSelector.js +33 -33
  204. package/src/core/visualify.js +213 -47
  205. package/src/core/widgets/circularProgress.js +23 -23
  206. package/src/core/widgets/controller.js +116 -83
  207. package/src/core/widgets/errorBoundary.js +36 -36
  208. package/src/core/widgets/footer.js +185 -177
  209. package/src/core/widgets/header.js +238 -234
  210. package/src/core/widgets/layout/Grid.js +31 -31
  211. package/src/core/widgets/layout.js +36 -36
  212. package/src/core/widgets/mapping.js +56 -42
  213. package/src/core/workers/data-worker.js +349 -0
  214. package/src/core/workers/worker-pool.js +396 -0
  215. package/src/docsify/bundle.js +215 -0
  216. package/src/docsify/markdown.js +271 -0
  217. package/src/docsify/plugin.js +268 -0
  218. package/src/editor/README.md +172 -0
  219. package/src/editor/components/ChartBuilder.jsx +341 -0
  220. package/src/editor/components/ChartTypeSidebar.jsx +91 -0
  221. package/src/editor/components/Editor.jsx +367 -0
  222. package/src/editor/components/Preview.jsx +446 -0
  223. package/src/editor/components/PropertyPanel.jsx +468 -0
  224. package/src/editor/components/StatusBar.jsx +85 -0
  225. package/src/editor/context/EditorContext.js +248 -0
  226. package/src/editor/hooks/useDebounce.js +32 -0
  227. package/src/editor/index.js +315 -0
  228. package/src/editor/styles/editor.css +637 -0
  229. package/src/editor/utils/chartValidator.js +263 -0
  230. package/src/entries/charts3d.js +70 -0
  231. package/src/entries/core.js +78 -0
  232. package/src/entries/docs.js +154 -0
  233. package/src/entries/pages.js +93 -0
  234. package/src/entries/portal.js +204 -0
  235. package/src/entries/shared.js +50 -0
  236. package/src/i18n/formatters.js +455 -0
  237. package/src/i18n/index.js +169 -0
  238. package/src/i18n/locales/ar.json +137 -0
  239. package/src/i18n/locales/de.json +137 -0
  240. package/src/i18n/locales/en.json +137 -0
  241. package/src/i18n/locales/es.json +137 -0
  242. package/src/i18n/locales/he.json +137 -0
  243. package/src/i18n/locales/zh.json +137 -0
  244. package/src/i18n/rtl.css +183 -0
  245. package/src/index.js +82 -62
  246. package/src/loader.js +103 -0
  247. package/src/setupTests.js +5 -5
  248. package/tsconfig.json +51 -0
  249. package/types/charts.d.ts +569 -0
  250. package/types/components.d.ts +441 -0
  251. package/types/config.d.ts +199 -0
  252. package/types/index.d.ts +353 -0
@@ -0,0 +1,169 @@
1
+ /**
2
+ * @fileoverview Internationalization (i18n) module for Visualify.js
3
+ * @module i18n
4
+ *
5
+ * Provides multi-language support with:
6
+ * - 4+ languages (English, Chinese, Spanish, German)
7
+ * - RTL (Right-to-Left) layout support
8
+ * - Locale-aware formatting (dates, numbers, currency)
9
+ * - Language detection (browser, URL parameter, config)
10
+ * - Manual language override
11
+ */
12
+
13
+ import i18n from 'i18next';
14
+ import { initReactI18next } from 'react-i18next';
15
+ import LanguageDetector from 'i18next-browser-languagedetector';
16
+
17
+ // Import translation files
18
+ import en from './locales/en.json';
19
+ import zh from './locales/zh.json';
20
+ import es from './locales/es.json';
21
+ import de from './locales/de.json';
22
+ import ar from './locales/ar.json';
23
+ import he from './locales/he.json';
24
+
25
+ // Translation resources
26
+ const resources = {
27
+ en: { translation: en },
28
+ zh: { translation: zh },
29
+ es: { translation: es },
30
+ de: { translation: de },
31
+ ar: { translation: ar },
32
+ he: { translation: he },
33
+ };
34
+
35
+ // RTL (Right-to-Left) languages
36
+ const RTL_LANGUAGES = ['ar', 'he'];
37
+
38
+ /**
39
+ * Check if a language is RTL
40
+ * @param {string} lng - Language code
41
+ * @returns {boolean} True if RTL language
42
+ */
43
+ export function isRTLLanguage(lng) {
44
+ return RTL_LANGUAGES.includes(lng);
45
+ }
46
+
47
+ /**
48
+ * Get the current text direction
49
+ * @returns {string} 'rtl' or 'ltr'
50
+ */
51
+ export function getTextDirection() {
52
+ const lng = i18n.language || 'en';
53
+ return isRTLLanguage(lng) ? 'rtl' : 'ltr';
54
+ }
55
+
56
+ /**
57
+ * Set the HTML dir attribute based on current language
58
+ */
59
+ export function setDocumentDirection() {
60
+ const dir = getTextDirection();
61
+ if (typeof document !== 'undefined') {
62
+ document.documentElement.setAttribute('dir', dir);
63
+ document.documentElement.setAttribute('lang', i18n.language);
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Initialize i18n with configuration
69
+ * @param {Object} config - i18n configuration
70
+ * @param {string} config.locale - Locale setting ('auto' or specific language code)
71
+ * @param {string} config.fallbackLocale - Fallback locale
72
+ * @returns {Object} i18n instance
73
+ */
74
+ export function initializeI18n(config = {}) {
75
+ const {
76
+ locale = 'auto',
77
+ fallbackLocale = 'en',
78
+ } = config;
79
+
80
+ const detectionOptions = locale === 'auto' ? {
81
+ order: ['querystring', 'localStorage', 'navigator', 'htmlTag'],
82
+ lookupQuerystring: 'lang',
83
+ lookupLocalStorage: 'visualify-language',
84
+ caches: ['localStorage'],
85
+ } : {
86
+ order: ['localStorage'],
87
+ lookupLocalStorage: 'visualify-language',
88
+ caches: ['localStorage'],
89
+ };
90
+
91
+ i18n
92
+ .use(LanguageDetector)
93
+ .use(initReactI18next)
94
+ .init({
95
+ resources,
96
+ debug: false, // Suppress default logger warnings in production
97
+ lng: locale === 'auto' ? undefined : locale,
98
+ fallbackLng: fallbackLocale,
99
+ detection: detectionOptions,
100
+ interpolation: {
101
+ escapeValue: false, // React already escapes values
102
+ prefix: '{',
103
+ suffix: '}',
104
+ },
105
+ react: {
106
+ useSuspense: false,
107
+ },
108
+ });
109
+
110
+ // Set initial document direction
111
+ setDocumentDirection();
112
+
113
+ // Listen for language changes to update direction
114
+ i18n.on('languageChanged', setDocumentDirection);
115
+
116
+ return i18n;
117
+ }
118
+
119
+ /**
120
+ * Change the current language
121
+ * @param {string} lng - Language code
122
+ */
123
+ export function changeLanguage(lng) {
124
+ if (resources[lng]) {
125
+ i18n.changeLanguage(lng);
126
+ if (typeof localStorage !== 'undefined') {
127
+ localStorage.setItem('visualify-language', lng);
128
+ }
129
+ } else {
130
+ console.warn(`[i18n] Language '${lng}' not available. Falling back to 'en'.`);
131
+ i18n.changeLanguage('en');
132
+ }
133
+ }
134
+
135
+ /**
136
+ * Get available languages
137
+ * @returns {Array<{code: string, name: string, nativeName: string, rtl: boolean}>}
138
+ */
139
+ export function getAvailableLanguages() {
140
+ return [
141
+ { code: 'en', name: 'English', nativeName: 'English', rtl: false },
142
+ { code: 'zh', name: 'Chinese', nativeName: '中文', rtl: false },
143
+ { code: 'es', name: 'Spanish', nativeName: 'Español', rtl: false },
144
+ { code: 'de', name: 'German', nativeName: 'Deutsch', rtl: false },
145
+ { code: 'ar', name: 'Arabic', nativeName: 'العربية', rtl: true },
146
+ { code: 'he', name: 'Hebrew', nativeName: 'עברית', rtl: true },
147
+ ];
148
+ }
149
+
150
+ /**
151
+ * Translate a key with interpolation
152
+ * @param {string} key - Translation key
153
+ * @param {Object} options - Interpolation options
154
+ * @returns {string} Translated string
155
+ */
156
+ export function t(key, options = {}) {
157
+ return i18n.t(key, options);
158
+ }
159
+
160
+ /**
161
+ * Get current language
162
+ * @returns {string} Current language code
163
+ */
164
+ export function getCurrentLanguage() {
165
+ return i18n.language || 'en';
166
+ }
167
+
168
+ // Export the i18n instance as default
169
+ export default i18n;
@@ -0,0 +1,137 @@
1
+ {
2
+ "charts": {
3
+ "scatter": "مخطط النقاط المبعثرة",
4
+ "scatter3d": "مخطط النقاط المبعثرة ثلاثي الأبعاد",
5
+ "bar": "مخطط الأعمدة",
6
+ "bar3d": "مخطط الأعمدة ثلاثي الأبعاد",
7
+ "line": "مخطط الخط",
8
+ "line3d": "مخطط الخط ثلاثي الأبعاد",
9
+ "pie": "مخطط دائري",
10
+ "surface3d": "سطح ثلاثي الأبعاد",
11
+ "violin": "مخطط الكمان",
12
+ "dotplot": "مخطط النقاط",
13
+ "visium": "رسم Visium",
14
+ "timeline": "الخط الزمني"
15
+ },
16
+ "ui": {
17
+ "loading": "جاري التحميل...",
18
+ "error": "خطأ",
19
+ "retry": "إعادة المحاولة",
20
+ "export": "تصدير",
21
+ "zoomIn": "تكبير",
22
+ "zoomOut": "تصغير",
23
+ "resetZoom": "إعادة تعيين التكبير",
24
+ "fullscreen": "ملء الشاشة",
25
+ "exitFullscreen": "خروج من ملء الشاشة",
26
+ "download": "تحميل",
27
+ "downloadImage": "تحميل الصورة",
28
+ "downloadData": "تحميل البيانات",
29
+ "close": "إغلاق",
30
+ "cancel": "إلغاء",
31
+ "confirm": "تأكيد",
32
+ "save": "حفظ",
33
+ "edit": "تحرير",
34
+ "delete": "حذف",
35
+ "add": "إضافة",
36
+ "remove": "إزالة",
37
+ "search": "بحث",
38
+ "filter": "تصفية",
39
+ "sort": "فرز",
40
+ "refresh": "تحديث",
41
+ "settings": "إعدادات",
42
+ "help": "مساعدة",
43
+ "about": "حول",
44
+ "home": "الرئيسية",
45
+ "back": "رجوع",
46
+ "next": "التالي",
47
+ "previous": "السابق",
48
+ "submit": "إرسال",
49
+ "apply": "تطبيق",
50
+ "clear": "مسح",
51
+ "selectAll": "تحديد الكل",
52
+ "deselectAll": "إلغاء تحديد الكل",
53
+ "view": "عرض",
54
+ "show": "إظهار",
55
+ "hide": "إخفاء",
56
+ "expand": "توسيع",
57
+ "collapse": "طي"
58
+ },
59
+ "errors": {
60
+ "invalidConfig": "تكوين غير صالح",
61
+ "dataNotFound": "البيانات غير موجودة",
62
+ "webglNotSupported": "WebGL غير مدعوم في متصفحك",
63
+ "chartRenderError": "فشل في عرض المخطط",
64
+ "dataLoadError": "فشل في تحميل البيانات",
65
+ "networkError": "خطأ في الشبكة. يرجى التحقق من اتصالك",
66
+ "timeoutError": "انتهت مهلة الطلب",
67
+ "validationError": "خطأ في التحقق",
68
+ "unknownError": "حدث خطأ غير معروف",
69
+ "fileNotFound": "الملف غير موجود",
70
+ "invalidFormat": "تنسيق ملف غير صالح",
71
+ "missingRequired": "الخاصية المطلوبة مفقودة",
72
+ "typeMismatch": "عدم تطابق النوع"
73
+ },
74
+ "aria": {
75
+ "chartDescription": "مخطط {type} يعرض {description}",
76
+ "dataPoint": "نقطة بيانات: {x}، {y}",
77
+ "dataPoint3d": "نقطة بيانات: {x}، {y}، {z}",
78
+ "chartContainer": "حاوية المخطط",
79
+ "loadingChart": "جاري تحميل بيانات المخطط",
80
+ "chartLoaded": "تم تحميل المخطط بنجاح",
81
+ "navigation": "التنقل",
82
+ "mainContent": "المحتوى الرئيسي",
83
+ "complementary": "معلومات تكميلية",
84
+ "search": "إدخال البحث",
85
+ "dataTable": "جدول البيانات"
86
+ },
87
+ "cli": {
88
+ "welcome": "مرحباً بك في Visualify CLI",
89
+ "initProject": "تهيئة مشروع Visualify جديد",
90
+ "startDev": "بدء خادم التطوير",
91
+ "buildProject": "بناء للإنتاج",
92
+ "serveDocs": "خدمة الوثائق",
93
+ "portalMode": "بدء وضع البوابة",
94
+ "configNotFound": "ملف التكوين غير موجود. قم بتشغيل 'visualify init' أولاً.",
95
+ "invalidCommand": "أمر غير صالح",
96
+ "serverStarted": "تم بدء الخادم في {url}",
97
+ "serverStopped": "تم إيقاف الخادم",
98
+ "building": "جاري بناء المشروع...",
99
+ "buildComplete": "اكتمل البناء",
100
+ "buildError": "فشل البناء",
101
+ "watchingFiles": "مراقبة تغييرات الملفات...",
102
+ "fileChanged": "تم تغيير الملف: {file}",
103
+ "reloading": "جاري إعادة التحميل...",
104
+ "tip": "نصيحة: {message}",
105
+ "example": "مثال: {command}"
106
+ },
107
+ "validation": {
108
+ "required": "الخاصية '{property}' مطلوبة",
109
+ "type": "يجب أن تكون الخاصية '{property}' من نوع {expected}، تم استلام {received}",
110
+ "enum": "يجب أن تكون الخاصية '{property}' واحدة من: {values}",
111
+ "minLength": "لا يمكن أن تكون الخاصية '{property}' فارغة",
112
+ "format": "الخاصية '{property}' لها تنسيق غير صالح",
113
+ "additionalProperties": "خاصية غير معروفة '{property}'",
114
+ "version": "عيّن الإصدار إلى '3.0.0'",
115
+ "mode": "استخدم واحداً من: 'docs'، 'portal'، 'hybrid'، 'auto'",
116
+ "defaultLibrary": "استخدم إما 'echarts' أو 'plotly'"
117
+ },
118
+ "format": {
119
+ "date": "{date, date, medium}",
120
+ "time": "{time, time, short}",
121
+ "datetime": "{datetime, date, medium} {datetime, time, short}",
122
+ "number": "{value, number}",
123
+ "percent": "{value, number, percent}",
124
+ "currency": "{value, number, currency}",
125
+ "bytes": "{value, number, bytes}"
126
+ },
127
+ "footer": {
128
+ "download": "تحميل:",
129
+ "copyright": "{name} حقوق النشر © {year} مدعوم بواسطة {app}@{version}",
130
+ "references": "المراجع"
131
+ },
132
+ "header": {
133
+ "viewSource": "عرض المصدر على GitHub",
134
+ "navigation": "التنقل",
135
+ "logo": "الشعار"
136
+ }
137
+ }
@@ -0,0 +1,137 @@
1
+ {
2
+ "charts": {
3
+ "scatter": "Streudiagramm",
4
+ "scatter3d": "3D-Streudiagramm",
5
+ "bar": "Balkendiagramm",
6
+ "bar3d": "3D-Balkendiagramm",
7
+ "line": "Liniendiagramm",
8
+ "line3d": "3D-Liniendiagramm",
9
+ "pie": "Kreisdiagramm",
10
+ "surface3d": "3D-Oberfläche",
11
+ "violin": "Violinplot",
12
+ "dotplot": "Punktediagramm",
13
+ "visium": "Visium-Diagramm",
14
+ "timeline": "Zeitstrahl"
15
+ },
16
+ "ui": {
17
+ "loading": "Wird geladen...",
18
+ "error": "Fehler",
19
+ "retry": "Wiederholen",
20
+ "export": "Exportieren",
21
+ "zoomIn": "Vergrößern",
22
+ "zoomOut": "Verkleinern",
23
+ "resetZoom": "Zoom zurücksetzen",
24
+ "fullscreen": "Vollbild",
25
+ "exitFullscreen": "Vollbild beenden",
26
+ "download": "Herunterladen",
27
+ "downloadImage": "Bild herunterladen",
28
+ "downloadData": "Daten herunterladen",
29
+ "close": "Schließen",
30
+ "cancel": "Abbrechen",
31
+ "confirm": "Bestätigen",
32
+ "save": "Speichern",
33
+ "edit": "Bearbeiten",
34
+ "delete": "Löschen",
35
+ "add": "Hinzufügen",
36
+ "remove": "Entfernen",
37
+ "search": "Suchen",
38
+ "filter": "Filtern",
39
+ "sort": "Sortieren",
40
+ "refresh": "Aktualisieren",
41
+ "settings": "Einstellungen",
42
+ "help": "Hilfe",
43
+ "about": "Über",
44
+ "home": "Startseite",
45
+ "back": "Zurück",
46
+ "next": "Weiter",
47
+ "previous": "Zurück",
48
+ "submit": "Absenden",
49
+ "apply": "Anwenden",
50
+ "clear": "Löschen",
51
+ "selectAll": "Alle auswählen",
52
+ "deselectAll": "Alle abwählen",
53
+ "view": "Anzeigen",
54
+ "show": "Anzeigen",
55
+ "hide": "Ausblenden",
56
+ "expand": "Erweitern",
57
+ "collapse": "Reduzieren"
58
+ },
59
+ "errors": {
60
+ "invalidConfig": "Ungültige Konfiguration",
61
+ "dataNotFound": "Daten nicht gefunden",
62
+ "webglNotSupported": "WebGL wird in Ihrem Browser nicht unterstützt",
63
+ "chartRenderError": "Diagramm konnte nicht gerendert werden",
64
+ "dataLoadError": "Daten konnten nicht geladen werden",
65
+ "networkError": "Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung",
66
+ "timeoutError": "Zeitüberschreitung der Anforderung",
67
+ "validationError": "Validierungsfehler",
68
+ "unknownError": "Ein unbekannter Fehler ist aufgetreten",
69
+ "fileNotFound": "Datei nicht gefunden",
70
+ "invalidFormat": "Ungültiges Dateiformat",
71
+ "missingRequired": "Erforderliche Eigenschaft fehlt",
72
+ "typeMismatch": "Typ stimmt nicht überein"
73
+ },
74
+ "aria": {
75
+ "chartDescription": "{type}-Diagramm zeigt {description}",
76
+ "dataPoint": "Datenpunkt: {x}, {y}",
77
+ "dataPoint3d": "Datenpunkt: {x}, {y}, {z}",
78
+ "chartContainer": "Diagramm-Container",
79
+ "loadingChart": "Diagrammdaten werden geladen",
80
+ "chartLoaded": "Diagramm erfolgreich geladen",
81
+ "navigation": "Navigation",
82
+ "mainContent": "Hauptinhalt",
83
+ "complementary": "Ergänzende Informationen",
84
+ "search": "Sucheingabe",
85
+ "dataTable": "Datentabelle"
86
+ },
87
+ "cli": {
88
+ "welcome": "Willkommen bei Visualify CLI",
89
+ "initProject": "Neues Visualify-Projekt initialisieren",
90
+ "startDev": "Entwicklungsserver starten",
91
+ "buildProject": "Für Produktion erstellen",
92
+ "serveDocs": "Dokumentation bereitstellen",
93
+ "portalMode": "Portal-Modus starten",
94
+ "configNotFound": "Konfigurationsdatei nicht gefunden. Führen Sie zuerst 'visualify init' aus.",
95
+ "invalidCommand": "Ungültiger Befehl",
96
+ "serverStarted": "Server gestartet unter {url}",
97
+ "serverStopped": "Server gestoppt",
98
+ "building": "Projekt wird erstellt...",
99
+ "buildComplete": "Erstellung abgeschlossen",
100
+ "buildError": "Erstellung fehlgeschlagen",
101
+ "watchingFiles": "Dateiänderungen werden überwacht...",
102
+ "fileChanged": "Datei geändert: {file}",
103
+ "reloading": "Wird neu geladen...",
104
+ "tip": "Tipp: {message}",
105
+ "example": "Beispiel: {command}"
106
+ },
107
+ "validation": {
108
+ "required": "Eigenschaft '{property}' ist erforderlich",
109
+ "type": "Eigenschaft '{property}' sollte {expected} sein, empfangen wurde {received}",
110
+ "enum": "Eigenschaft '{property}' muss einer der folgenden sein: {values}",
111
+ "minLength": "Eigenschaft '{property}' darf nicht leer sein",
112
+ "format": "Eigenschaft '{property}' hat ein ungültiges Format",
113
+ "additionalProperties": "Unbekannte Eigenschaft '{property}'",
114
+ "version": "Setzen Sie die Version auf '3.0.0'",
115
+ "mode": "Verwenden Sie einen der folgenden: 'docs', 'portal', 'hybrid', 'auto'",
116
+ "defaultLibrary": "Verwenden Sie entweder 'echarts' oder 'plotly'"
117
+ },
118
+ "format": {
119
+ "date": "{date, date, medium}",
120
+ "time": "{time, time, short}",
121
+ "datetime": "{datetime, date, medium} {datetime, time, short}",
122
+ "number": "{value, number}",
123
+ "percent": "{value, number, percent}",
124
+ "currency": "{value, number, currency}",
125
+ "bytes": "{value, number, bytes}"
126
+ },
127
+ "footer": {
128
+ "download": "Herunterladen:",
129
+ "copyright": "{name} Copyright © {year} powered by {app}@{version}",
130
+ "references": "Referenzen"
131
+ },
132
+ "header": {
133
+ "viewSource": "Quellcode auf GitHub anzeigen",
134
+ "navigation": "Navigation",
135
+ "logo": "Logo"
136
+ }
137
+ }
@@ -0,0 +1,137 @@
1
+ {
2
+ "charts": {
3
+ "scatter": "Scatter Plot",
4
+ "scatter3d": "3D Scatter Plot",
5
+ "bar": "Bar Chart",
6
+ "bar3d": "3D Bar Chart",
7
+ "line": "Line Chart",
8
+ "line3d": "3D Line Chart",
9
+ "pie": "Pie Chart",
10
+ "surface3d": "3D Surface",
11
+ "violin": "Violin Plot",
12
+ "dotplot": "Dot Plot",
13
+ "visium": "Visium Plot",
14
+ "timeline": "Timeline"
15
+ },
16
+ "ui": {
17
+ "loading": "Loading...",
18
+ "error": "Error",
19
+ "retry": "Retry",
20
+ "export": "Export",
21
+ "zoomIn": "Zoom In",
22
+ "zoomOut": "Zoom Out",
23
+ "resetZoom": "Reset Zoom",
24
+ "fullscreen": "Fullscreen",
25
+ "exitFullscreen": "Exit Fullscreen",
26
+ "download": "Download",
27
+ "downloadImage": "Download Image",
28
+ "downloadData": "Download Data",
29
+ "close": "Close",
30
+ "cancel": "Cancel",
31
+ "confirm": "Confirm",
32
+ "save": "Save",
33
+ "edit": "Edit",
34
+ "delete": "Delete",
35
+ "add": "Add",
36
+ "remove": "Remove",
37
+ "search": "Search",
38
+ "filter": "Filter",
39
+ "sort": "Sort",
40
+ "refresh": "Refresh",
41
+ "settings": "Settings",
42
+ "help": "Help",
43
+ "about": "About",
44
+ "home": "Home",
45
+ "back": "Back",
46
+ "next": "Next",
47
+ "previous": "Previous",
48
+ "submit": "Submit",
49
+ "apply": "Apply",
50
+ "clear": "Clear",
51
+ "selectAll": "Select All",
52
+ "deselectAll": "Deselect All",
53
+ "view": "View",
54
+ "show": "Show",
55
+ "hide": "Hide",
56
+ "expand": "Expand",
57
+ "collapse": "Collapse"
58
+ },
59
+ "errors": {
60
+ "invalidConfig": "Invalid configuration",
61
+ "dataNotFound": "Data not found",
62
+ "webglNotSupported": "WebGL is not supported in your browser",
63
+ "chartRenderError": "Failed to render chart",
64
+ "dataLoadError": "Failed to load data",
65
+ "networkError": "Network error. Please check your connection",
66
+ "timeoutError": "Request timed out",
67
+ "validationError": "Validation error",
68
+ "unknownError": "An unknown error occurred",
69
+ "fileNotFound": "File not found",
70
+ "invalidFormat": "Invalid file format",
71
+ "missingRequired": "Missing required property",
72
+ "typeMismatch": "Type mismatch"
73
+ },
74
+ "aria": {
75
+ "chartDescription": "{type} chart showing {description}",
76
+ "dataPoint": "Data point: {x}, {y}",
77
+ "dataPoint3d": "Data point: {x}, {y}, {z}",
78
+ "chartContainer": "Chart container",
79
+ "loadingChart": "Loading chart data",
80
+ "chartLoaded": "Chart loaded successfully",
81
+ "navigation": "Navigation",
82
+ "mainContent": "Main content",
83
+ "complementary": "Complementary information",
84
+ "search": "Search input",
85
+ "dataTable": "Data Table"
86
+ },
87
+ "cli": {
88
+ "welcome": "Welcome to Visualify CLI",
89
+ "initProject": "Initialize a new Visualify project",
90
+ "startDev": "Start development server",
91
+ "buildProject": "Build for production",
92
+ "serveDocs": "Serve documentation",
93
+ "portalMode": "Start portal mode",
94
+ "configNotFound": "Configuration file not found. Run 'visualify init' first.",
95
+ "invalidCommand": "Invalid command",
96
+ "serverStarted": "Server started at {url}",
97
+ "serverStopped": "Server stopped",
98
+ "building": "Building project...",
99
+ "buildComplete": "Build complete",
100
+ "buildError": "Build failed",
101
+ "watchingFiles": "Watching for file changes...",
102
+ "fileChanged": "File changed: {file}",
103
+ "reloading": "Reloading...",
104
+ "tip": "Tip: {message}",
105
+ "example": "Example: {command}"
106
+ },
107
+ "validation": {
108
+ "required": "Property '{property}' is required",
109
+ "type": "Property '{property}' should be {expected}, received {received}",
110
+ "enum": "Property '{property}' must be one of: {values}",
111
+ "minLength": "Property '{property}' cannot be empty",
112
+ "format": "Property '{property}' has invalid format",
113
+ "additionalProperties": "Unknown property '{property}'",
114
+ "version": "Set version to '3.0.0'",
115
+ "mode": "Use one of: 'docs', 'portal', 'hybrid', 'auto'",
116
+ "defaultLibrary": "Use either 'echarts' or 'plotly'"
117
+ },
118
+ "format": {
119
+ "date": "{date, date, medium}",
120
+ "time": "{time, time, short}",
121
+ "datetime": "{datetime, date, medium} {datetime, time, short}",
122
+ "number": "{value, number}",
123
+ "percent": "{value, number, percent}",
124
+ "currency": "{value, number, currency}",
125
+ "bytes": "{value, number, bytes}"
126
+ },
127
+ "footer": {
128
+ "download": "Download:",
129
+ "copyright": "{name} Copyright © {year} powered by {app}@{version}",
130
+ "references": "References"
131
+ },
132
+ "header": {
133
+ "viewSource": "View source on GitHub",
134
+ "navigation": "Navigation",
135
+ "logo": "Logo"
136
+ }
137
+ }