Skip to content

Translation small bugfixes #831

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 71 additions & 7 deletions client/packages/lowcoder-core/lib/index.cjs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// this is used in Node.js ??

'use strict';

Object.defineProperty(exports, '__esModule', { value: true });
Expand Down Expand Up @@ -7589,15 +7591,62 @@ function requireReactJsxRuntime_development () {
} (jsxRuntime));

var en = {};

var zh = {};
var de = {};
var fr = {};
var es = {};
var it = {};
var ar = {};
var th = {};
var vi = {};
var ms = {};
var id = {};
var hi = {};
var ta = {};
var kn = {};
var ml = {};
var ru = {};
var pl = {};
var cs = {};
var uk = {};
var bg = {};
var sr = {};
var hr = {};
var sk = {};
var sl = {};
var mk = {};
var pt = {};

// file examples: en, enGB, zh, zhHK

var localeData = /*#__PURE__*/Object.freeze({
__proto__: null,
en: en,
zh: zh
zh: zh,
de: de,
fr: fr,
es: es,
it: it,
ar: ar,
th: th,
vi: vi,
ms: ms,
id: id,
hi: hi,
ta: ta,
kn: kn,
ml: ml,
ru: ru,
pl: pl,
cs: cs,
uk: uk,
bg: bg,
sr: sr,
hr: hr,
sk: sk,
sl: sl,
mk: mk,
pt: pt
});

