iobroker.staticsfilefolder 0.0.11 → 0.0.12

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.
package/io-package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "staticsfilefolder",
4
- "version": "0.0.11",
4
+ "version": "0.0.12",
5
5
  "news": {
6
+ "0.0.12": {
7
+ "en": "Automatically detect ioBroker system language. Added German and Russian translations."
8
+ },
6
9
  "0.0.11": {
7
10
  "en": "Added multi-language support (English and Azerbaijani) with English as the default."
8
11
  },
package/lib/web.js CHANGED
@@ -12,6 +12,7 @@ class ExtensionExample {
12
12
  */
13
13
  constructor(server, webSettings, adapter, instanceSettings, app) {
14
14
  this.app = app;
15
+ this.adapter = adapter;
15
16
  this.config = instanceSettings ? instanceSettings.native : {};
16
17
  this.config.route = this.config.route || "demo";
17
18
 
@@ -27,6 +28,17 @@ class ExtensionExample {
27
28
  this.app.use("/" + this.config.route + "/files", express.static(this.config.dirname));
28
29
  }
29
30
 
31
+ // API Endpoint for configuration and system language
32
+ this.app.get("/" + this.config.route + "/api/config", async (req, res) => {
33
+ try {
34
+ const systemConfig = await this.adapter.getForeignObjectAsync("system.config");
35
+ const systemLanguage = (systemConfig && systemConfig.common && systemConfig.common.language) || "en";
36
+ res.json({ success: true, language: systemLanguage });
37
+ } catch (e) {
38
+ res.json({ success: false, language: "en" });
39
+ }
40
+ });
41
+
30
42
  // API Endpoint for listing files
31
43
  this.app.get("/" + this.config.route + "/api/list", (req, res) => {
32
44
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.staticsfilefolder",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Static Files Folder",
5
5
  "author": {
6
6
  "name": "gokturk413",
package/www/app.js CHANGED
@@ -87,9 +87,62 @@ const translations = {
87
87
  modalDownload: "📥 Yüklə",
88
88
  todayBadge: "Bu gün",
89
89
  errorLoading: "Xəta baş verdi: "
90
+ },
91
+ de: {
92
+ back: "← Zurück",
93
+ forward: "Weiter →",
94
+ home: "Startseite",
95
+ searchPlaceholder: "Suchen...",
96
+ allTypes: "Alle Typen",
97
+ sortAz: "A-Z sortieren",
98
+ sortZa: "Z-A sortieren",
99
+ sortNewest: "Neueste zuerst",
100
+ sortOldest: "Älteste zuerst",
101
+ title: "Omni Berichte",
102
+ loadingPdf: "PDF wird geladen...",
103
+ loadingExcel: "Excel wird geladen...",
104
+ loadingWord: "Word wird geladen...",
105
+ emptyFolder: "Dieser Ordner ist leer.",
106
+ root: "Hauptverzeichnis",
107
+ themeTooltip: "Dunkel/Hell-Modus umschalten",
108
+ langTooltip: "Sprache ändern",
109
+ modalTitle: "Dateibetrachter",
110
+ modalBack: "← Zurück",
111
+ modalForward: "Weiter →",
112
+ modalPrint: "🖨️ Drucken / PDF",
113
+ modalDownload: "📥 Herunterladen",
114
+ todayBadge: "Heute",
115
+ errorLoading: "Ein Fehler ist aufgetreten: "
116
+ },
117
+ ru: {
118
+ back: "← Назад",
119
+ forward: "Вперед →",
120
+ home: "Главная",
121
+ searchPlaceholder: "Поиск...",
122
+ allTypes: "Все типы",
123
+ sortAz: "Сортировка А-Я",
124
+ sortZa: "Сортировка Я-А",
125
+ sortNewest: "Сначала новые",
126
+ sortOldest: "Сначала старые",
127
+ title: "Omni Отчеты",
128
+ loadingPdf: "Загрузка PDF...",
129
+ loadingExcel: "Загрузка Excel...",
130
+ loadingWord: "Загрузка Word...",
131
+ emptyFolder: "Эта папка пуста.",
132
+ root: "Корень",
133
+ themeTooltip: "Переключить тему",
134
+ langTooltip: "Изменить язык",
135
+ modalTitle: "Просмотр файла",
136
+ modalBack: "← Назад",
137
+ modalForward: "Вперед →",
138
+ modalPrint: "🖨️ Печать / PDF",
139
+ modalDownload: "📥 Скачать",
140
+ todayBadge: "Сегодня",
141
+ errorLoading: "Произошла ошибка: "
90
142
  }
91
143
  };
92
144
 
145
+ const supportedLangs = ['en', 'az', 'de', 'ru'];
93
146
  let currentLang = 'en'; // default English
94
147
 
95
148
  // Setup PDF.js worker
@@ -98,13 +151,31 @@ if (window.pdfjsLib) {
98
151
  }
99
152
 
100
153
  // Language Initialization
101
- function initLang() {
102
- currentLang = localStorage.getItem('staticsfilefolder_lang') || 'en';
154
+ async function initLang() {
155
+ let savedLang = localStorage.getItem('staticsfilefolder_lang');
156
+ if (!savedLang) {
157
+ try {
158
+ const res = await fetch(`${BASE_ROUTE}/api/config`);
159
+ const data = await res.json();
160
+ if (data && data.language) {
161
+ savedLang = data.language;
162
+ }
163
+ } catch (e) {
164
+ // ignore
165
+ }
166
+ }
167
+
168
+ currentLang = savedLang || navigator.language.split('-')[0] || 'en';
169
+ if (!translations[currentLang]) {
170
+ currentLang = 'en';
171
+ }
103
172
  applyTranslations();
104
173
  }
105
174
 
106
175
  function toggleLang() {
107
- currentLang = currentLang === 'en' ? 'az' : 'en';
176
+ let index = supportedLangs.indexOf(currentLang);
177
+ index = (index + 1) % supportedLangs.length;
178
+ currentLang = supportedLangs[index];
108
179
  localStorage.setItem('staticsfilefolder_lang', currentLang);
109
180
  applyTranslations();
110
181
  }
@@ -126,7 +197,7 @@ function applyTranslations() {
126
197
 
127
198
  // Update search placeholder and other specific inputs
128
199
  searchBox.placeholder = t.searchPlaceholder;
129
- btnLang.textContent = currentLang === 'en' ? '🌐 AZ' : '🌐 EN';
200
+ btnLang.textContent = `🌐 ${currentLang.toUpperCase()}`;
130
201
 
131
202
  // Refresh UI to update dynamic content like dates/breadcrumbs
132
203
  updateBreadcrumb();