Skip to content

Commit 9e91ffd

Browse files
FalkWolskyludomikula
FalkWolsky
authored andcommitted
Introduction of uiLanguage in Frontend and Backend, User Profile
1 parent cd682d1 commit 9e91ffd

File tree

19 files changed

+469
-34
lines changed

19 files changed

+469
-34
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,4 @@ You can access Lowcoder from [cloud-hosted version](https://app.lowcoder.cloud/)
101101
Accelerate the growth of Lowcoder and unleash its potential with your Sponsorship – together, we're shaping the future of Lowcode for everyone!
102102
[Be a Sponsor](https://github.com/sponsors/lowcoder-org)
103103

104-
Like ... [@spacegoats-io](https://github.com/spacegoats-io), [@Jomedya](https://github.com/Jomedya), [@CHSchuepfer](https://github.com/CHSchuepfer), Thank you very much!!
104+
Like ... [@Darkjamin](https://github.com/Darkjamin), [@spacegoats-io](https://github.com/spacegoats-io), [@Jomedya](https://github.com/Jomedya), [@CHSchuepfer](https://github.com/CHSchuepfer), Thank you very much!!

client/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
"antd-mobile": "^5.34.0",
7878
"chalk": "4",
7979
"number-precision": "^1.6.0",
80+
"react-countup": "^6.5.3",
8081
"react-player": "^2.11.0",
8182
"resize-observer-polyfill": "^1.5.1",
8283
"rollup": "^4.13.0",

client/packages/lowcoder/src/app.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { default as App } from "antd/es/app";
22
import { default as ConfigProvider } from "antd/es/config-provider";
33
import {
4+
USER_PROFILE_URL,
45
ALL_APPLICATIONS_URL,
56
APP_EDITOR_URL,
67
APPLICATION_VIEW_URL,
@@ -146,6 +147,7 @@ class AppIndex extends React.Component<AppIndexProps, any> {
146147
<LazyRoute
147148
fallback="layout"
148149
path={[
150+
USER_PROFILE_URL,
149151
ALL_APPLICATIONS_URL,
150152
DATASOURCE_CREATE_URL,
151153
DATASOURCE_EDIT_URL,

client/packages/lowcoder/src/comps/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -842,12 +842,12 @@ export var uiCompMap: Registry = {
842842
withoutLoading: true,
843843
},
844844
controlButton: {
845-
name: trans("meeting.meetingControlCompName"),
845+
name: trans("uiComp.meetingControlCompName"),
846846
enName: "Controls",
847-
description: trans("meeting.meetingCompDesc"),
847+
description: trans("uiComp.meetingCompDesc"),
848848
categories: ["forms", "collaboration"],
849849
icon: ButtonCompIcon,
850-
keywords: trans("meeting.meetingCompKeywords"),
850+
keywords: trans("uiComp.meetingCompKeywords"),
851851
lazyLoad: true,
852852
compName: 'ControlButton',
853853
compPath: 'comps/meetingComp/controlButton',

client/packages/lowcoder/src/constants/routesURL.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { DatasourceType } from "@lowcoder-ee/constants/queryConstants";
55

66
export const BASE_URL = "/";
77
export const USER_AUTH_URL = "/user/auth";
8+
export const USER_PROFILE_URL = "/user/profile";
89
export const COMPONENT_DOC_URL = "/components";
910
export const SETTING = "/setting";
1011
export const PERMISSION_SETTING = "/setting/permission";

client/packages/lowcoder/src/constants/userConstants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export type UserConnection = {
2020
export type BaseUserInfo = {
2121
id: string;
2222
username: string;
23+
uiLanguage: string;
2324
currentOrgId: string;
2425
connections?: UserConnection[];
2526
isAnonymous: boolean;
@@ -44,6 +45,7 @@ export const defaultUser: User = {
4445
orgs: [],
4546
orgRoleMap: new Map(),
4647
username: ANONYMOUS_USERNAME,
48+
uiLanguage: "en",
4749
currentOrgId: "",
4850
id: "",
4951
hasPassword: false,

client/packages/lowcoder/src/i18n/locales/de.ts

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -819,35 +819,35 @@ export const de: typeof en = {
819819
},
820820
"uiComp": {
821821
...en.uiComp,
822-
"autoCompleteCompName": "Autovervollständigung",
822+
"autoCompleteCompName": "Vorschlag Feld",
823823
"autoCompleteCompDesc": "Ein Eingabefeld, das Vorschläge während der Eingabe anbietet und dadurch die Benutzererfahrung und Genauigkeit verbessert.",
824824
"autoCompleteCompKeywords": "Vorschläge, Autovervollständigung, Tippen, Eingabe",
825825

826-
"inputCompName": "Eingabefeld",
826+
"inputCompName": "Eingabe Feld",
827827
"inputCompDesc": "Ein grundlegendes Texteingabefeld, das es Benutzern ermöglicht, Text einzugeben und zu bearbeiten.",
828828
"inputCompKeywords": "Text, Eingabe, Feld, Bearbeiten",
829829

830-
"textAreaCompName": "Textbereich",
830+
"textAreaCompName": "Text Bereich Feld",
831831
"textAreaCompDesc": "Ein mehrzeiliges Texteingabefeld für längere Inhalte wie Kommentare oder Beschreibungen.",
832832
"textAreaCompKeywords": "mehrzeilig, Textbereich, Eingabe, Text",
833833

834-
"passwordCompName": "Passwortfeld",
834+
"passwordCompName": "Passwort Feld",
835835
"passwordCompDesc": "Ein sicheres Eingabefeld für Passwörter, das Zeichen aus Datenschutzgründen maskiert.",
836836
"passwordCompKeywords": "Passwort, Sicherheit, Eingabe, versteckt",
837837

838-
"richTextEditorCompName": "Text-Editor",
838+
"richTextEditorCompName": "Text Editor",
839839
"richTextEditorCompDesc": "Ein fortgeschrittener Texteditor, der reichhaltige Formatierungsoptionen wie Fett, Kursiv und Listen unterstützt.",
840840
"richTextEditorCompKeywords": "Editor, Text, Formatierung, Rich Content",
841841

842-
"numberInputCompName": "Zahlenfeld",
842+
"numberInputCompName": "Zahlen Feld",
843843
"numberInputCompDesc": "Ein Eingabefeld speziell für numerische Eingaben mit Optionen zum Erhöhen und Verringern der Werte.",
844844
"numberInputCompKeywords": "Nummer, Eingabe, Inkrement, Dekrement",
845845

846-
"sliderCompName": "Schieberegler",
846+
"sliderCompName": "Regler",
847847
"sliderCompDesc": "Eine grafische Schiebereglerkomponente zur Auswahl eines Wertes oder Bereichs innerhalb einer festgelegten Skala.",
848848
"sliderCompKeywords": "Schieberegler, Bereich, Eingabe, grafisch",
849849

850-
"rangeSliderCompName": "Bereich Schieberegler",
850+
"rangeSliderCompName": "Bereich Regler",
851851
"rangeSliderCompDesc": "Ein Schieberegler mit zwei Griffen zur Auswahl eines Wertebereichs, nützlich für Filterungen oder zum Festlegen von Grenzwerten.",
852852
"rangeSliderCompKeywords": "Bereich, Schieberegler, Zweigriff, Filter",
853853

@@ -875,7 +875,7 @@ export const de: typeof en = {
875875
"checkboxCompDesc": "Ein Standardkästchen für Optionen, die ausgewählt oder abgewählt werden können.",
876876
"checkboxCompKeywords": "Kästchen, Optionen, auswählen, umschalten",
877877

878-
"radioCompName": "Optionsfeld",
878+
"radioCompName": "Options Feld",
879879
"radioCompDesc": "Optionsfelder zur Auswahl einer Option aus einem Set, wobei nur eine Wahl erlaubt ist.",
880880
"radioCompKeywords": "Optionsfeld, Schaltflächen, auswählen, Einzelwahl",
881881

@@ -923,10 +923,14 @@ export const de: typeof en = {
923923
"dropdownCompDesc": "Ein Dropdown-Menü zur kompakten Darstellung einer Liste von Optionen.",
924924
"dropdownCompKeywords": "Dropdown, Menü, Optionen, auswählen",
925925

926-
"toggleButtonCompName": "Umschaltknopf",
926+
"toggleButtonCompName": "Umschalter",
927927
"toggleButtonCompDesc": "Ein Knopf, der zwischen zwei Zuständen oder Optionen umschalten kann.",
928928
"toggleButtonCompKeywords": "Umschalten, Knopf, Schalter, Zustand",
929929

930+
"meetingControlCompName": "Steuerung Taste",
931+
"meetingCompDesc": "Eine Steuerungstaste mit Icons.",
932+
"meetingCompKeywords": "Steuerung, Taste, Icons",
933+
930934
"textCompName": "Text Anzeige",
931935
"textCompDesc": "Eine einfache Komponente zur Anzeige von statischem oder dynamischem Textinhalt einschließlich Markdown-Formatierung.",
932936
"textCompKeywords": "Text, Anzeige, statisch, dynamisch",
@@ -939,11 +943,11 @@ export const de: typeof en = {
939943
"imageCompDesc": "Eine Komponente zur Anzeige von Bildern, die verschiedene Formate basierend auf URI oder Base64-Daten unterstützt.",
940944
"imageCompKeywords": "Bild, Anzeige, Medium, Base64",
941945

942-
"progressCompName": "Fortschritt Aanzeige",
946+
"progressCompName": "Fortschritt Anzeige",
943947
"progressCompDesc": "Ein visueller Indikator des Fortschritts, der typischerweise verwendet wird, um den Fertigstellungsstatus einer Aufgabe zu zeigen.",
944948
"progressCompKeywords": "Fortschritt, Indikator, Status, Aufgabe",
945949

946-
"progressCircleCompName": "Fortschritt Aanzeige Kreis",
950+
"progressCircleCompName": "Fortschritt Anzeige Kreis",
947951
"progressCircleCompDesc": "Ein kreisförmiger Fortschrittsindikator, der häufig für Ladezustände oder zeitgebundene Aufgaben verwendet wird.",
948952
"progressCircleCompKeywords": "Kreis, Fortschritt, Indikator, Laden",
949953

@@ -955,15 +959,15 @@ export const de: typeof en = {
955959
"dividerCompDesc": "Eine visuelle Trennkomponente, die verwendet wird, um Inhalte oder Abschnitte innerhalb eines Layouts zu separieren.",
956960
"dividerCompKeywords": "Trennlinie, Separator, Layout, Gestaltung",
957961

958-
"qrCodeCompName": "QR-Code Anzeiger",
962+
"qrCodeCompName": "QRCode Anzeiger",
959963
"qrCodeCompDesc": "Eine Komponente zur Anzeige von QR-Codes, nützlich für schnelles Scannen und Informationsübertragung.",
960964
"qrCodeCompKeywords": "QR-Code, Scannen, Barcode, Information",
961965

962966
"formCompName": "Formular",
963967
"formCompDesc": "Eine Containerkomponente für die Erstellung strukturierter Formulare mit verschiedenen Eingabetypen.",
964968
"formCompKeywords": "Formular, Eingabe, Container, Struktur",
965969

966-
"jsonSchemaFormCompName": "JSON-Schema Formular",
970+
"jsonSchemaFormCompName": "JSON Schema Formular",
967971
"jsonSchemaFormCompDesc": "Eine dynamische Formularkomponente, die basierend auf einem JSON-Schema generiert wird.",
968972
"jsonSchemaFormCompKeywords": "JSON, Schema, Formular, dynamisch",
969973

@@ -975,15 +979,15 @@ export const de: typeof en = {
975979
"floatTextContainerCompDesc": "Eine Komponente zur Anzeige von Text, die den Inhalt dynamisch anpasst und einfließen lässt.",
976980
"floatTextContainerCompKeywords": "Container, Layout, Text, fließend",
977981

978-
"collapsibleContainerCompName": "Klappbarer Container",
982+
"collapsibleContainerCompName": "Klapp Container",
979983
"collapsibleContainerCompDesc": "Ein Container, der erweitert oder zusammengeklappt werden kann, ideal für die Verwaltung der Sichtbarkeit von Inhalten.",
980984
"collapsibleContainerCompKeywords": "klappbar, Container, erweitern, zusammenklappen",
981985

982-
"tabbedContainerCompName": "Registerkarten Container",
986+
"tabbedContainerCompName": "Register Karten Container",
983987
"tabbedContainerCompDesc": "Ein Container mit Registerkartennavigation zur Organisation von Inhalten in separaten Bereichen.",
984988
"tabbedContainerCompKeywords": "Registerkarten, Container, Navigation, Bereiche",
985989

986-
"pageLayoutCompName": "Seitenlayout",
990+
"pageLayoutCompName": "Seiten Layout",
987991
"pageLayoutCompDesc": "Ein Container, der es ermöglicht, ein Layout mit Kopfzeile, Seitenleiste, Fußzeile und Hauptinhaltsbereichen zu erstellen.",
988992
"pageLayoutCompKeywords": "Layout, Container, Navigation, Seiten",
989993

@@ -1007,7 +1011,7 @@ export const de: typeof en = {
10071011
"iframeCompDesc": "Eine Inline-Frame-Komponente zum Einbetten externer Webseiten und Anwendungen oder Inhalte innerhalb der Anwendung.",
10081012
"iframeCompKeywords": "IFrame, einbetten, Webseite, Inhalt",
10091013

1010-
"customCompName": "Benutzerdefinierte Komponente",
1014+
"customCompName": "Code Komponente",
10111015
"customCompDesc": "Eine flexible, programmierbare Komponente zur Erstellung einzigartiger, benutzerdefinierter UI-Elemente, die speziell auf Ihre Bedürfnisse zugeschnitten sind.",
10121016
"customCompKeywords": "benutzerdefiniert, benutzerdefiniert, flexibel, programmierbar",
10131017

@@ -1023,11 +1027,11 @@ export const de: typeof en = {
10231027
"jsonEditorCompDesc": "Eine Editor-Komponente zum Erstellen und Modifizieren von JSON-Daten mit Validierung und Syntaxhervorhebung.",
10241028
"jsonEditorCompKeywords": "JSON, Editor, modifizieren, validieren",
10251029

1026-
"treeCompName": "Baumstruktur",
1030+
"treeCompName": "Baum Struktur",
10271031
"treeCompDesc": "Eine Baumstrukturkomponente zur Darstellung hierarchischer Daten, wie z. B. Dateisysteme oder Organigramme.",
10281032
"treeCompKeywords": "Baum, hierarchisch, Daten, Struktur",
10291033

1030-
"treeSelectCompName": "Baumauswahl",
1034+
"treeSelectCompName": "Baum Auswahl",
10311035
"treeSelectCompDesc": "Eine Auswahlkomponente, die Optionen in einem hierarchischen Baumformat präsentiert, was eine organisierte und verschachtelte Auswahl ermöglicht.",
10321036
"treeSelectCompKeywords": "Baum, auswählen, hierarchisch, verschachtelt",
10331037

@@ -1083,7 +1087,7 @@ export const de: typeof en = {
10831087
"mentionCompDesc": "Eine Komponente, die das Erwähnen von Benutzern oder Tags innerhalb von Textinhalten unterstützt, typischerweise verwendet in sozialen Medien oder kollaborativen Plattformen.",
10841088
"mentionCompKeywords": "Erwähnung, Tag, Benutzer, soziale Medien",
10851089

1086-
"responsiveLayoutCompName": "Responsives Layout",
1090+
"responsiveLayoutCompName": "Responsive Layout",
10871091
"responsiveLayoutCompDesc": "Eine Layoutkomponente, die entwickelt wurde, um sich verschiedenen Bildschirmgrößen und Geräten anzupassen, und so ein konsistentes Benutzererlebnis sicherstellt.",
10881092
"responsiveLayoutCompKeywords": "responsiv, Layout, anpassen, Bildschirmgröße",
10891093

@@ -1701,7 +1705,7 @@ export const de: typeof en = {
17011705
"sharingCompName": "Bildschirm teilen Stream",
17021706
"videoCompName": "Kamera-Stream",
17031707
"videoSharingCompName": "Bildschirm teilen Stream",
1704-
"meetingControlCompName": "Steuerungstaste",
1708+
"meetingControlCompName": "Steuerung Taste",
17051709
"meetingCompDesc": "Meeting-Komponente",
17061710
"meetingCompControls": "Meeting-Kontrolle",
17071711
"meetingCompKeywords": "Agora Meeting, Web-Meeting, Kollaboration",
@@ -2206,7 +2210,7 @@ export const de: typeof en = {
22062210
"profile": {
22072211
...en.profile,
22082212
"orgSettings": "Arbeitsbereich-Einstellungen",
2209-
"switchOrg": "Arbeitsbereich wechseln",
2213+
"switchOrg": "Bereich wechseln",
22102214
"joinedOrg": "Meine Arbeitsbereiche",
22112215
"createOrg": "Arbeitsbereich erstellen",
22122216
"logout": "Abmelden",
@@ -2298,11 +2302,11 @@ export const de: typeof en = {
22982302
"recoverAppSnapshotContent": "Stelle die aktuelle App auf die Version wieder her, die zum Zeitpunkt {time} erstellt wurde.",
22992303
"recoverAppSnapshotMessage": "Diese Version wiederherstellen",
23002304
"returnEdit": "Zurück zur Redaktion",
2301-
"deploy": "veröffentlichen",
2305+
"deploy": "Veröffentlichen",
23022306
"export": "Exportieren nach JSON",
23032307
"editName": "Name bearbeiten",
23042308
"duplicate": "Duplizieren {type}",
2305-
"snapshot": "Geschichte",
2309+
"snapshot": "Bearbeitungs-Historie",
23062310
"scriptsAndStyles": "Skripte und Stil",
23072311
"appSettings": "App-Einstellungen",
23082312
"preview": "Vorschau",
@@ -2401,6 +2405,7 @@ export const de: typeof en = {
24012405
},
24022406
"home": {
24032407
...en.home,
2408+
"profile": "Profil",
24042409
"allApplications": "Alle Apps",
24052410
"allModules": "Alle Module",
24062411
"allFolders": "Alle Ordner",
@@ -2465,13 +2470,13 @@ export const de: typeof en = {
24652470
"allPermissions": "Besitzer",
24662471
"shareLink": "Link teilen: ",
24672472
"copyLink": "Link kopieren",
2468-
"appPublicMessage": "App veröffentlichen. Auf dem Marktplatz für jeden zu sehen.",
2469-
"modulePublicMessage": "Module veröffentlichen. Auf dem Marktplatz für jeden zu sehen.",
2473+
"appPublicMessage": "App veröffentlichen. Die App wird damit für jeden sichtbar.",
2474+
"modulePublicMessage": "Module veröffentlichen. Das Module wird damit für jeden sichtbar.",
24702475
"appMarketplaceMessage": "Veröffentlichen Sie Ihre App auf dem Lowcoder-Marktplatz. Jeder kann sie dort sehen und kopieren.",
24712476
"moduleMarketplaceMessage": "Veröffentlichen Sie Ihr Modul auf dem Lowcoder-Marktplatz. Jeder kann es dort sehen und kopieren.",
24722477
"marketplaceGoodPublishing": "Bitte stellen Sie sicher, dass Ihre App gut benannt und einfach zu bedienen ist. Entfernen Sie alle sensiblen Informationen vor der Veröffentlichung. Entfernen Sie außerdem lokale Datenquellen und ersetzen Sie sie durch statische, integrierte temporäre Daten.",
24732478
"noMarketplaceApps": "Noch sind keine Anwendungen auf dem Marktplatz.",
2474-
"memberPermissionList": "Mitgliedschaftsberechtigungen: ",
2479+
"memberPermissionList": "Berechtigungen: ",
24752480
"orgName": "{orgName} admins",
24762481
"addMember": "Mitglieder hinzufügen",
24772482
"addPermissionPlaceholder": "Bitte gib einen Namen ein, um Mitglieder zu suchen",

client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,10 @@ export const en = {
926926
"buttonCompDesc": "A versatile button component for submitting forms, triggering actions, or navigating.",
927927
"buttonCompKeywords": "button, submit, action, navigate",
928928

929+
"meetingControlCompName": "Control Button",
930+
"meetingCompDesc": "A button for controlling functions like start, end, mute, or share.",
931+
"meetingCompKeywords": "control, button, start, end",
932+
929933
"linkCompName": "Link",
930934
"linkCompDesc": "A hyperlink display component for navigation or linking to external resources.",
931935
"linkCompKeywords": "link, hyperlink, navigation, external",
@@ -2457,6 +2461,7 @@ export const en = {
24572461
"history": "History"
24582462
},
24592463
"home": {
2464+
"profile": "Your Profile",
24602465
"allApplications": "Your Apps",
24612466
"allModules": "Your Modules",
24622467
"allFolders": "All Folders",

client/packages/lowcoder/src/pages/ApplicationV2/HomeLayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { canEditApp, canManageApp } from "../../util/permissionUtils";
2121
import { HomeResKey, HomeResTypeEnum, NavigationTypes } from "../../types/homeRes";
2222
import { HomeResInfo } from "../../util/homeResUtils";
2323
import { getUser } from "../../redux/selectors/usersSelectors";
24-
import { useLocation } from "react-use";
24+
import { useLocation } from "react-router-dom";
2525
import { TrashTableView } from "./TrashTableView";
2626
import { HomepageTourV2 } from "../tutorials/HomeTutorialsV2";
2727
import { HomeCardView } from "./HomeCardView";

0 commit comments

Comments
 (0)