var ErrorKind;
Expand Down Expand Up @@ -11156,8 +11205,14 @@ originalMessage) {
}
var varName = el.value;
// Enforce that all required values are provided by the caller.
var value = "";
if (!(values && varName in values)) {
throw new MissingValueError(varName, originalMessage);
// throw new MissingValueError(varName, originalMessage);
console.log("No value provided for the variable \"" + varName + "\". " + originalMessage);
value = varName;
}
else {
value = values[varName];
}
var value = values[varName];
if (isArgumentElement(el)) {
Expand Down Expand Up @@ -11511,11 +11566,18 @@ See the accompanying LICENSE file for terms.
*/
var IntlMessageFormat = IntlMessageFormat$1;

var defaultLocale = "en";
var defaultLocale = "en";
var locales = [defaultLocale];

// Falk - Adapted the central translator to check if a localStorage key is existing.

const uiLanguage = localStorage.getItem('lowcoder_uiLanguage');

if (globalThis.navigator) {
if (navigator.languages && navigator.languages.length > 0) {
if (uiLanguage) {
locales = [uiLanguage];
}
else if (navigator.languages && navigator.languages.length > 0) {
locales = __spreadArray([], navigator.languages, true);
}
else {
Expand Down Expand Up @@ -11582,7 +11644,9 @@ function getDataByLocale(fileData, suffix, filterLocales, targetLocales) {
return { data: data, language: name_1.slice(0, 2) };
}
}
throw new Error("Not found ".concat(names));
console.error("Not found ".concat(names));
// better to continue the app without crashing
// throw new Error("Not found ".concat(names));
}
var globalMessageKeyPrefix = "@";
var globalMessages = Object.fromEntries(Object.entries(getDataByLocale(localeData, "").data).map(function (_a) {
Expand Down Expand Up @@ -11628,7 +11692,7 @@ var Translator = /** @class */ (function () {
return Translator;
}());
function getI18nObjects(fileData, filterLocales) {
return getDataByLocale(fileData, "Obj", filterLocales).data;
return getDataByLocale(fileData, "Obj", filterLocales)?.data;
}

exports.AbstractComp = AbstractComp;
Expand Down
2 changes: 2 additions & 0 deletions client/packages/lowcoder-core/lib/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// this is the tpyes file next to index.js

/// <reference types="react" />
import React, { ReactNode } from 'react';

Expand Down
9 changes: 7 additions & 2 deletions client/packages/lowcoder-core/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11194,11 +11194,16 @@ originalMessage) {
continue;
}
var varName = el.value;
var value = "";
// Enforce that all required values are provided by the caller.
if (!(values && varName in values)) {
throw new MissingValueError(varName, originalMessage);
console.log("No value provided for the variable \"" + varName + "\". " + originalMessage);
// throw new MissingValueError(varName, originalMessage);
value = varName;
}
else {
value = values[varName];
}
var value = values[varName];
if (isArgumentElement(el)) {
if (!value || typeof value === 'string' || typeof value === 'number') {
value =
Expand Down
18 changes: 12 additions & 6 deletions client/packages/lowcoder-core/src/i18n/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,20 @@ import IntlMessageFormat from "intl-messageformat";
import log from "loglevel";
import { Fragment } from "react";

// this is a copy of the translator from ../../lib/index.js
// TODO: check if this file is used at all

const defaultLocale = "en";

let locales = [defaultLocale];

// Falk - Adapted the central translator to check if a localStorage key is existing.
const uiLanguage = localStorage.getItem('lowcoder_uiLanguage');
if (globalThis.navigator) {
if (navigator.languages && navigator.languages.length > 0) {
if (uiLanguage) {
locales = [uiLanguage];
}
else if (navigator.languages && navigator.languages.length > 0) {
locales = [...navigator.languages];
} else {
locales = [navigator.language || ((navigator as any).userLanguage as string) || defaultLocale];
Expand Down Expand Up @@ -69,8 +77,6 @@ function getDataByLocale<T>(
targetLocales?: string[]
) {

console.log("Überraschung", fileData);

let localeInfos = [...fallbackLocaleInfos];

const targetLocaleInfo = parseLocales(targetLocales || []);
Expand Down Expand Up @@ -99,8 +105,8 @@ function getDataByLocale<T>(
return { data: data as T, language: name.slice(0, 2) };
}
}

throw new Error(`Not found ${names}`);
console.error(`Not found ${names}`);
// throw new Error(`Not found ${names}`);
}

type AddDot<T extends string> = T extends "" ? "" : `.${T}`;
Expand Down Expand Up @@ -190,5 +196,5 @@ export class Translator<Messages extends object> {
}

export function getI18nObjects<I18nObjects>(fileData: object, filterLocales?: string) {
return getDataByLocale<I18nObjects>(fileData, "Obj", filterLocales).data;
return getDataByLocale<I18nObjects>(fileData, "Obj", filterLocales)?.data;
}
14 changes: 7 additions & 7 deletions client/packages/lowcoder/src/i18n/locales/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1960,18 +1960,18 @@ export const de: typeof en = {
"temporaryState": {
...en.temporaryState,
"value": "Anfangswert",
"valueTooltip": "Der Anfangswert, der im temporären Status gespeichert wird, kann ein beliebiger gültiger JSON-Wert sein.",
"docLink": "Lies mehr über temporäre Staaten...",
"valueTooltip": "Der Anfangswert, der im temporären Zustand gespeichert wird, kann ein beliebiger gültiger JSON-Wert sein.",
"docLink": "Lies mehr über temporäre Zustände...",
"pathTypeError": "Pfad muss entweder ein String oder ein Array von Werten sein",
"unStructuredError": "Unstrukturierte Daten {prev} können nicht von {path} aktualisiert werden",
"valueDesc": "Vorläufiger Zustandswert",
"deleteMessage": "Der temporäre Status wurde erfolgreich gelöscht. Du kannst {undoKey} zum Rückgängigmachen verwenden.",
"deleteMessage": "Der temporäre Zustand wurde erfolgreich gelöscht. Du kannst {undoKey} zum Rückgängigmachen verwenden.",
"documentationText": "Temporäre Zustände in Lowcoder sind eine leistungsstarke Funktion zur Verwaltung komplexer Variablen, die den Zustand von Komponenten in deiner Anwendung dynamisch aktualisieren. Diese Zustände dienen als Zwischenspeicher für Daten, die sich im Laufe der Zeit aufgrund von Benutzerinteraktionen oder anderen Prozessen ändern können."
},
"dataResponder": {
...en.dataResponder,
"data": "Daten",
"dataDesc": "Daten des aktuellen Datenresponders",
"dataDesc": "Daten des aktuellen Data Responders",
"dataTooltip": "Wenn diese Daten geändert werden, lösen sie nachfolgende Aktionen aus.",
"docLink": "Lies mehr über die Data Responders...",
"deleteMessage": "Der Data Responder wurde erfolgreich gelöscht. Du kannst {undoKey} zum Rückgängigmachen verwenden.",
Expand Down Expand Up @@ -2295,7 +2295,7 @@ export const de: typeof en = {
"update": "Was gibt's Neues?",
"version": "Version",
"versionWithColon": "Version: ",
"submitIssue": "Ausgabe einreichen"
"submitIssue": "Problem melden"
},
"header": {
...en.header,
Expand All @@ -2304,11 +2304,11 @@ export const de: typeof en = {
"recoverAppSnapshotTitle": "Diese Version wiederherstellen?",
"recoverAppSnapshotContent": "Stelle die aktuelle App auf die Version wieder her, die zum Zeitpunkt {time} erstellt wurde.",
"recoverAppSnapshotMessage": "Diese Version wiederherstellen",
"returnEdit": "Zurück zur Redaktion",
"returnEdit": "Zurück zum Bearbeiten",
"deploy": "Veröffentlichen",
"export": "Exportieren nach JSON",
"editName": "Name bearbeiten",
"duplicate": "Duplizieren {type}",
"duplicate": "{type} Duplizieren",
"snapshot": "Bearbeitungs-Historie",
"scriptsAndStyles": "Skripte und Stil",
"appSettings": "App-Einstellungen",
Expand Down
4 changes: 2 additions & 2 deletions client/packages/lowcoder/src/util/localStorageUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ export function getMainCompValue(): object {
export type HomeLayoutType = "list" | "card";

export function saveHomeLayout(layout: HomeLayoutType) {
localStorage.setItem("home_layout", layout);
localStorage.setItem("lowcoder_home_layout", layout);
}

export function getHomeLayout(): HomeLayoutType {
const layout = localStorage.getItem("home_layout");
const layout = localStorage.getItem("lowcoder_home_layout");
return layout === "list" || layout === "card" ? layout : "card";
}

Expand Down
Loading