openhands
8bb339cc49
feat: auto-translate furnidata per import (nl/en/de/fr/es/tr/it)
...
Generate localized FurnitureData_<lang>.json files from the master
FurnitureData.json + official Habbo hotel translations. Fetches per-hotel
furnidata with in-memory cache (6h TTL), maps by classname (* variant
aware), and overrides name/description where a translation exists.
Full rebuild after every batch/batch-regen/clone import and as admin
GET ?action=build-languages; single imports patch incrementally via
patchLocalizedFurniDataEntries. Failures are best-effort and never fail
the import itself. Files are written to every configured gamedata write
path (primary + mirrors) so /gamedata/config/FurnitureData_<lang>.json
is available for per-language Nitro clients.
New service: src/lib/services/furni-data-i18n.ts with
buildLocalizedFurniDataFiles, patchLocalizedFurniDataEntries,
FURNIDATA_LANGUAGES (nl/en/de/fr/es/tr/it) and applyTranslationsForTest.
2026-08-21 14:16:37 +02:00
..
2026-07-18 19:08:17 +02:00
2026-08-19 19:39:32 +02:00
2026-08-21 13:39:21 +02:00
2026-07-31 21:35:05 +02:00
2026-07-31 21:35:05 +02:00
2026-08-01 13:27:59 +02:00
2026-08-01 15:25:47 +02:00
2026-08-01 14:38:42 +02:00
2026-08-14 11:20:37 +02:00
2026-07-21 21:08:33 +02:00
2026-08-14 17:04:34 +02:00
2026-08-02 14:22:05 +02:00
2026-08-02 14:22:05 +02:00
2026-08-20 13:09:50 +02:00
2026-08-01 15:07:54 +02:00
2026-08-20 14:57:40 +02:00
2026-08-21 13:39:21 +02:00
2026-07-31 14:11:03 +02:00
2026-08-14 11:20:37 +02:00
2026-07-13 21:57:41 +02:00
2026-08-19 19:39:32 +02:00
2026-08-21 13:39:21 +02:00
2026-08-20 15:38:50 +02:00
2026-08-01 15:57:14 +02:00
2026-08-01 15:56:38 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-05 11:10:16 +02:00
2026-08-05 11:10:16 +02:00
2026-08-07 18:53:59 +02:00
2026-07-25 17:33:06 +02:00
2026-08-09 12:12:02 +02:00
2026-08-05 11:10:16 +02:00
2026-07-28 19:03:04 +02:00
2026-08-05 11:10:16 +02:00
2026-08-05 11:10:16 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-08-05 11:10:16 +02:00
2026-08-09 12:12:02 +02:00
2026-08-05 11:10:16 +02:00
2026-08-07 19:19:05 +02:00
2026-08-02 13:16:51 +02:00
2026-08-02 13:16:51 +02:00
2026-08-21 14:16:37 +02:00
2026-08-02 14:42:23 +02:00
2026-08-21 14:02:42 +02:00
2026-08-14 16:37:00 +02:00
2026-08-21 13:39:21 +02:00
2026-08-19 20:28:24 +02:00
2026-08-03 19:00:45 +02:00
2026-08-03 19:00:45 +02:00
2026-07-17 22:53:56 +02:00
2026-07-26 20:28:11 +02:00
2026-08-06 20:27:06 +02:00
2026-08-05 15:34:40 +02:00
2026-08-20 12:35:17 +02:00
2026-08-11 16:53:03 +02:00
2026-07-13 21:57:41 +02:00
2026-08-07 18:53:59 +02:00
2026-08-04 11:07:04 +02:00
2026-07-31 21:35:05 +02:00
2026-07-31 21:35:05 +02:00
2026-08-14 11:20:37 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-07-26 20:28:11 +02:00
2026-07-26 20:28:11 +02:00
2026-07-26 20:28:11 +02:00
2026-07-31 14:11:03 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-08-14 11:20:37 +02:00
2026-07-13 21:57:41 +02:00
2026-07-31 21:14:03 +02:00
2026-08-04 11:07:04 +02:00
2026-08-04 11:07:04 +02:00
2026-08-09 11:51:26 +02:00
2026-07-31 21:35:05 +02:00
2026-07-31 21:35:05 +02:00
2026-08-17 22:02:21 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-07 18:53:59 +02:00
2026-08-01 13:18:10 +02:00
2026-07-31 21:35:05 +02:00
2026-07-12 21:07:34 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-08-05 15:25:07 +02:00
2026-08-21 13:39:21 +02:00
2026-08-01 13:27:59 +02:00
2026-08-01 14:38:42 +02:00
2026-08-01 14:38:42 +02:00