mirror of
https://github.com/stackrender/stackrender.git
synced 2026-09-10 03:05:42 +00:00
Add Multi language support
This commit is contained in:
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
+5
-5
@@ -4,14 +4,14 @@
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vite + HeroUI</title>
|
||||
<meta key="title" content="Vite + HeroUI" property="og:title" />
|
||||
<title>StackRender Studio</title>
|
||||
<meta key="title" content="StackRender Studio" property="og:title" />
|
||||
<meta
|
||||
content="Make beautiful websites regardless of your design experience."
|
||||
content="StackRender is an AI-powered tool that helps you design and edit database diagrams effortlessly with a smooth, beautiful UI. Generate clean SQL DDL for PostgreSQL, MySQL, MariaDB, and SQLite in seconds."
|
||||
property="og:description"
|
||||
/>
|
||||
<meta
|
||||
content="Make beautiful websites regardless of your design experience."
|
||||
content="StackRender is an AI-powered tool that helps you design and edit database diagrams effortlessly with a smooth, beautiful UI. Generate clean SQL DDL for PostgreSQL, MySQL, MariaDB, and SQLite in seconds."
|
||||
name="description"
|
||||
/>
|
||||
<meta
|
||||
@@ -19,7 +19,7 @@
|
||||
content="viewport-fit=cover, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
|
||||
name="viewport"
|
||||
/>
|
||||
<link href="/favicon.ico" rel="icon" />
|
||||
<link href="/favicon.png" rel="icon" sizes="32x32" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
@@ -1,153 +0,0 @@
|
||||
import { usePowerSync } from "@powersync/react";
|
||||
import { Wifi, WifiOff } from "lucide-react";
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from "../tooltip/tooltip";
|
||||
import { addToast, cn, Divider, Progress } from "@heroui/react";
|
||||
import { differenceInHours, differenceInMinutes } from "date-fns";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
|
||||
|
||||
const ConnectionStatus: React.FC = () => {
|
||||
|
||||
const powerSync = usePowerSync();
|
||||
const [syncStatus, setSyncStatus] = useState(powerSync.currentStatus);
|
||||
const [downloadProgress, setDownloadProgress] = useState<number | undefined>(undefined);
|
||||
const clearProgressHandler: any = useRef(undefined);
|
||||
const { t } = useTranslation();
|
||||
|
||||
const [lastUploadAt, setLastUploadAt] = useState<Date | undefined>(() => {
|
||||
const last_upload_at = localStorage.getItem("last_upload_at");
|
||||
if (last_upload_at)
|
||||
return new Date(last_upload_at);
|
||||
return undefined;
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
const getLastUploadAtValue = () => {
|
||||
const last_upload_at = localStorage.getItem("last_upload_at");
|
||||
if (last_upload_at)
|
||||
setLastUploadAt(new Date(last_upload_at));
|
||||
|
||||
}
|
||||
window.addEventListener("storage", getLastUploadAtValue);
|
||||
return () => {
|
||||
window.removeEventListener('storage', getLastUploadAtValue);
|
||||
}
|
||||
}, [])
|
||||
useEffect(() => {
|
||||
|
||||
const l = powerSync.registerListener({
|
||||
statusChanged: (status) => {
|
||||
setSyncStatus(status);
|
||||
},
|
||||
});
|
||||
return () => l?.();
|
||||
}, [powerSync]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (syncStatus.downloadProgress?.downloadedOperations && syncStatus.downloadProgress?.totalOperations) {
|
||||
|
||||
const progress: number = Math.round(syncStatus.downloadProgress.downloadedOperations / syncStatus.downloadProgress.totalOperations * 100);
|
||||
if (progress <= 100) {
|
||||
setDownloadProgress(progress);
|
||||
}
|
||||
if (downloadProgress == 100 && !clearProgressHandler.current) {
|
||||
|
||||
clearProgressHandler.current = setTimeout(() => {
|
||||
setDownloadProgress(undefined);
|
||||
clearProgressHandler.current = undefined;
|
||||
}, 700)
|
||||
}
|
||||
}
|
||||
}, [syncStatus.downloadProgress])
|
||||
|
||||
const deltaUploadTime = useMemo(() => {
|
||||
|
||||
if (lastUploadAt) {
|
||||
const currentDate = new Date();
|
||||
const minutes = differenceInMinutes(currentDate, lastUploadAt)
|
||||
const hours = differenceInHours(currentDate, lastUploadAt);
|
||||
|
||||
if (hours > 0 && hours < 24) {
|
||||
return `${hours} ${t("connection_status.hour_ago")}`
|
||||
}
|
||||
if (minutes > 0 && minutes < 60)
|
||||
return `${minutes} ${t("connection_status.min_ago")}`
|
||||
|
||||
if (hours > 24) {
|
||||
return `${lastUploadAt.toLocaleDateString()}`
|
||||
}
|
||||
}
|
||||
return t("connection_status.just_now") ;
|
||||
|
||||
}, [lastUploadAt , t]);
|
||||
|
||||
const lastSyncedDate: string | undefined = useMemo(() => {
|
||||
return syncStatus.lastSyncedAt ? syncStatus.lastSyncedAt.toLocaleString("en-US") : undefined;
|
||||
}, [syncStatus.lastSyncedAt]);
|
||||
|
||||
return (
|
||||
<div className="flex items-center ">
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<div className="border-1 flex gap-2 p-2 px-3 rounded-sm text-xs relative overflow-hidden border-divider dark:border-font/10">
|
||||
<span className={cn("flex gap-2 font-semibold", syncStatus.connected ? "text-success" : "text-danger")}>
|
||||
{
|
||||
syncStatus.connected ?
|
||||
<Wifi className="size-4 " /> :
|
||||
<WifiOff className="size-4 " />
|
||||
}
|
||||
{
|
||||
syncStatus.connected ? t("connection_status.online") : t("connection_status.offline")
|
||||
}
|
||||
|
||||
</span>
|
||||
<Divider orientation="vertical" className="h-4" />
|
||||
|
||||
|
||||
{
|
||||
downloadProgress !== undefined ?
|
||||
<>
|
||||
<span className="text-font/90 w-[96px] truncate">
|
||||
{t("connection_status.saving")} ...
|
||||
</span>
|
||||
|
||||
<Progress
|
||||
classNames={{
|
||||
base: "max-w-md absolute bottom-[-2px] left-0 w-full rounded-sm",
|
||||
track: " bg-transparent",
|
||||
indicator: "bg-gradient-to-r from-secondary-100 to-primary ",
|
||||
}}
|
||||
radius="sm"
|
||||
aria-label="upload progress"
|
||||
showValueLabel={false}
|
||||
size="sm"
|
||||
value={downloadProgress}
|
||||
/>
|
||||
|
||||
</>
|
||||
:
|
||||
<span className="text-font/90 truncate font-semibold" >
|
||||
{t("connection_status.saved")} {deltaUploadTime}
|
||||
</span>
|
||||
|
||||
}
|
||||
</div>
|
||||
|
||||
</TooltipTrigger>
|
||||
{
|
||||
lastSyncedDate &&
|
||||
<TooltipContent >
|
||||
{t("connection_status.last_synced")} : {lastSyncedDate}
|
||||
</TooltipContent>
|
||||
}
|
||||
</Tooltip>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
export default ConnectionStatus;
|
||||
@@ -0,0 +1,108 @@
|
||||
import { languages } from "@/i18";
|
||||
import { Language } from "@/i18/types";
|
||||
import { Button, Input, Listbox, ListboxItem, Popover, PopoverContent, PopoverTrigger } from "@heroui/react";
|
||||
import { Check, Languages, Search } from "lucide-react";
|
||||
import React, { Ref, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
const LanguagesDropDonw: React.FC = ({ }) => {
|
||||
const { t, i18n } = useTranslation();
|
||||
const [currentLanguage, setCurrentLanguage] = useState<Language>(() => languages.find((language: Language) => language.code == i18n.language) as Language);
|
||||
const [languageList, setLanguageList] = useState<Language[]>(languages);
|
||||
const searchRef: Ref<HTMLInputElement> = useRef<HTMLInputElement>(null);
|
||||
const changeLanguage = useCallback((language: Language) => {
|
||||
i18n.changeLanguage(language.code);
|
||||
}, [i18n])
|
||||
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
setCurrentLanguage(languages.find((language: Language) => language.code == i18n.language) as Language)
|
||||
}, [i18n.language])
|
||||
|
||||
const searchLanguage = () => {
|
||||
|
||||
if (!searchRef.current?.value || searchRef.current?.value.trim().length == 0) {
|
||||
|
||||
setLanguageList(languages);
|
||||
}else
|
||||
setLanguageList(languages.filter((language: Language) =>
|
||||
language.code.toLowerCase().includes(searchRef.current?.value.toLowerCase() as string) ||
|
||||
language.name.toLowerCase().includes(searchRef.current?.value.toLowerCase() as string) ||
|
||||
language.nativeName.toLowerCase().includes(searchRef.current?.value.toLowerCase() as string)
|
||||
))
|
||||
console.log(searchRef.current?.value);
|
||||
}
|
||||
|
||||
const openChange = useCallback((isOpen : boolean) => {
|
||||
|
||||
if (isOpen)
|
||||
setLanguageList(languages)
|
||||
} , [])
|
||||
|
||||
return (
|
||||
<Popover showArrow placement="bottom" radius="sm" shadow="sm" onOpenChange={openChange}>
|
||||
<PopoverTrigger>
|
||||
<Button
|
||||
variant="bordered"
|
||||
radius="sm"
|
||||
|
||||
startContent={
|
||||
<Languages className="size-4 text-font/90 dark:text-white" />
|
||||
}
|
||||
className="p-0 h-9 min-w-[142px] border-1 border-divider dark:border-font/10 text-xs bg-transparent hover:bg-default text-font/90 font-semibold "
|
||||
>
|
||||
<span>
|
||||
{currentLanguage.nativeName} <span className="text-font/70">({currentLanguage.name})</span>
|
||||
</span>
|
||||
</Button>
|
||||
</PopoverTrigger>
|
||||
<PopoverContent className="p-2">
|
||||
<Input
|
||||
variant="flat"
|
||||
size="sm"
|
||||
aria-label={t("navbar.search")}
|
||||
placeholder={`${t("navbar.search")}`}
|
||||
ref={searchRef}
|
||||
onKeyUp={searchLanguage}
|
||||
startContent={
|
||||
<Search className="size-4 text-icon" />
|
||||
}
|
||||
className="h-8 w-full focus-visible:ring-0 shadow-none "
|
||||
classNames={{
|
||||
inputWrapper: "dark:bg-default border-divider group-hover:border-primary group-data-[focus=true]:border-primary group-data-[focus=true]:bg-default",
|
||||
|
||||
}}
|
||||
/>
|
||||
<hr className="my-2 w-full border-divider" />
|
||||
|
||||
<Listbox aria-label="Languages"
|
||||
|
||||
>
|
||||
{
|
||||
languageList.map((language: Language) => (
|
||||
<ListboxItem
|
||||
|
||||
key={language.code}
|
||||
textValue={language.code}
|
||||
endContent={
|
||||
currentLanguage.code == language.code && <Check className="text-icon size-4" />
|
||||
}
|
||||
onPressEnd={() => changeLanguage(language)}
|
||||
className="text-font/90"
|
||||
>
|
||||
|
||||
{language.nativeName} <span className="text-font/70"> ({language.name})</span>
|
||||
</ListboxItem>
|
||||
))
|
||||
}
|
||||
|
||||
|
||||
</Listbox>
|
||||
</PopoverContent>
|
||||
</Popover>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default React.memo(LanguagesDropDonw);
|
||||
@@ -1,20 +1,13 @@
|
||||
|
||||
|
||||
import { useDatabase } from "@/providers/database-provider/database-provider";
|
||||
import Menu from "../menu/menu";
|
||||
import ConnectionStatus from "./connection-status";
|
||||
import RenameDatabase from "./rename-database";
|
||||
|
||||
interface Props {
|
||||
|
||||
}
|
||||
import LanguagesDropdown from "./languages-dropdown";
|
||||
|
||||
|
||||
const Navbar: React.FC<Props> = ({ }) => {
|
||||
|
||||
const Navbar: React.FC = ({ }) => {
|
||||
const { database } = useDatabase();
|
||||
|
||||
return (
|
||||
|
||||
<nav className="h-12 fixed z-50 bg-background w-full flex items-center p-4 border-b border-divider ">
|
||||
<img
|
||||
src={`/stackrender.png`}
|
||||
@@ -23,13 +16,20 @@ const Navbar: React.FC<Props> = ({ }) => {
|
||||
/>
|
||||
<h3 className="font-semibold ml-2 text-slate-900 text-sm dark:text-white">StackRender</h3>
|
||||
<div className="ml-4 w-full">
|
||||
<div className="flex w-full justify-between items-center">
|
||||
<div className="flex w-full justify-between items-center gap-2">
|
||||
|
||||
<Menu />
|
||||
<div className=" w-full h-full flex items-center justify-center">
|
||||
{database && <RenameDatabase database={database} />}
|
||||
</div>
|
||||
<ConnectionStatus />
|
||||
<a className="gh-button text-font font-medium bg-background text-xs p-4 px-2 pr-2.5 flex justif-center items-center"
|
||||
target="_blank"
|
||||
href="https://github.com/KarimTamani/stackrender">
|
||||
<span className="gh-button__icon"></span>
|
||||
|
||||
</a>
|
||||
|
||||
<LanguagesDropdown/>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
+31
-7
@@ -1,26 +1,50 @@
|
||||
import { en, enLanguage } from "./languages/en";
|
||||
import { fr, frLanguage } from "./languages/fr";
|
||||
|
||||
|
||||
import { Language } from "./types";
|
||||
import i18n from 'i18next';
|
||||
import { initReactI18next } from 'react-i18next';
|
||||
import LanguageDetector from 'i18next-browser-languagedetector';
|
||||
|
||||
|
||||
import { en, enLanguage } from "./languages/en";
|
||||
import { fr, frLanguage } from "./languages/fr";
|
||||
import { ar, arLanguage } from "./languages/ar";
|
||||
import { es, esLanguage } from "./languages/es";
|
||||
import { zh, zhLanguage } from "./languages/zh";
|
||||
import { hi, hiLanguage } from "./languages/hi";
|
||||
import { pt, ptLanguage } from "./languages/pt";
|
||||
import { ru, ruLanguage } from "./languages/ru";
|
||||
import { de, deLanguage } from "./languages/de";
|
||||
|
||||
|
||||
export const languages: Language[] = [
|
||||
enLanguage,
|
||||
frLanguage ,
|
||||
arLanguage
|
||||
frLanguage,
|
||||
arLanguage,
|
||||
esLanguage,
|
||||
zhLanguage,
|
||||
hiLanguage,
|
||||
ptLanguage,
|
||||
ruLanguage,
|
||||
deLanguage,
|
||||
];
|
||||
|
||||
const resources = {
|
||||
en,
|
||||
fr,
|
||||
ar
|
||||
ar,
|
||||
es,
|
||||
zh,
|
||||
hi,
|
||||
pt,
|
||||
ru,
|
||||
de,
|
||||
};
|
||||
i18n.use(LanguageDetector)
|
||||
.use(initReactI18next)
|
||||
.init({
|
||||
resources ,
|
||||
lng: 'en',
|
||||
resources,
|
||||
lng: 'en',
|
||||
|
||||
interpolation: {
|
||||
escapeValue: false,
|
||||
|
||||
+243
-132
@@ -1,140 +1,251 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const ar = {
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "الجداول",
|
||||
relationships: "العلاقات"
|
||||
},
|
||||
modal: {
|
||||
close: "إغلاق",
|
||||
create: "إنشاء"
|
||||
},
|
||||
color_picker: {
|
||||
default_color: "اللون الافتراضي"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "تصفية",
|
||||
add_table: "إضافة جدول",
|
||||
add_field: "إضافة حقل",
|
||||
add_index: "إضافة فهرس",
|
||||
add_relationship: "إضافة علاقة",
|
||||
show_code: "عرض الكود",
|
||||
fields: "الحقول",
|
||||
indexes: "الفهارس",
|
||||
note: "ملاحظة",
|
||||
name: "الاسم",
|
||||
type: "النوع",
|
||||
nullable: "يمكن أن يكون فارغًا",
|
||||
select_fields: "اختر الحقول",
|
||||
unique: "فريد",
|
||||
table_note: "ملاحظة الجدول",
|
||||
collapse: "طي الكل",
|
||||
|
||||
primary_key: "المفتاح الأساسي",
|
||||
foreign_key: "المفتاح الخارجي",
|
||||
|
||||
source_table: "جدول المصدر",
|
||||
target_table: "جدول الهدف",
|
||||
|
||||
select_table: "اختر الجدول",
|
||||
select_field: "اختر الحقل",
|
||||
|
||||
cardinality: {
|
||||
name: "التعددية",
|
||||
one_to_one: "واحد إلى واحد",
|
||||
one_to_many: "واحد إلى متعدد",
|
||||
many_to_one: "متعدد إلى واحد",
|
||||
many_to_many: "متعدد إلى متعدد"
|
||||
},
|
||||
delete: "حذف",
|
||||
field_setting: "إعدادات الحقل",
|
||||
table_actions: "إجراءات الحقل",
|
||||
actions: "إجراءات",
|
||||
|
||||
field_note: "ملاحظة الحقل",
|
||||
delete_field: "حذف الحقل",
|
||||
|
||||
create_relationship: "إنشاء علاقة",
|
||||
relationship_error: "لإنشاء علاقة، يجب أن يكون نوع مفتاح المصدر ونوع المفتاح المرجعي متماثلين.",
|
||||
|
||||
invalid_relationship: {
|
||||
title: "علاقة غير صالحة",
|
||||
description: "نوع مفتاح المصدر لا يتطابق مع نوع المفتاح المرجعي. يرجى التأكد من أن كلا المفتاحين لهما نفس نوع البيانات."
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "انقر مزدوجًا للتعديل",
|
||||
overlapping_tables: "الجداول المتداخلة",
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "إعادة",
|
||||
undo: "تراجع",
|
||||
zoom_in: "تكبير",
|
||||
zoom_out: "تصغير",
|
||||
adjust_positions: "تعديل المواقع",
|
||||
show_all: "عرض الكل"
|
||||
},
|
||||
menu: {
|
||||
file: "ملف",
|
||||
new: "جديد",
|
||||
open: "فتح",
|
||||
save: "حفظ",
|
||||
import: "استيراد",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySql",
|
||||
postgresql: "Postgresql",
|
||||
export_sql: "تصدير SQL",
|
||||
generic: "عام",
|
||||
export_orm_models: "تصدير ORM Models",
|
||||
delete_project: "حذف المشروع",
|
||||
edit: "تحرير",
|
||||
undo: "تراجع",
|
||||
redo: "إعادة",
|
||||
clear: "مسح",
|
||||
view: "عرض",
|
||||
hide_controller: "إخفاء المتحكم",
|
||||
zoom_on_scroll: "التكبير عند التمرير",
|
||||
on: "تشغيل",
|
||||
off: "إيقاف",
|
||||
theme: "الثيم",
|
||||
light: "فاتح",
|
||||
dark: "داكن",
|
||||
help: "مساعدة",
|
||||
show_docs: "عرض المستندات",
|
||||
join_discord: "الانضمام إلى ديسكورد"
|
||||
},
|
||||
connection_status: {
|
||||
online: "متصل",
|
||||
offline: "غير متصل",
|
||||
saving: "جارٍ الحفظ",
|
||||
saved: "تم الحفظ",
|
||||
last_synced: "آخر مزامنة"
|
||||
},
|
||||
import: {
|
||||
instructions: "التعليمات",
|
||||
install: "التثبيت",
|
||||
run_command: "قم بتشغيل الأمر التالي في الطرفية.",
|
||||
example: "مثال",
|
||||
copy_code: "انسخ محتوى ملف .sql إلى قسم الكود أدناه.",
|
||||
pg_admin: {
|
||||
step1: "افتح <bold>Pg Admin</bold>.",
|
||||
step2: "انقر بزر الفأرة الأيمن على قاعدة البيانات واختر <bold>Backup</bold> من القائمة السياقية.",
|
||||
step3: "قم بتسمية ملف <code>.sql</code>، ثم اختر التنسيق <bold>Plain</bold>، وحدد <bold>Encoding: UTF8</bold>.",
|
||||
step4: "تأكد من أن <bold>Only schema</bold> محددة، و<bold>Only data</bold> غير محددة، وذلك في علامة تبويب <bold>Data Options</bold>.",
|
||||
step5: "انقر على <bold>Backup</bold> لتصدير الملف، ثم انسخ محتواه إلى قسم محرر الكود أدناه."
|
||||
},
|
||||
workbench: {
|
||||
step1: "افتح <bold>MySQL Workbench</bold> و<bold>اتصل</bold> بخادم MySQL الخاص بك.",
|
||||
step2: "من القائمة العلوية، انتقل إلى <bold>Server > Data Export</bold>.",
|
||||
step3: "في قسم <bold>خيارات التصدير</bold>، اختر <bold>Dump Structure Only</bold>.",
|
||||
step4: "حدد <bold>Export to Self-Contained File</bold>، ثم اختر مكان الحفظ واسم ملف الإخراج <code>.sql</code>.",
|
||||
step5: "انقر على <bold>Start Export</bold> لبدء عملية التصدير، ثم انسخ محتوى الملف إلى قسم محرر الكود أدناه."
|
||||
}
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "الجداول",
|
||||
relationships: "العلاقات"
|
||||
},
|
||||
color_picker: {
|
||||
default_color: "اللون الافتراضي"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "إعادة تسمية قاعدة البيانات",
|
||||
search: "بحث"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "تصفية",
|
||||
add_table: "إضافة جدول",
|
||||
add_field: "إضافة حقل",
|
||||
add_index: "إضافة فهرس",
|
||||
delete_table: "حذف الجدول",
|
||||
duplicate: "تكرار",
|
||||
add_relationship: "إضافة علاقة",
|
||||
show_code: "عرض الكود",
|
||||
fields: "الحقول",
|
||||
indexes: "الفهارس",
|
||||
note: "ملاحظة",
|
||||
name: "الاسم",
|
||||
type: "النوع",
|
||||
nullable: "يسمح بالقيمة الفارغة",
|
||||
select_fields: "اختر الحقول",
|
||||
unique: "فريد",
|
||||
table_note: "ملاحظة الجدول",
|
||||
collapse: "طي الكل",
|
||||
primary_key: "المفتاح الأساسي",
|
||||
foreign_key: "المفتاح الخارجي",
|
||||
source_table: "الجدول المصدر",
|
||||
referenced_table: "الجدول المشار إليه",
|
||||
select_table: "اختر جدولًا",
|
||||
select_field: "اختر حقلًا",
|
||||
empty_list: {
|
||||
no_tables: "لا توجد جداول",
|
||||
no_tables_description: "أنشئ جدولًا للبدء.",
|
||||
no_relationships: "لا توجد علاقات",
|
||||
no_relationships_description: "أنشئ علاقات لربط جدولين"
|
||||
},
|
||||
cardinality: {
|
||||
name: "القرينة",
|
||||
one_to_one: "واحد إلى واحد",
|
||||
one_to_many: "واحد إلى متعدد",
|
||||
many_to_one: "متعدد إلى واحد",
|
||||
many_to_many: "متعدد إلى متعدد"
|
||||
},
|
||||
foreign_key_actions: {
|
||||
title: "إجراءات المفتاح الخارجي",
|
||||
on_delete: "عند الحذف",
|
||||
on_update: "عند التحديث",
|
||||
actions: {
|
||||
no_action: "لا إجراء",
|
||||
cascade: "تسلسل",
|
||||
set_null: "تعيين كـ Null",
|
||||
set_default: "تعيين كافتراضي",
|
||||
restrict: "تقييد"
|
||||
}
|
||||
},
|
||||
field_settings: {
|
||||
title: "إعدادات الحقل",
|
||||
unique: "فريد",
|
||||
unsigned: "بدون إشارة",
|
||||
numeric_setting: "إعداد رقمي",
|
||||
decimal_setting: "إعداد عشري",
|
||||
zeroFill: "تعبئة بالأصفار",
|
||||
autoIncrement: "زيادة تلقائية",
|
||||
note: "ملاحظة",
|
||||
delete_field: "حذف الحقل",
|
||||
field_note: "ملاحظة الحقل",
|
||||
precision: "الدقة",
|
||||
text_setting: "إعداد النص",
|
||||
charset: "ترميز الحروف",
|
||||
collation: "التجميع",
|
||||
scale: "المقياس",
|
||||
max_length: "الطول الأقصى",
|
||||
integer_width: "عرض العدد الصحيح",
|
||||
width: "العرض",
|
||||
default_value: "القيمة الافتراضية",
|
||||
value: "القيمة",
|
||||
length: "الطول",
|
||||
values: "القيم",
|
||||
type_enter: "اكتب واضغط Enter",
|
||||
precision_def: "إجمالي الأرقام المسموحة (قبل + بعد الفاصلة).",
|
||||
scale_def: "عدد الأرقام بعد الفاصلة.",
|
||||
time_default_value: {
|
||||
no_value: "لا توجد قيمة",
|
||||
custom: "وقت مخصص",
|
||||
now: "الآن"
|
||||
},
|
||||
errors: {
|
||||
max_length: "يجب أن يكون عددًا موجبًا بدون فواصل عشرية.",
|
||||
integer_default_value: "قيمة افتراضية غير صالحة لعدد صحيح",
|
||||
precision: "يجب أن تكون الدقة عددًا موجبًا بدون فواصل عشرية.",
|
||||
scale: "يجب أن يكون المقياس عددًا موجبًا بدون فواصل عشرية.",
|
||||
scale_max_value: "يجب أن يكون المقياس ≤ الدقة."
|
||||
},
|
||||
pick_value: "اختر قيمة"
|
||||
},
|
||||
delete: "حذف",
|
||||
index_setting: "إعدادات الفهرس",
|
||||
table_actions: "إجراءات الجدول",
|
||||
actions: "إجراءات",
|
||||
delete_index: "حذف الفهرس",
|
||||
index_name: "اسم الفهرس",
|
||||
create_relationship: "إنشاء علاقة",
|
||||
relationship_error: "لإنشاء علاقة، يجب أن يكون المفتاح الأساسي والمفتاح الخارجي من نفس النوع.",
|
||||
invalid_relationship: {
|
||||
title: "علاقة غير صالحة",
|
||||
description: "نوع مفتاح المصدر لا يتطابق مع نوع المفتاح المشار إليه. تأكد من أن كليهما من نفس نوع البيانات."
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "تم الكشف عن تبعية دائرية",
|
||||
toast_description: "تم العثور على مرجع دائري بين الجداول. تحقق من المخطط على اليسار وقم بإزالة إحدى العلاقات لإصلاح ذلك.",
|
||||
description: "يحتوي المخطط الخاص بك على علاقة مفتاح خارجي دائرية بين الجداول. لإصلاحها،",
|
||||
suggestion: "قم بإزالة إحدى العلاقات أدناه التي تسبب الدورة.",
|
||||
remove_relationship: "إزالة العلاقة"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "انقر مرتين للتعديل",
|
||||
overlapping_tables: "جداول متداخلة",
|
||||
show_more: "عرض المزيد",
|
||||
show_less: "عرض أقل"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "إعادة",
|
||||
undo: "تراجع",
|
||||
zoom_in: "تكبير",
|
||||
zoom_out: "تصغير",
|
||||
adjust_positions: "ضبط المواقع",
|
||||
show_all: "عرض الكل"
|
||||
},
|
||||
menu: {
|
||||
file: "ملف",
|
||||
new: "جديد",
|
||||
open: "فتح",
|
||||
save: "حفظ",
|
||||
import: "استيراد",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySQL",
|
||||
postgresql: "PostgreSQL",
|
||||
export_sql: "تصدير SQL",
|
||||
generic: "عام",
|
||||
export_orm_models: "تصدير نماذج ORM",
|
||||
delete_project: "حذف المشروع",
|
||||
edit: "تعديل",
|
||||
undo: "تراجع",
|
||||
redo: "إعادة",
|
||||
clear: "مسح",
|
||||
view: "عرض",
|
||||
hide_controller: "إخفاء لوحة التحكم",
|
||||
show_controller: "عرض لوحة التحكم",
|
||||
cardinality_style: "نمط القرينة",
|
||||
hidden: "مخفي",
|
||||
numeric: "رقمي",
|
||||
symbolic: "رمزي",
|
||||
theme: "الثيم",
|
||||
light: "فاتح",
|
||||
dark: "داكن",
|
||||
help: "مساعدة",
|
||||
show_docs: "عرض المستندات",
|
||||
join_discord: "انضم إلى Discord"
|
||||
},
|
||||
modals: {
|
||||
close: "إغلاق",
|
||||
create: "إنشاء",
|
||||
pick_database: "اختر قاعدة البيانات الخاصة بك.",
|
||||
create_database_header: "كل قاعدة بيانات تقدم ميزات مختلفة.",
|
||||
db_name: "اسم قاعدة البيانات",
|
||||
db_name_error: "يرجى إدخال اسم قاعدة البيانات",
|
||||
continue: "متابعة",
|
||||
open: "فتح",
|
||||
open_database: "فتح قاعدة بيانات",
|
||||
open_database_header: "افتح قاعدة بيانات عن طريق اختيار واحدة من القائمة.",
|
||||
delete_database: "حذف قاعدة البيانات",
|
||||
delete_database_content: "هذا الإجراء لا يمكن التراجع عنه وسيمسح المخطط نهائيًا.",
|
||||
delete: "حذف",
|
||||
import_database: {
|
||||
title: "استيراد قاعدة البيانات",
|
||||
import: "استيراد",
|
||||
import_options: "هل ترغب في الاستيراد باستخدام:",
|
||||
import_error: "خطأ في تحليل SQL",
|
||||
import_error_description: "تعذر استيراد SQL الخاص بك بسبب وجود صيغة غير صحيحة.",
|
||||
import_warning: "تحذير تحليل SQL",
|
||||
import_warning_description: "بعض العناصر لم يتم معالجتها بسبب تصريحات غير مدعومة أو غير مكتملة."
|
||||
},
|
||||
export_sql: "تصدير SQL",
|
||||
export_sql_header: "تصدير مخطط قاعدة البيانات على شكل كود SQL"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "نسخ",
|
||||
copied: "تم النسخ"
|
||||
},
|
||||
connection_status: {
|
||||
online: "متصل",
|
||||
offline: "غير متصل",
|
||||
saving: "يتم الحفظ...",
|
||||
saved: "تم الحفظ",
|
||||
last_synced: "آخر مزامنة",
|
||||
min_ago: "دقيقة مضت",
|
||||
hour_ago: "ساعة مضت",
|
||||
just_now: "الآن"
|
||||
},
|
||||
import: {
|
||||
instructions: "التعليمات",
|
||||
install: "تثبيت",
|
||||
run_command: "قم بتشغيل الأمر التالي في الطرفية:",
|
||||
example: "مثال",
|
||||
copy_code: "انسخ محتوى ملف .sql إلى محرر الكود أدناه.",
|
||||
pg_admin: {
|
||||
step1: "افتح <bold>Pg Admin</bold>.",
|
||||
step2: "انقر بزر الماوس الأيمن على قاعدة البيانات واختر <bold>Backup</bold>.",
|
||||
step3: "قم بتسمية ملف <code>.sql</code>، حدد Format إلى <bold>Plain</bold>، واختر <bold>Encoding: UTF8.</bold>",
|
||||
step4: "تأكد من تحديد <bold>Only schema</bold> وإلغاء تحديد <bold>Only data</bold> في <bold>علامة تبويب خيارات البيانات</bold>.",
|
||||
step5: "اضغط <bold>Backup</bold> لتصدير الملف، ثم انسخ محتواه إلى محرر الكود أدناه."
|
||||
},
|
||||
workbench: {
|
||||
step1: "افتح <bold>MySQL Workbench</bold> واتصل بخادم MySQL الخاص بك.",
|
||||
step2: "من القائمة العلوية، اذهب إلى <bold>Server > Data Export</bold>.",
|
||||
step3: "في <bold>خيارات التصدير</bold>، اختر <bold>Dump Structure Only</bold>.",
|
||||
step4: "حدد <bold>Export to Self-Contained File</bold>، ثم اختر مكانًا واسمًا لملف <code>.sql</code>.",
|
||||
step5: "اضغط على <bold>Start Export</bold>، ثم انسخ محتوى الملف إلى محرر الكود أدناه."
|
||||
},
|
||||
heidisql: {
|
||||
step1: "<bold>افتح HeidiSQL</bold> واتصل بالخادم.",
|
||||
step2: "في <bold>الشريط الجانبي الأيسر</bold>، انقر بزر الماوس الأيمن على قاعدة البيانات التي تريد تصديرها.",
|
||||
step3: "اختر <bold>Export database as SQL</bold>.",
|
||||
step4: "حدد <bold>No data</bold> وتأكد من تحديد <bold>Create</bold> لتصدير البنية فقط.",
|
||||
step5: "انقر على <bold>Export</bold>، ثم انسخ محتوى ملف <code>.sql</code> إلى محرر الكود."
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "شغل <bold>DB Browser for SQLite</bold>.",
|
||||
step2: "اذهب إلى <bold>File > Open Database</bold> واختر ملف <code>.sqlite</code> أو <code>.db</code>.",
|
||||
step3: "من القائمة، اختر <bold>File > Export > Database to SQL file</bold>.",
|
||||
step4: "في النافذة، اختر <bold>Export schema only</bold> ثم انقر <bold>Save</bold>.",
|
||||
step5: "أخيرًا، انسخ محتوى ملف <code>.sql</code> إلى محرر الكود أدناه."
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const arLanguage: Language = {
|
||||
name: 'Arabic',
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const de = {
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "Tabellen",
|
||||
relationships: "Beziehungen"
|
||||
},
|
||||
color_picker: {
|
||||
default_color: "Standardfarbe"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "Datenbank umbenennen",
|
||||
search: "Suchen"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "Filter",
|
||||
add_table: "Tabelle hinzufügen",
|
||||
add_field: "Feld hinzufügen",
|
||||
add_index: "Index hinzufügen",
|
||||
delete_table: "Tabelle löschen",
|
||||
duplicate: "Duplizieren",
|
||||
add_relationship: "Beziehung hinzufügen",
|
||||
show_code: "Code anzeigen",
|
||||
fields: "Felder",
|
||||
indexes: "Indizes",
|
||||
note: "Notiz",
|
||||
name: "Name",
|
||||
type: "Typ",
|
||||
nullable: "Nullwert zulässig",
|
||||
select_fields: "Felder auswählen",
|
||||
unique: "Eindeutig",
|
||||
table_note: "Tabellennotiz",
|
||||
collapse: "Alle einklappen",
|
||||
primary_key: "Primärschlüssel",
|
||||
foreign_key: "Fremdschlüssel",
|
||||
source_table: "Quelltabelle",
|
||||
referenced_table: "Referenzierte Tabelle",
|
||||
select_table: "Tabelle auswählen",
|
||||
select_field: "Feld auswählen",
|
||||
empty_list: {
|
||||
no_tables: "Keine Tabellen",
|
||||
no_tables_description: "Erstelle eine Tabelle, um zu beginnen.",
|
||||
no_relationships: "Keine Beziehungen",
|
||||
no_relationships_description: "Erstelle Beziehungen, um zwei Tabellen zu verbinden"
|
||||
},
|
||||
cardinality: {
|
||||
name: "Kardinalität",
|
||||
one_to_one: "Eins zu eins",
|
||||
one_to_many: "Eins zu viele",
|
||||
many_to_one: "Viele zu eins",
|
||||
many_to_many: "Viele zu viele"
|
||||
},
|
||||
foreign_key_actions: {
|
||||
title: "Fremdschlüssel-Aktionen",
|
||||
on_delete: "Beim Löschen",
|
||||
on_update: "Beim Aktualisieren",
|
||||
actions: {
|
||||
no_action: "Keine Aktion",
|
||||
cascade: "Kaskadieren",
|
||||
set_null: "Auf Null setzen",
|
||||
set_default: "Standardwert setzen",
|
||||
restrict: "Einschränken"
|
||||
}
|
||||
},
|
||||
field_settings: {
|
||||
title: "Feld-Einstellungen",
|
||||
unique: "Eindeutig",
|
||||
unsigned: "Ohne Vorzeichen",
|
||||
numeric_setting: "Numerische Einstellung",
|
||||
decimal_setting: "Dezimaleinstellung",
|
||||
zeroFill: "Mit Nullen auffüllen",
|
||||
autoIncrement: "Automatische Erhöhung",
|
||||
note: "Notiz",
|
||||
delete_field: "Feld löschen",
|
||||
field_note: "Feldnotiz",
|
||||
precision: "Genauigkeit",
|
||||
text_setting: "Texteinstellung",
|
||||
charset: "Zeichensatz",
|
||||
collation: "Sortierung",
|
||||
scale: "Skalierung",
|
||||
max_length: "Maximale Länge",
|
||||
integer_width: "Ganzzahlbreite",
|
||||
width: "Breite",
|
||||
default_value: "Standardwert",
|
||||
value: "Wert",
|
||||
length: "Länge",
|
||||
values: "Werte",
|
||||
type_enter: "Tippen und Enter drücken",
|
||||
precision_def: "Zulässige Gesamtanzahl an Ziffern (vor + nach dem Dezimalpunkt).",
|
||||
scale_def: "Ziffern nach dem Dezimalpunkt.",
|
||||
time_default_value: {
|
||||
no_value: "Kein Wert",
|
||||
custom: "Benutzerdefinierte Zeit",
|
||||
now: "Jetzt"
|
||||
},
|
||||
errors: {
|
||||
max_length: "muss eine positive Zahl ohne Dezimalstellen sein.",
|
||||
integer_default_value: "Ungültiger Standardwert für Ganzzahl",
|
||||
precision: "Genauigkeit muss eine positive Zahl ohne Dezimalstellen sein.",
|
||||
scale: "Skalierung muss eine positive Zahl ohne Dezimalstellen sein.",
|
||||
scale_max_value: "Skalierung muss ≤ Genauigkeit sein."
|
||||
},
|
||||
pick_value: "Wert auswählen"
|
||||
},
|
||||
delete: "Löschen",
|
||||
index_setting: "Index-Einstellungen",
|
||||
table_actions: "Tabellenaktionen",
|
||||
actions: "Aktionen",
|
||||
delete_index: "Index löschen",
|
||||
index_name: "Indexname",
|
||||
create_relationship: "Beziehung erstellen",
|
||||
relationship_error: "Um eine Beziehung zu erstellen, müssen Primär- und Fremdschlüssel denselben Typ haben.",
|
||||
invalid_relationship: {
|
||||
title: "Ungültige Beziehung",
|
||||
description: "Der Typ des Quellschlüssels stimmt nicht mit dem des referenzierten Schlüssels überein. Bitte stelle sicher, dass beide den gleichen Datentyp haben."
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "Zirkuläre Abhängigkeit erkannt",
|
||||
toast_description: "Eine zirkuläre Referenz zwischen Tabellen wurde gefunden. Überprüfe das Diagramm links und entferne eine der Beziehungen.",
|
||||
description: "Dein Schema enthält eine zirkuläre Fremdschlüssel-Beziehung zwischen Tabellen. Um dies zu beheben,",
|
||||
suggestion: "entferne eine der unten aufgeführten Beziehungen, die den Kreis verursachen.",
|
||||
remove_relationship: "Beziehung entfernen"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "Doppelklick zum Bearbeiten",
|
||||
overlapping_tables: "Überlappende Tabellen",
|
||||
show_more: "Mehr anzeigen",
|
||||
show_less: "Weniger anzeigen"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "Wiederholen",
|
||||
undo: "Rückgängig",
|
||||
zoom_in: "Vergrößern",
|
||||
zoom_out: "Verkleinern",
|
||||
adjust_positions: "Positionen anpassen",
|
||||
show_all: "Alles anzeigen"
|
||||
},
|
||||
menu: {
|
||||
file: "Datei",
|
||||
new: "Neu",
|
||||
open: "Öffnen",
|
||||
save: "Speichern",
|
||||
import: "Importieren",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySQL",
|
||||
postgresql: "PostgreSQL",
|
||||
export_sql: "SQL exportieren",
|
||||
generic: "Allgemein",
|
||||
export_orm_models: "ORM-Modelle exportieren",
|
||||
delete_project: "Projekt löschen",
|
||||
edit: "Bearbeiten",
|
||||
undo: "Rückgängig",
|
||||
redo: "Wiederholen",
|
||||
clear: "Leeren",
|
||||
view: "Ansicht",
|
||||
hide_controller: "Controller ausblenden",
|
||||
show_controller: "Controller anzeigen",
|
||||
cardinality_style: "Kardinalitätsstil",
|
||||
hidden: "Versteckt",
|
||||
numeric: "Numerisch",
|
||||
symbolic: "Symbolisch",
|
||||
theme: "Design",
|
||||
light: "Hell",
|
||||
dark: "Dunkel",
|
||||
help: "Hilfe",
|
||||
show_docs: "Dokumentation anzeigen",
|
||||
join_discord: "Discord beitreten"
|
||||
},
|
||||
modals: {
|
||||
close: "Schließen",
|
||||
create: "Erstellen",
|
||||
pick_database: "Wähle deine Datenbank.",
|
||||
create_database_header: "Jede Datenbank bietet unterschiedliche Funktionen.",
|
||||
db_name: "Datenbankname",
|
||||
db_name_error: "Bitte gib einen Datenbanknamen ein",
|
||||
continue: "Weiter",
|
||||
open: "Öffnen",
|
||||
open_database: "Datenbank öffnen",
|
||||
open_database_header: "Wähle eine Datenbank aus der Liste aus.",
|
||||
delete_database: "Datenbank löschen",
|
||||
delete_database_content: "Diese Aktion ist unwiderruflich und wird das Diagramm dauerhaft löschen.",
|
||||
delete: "Löschen",
|
||||
import_database: {
|
||||
title: "Datenbank importieren",
|
||||
import: "Importieren",
|
||||
import_options: "Möchtest du importieren mit:",
|
||||
import_error: "SQL-Parsing-Fehler",
|
||||
import_error_description: "Wir konnten dein SQL nicht importieren, da es ungültige Syntax enthält.",
|
||||
import_warning: "SQL-Parsing-Warnung",
|
||||
import_warning_description: "Einige Elemente konnten aufgrund nicht unterstützter oder unvollständiger Deklarationen nicht verarbeitet werden."
|
||||
},
|
||||
export_sql: "SQL exportieren",
|
||||
export_sql_header: "Exportiere dein Datenbankdiagramm als SQL-Code"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "Kopieren",
|
||||
copied: "Kopiert"
|
||||
},
|
||||
connection_status: {
|
||||
online: "Online",
|
||||
offline: "Offline",
|
||||
saving: "Speichern...",
|
||||
saved: "Gespeichert",
|
||||
last_synced: "Zuletzt synchronisiert",
|
||||
min_ago: "Min. zuvor",
|
||||
hour_ago: "Std. zuvor",
|
||||
just_now: "Gerade eben"
|
||||
},
|
||||
import: {
|
||||
instructions: "Anleitung",
|
||||
install: "Installieren",
|
||||
run_command: "Führe den folgenden Befehl im Terminal aus.",
|
||||
example: "Beispiel",
|
||||
copy_code: "Kopiere den Inhalt der .sql-Datei in den Code-Editor unten.",
|
||||
pg_admin: {
|
||||
step1: "Öffne <bold>Pg Admin</bold>.",
|
||||
step2: "Rechtsklicke auf deine Datenbank und wähle <bold>Backup</bold>.",
|
||||
step3: "Benenne deine <code>.sql</code>-Datei, stelle Format auf <bold>Plain</bold> und wähle <bold>Encoding: UTF8</bold>.",
|
||||
step4: "Stelle sicher, dass <bold>Only schema</bold> aktiviert und <bold>Only data</bold> deaktiviert ist.",
|
||||
step5: "Klicke auf <bold>Backup</bold>, um die Datei zu exportieren, und kopiere dann den Inhalt in den untenstehenden Editor."
|
||||
},
|
||||
workbench: {
|
||||
step1: "Öffne <bold>MySQL Workbench</bold> und stelle eine Verbindung zu deinem Server her.",
|
||||
step2: "Gehe im oberen Menü zu <bold>Server > Data Export</bold>.",
|
||||
step3: "Wähle unter <bold>Export Options</bold> <bold>Dump Structure Only</bold>.",
|
||||
step4: "Aktiviere <bold>Export to Self-Contained File</bold>, wähle einen Speicherort und Dateinamen.",
|
||||
step5: "Klicke auf <bold>Start Export</bold> und kopiere den Inhalt in den Code-Editor unten."
|
||||
},
|
||||
heidisql: {
|
||||
step1: "Öffne <bold>HeidiSQL</bold> und verbinde dich mit deinem Server.",
|
||||
step2: "Klicke in der <bold>linken Seitenleiste</bold> mit der rechten Maustaste auf die Datenbank.",
|
||||
step3: "Wähle <bold>Export database as SQL</bold>.",
|
||||
step4: "Wähle <bold>No data</bold> und stelle sicher, dass <bold>Create</bold> aktiviert ist.",
|
||||
step5: "Klicke auf <bold>Export</bold> und kopiere den Inhalt der <code>.sql</code>-Datei in den Editor."
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "Starte <bold>DB Browser for SQLite</bold>.",
|
||||
step2: "Gehe zu <bold>File > Open Database</bold> und wähle deine <code>.sqlite</code>- oder <code>.db</code>-Datei.",
|
||||
step3: "Gehe zu <bold>File > Export > Database to SQL file</bold>.",
|
||||
step4: "Wähle im Dialog <bold>Export schema only</bold> und klicke auf <bold>Save</bold>.",
|
||||
step5: "Kopiere abschließend den Inhalt der <code>.sql</code>-Datei in den Editor."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const deLanguage: Language = {
|
||||
name: "German",
|
||||
nativeName: "Deutsch",
|
||||
code: "de",
|
||||
};
|
||||
@@ -14,6 +14,7 @@ export const en = {
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "Rename database",
|
||||
search : "Search"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "Filter",
|
||||
|
||||
@@ -0,0 +1,277 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const es = {
|
||||
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "Tablas",
|
||||
relationships: "Relaciones"
|
||||
},
|
||||
|
||||
color_picker: {
|
||||
default_color: "Color predeterminado"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "Renombrar base de datos",
|
||||
search : "Buscar"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "Filtrar",
|
||||
add_table: "Agregar tabla",
|
||||
add_field: "Agregar campo",
|
||||
add_index: "Agregar índice",
|
||||
delete_table: "Eliminar tabla",
|
||||
duplicate: "Duplicar",
|
||||
add_relationship: "Agregar relación",
|
||||
show_code: "Mostrar código",
|
||||
fields: "Campos",
|
||||
indexes: "Índices",
|
||||
note: "Nota",
|
||||
name: "Nombre",
|
||||
type: "Tipo",
|
||||
nullable: "Permite nulo",
|
||||
select_fields: "Seleccionar campos",
|
||||
unique: "Único",
|
||||
table_note: "Nota de la tabla",
|
||||
collapse: "Colapsar todo",
|
||||
primary_key: "Clave primaria",
|
||||
foreign_key: "Clave foránea",
|
||||
|
||||
source_table: "Tabla de origen",
|
||||
referenced_table: "Tabla referenciada",
|
||||
|
||||
select_table: "Seleccionar tabla",
|
||||
select_field: "Seleccionar campo",
|
||||
|
||||
empty_list : {
|
||||
no_tables : "Sin tablas" ,
|
||||
no_tables_description : "Crea una tabla para comenzar." ,
|
||||
|
||||
no_relationships : "Sin relaciones" ,
|
||||
no_relationships_description : "Crea relaciones para conectar dos tablas"
|
||||
} ,
|
||||
|
||||
cardinality: {
|
||||
name: "Cardinalidad",
|
||||
one_to_one: "Uno a uno",
|
||||
one_to_many: "Uno a muchos",
|
||||
many_to_one: "Muchos a uno",
|
||||
many_to_many: "Muchos a muchos",
|
||||
|
||||
},
|
||||
foreign_key_actions : {
|
||||
title : "Acciones de clave foránea" ,
|
||||
on_delete : "Al eliminar" ,
|
||||
on_update : "Al actualizar" ,
|
||||
actions : {
|
||||
no_action : "Sin acción" ,
|
||||
cascade : "Cascada" ,
|
||||
set_null : "Establecer nulo" ,
|
||||
set_default : "Establecer valor predeterminado" ,
|
||||
restrict : "Restringir"
|
||||
}
|
||||
} ,
|
||||
field_settings: {
|
||||
title: "Configuración de campo",
|
||||
unique: "Único",
|
||||
unsigned: "Sin signo",
|
||||
numeric_setting: "Configuración numérica",
|
||||
decimal_setting: "Configuración decimal",
|
||||
zeroFill: "Relleno con ceros",
|
||||
autoIncrement: "Autoincremento",
|
||||
note: "Nota",
|
||||
|
||||
delete_field: "Eliminar campo",
|
||||
field_note: "Nota del campo",
|
||||
precision: "Precisión",
|
||||
text_setting: "Configuración de texto",
|
||||
charset: "Charset",
|
||||
collation: "Intercalación",
|
||||
scale: "Escala",
|
||||
max_length: "Longitud máxima",
|
||||
integer_width: "Ancho de entero",
|
||||
width: "Ancho",
|
||||
default_value: "Valor predeterminado",
|
||||
value: "Valor",
|
||||
length: "Longitud",
|
||||
values: "Valores",
|
||||
type_enter: "Escribe y presiona enter",
|
||||
precision_def: "Total de dígitos permitidos (antes + después del decimal).",
|
||||
scale_def: "Dígitos permitidos después del decimal.",
|
||||
time_default_value: {
|
||||
no_value: "Sin valor",
|
||||
custom: "Hora personalizada",
|
||||
now: "Ahora"
|
||||
},
|
||||
errors: {
|
||||
max_length: "debe ser un número positivo, sin decimales.",
|
||||
integer_default_value: "Valor predeterminado inválido para entero",
|
||||
precision: "La precisión debe ser un número positivo, sin decimales.",
|
||||
scale: "La escala debe ser un número positivo, sin decimales.",
|
||||
scale_max_value: "La escala debe ser ≤ precisión."
|
||||
|
||||
},
|
||||
pick_value: "Seleccionar valor"
|
||||
},
|
||||
delete: "Eliminar",
|
||||
|
||||
index_setting: "Configuración del índice",
|
||||
table_actions: "Acciones de la tabla",
|
||||
actions: "Acciones",
|
||||
delete_index: "Eliminar índice",
|
||||
index_name: "Nombre del índice",
|
||||
create_relationship: "Crear relación",
|
||||
relationship_error: "Para crear una relación, la clave primaria y la clave foránea deben ser del mismo tipo.",
|
||||
|
||||
invalid_relationship: {
|
||||
title: "Relación inválida",
|
||||
description: "El tipo de clave de origen no coincide con el tipo de clave referenciada. Asegúrese de que ambas claves tengan el mismo tipo de datos."
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "Dependencia circular detectada",
|
||||
toast_description: "Se encontró una referencia circular entre tablas. Revisa el diagrama a la izquierda y elimina una de las relaciones para corregirlo.",
|
||||
description: "Tu esquema contiene una relación foránea circular entre tablas. Para corregirlo",
|
||||
suggestion: "elimina una de las relaciones que se indican a continuación y que están causando el ciclo.",
|
||||
remove_relationship: "Eliminar relación"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "Doble clic para editar",
|
||||
overlapping_tables: "Tablas superpuestas",
|
||||
show_more: "Mostrar más",
|
||||
show_less: "Mostrar menos"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "Rehacer",
|
||||
undo: "Deshacer",
|
||||
zoom_in: "Acercar",
|
||||
zoom_out: "Alejar",
|
||||
adjust_positions: "Ajustar posiciones",
|
||||
show_all: "Mostrar todo"
|
||||
},
|
||||
menu: {
|
||||
file: "Archivo",
|
||||
new: "Nuevo",
|
||||
open: "Abrir",
|
||||
save: "Guardar",
|
||||
import: "Importar",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySql",
|
||||
postgresql: "Postgresql",
|
||||
export_sql: "Exportar SQL",
|
||||
generic: "Genérico",
|
||||
export_orm_models: "Exportar modelos ORM",
|
||||
delete_project: "Eliminar proyecto",
|
||||
edit: "Editar",
|
||||
undo: "Deshacer",
|
||||
redo: "Rehacer",
|
||||
clear: "Limpiar",
|
||||
view: "Vista",
|
||||
hide_controller: "Ocultar controlador",
|
||||
show_controller : "Mostrar controlador" ,
|
||||
cardinality_style: "Estilo de cardinalidad",
|
||||
hidden: "Oculto",
|
||||
numeric: "Numérico",
|
||||
symbolic : "Simbólico" ,
|
||||
theme: "Tema",
|
||||
light: "Claro",
|
||||
dark: "Oscuro",
|
||||
help: "Ayuda",
|
||||
show_docs: "Mostrar documentación",
|
||||
join_discord: "Unirse a Discord",
|
||||
|
||||
|
||||
},
|
||||
|
||||
modals: {
|
||||
close: "Cerrar",
|
||||
create: "Crear",
|
||||
pick_database: "Selecciona tu base de datos.",
|
||||
create_database_header: "Cada base de datos ofrece características y funcionalidades distintas.",
|
||||
db_name: "Nombre de la base de datos",
|
||||
db_name_error: "Por favor, proporciona un nombre para la base de datos",
|
||||
continue: "Continuar",
|
||||
open: "Abrir",
|
||||
open_database: "Abrir base de datos",
|
||||
open_database_header: "Abre una base de datos seleccionando una de la lista.",
|
||||
delete_database: "Eliminar base de datos",
|
||||
delete_database_content: "Esta acción es irreversible y eliminará permanentemente el diagrama.",
|
||||
delete: "Eliminar",
|
||||
|
||||
import_database: {
|
||||
title: "Importar tu base de datos",
|
||||
import: "Importar",
|
||||
import_options: "¿Te gustaría importar usando :" ,
|
||||
import_error : "Error al analizar SQL" ,
|
||||
import_error_description : "No pudimos importar tu SQL porque contiene sintaxis inválida." ,
|
||||
import_warning : "Advertencia al analizar SQL" ,
|
||||
import_warning_description : "Algunos elementos no pudieron ser procesados debido a declaraciones no compatibles o incompletas." ,
|
||||
} ,
|
||||
export_sql : "Exportar SQL" ,
|
||||
export_sql_header : "Exporta tu diagrama de base de datos en código SQL"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "Copiar",
|
||||
copied: "Copiado"
|
||||
},
|
||||
|
||||
connection_status : {
|
||||
online: "En línea" ,
|
||||
offline : "Sin conexión" ,
|
||||
saving : "Guardando" ,
|
||||
saved : "Guardado" ,
|
||||
last_synced : "Última sincronización" ,
|
||||
min_ago : "min atrás" ,
|
||||
hour_ago : "hace una hora" ,
|
||||
just_now : "Justo ahora"
|
||||
},
|
||||
import: {
|
||||
instructions: "Instrucciones",
|
||||
install: "Instalar",
|
||||
run_command: "Ejecuta el siguiente comando en tu terminal.",
|
||||
example: "Ejemplo",
|
||||
copy_code: "Copia el contenido del archivo .sql en la sección de código a continuación.",
|
||||
pg_admin: {
|
||||
"step1": "Abre <bold>Pg Admin</bold>.",
|
||||
"step2": "Haz clic derecho en tu base de datos y selecciona <bold>Backup</bold> del menú contextual.",
|
||||
"step3": "Nombra tu archivo <code>.sql</code>, establece el formato en <bold>Plain</bold> y elige <bold>Encoding: UTF8.</bold>",
|
||||
"step4": "Asegúrate de que <bold>Only schema</bold> esté marcado y <bold>Only data</bold> desmarcado en la pestaña <bold>Data Options</bold>.",
|
||||
"step5": "Haz clic en <bold>Backup</bold> para exportar el archivo, luego copia su contenido en el editor de código a continuación."
|
||||
},
|
||||
workbench: {
|
||||
"step1": "Abre <bold>MySQL Workbench</bold> y <bold>conéctate</bold> a tu servidor MySQL.",
|
||||
"step2": "En el menú superior, ve a <bold>Server > Data Export</bold>.",
|
||||
"step3": "En las <bold>Opciones de exportación</bold>, elige <bold>Dump Structure Only</bold>.",
|
||||
"step4": "Marca <bold>Export to Self-Contained File</bold>, luego elige una ubicación y un nombre para el archivo <code>.sql</code>.",
|
||||
"step5": "Haz clic en <bold>Start Export</bold> para iniciar el proceso. Luego copia su contenido en el editor de código."
|
||||
|
||||
},
|
||||
heidisql: {
|
||||
"step1": "<bold>Abre HeidiSQL</bold> y conéctate a tu servidor.",
|
||||
"step2": "En la <bold>barra lateral izquierda, haz clic derecho</bold> sobre la base de datos que quieres exportar.",
|
||||
"step3": "Selecciona <bold>Exportar base de datos como SQL</bold> del menú contextual.",
|
||||
"step4": "Selecciona <bold>Sin datos</bold> y asegúrate de que <bold>Crear</bold> esté marcado para exportar solo la estructura.",
|
||||
"step5": "Haz clic en el botón <bold>Exportar</bold> y finalmente copia el contenido del archivo <code>.sql</code> en el <bold>editor de código</bold> a continuación."
|
||||
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "Inicia <bold>DB Browser for SQLite</bold>.",
|
||||
step2: "Haz clic en <bold>Archivo > Abrir base de datos</bold> y selecciona tu archivo <code>.sqlite</code> o <code>.db</code>.",
|
||||
step3: "Ve a <bold>Archivo > Exportar > Base de datos a archivo SQL</bold> desde el menú superior.",
|
||||
step4: "En el diálogo, elige <bold>Exportar solo esquema</bold> y haz clic en <bold>Guardar</bold>.",
|
||||
step5: "Finalmente, copia el contenido del archivo <code>.sql</code> en el <bold>editor de código</bold> a continuación."
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const esLanguage: Language = {
|
||||
name: "Spanish",
|
||||
nativeName: "Español",
|
||||
code: "es",
|
||||
};
|
||||
+171
-54
@@ -7,74 +7,136 @@ export const fr = {
|
||||
tables: "Tables",
|
||||
relationships: "Relations"
|
||||
},
|
||||
modal: {
|
||||
close: "Fermer",
|
||||
create: "Créer"
|
||||
},
|
||||
color_picker: {
|
||||
default_color: "Couleur par défaut"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "Renommer la base de données",
|
||||
search: "Rechercher"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "Filtrer",
|
||||
add_table: "Ajouter une Table",
|
||||
add_field: "Ajouter un Champ",
|
||||
add_index: "Ajouter un Index",
|
||||
add_relationship: "Ajouter une Relation",
|
||||
add_table: "Ajouter une table",
|
||||
add_field: "Ajouter un champ",
|
||||
add_index: "Ajouter un index",
|
||||
delete_table: "Supprimer la table",
|
||||
duplicate: "Dupliquer",
|
||||
add_relationship: "Ajouter une relation",
|
||||
show_code: "Afficher le code",
|
||||
fields: "Champs",
|
||||
indexes: "Indexes",
|
||||
indexes: "Index",
|
||||
note: "Note",
|
||||
name: "Nom",
|
||||
type: "Type",
|
||||
nullable: "Nullable",
|
||||
select_fields: "Sélectionner les champs",
|
||||
unique: "Unique",
|
||||
table_note: "Note de la Table",
|
||||
table_note: "Note de la table",
|
||||
collapse: "Tout réduire",
|
||||
|
||||
primary_key: "Clé primaire",
|
||||
foreign_key: "Clé étrangère",
|
||||
|
||||
source_table: "Table source",
|
||||
target_table: "Table cible",
|
||||
|
||||
select_table: "Sélectionner la table",
|
||||
select_field: "Sélectionner le champ",
|
||||
|
||||
referenced_table: "Table référencée",
|
||||
select_table: "Sélectionner une table",
|
||||
select_field: "Sélectionner un champ",
|
||||
empty_list: {
|
||||
no_tables: "Aucune table",
|
||||
no_tables_description: "Créez une table pour commencer.",
|
||||
no_relationships: "Aucune relation",
|
||||
no_relationships_description: "Créez des relations pour connecter deux tables"
|
||||
},
|
||||
cardinality: {
|
||||
name: "Cardinalité",
|
||||
one_to_one: "Un à Un",
|
||||
one_to_many: "Un à Plusieurs",
|
||||
many_to_one: "Plusieurs à Un",
|
||||
many_to_many: "Plusieurs à Plusieurs"
|
||||
one_to_one: "Un à un",
|
||||
one_to_many: "Un à plusieurs",
|
||||
many_to_one: "Plusieurs à un",
|
||||
many_to_many: "Plusieurs à plusieurs"
|
||||
},
|
||||
foreign_key_actions: {
|
||||
title: "Actions de clé étrangère",
|
||||
on_delete: "Lors de la suppression",
|
||||
on_update: "Lors de la mise à jour",
|
||||
actions: {
|
||||
no_action: "Aucune action",
|
||||
cascade: "Cascade",
|
||||
set_null: "Définir à null",
|
||||
set_default: "Définir par défaut",
|
||||
restrict: "Restreindre"
|
||||
}
|
||||
},
|
||||
field_settings: {
|
||||
title: "Paramètres du champ",
|
||||
unique: "Unique",
|
||||
unsigned: "Non signé",
|
||||
numeric_setting: "Paramètres numériques",
|
||||
decimal_setting: "Paramètres décimaux",
|
||||
zeroFill: "Complément zéro",
|
||||
autoIncrement: "Auto-incrémentation",
|
||||
note: "Note",
|
||||
delete_field: "Supprimer le champ",
|
||||
field_note: "Note du champ",
|
||||
precision: "Précision",
|
||||
text_setting: "Paramètres de texte",
|
||||
charset: "Jeu de caractères",
|
||||
collation: "Collation",
|
||||
scale: "Échelle",
|
||||
max_length: "Longueur max",
|
||||
integer_width: "Largeur entière",
|
||||
width: "Largeur",
|
||||
default_value: "Valeur par défaut",
|
||||
value: "Valeur",
|
||||
length: "Longueur",
|
||||
values: "Valeurs",
|
||||
type_enter: "Tapez et appuyez sur Entrée",
|
||||
precision_def: "Nombre total de chiffres autorisés (avant + après la virgule).",
|
||||
scale_def: "Nombre de chiffres autorisés après la virgule.",
|
||||
time_default_value: {
|
||||
no_value: "Aucune valeur",
|
||||
custom: "Heure personnalisée",
|
||||
now: "Maintenant"
|
||||
},
|
||||
errors: {
|
||||
max_length: "doit être un nombre positif sans décimales.",
|
||||
integer_default_value: "Valeur par défaut invalide pour un entier",
|
||||
precision: "La précision doit être un nombre positif sans décimales.",
|
||||
scale: "L'échelle doit être un nombre positif sans décimales.",
|
||||
scale_max_value: "L'échelle doit être ≤ à la précision."
|
||||
},
|
||||
pick_value: "Choisir une valeur"
|
||||
},
|
||||
delete: "Supprimer",
|
||||
field_setting: "Paramètres du champ",
|
||||
table_actions: "Actions sur le champ",
|
||||
index_setting: "Paramètres de l'index",
|
||||
table_actions: "Actions de table",
|
||||
actions: "Actions",
|
||||
|
||||
field_note: "Note sur le champ",
|
||||
delete_field: "Supprimer le champ",
|
||||
|
||||
create_relationship: "Créer une Relation",
|
||||
relationship_error: "Pour créer une relation, la primary key et la foreign key doivent être du même type.",
|
||||
|
||||
delete_index: "Supprimer l'index",
|
||||
index_name: "Nom de l'index",
|
||||
create_relationship: "Créer une relation",
|
||||
relationship_error: "Pour créer une relation, la clé primaire et la clé étrangère doivent être du même type.",
|
||||
invalid_relationship: {
|
||||
title: "Relation invalide",
|
||||
description: "Le type de la source key ne correspond pas au type de la referenced key. Veuillez vous assurer que les deux clés ont le même type de données."
|
||||
description: "Le type de la clé source ne correspond pas à celui de la clé référencée. Assurez-vous qu'elles aient le même type de données."
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "Dépendance circulaire détectée",
|
||||
toast_description: "Une référence circulaire entre les tables a été détectée. Vérifiez le diagramme à gauche et supprimez une des relations pour corriger cela.",
|
||||
description: "Votre schéma contient une relation de clé étrangère circulaire entre les tables. Pour corriger cela,",
|
||||
suggestion: "supprimez l’une des relations ci-dessous qui provoque le cycle.",
|
||||
remove_relationship: "Supprimer la relation"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "Double-cliquez pour éditer",
|
||||
double_click: "Double-cliquez pour modifier",
|
||||
overlapping_tables: "Tables qui se chevauchent",
|
||||
show_more: "Afficher plus",
|
||||
show_less: "Afficher moins"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "Refaire",
|
||||
redo: "Rétablir",
|
||||
undo: "Annuler",
|
||||
zoom_in: "Zoom avant",
|
||||
zoom_out: "Zoom arrière",
|
||||
adjust_positions: "Ajuster les positions",
|
||||
show_all: "Tout afficher"
|
||||
show_all: "Afficher tout"
|
||||
},
|
||||
menu: {
|
||||
file: "Fichier",
|
||||
@@ -84,21 +146,23 @@ export const fr = {
|
||||
import: "Importer",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySql",
|
||||
postgresql: "Postgresql",
|
||||
export_sql: "Exporter SQL",
|
||||
mysql: "MySQL",
|
||||
postgresql: "PostgreSQL",
|
||||
export_sql: "Exporter en SQL",
|
||||
generic: "Générique",
|
||||
export_orm_models: "Exporter les ORM Models",
|
||||
export_orm_models: "Exporter les modèles ORM",
|
||||
delete_project: "Supprimer le projet",
|
||||
edit: "Éditer",
|
||||
undo: "Annuler",
|
||||
redo: "Refaire",
|
||||
redo: "Rétablir",
|
||||
clear: "Effacer",
|
||||
view: "Affichage",
|
||||
view: "Vue",
|
||||
hide_controller: "Masquer le contrôleur",
|
||||
zoom_on_scroll: "Zoom au défilement",
|
||||
on: "Activé",
|
||||
off: "Désactivé",
|
||||
show_controller: "Afficher le contrôleur",
|
||||
cardinality_style: "Style de cardinalité",
|
||||
hidden: "Caché",
|
||||
numeric: "Numérique",
|
||||
symbolic: "Symbolique",
|
||||
theme: "Thème",
|
||||
light: "Clair",
|
||||
dark: "Sombre",
|
||||
@@ -106,30 +170,83 @@ export const fr = {
|
||||
show_docs: "Afficher la documentation",
|
||||
join_discord: "Rejoindre Discord"
|
||||
},
|
||||
|
||||
modals: {
|
||||
close: "Fermer",
|
||||
create: "Créer",
|
||||
pick_database: "Choisissez votre base de données.",
|
||||
create_database_header: "Chaque base de données offre des fonctionnalités différentes.",
|
||||
db_name: "Nom de la base de données",
|
||||
db_name_error: "Veuillez saisir un nom de base de données",
|
||||
continue: "Continuer",
|
||||
open: "Ouvrir",
|
||||
open_database: "Ouvrir une base de données",
|
||||
open_database_header: "Ouvrez une base de données en sélectionnant une dans la liste.",
|
||||
delete_database: "Supprimer la base de données",
|
||||
delete_database_content: "Cette action est irréversible et supprimera définitivement le diagramme.",
|
||||
delete: "Supprimer",
|
||||
import_database: {
|
||||
title: "Importer votre base de données",
|
||||
import: "Importer",
|
||||
import_options: "Souhaitez-vous importer en utilisant :",
|
||||
import_error: "Erreur d’analyse SQL",
|
||||
import_error_description: "Nous n'avons pas pu importer votre SQL car il contient une syntaxe invalide.",
|
||||
import_warning: "Avertissement d’analyse SQL",
|
||||
import_warning_description: "Certains éléments n'ont pas pu être traités à cause de déclarations non prises en charge ou incomplètes."
|
||||
},
|
||||
export_sql: "Exporter en SQL",
|
||||
export_sql_header: "Exporter votre diagramme de base de données en code SQL"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "Copier",
|
||||
copied: "Copié"
|
||||
},
|
||||
connection_status: {
|
||||
online: "En ligne",
|
||||
offline: "Hors ligne",
|
||||
saving: "Enregistrement...",
|
||||
saved: "Enregistré",
|
||||
last_synced: "Dernière synchronisation",
|
||||
min_ago: "min auparavant",
|
||||
hour_ago: "heure auparavant",
|
||||
just_now: "À l’instant"
|
||||
},
|
||||
import: {
|
||||
instructions: "Instructions",
|
||||
install: "Installer",
|
||||
run_command: "Exécutez la commande suivante dans votre terminal.",
|
||||
example: "Exemple",
|
||||
copy_code: "Copiez le contenu du fichier .sql dans la section de code ci-dessous.",
|
||||
copy_code: "Copiez le contenu du fichier .sql dans la section code ci-dessous.",
|
||||
pg_admin: {
|
||||
step1: "Ouvrez <bold>Pg Admin</bold>.",
|
||||
step2: "Faites un clic droit sur votre base de données et sélectionnez <bold>Sauvegarder</bold> dans le menu contextuel.",
|
||||
step3: "Nommez votre fichier <code>.sql</code>, définissez le format sur <bold>Plain</bold> et choisissez <bold>Encodage : UTF8.</bold>",
|
||||
step4: "Assurez-vous que <bold>Only schema</bold> est coché et que <bold>Only data</bold> ne l'est pas dans l'onglet <bold>Data Options</bold>.",
|
||||
step5: "Cliquez sur <bold>Sauvegarder</bold> pour exporter le fichier, puis copiez son contenu dans la section de l'éditeur de code ci-dessous."
|
||||
step2: "Faites un clic droit sur votre base de données et sélectionnez <bold>Sauvegarder</bold>.",
|
||||
step3: "Nommez votre fichier <code>.sql</code>, définissez le format sur <bold>Simple</bold>, et choisissez <bold>Encodage : UTF8.</bold>",
|
||||
step4: "Assurez-vous que <bold>Schéma uniquement</bold> est coché et que <bold>Données uniquement</bold> ne l'est pas dans l’<bold>onglet Options de données</bold>.",
|
||||
step5: "Cliquez sur <bold>Sauvegarder</bold> pour exporter le fichier, puis copiez son contenu dans l’éditeur de code ci-dessous."
|
||||
},
|
||||
workbench: {
|
||||
step1: "Ouvrez <bold>MySQL Workbench</bold> et <bold>connectez-vous</bold> à votre serveur MySQL.",
|
||||
step2: "Dans le menu du haut, allez dans <bold>Server > Data Export</bold>.",
|
||||
step3: "Dans les <bold>Options d'exportation</bold>, choisissez <bold>Dump Structure Only</bold>.",
|
||||
step4: "Cochez <bold>Export to Self-Contained File</bold>, puis choisissez un emplacement et donnez un nom au fichier <code>.sql</code> de sortie.",
|
||||
step5: "Cliquez sur <bold>Démarrer l'exportation</bold> pour lancer le processus. Ensuite, copiez son contenu dans la section de l'éditeur de code ci-dessous."
|
||||
step2: "Dans le menu principal, allez à <bold>Serveur > Exportation de données</bold>.",
|
||||
step3: "Dans les <bold>Options d’exportation</bold>, choisissez <bold>Exporter la structure uniquement</bold>.",
|
||||
step4: "Cochez <bold>Exporter dans un fichier autonome</bold>, puis choisissez un emplacement et entrez un nom pour le fichier <code>.sql</code>.",
|
||||
step5: "Cliquez sur <bold>Commencer l’exportation</bold>. Ensuite, copiez son contenu dans l’éditeur de code ci-dessous."
|
||||
},
|
||||
heidisql: {
|
||||
step1: "<bold>Ouvrez HeidiSQL</bold> et connectez-vous à votre serveur.",
|
||||
step2: "Dans la <bold>barre latérale gauche</bold>, faites un clic droit sur la base de données à exporter.",
|
||||
step3: "Choisissez <bold>Exporter la base de données en SQL</bold>.",
|
||||
step4: "Sélectionnez <bold>Pas de données</bold> et assurez-vous que <bold>Créer</bold> est coché pour exporter uniquement la structure.",
|
||||
step5: "Cliquez sur le bouton <bold>Exporter</bold>, puis copiez le contenu du fichier <code>.sql</code> dans l’éditeur de code ci-dessous."
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "Lancez <bold>DB Browser for SQLite</bold>.",
|
||||
step2: "Cliquez sur <bold>Fichier > Ouvrir une base de données</bold> et sélectionnez votre fichier <code>.sqlite</code> ou <code>.db</code>.",
|
||||
step3: "Allez à <bold>Fichier > Exporter > Base de données vers fichier SQL</bold>.",
|
||||
step4: "Dans la fenêtre, sélectionnez <bold>Exporter uniquement le schéma</bold> et cliquez sur <bold>Enregistrer</bold>.",
|
||||
step5: "Enfin, copiez le contenu du fichier <code>.sql</code> dans l’éditeur de code ci-dessous."
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export const frLanguage: Language = {
|
||||
name: "French",
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const hi = {
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "तालिकाएँ",
|
||||
relationships: "रिलेशनशिप्स"
|
||||
},
|
||||
|
||||
color_picker: {
|
||||
default_color: "डिफ़ॉल्ट रंग"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "डेटाबेस का नाम बदलें",
|
||||
search: "खोजें"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "फ़िल्टर",
|
||||
add_table: "तालिका जोड़ें",
|
||||
add_field: "फ़ील्ड जोड़ें",
|
||||
add_index: "इंडेक्स जोड़ें",
|
||||
delete_table: "तालिका हटाएँ",
|
||||
duplicate: "कॉपी करें",
|
||||
add_relationship: "रिलेशनशिप जोड़ें",
|
||||
show_code: "कोड दिखाएं",
|
||||
fields: "फ़ील्ड्स",
|
||||
indexes: "इंडेक्सेस",
|
||||
note: "नोट",
|
||||
name: "नाम",
|
||||
type: "प्रकार",
|
||||
nullable: "नल योग्य",
|
||||
select_fields: "फ़ील्ड चुनें",
|
||||
unique: "अद्वितीय",
|
||||
table_note: "तालिका नोट",
|
||||
collapse: "सभी को संक्षिप्त करें",
|
||||
primary_key: "प्राथमिक कुंजी",
|
||||
foreign_key: "विदेशी कुंजी",
|
||||
|
||||
source_table: "स्रोत तालिका",
|
||||
referenced_table: "संदर्भित तालिका",
|
||||
|
||||
select_table: "तालिका चुनें",
|
||||
select_field: "फ़ील्ड चुनें",
|
||||
|
||||
empty_list: {
|
||||
no_tables: "कोई तालिकाएँ नहीं",
|
||||
no_tables_description: "शुरू करने के लिए एक तालिका बनाएं।",
|
||||
|
||||
no_relationships: "कोई रिलेशनशिप्स नहीं",
|
||||
no_relationships_description: "दो तालिकाओं को जोड़ने के लिए रिलेशनशिप बनाएं"
|
||||
},
|
||||
|
||||
cardinality: {
|
||||
name: "कार्डिनैलिटी",
|
||||
one_to_one: "एक से एक",
|
||||
one_to_many: "एक से अनेक",
|
||||
many_to_one: "अनेक से एक",
|
||||
many_to_many: "अनेक से अनेक"
|
||||
},
|
||||
foreign_key_actions: {
|
||||
title: "विदेशी कुंजी क्रियाएँ",
|
||||
on_delete: "हटाने पर",
|
||||
on_update: "अपडेट पर",
|
||||
actions: {
|
||||
no_action: "कोई क्रिया नहीं",
|
||||
cascade: "कैस्केड",
|
||||
set_null: "नल सेट करें",
|
||||
set_default: "डिफ़ॉल्ट सेट करें",
|
||||
restrict: "प्रतिबंधित करें"
|
||||
}
|
||||
},
|
||||
field_settings: {
|
||||
title: "फ़ील्ड सेटिंग",
|
||||
unique: "अद्वितीय",
|
||||
unsigned: "असाइन किए बिना",
|
||||
numeric_setting: "संख्यात्मक सेटिंग",
|
||||
decimal_setting: "दशमलव सेटिंग",
|
||||
zeroFill: "शून्य भरें",
|
||||
autoIncrement: "स्वतः वृद्धि",
|
||||
note: "नोट",
|
||||
|
||||
delete_field: "फ़ील्ड हटाएं",
|
||||
field_note: "फ़ील्ड नोट",
|
||||
precision: "सटीकता",
|
||||
text_setting: "टेक्स्ट सेटिंग",
|
||||
charset: "अक्षरसेट",
|
||||
collation: "कोलेशन",
|
||||
scale: "स्केल",
|
||||
max_length: "अधिकतम लंबाई",
|
||||
integer_width: "पूर्णांक चौड़ाई",
|
||||
width: "चौड़ाई",
|
||||
default_value: "डिफ़ॉल्ट मान",
|
||||
value: "मान",
|
||||
length: "लंबाई",
|
||||
values: "मान",
|
||||
type_enter: "टाइप करें और एंटर दबाएं",
|
||||
precision_def: "कुल अनुमत अंक (दशमलव से पहले और बाद)।",
|
||||
scale_def: "दशमलव के बाद अनुमत अंक।",
|
||||
time_default_value: {
|
||||
no_value: "कोई मान नहीं",
|
||||
custom: "कस्टम समय",
|
||||
now: "अभी"
|
||||
},
|
||||
errors: {
|
||||
max_length: "सकारात्मक संख्या होनी चाहिए, दशमलव नहीं।",
|
||||
integer_default_value: "पूर्णांक के लिए अमान्य डिफ़ॉल्ट मान",
|
||||
precision: "सटीकता सकारात्मक संख्या होनी चाहिए, दशमलव नहीं।",
|
||||
scale: "स्केल सकारात्मक संख्या होनी चाहिए, दशमलव नहीं।",
|
||||
scale_max_value: "स्केल ≤ सटीकता होनी चाहिए।"
|
||||
},
|
||||
pick_value: "मान चुनें"
|
||||
},
|
||||
delete: "हटाएँ",
|
||||
|
||||
index_setting: "इंडेक्स सेटिंग",
|
||||
table_actions: "तालिका क्रियाएँ",
|
||||
actions: "क्रियाएँ",
|
||||
delete_index: "इंडेक्स हटाएं",
|
||||
index_name: "इंडेक्स नाम",
|
||||
create_relationship: "रिलेशनशिप बनाएं",
|
||||
relationship_error: "रिलेशनशिप बनाने के लिए, प्राथमिक कुंजी और विदेशी कुंजी समान प्रकार की होनी चाहिए।",
|
||||
|
||||
invalid_relationship: {
|
||||
title: "अमान्य रिलेशनशिप",
|
||||
description: "स्रोत कुंजी प्रकार संदर्भित कुंजी प्रकार से मेल नहीं खाता। कृपया सुनिश्चित करें कि दोनों कुंजी एक ही डेटा प्रकार की हों।"
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "परिपत्र निर्भरता मिली",
|
||||
toast_description: "तालिकाओं के बीच परिपत्र संदर्भ पाया गया। बाईं ओर के आरेख की जाँच करें और एक रिलेशनशिप हटाएं।",
|
||||
description: "आपकी स्कीमा में तालिकाओं के बीच एक परिपत्र विदेशी कुंजी संबंध है। इसे ठीक करने के लिए",
|
||||
suggestion: "नीचे दी गई चक्र उत्पन्न करने वाली रिलेशनशिप में से एक को हटाएं।",
|
||||
remove_relationship: "रिलेशनशिप हटाएं"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "संपादन के लिए डबल क्लिक करें",
|
||||
overlapping_tables: "ओवरलैपिंग तालिकाएँ",
|
||||
show_more: "और दिखाएं",
|
||||
show_less: "कम दिखाएं"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "फिर से करें",
|
||||
undo: "पूर्ववत करें",
|
||||
zoom_in: "ज़ूम इन",
|
||||
zoom_out: "ज़ूम आउट",
|
||||
adjust_positions: "स्थिति समायोजित करें",
|
||||
show_all: "सभी दिखाएं"
|
||||
},
|
||||
menu: {
|
||||
file: "फ़ाइल",
|
||||
new: "नया",
|
||||
open: "खोलें",
|
||||
save: "सहेजें",
|
||||
import: "आयात करें",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySQL",
|
||||
postgresql: "PostgreSQL",
|
||||
export_sql: "SQL निर्यात करें",
|
||||
generic: "सामान्य",
|
||||
export_orm_models: "ORM मॉडल निर्यात करें",
|
||||
delete_project: "परियोजना हटाएं",
|
||||
edit: "संपादित करें",
|
||||
undo: "पूर्ववत करें",
|
||||
redo: "फिर से करें",
|
||||
clear: "साफ करें",
|
||||
view: "दृश्य",
|
||||
hide_controller: "कंट्रोलर छिपाएं",
|
||||
show_controller: "कंट्रोलर दिखाएं",
|
||||
cardinality_style: "कार्डिनैलिटी शैली",
|
||||
hidden: "छिपा हुआ",
|
||||
numeric: "संख्यात्मक",
|
||||
symbolic: "प्रतीकात्मक",
|
||||
theme: "थीम",
|
||||
light: "हल्का",
|
||||
dark: "गहरा",
|
||||
help: "मदद",
|
||||
show_docs: "दस्तावेज़ दिखाएं",
|
||||
join_discord: "डिस्कॉर्ड से जुड़ें"
|
||||
},
|
||||
|
||||
modals: {
|
||||
close: "बंद करें",
|
||||
create: "बनाएं",
|
||||
pick_database: "अपना डेटाबेस चुनें।",
|
||||
create_database_header: "हर डेटाबेस विशिष्ट विशेषताएं और कार्यक्षमता प्रदान करता है।",
|
||||
db_name: "डेटाबेस का नाम",
|
||||
db_name_error: "कृपया डेटाबेस का नाम प्रदान करें",
|
||||
continue: "जारी रखें",
|
||||
open: "खोलें",
|
||||
open_database: "डेटाबेस खोलें",
|
||||
open_database_header: "सूची में से एक डेटाबेस चुनकर खोलें।",
|
||||
delete_database: "डेटाबेस हटाएं",
|
||||
delete_database_content: "यह क्रिया अपरिवर्तनीय है और आरेख को स्थायी रूप से हटा देगी।",
|
||||
delete: "हटाएँ",
|
||||
|
||||
import_database: {
|
||||
title: "अपना डेटाबेस आयात करें",
|
||||
import: "आयात करें",
|
||||
import_options: "क्या आप निम्न के माध्यम से आयात करना चाहेंगे:",
|
||||
import_error: "SQL पार्सिंग त्रुटि",
|
||||
import_error_description: "हम आपका SQL आयात नहीं कर सके क्योंकि इसमें अमान्य सिंटैक्स है।",
|
||||
import_warning: "SQL पार्सिंग चेतावनी",
|
||||
import_warning_description: "कुछ तत्वों को समर्थन न होने या अधूरे घोषणाओं के कारण संसाधित नहीं किया जा सका।"
|
||||
},
|
||||
export_sql: "SQL निर्यात करें",
|
||||
export_sql_header: "अपने डेटाबेस आरेख को SQL कोड में निर्यात करें"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "कॉपी करें",
|
||||
copied: "कॉपी किया गया"
|
||||
},
|
||||
|
||||
connection_status: {
|
||||
online: "ऑनलाइन",
|
||||
offline: "ऑफ़लाइन",
|
||||
saving: "सहेजा जा रहा है",
|
||||
saved: "सहेजा गया",
|
||||
last_synced: "अंतिम समन्वय",
|
||||
min_ago: "मिनट पहले",
|
||||
hour_ago: "घंटा पहले",
|
||||
just_now: "अभी"
|
||||
},
|
||||
import: {
|
||||
instructions: "निर्देश",
|
||||
install: "इंस्टॉल करें",
|
||||
run_command: "अपने टर्मिनल में निम्न कमांड चलाएं।",
|
||||
example: "उदाहरण",
|
||||
copy_code: "नीचे दिए गए कोड सेक्शन में .sql फ़ाइल की सामग्री कॉपी करें।",
|
||||
pg_admin: {
|
||||
step1: "<bold>Pg Admin</bold> खोलें।",
|
||||
step2: "अपने डेटाबेस पर राइट-क्लिक करें और <bold>Backup</bold> चुनें।",
|
||||
step3: "अपनी <code>.sql</code> फ़ाइल को नाम दें, फॉर्मेट को <bold>Plain</bold> पर सेट करें और <bold>Encoding: UTF8</bold> चुनें।",
|
||||
step4: "<bold>Data Options टैब</bold> में सुनिश्चित करें कि <bold>Only schema</bold> चयनित है और <bold>Only data</bold> चयनित नहीं है।",
|
||||
step5: "<bold>Backup</bold> पर क्लिक करें और फिर उसकी सामग्री को नीचे दिए गए कोड एडिटर में पेस्ट करें।"
|
||||
},
|
||||
workbench: {
|
||||
step1: "<bold>MySQL Workbench</bold> खोलें और अपने MySQL सर्वर से <bold>connect</bold> करें।",
|
||||
step2: "शीर्ष मेनू में <bold>Server > Data Export</bold> पर जाएं।",
|
||||
step3: "<bold>Export Options</bold> में <bold>Dump Structure Only</bold> चुनें।",
|
||||
step4: "<bold>Export to Self-Contained File</bold> को चेक करें, स्थान और नाम चुनें।",
|
||||
step5: "<bold>Start Export</bold> पर क्लिक करें और फिर फ़ाइल की सामग्री को नीचे दिए गए कोड एडिटर में कॉपी करें।"
|
||||
},
|
||||
heidisql: {
|
||||
step1: "<bold>HeidiSQL</bold> खोलें और अपने सर्वर से कनेक्ट करें।",
|
||||
step2: "बाएं साइडबार में, उस डेटाबेस पर <bold>राइट-क्लिक</bold> करें जिसे आप निर्यात करना चाहते हैं।",
|
||||
step3: "<bold>Export database as SQL</bold> चुनें।",
|
||||
step4: "<bold>No data</bold> चुनें और सुनिश्चित करें कि <bold>Create</bold> चेक किया गया है।",
|
||||
step5: "<bold>Export</bold> बटन पर क्लिक करें और फिर <code>.sql</code> फ़ाइल की सामग्री को नीचे कोड एडिटर में कॉपी करें।"
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "<bold>DB Browser for SQLite</bold> लॉन्च करें।",
|
||||
step2: "<bold>File > Open Database</bold> पर क्लिक करें और अपनी <code>.sqlite</code> या <code>.db</code> फ़ाइल चुनें।",
|
||||
step3: "शीर्ष मेनू से <bold>File > Export > Database to SQL file</bold> पर जाएं।",
|
||||
step4: "डायलॉग में <bold>Export schema only</bold> चुनें और <bold>Save</bold> पर क्लिक करें।",
|
||||
step5: "अंत में, <code>.sql</code> फ़ाइल की सामग्री को नीचे दिए गए <bold>code editor</bold> में कॉपी करें।"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const hiLanguage: Language = {
|
||||
name: "Hindi",
|
||||
nativeName: "हिन्दी",
|
||||
code: "hi",
|
||||
};
|
||||
@@ -0,0 +1,265 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const pt = {
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "Tabelas",
|
||||
relationships: "Relacionamentos"
|
||||
},
|
||||
|
||||
color_picker: {
|
||||
default_color: "Cor padrão"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "Renomear banco de dados",
|
||||
search: "Pesquisar"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "Filtrar",
|
||||
add_table: "Adicionar Tabela",
|
||||
add_field: "Adicionar Campo",
|
||||
add_index: "Adicionar Índice",
|
||||
delete_table: "Excluir Tabela",
|
||||
duplicate: "Duplicar",
|
||||
add_relationship: "Adicionar Relacionamento",
|
||||
show_code: "Mostrar código",
|
||||
fields: "Campos",
|
||||
indexes: "Índices",
|
||||
note: "Nota",
|
||||
name: "Nome",
|
||||
type: "Tipo",
|
||||
nullable: "Aceita Nulo",
|
||||
select_fields: "Selecionar campos",
|
||||
unique: "Único",
|
||||
table_note: "Nota da tabela",
|
||||
collapse: "Recolher Tudo",
|
||||
primary_key: "Chave Primária",
|
||||
foreign_key: "Chave Estrangeira",
|
||||
|
||||
source_table: "Tabela de Origem",
|
||||
referenced_table: "Tabela Referenciada",
|
||||
|
||||
select_table: "Selecionar tabela",
|
||||
select_field: "Selecionar campo",
|
||||
|
||||
empty_list: {
|
||||
no_tables: "Nenhuma Tabela",
|
||||
no_tables_description: "Crie uma tabela para começar.",
|
||||
no_relationships: "Nenhum Relacionamento",
|
||||
no_relationships_description: "Crie relacionamentos para conectar duas tabelas"
|
||||
},
|
||||
|
||||
cardinality: {
|
||||
name: "Cardinalidade",
|
||||
one_to_one: "Um para Um",
|
||||
one_to_many: "Um para Muitos",
|
||||
many_to_one: "Muitos para Um",
|
||||
many_to_many: "Muitos para Muitos"
|
||||
},
|
||||
foreign_key_actions: {
|
||||
title: "Ações da Chave Estrangeira",
|
||||
on_delete: "Ao Excluir",
|
||||
on_update: "Ao Atualizar",
|
||||
actions: {
|
||||
no_action: "Nenhuma Ação",
|
||||
cascade: "Cascata",
|
||||
set_null: "Definir como Nulo",
|
||||
set_default: "Definir como Padrão",
|
||||
restrict: "Restringir"
|
||||
}
|
||||
},
|
||||
field_settings: {
|
||||
title: "Configuração de Campo",
|
||||
unique: "Único",
|
||||
unsigned: "Sem Sinal",
|
||||
numeric_setting: "Configuração Numérica",
|
||||
decimal_setting: "Configuração Decimal",
|
||||
zeroFill: "Preencher com Zeros",
|
||||
autoIncrement: "Auto Incremento",
|
||||
note: "Nota",
|
||||
|
||||
delete_field: "Excluir Campo",
|
||||
field_note: "Nota do Campo",
|
||||
precision: "Precisão",
|
||||
text_setting: "Configuração de Texto",
|
||||
charset: "Charset",
|
||||
collation: "Colação",
|
||||
scale: "Escala",
|
||||
max_length: "Comprimento Máximo",
|
||||
integer_width: "Largura do Inteiro",
|
||||
width: "Largura",
|
||||
default_value: "Valor Padrão",
|
||||
value: "Valor",
|
||||
length: "Comprimento",
|
||||
values: "Valores",
|
||||
type_enter: "Digite e pressione enter",
|
||||
precision_def: "Dígitos totais permitidos (antes + depois do decimal).",
|
||||
scale_def: "Dígitos permitidos após o decimal.",
|
||||
time_default_value: {
|
||||
no_value: "Sem valor",
|
||||
custom: "Hora personalizada",
|
||||
now: "Agora"
|
||||
},
|
||||
errors: {
|
||||
max_length: "deve ser um número positivo, sem decimais.",
|
||||
integer_default_value: "Valor padrão inválido para Inteiro",
|
||||
precision: "Precisão deve ser um número positivo, sem decimais.",
|
||||
scale: "Escala deve ser um número positivo, sem decimais.",
|
||||
scale_max_value: "A escala deve ser ≤ à precisão."
|
||||
},
|
||||
pick_value: "Escolher valor"
|
||||
},
|
||||
delete: "Excluir",
|
||||
|
||||
index_setting: "Configuração de Índice",
|
||||
table_actions: "Ações da Tabela",
|
||||
actions: "Ações",
|
||||
delete_index: "Excluir Índice",
|
||||
index_name: "Nome do Índice",
|
||||
create_relationship: "Criar Relacionamento",
|
||||
relationship_error: "Para criar um relacionamento, a chave primária e a chave estrangeira devem ser do mesmo tipo.",
|
||||
|
||||
invalid_relationship: {
|
||||
title: "Relacionamento Inválido",
|
||||
description: "O tipo da chave de origem não corresponde ao tipo da chave referenciada. Verifique se ambos têm o mesmo tipo de dado."
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "Dependência Circular Detectada",
|
||||
toast_description: "Foi encontrado um ciclo entre tabelas. Verifique o diagrama à esquerda e remova um dos relacionamentos para corrigir.",
|
||||
description: "Seu esquema contém uma relação circular de chave estrangeira entre tabelas. Para corrigir,",
|
||||
suggestion: "remova um dos relacionamentos listados abaixo que está causando o ciclo.",
|
||||
remove_relationship: "Remover relacionamento"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "Clique duas vezes para editar",
|
||||
overlapping_tables: "Tabelas Sobrepostas",
|
||||
show_more: "Mostrar mais",
|
||||
show_less: "Mostrar menos"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "Refazer",
|
||||
undo: "Desfazer",
|
||||
zoom_in: "Aumentar Zoom",
|
||||
zoom_out: "Diminuir Zoom",
|
||||
adjust_positions: "Ajustar Posições",
|
||||
show_all: "Mostrar tudo"
|
||||
},
|
||||
menu: {
|
||||
file: "Arquivo",
|
||||
new: "Novo",
|
||||
open: "Abrir",
|
||||
save: "Salvar",
|
||||
import: "Importar",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySQL",
|
||||
postgresql: "PostgreSQL",
|
||||
export_sql: "Exportar SQL",
|
||||
generic: "Genérico",
|
||||
export_orm_models: "Exportar Modelos ORM",
|
||||
delete_project: "Excluir Projeto",
|
||||
edit: "Editar",
|
||||
undo: "Desfazer",
|
||||
redo: "Refazer",
|
||||
clear: "Limpar",
|
||||
view: "Visualizar",
|
||||
hide_controller: "Ocultar Controlador",
|
||||
show_controller: "Mostrar Controlador",
|
||||
cardinality_style: "Estilo de Cardinalidade",
|
||||
hidden: "Oculto",
|
||||
numeric: "Numérico",
|
||||
symbolic: "Simbólico",
|
||||
theme: "Tema",
|
||||
light: "Claro",
|
||||
dark: "Escuro",
|
||||
help: "Ajuda",
|
||||
show_docs: "Mostrar Documentação",
|
||||
join_discord: "Entrar no Discord"
|
||||
},
|
||||
|
||||
modals: {
|
||||
close: "Fechar",
|
||||
create: "Criar",
|
||||
pick_database: "Escolha seu Banco de Dados.",
|
||||
create_database_header: "Cada banco de dados oferece recursos e funcionalidades distintas.",
|
||||
db_name: "Nome do Banco de Dados",
|
||||
db_name_error: "Por favor, forneça um nome para o Banco de Dados",
|
||||
continue: "Continuar",
|
||||
open: "Abrir",
|
||||
open_database: "Abrir Banco de Dados",
|
||||
open_database_header: "Abra um banco de dados selecionando um da lista.",
|
||||
delete_database: "Excluir Banco de Dados",
|
||||
delete_database_content: "Esta ação é irreversível e removerá o diagrama permanentemente.",
|
||||
delete: "Excluir",
|
||||
|
||||
import_database: {
|
||||
title: "Importar seu Banco de Dados",
|
||||
import: "Importar",
|
||||
import_options: "Gostaria de importar usando:",
|
||||
import_error: "Erro de Análise SQL",
|
||||
import_error_description: "Não foi possível importar seu SQL porque contém sintaxe inválida.",
|
||||
import_warning: "Aviso de Análise SQL",
|
||||
import_warning_description: "Alguns elementos não puderam ser processados devido a declarações não suportadas ou incompletas."
|
||||
},
|
||||
export_sql: "Exportar SQL",
|
||||
export_sql_header: "Exporte seu diagrama de banco de dados em código SQL"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "Copiar",
|
||||
copied: "Copiado"
|
||||
},
|
||||
|
||||
connection_status: {
|
||||
online: "Online",
|
||||
offline: "Offline",
|
||||
saving: "Salvando",
|
||||
saved: "Salvo",
|
||||
last_synced: "Última sincronização",
|
||||
min_ago: "min atrás",
|
||||
hour_ago: "hora atrás",
|
||||
just_now: "Agora mesmo"
|
||||
},
|
||||
import: {
|
||||
instructions: "Instruções",
|
||||
install: "Instalar",
|
||||
run_command: "Execute o seguinte comando no seu terminal.",
|
||||
example: "Exemplo",
|
||||
copy_code: "Copie o conteúdo do arquivo .sql na seção de código abaixo.",
|
||||
pg_admin: {
|
||||
step1: "Abra o <bold>Pg Admin</bold>.",
|
||||
step2: "Clique com o botão direito no seu banco de dados e selecione <bold>Backup</bold>.",
|
||||
step3: "Dê um nome ao seu arquivo <code>.sql</code>, defina o formato como <bold>Plain</bold> e escolha <bold>Encoding: UTF8</bold>.",
|
||||
step4: "Certifique-se de que <bold>Apenas esquema</bold> esteja marcado e <bold>Apenas dados</bold> esteja desmarcado na <bold>aba Opções de Dados</bold>.",
|
||||
step5: "Clique em <bold>Backup</bold> para exportar o arquivo e depois copie seu conteúdo para o editor de código abaixo."
|
||||
},
|
||||
workbench: {
|
||||
step1: "Abra o <bold>MySQL Workbench</bold> e <bold>conecte-se</bold> ao seu servidor MySQL.",
|
||||
step2: "No menu superior, vá para <bold>Servidor > Exportação de Dados</bold>.",
|
||||
step3: "Nas <bold>Opções de Exportação</bold>, escolha <bold>Dump Structure Only</bold>.",
|
||||
step4: "Marque <bold>Exportar para Arquivo Autônomo</bold>, escolha um local e nome para o arquivo <code>.sql</code>.",
|
||||
step5: "Clique em <bold>Iniciar Exportação</bold>. Depois, copie o conteúdo para o editor de código abaixo."
|
||||
},
|
||||
heidisql: {
|
||||
step1: "Abra o <bold>HeidiSQL</bold> e conecte-se ao seu servidor.",
|
||||
step2: "Na <bold>barra lateral esquerda</bold>, clique com o botão direito no banco de dados que deseja exportar.",
|
||||
step3: "Escolha <bold>Exportar banco de dados como SQL</bold>.",
|
||||
step4: "Selecione <bold>Sem dados</bold> e certifique-se de que <bold>Criar</bold> esteja marcado para exportar apenas a estrutura.",
|
||||
step5: "Clique em <bold>Exportar</bold> e copie o conteúdo do arquivo <code>.sql</code> para o <bold>editor de código</bold> abaixo."
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "Inicie o <bold>DB Browser for SQLite</bold>.",
|
||||
step2: "Clique em <bold>Arquivo > Abrir Banco de Dados</bold> e selecione seu arquivo <code>.sqlite</code> ou <code>.db</code>.",
|
||||
step3: "Vá para <bold>Arquivo > Exportar > Banco de Dados para Arquivo SQL</bold>.",
|
||||
step4: "Na janela de diálogo, escolha <bold>Exportar apenas o esquema</bold> e clique em <bold>Salvar</bold>.",
|
||||
step5: "Finalmente, copie o conteúdo do arquivo <code>.sql</code> para o <bold>editor de código</bold> abaixo."
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const ptLanguage: Language = {
|
||||
name: "Portuguese",
|
||||
nativeName: "Português",
|
||||
code: "pt",
|
||||
};
|
||||
@@ -0,0 +1,255 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const ru = {
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "Таблицы",
|
||||
relationships: "Связи"
|
||||
},
|
||||
color_picker: {
|
||||
default_color: "Цвет по умолчанию"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "Переименовать базу данных",
|
||||
search: "Поиск"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "Фильтр",
|
||||
add_table: "Добавить таблицу",
|
||||
add_field: "Добавить поле",
|
||||
add_index: "Добавить индекс",
|
||||
delete_table: "Удалить таблицу",
|
||||
duplicate: "Дублировать",
|
||||
add_relationship: "Добавить связь",
|
||||
show_code: "Показать код",
|
||||
fields: "Поля",
|
||||
indexes: "Индексы",
|
||||
note: "Заметка",
|
||||
name: "Имя",
|
||||
type: "Тип",
|
||||
nullable: "Допускает NULL",
|
||||
select_fields: "Выберите поля",
|
||||
unique: "Уникальный",
|
||||
table_note: "Заметка к таблице",
|
||||
collapse: "Свернуть все",
|
||||
primary_key: "Первичный ключ",
|
||||
foreign_key: "Внешний ключ",
|
||||
source_table: "Исходная таблица",
|
||||
referenced_table: "Связанная таблица",
|
||||
select_table: "Выберите таблицу",
|
||||
select_field: "Выберите поле",
|
||||
empty_list: {
|
||||
no_tables: "Нет таблиц",
|
||||
no_tables_description: "Создайте таблицу, чтобы начать.",
|
||||
no_relationships: "Нет связей",
|
||||
no_relationships_description: "Создайте связи для соединения двух таблиц"
|
||||
},
|
||||
cardinality: {
|
||||
name: "Кардинальность",
|
||||
one_to_one: "Один к одному",
|
||||
one_to_many: "Один ко многим",
|
||||
many_to_one: "Многие к одному",
|
||||
many_to_many: "Многие ко многим"
|
||||
},
|
||||
foreign_key_actions: {
|
||||
title: "Действия внешнего ключа",
|
||||
on_delete: "При удалении",
|
||||
on_update: "При обновлении",
|
||||
actions: {
|
||||
no_action: "Без действия",
|
||||
cascade: "Каскад",
|
||||
set_null: "Установить NULL",
|
||||
set_default: "Установить по умолчанию",
|
||||
restrict: "Ограничить"
|
||||
}
|
||||
},
|
||||
field_settings: {
|
||||
title: "Настройки поля",
|
||||
unique: "Уникальный",
|
||||
unsigned: "Без знака",
|
||||
numeric_setting: "Числовые настройки",
|
||||
decimal_setting: "Десятичные настройки",
|
||||
zeroFill: "Дополнение нулями",
|
||||
autoIncrement: "Автоинкремент",
|
||||
note: "Заметка",
|
||||
delete_field: "Удалить поле",
|
||||
field_note: "Заметка к полю",
|
||||
precision: "Точность",
|
||||
text_setting: "Настройки текста",
|
||||
charset: "Кодировка",
|
||||
collation: "Сравнение",
|
||||
scale: "Масштаб",
|
||||
max_length: "Макс. длина",
|
||||
integer_width: "Ширина целого числа",
|
||||
width: "Ширина",
|
||||
default_value: "Значение по умолчанию",
|
||||
value: "Значение",
|
||||
length: "Длина",
|
||||
values: "Значения",
|
||||
type_enter: "Введите и нажмите Enter",
|
||||
precision_def: "Общее количество допустимых цифр (до и после запятой).",
|
||||
scale_def: "Допустимое количество цифр после запятой.",
|
||||
time_default_value: {
|
||||
no_value: "Нет значения",
|
||||
custom: "Произвольное время",
|
||||
now: "Сейчас"
|
||||
},
|
||||
errors: {
|
||||
max_length: "должно быть положительным числом без десятичных.",
|
||||
integer_default_value: "Недопустимое значение по умолчанию для целого",
|
||||
precision: "Точность должна быть положительным числом без десятичных.",
|
||||
scale: "Масштаб должен быть положительным числом без десятичных.",
|
||||
scale_max_value: "Масштаб должен быть ≤ точности."
|
||||
},
|
||||
pick_value: "Выберите значение"
|
||||
},
|
||||
delete: "Удалить",
|
||||
index_setting: "Настройки индекса",
|
||||
table_actions: "Действия с таблицей",
|
||||
actions: "Действия",
|
||||
delete_index: "Удалить индекс",
|
||||
index_name: "Имя индекса",
|
||||
create_relationship: "Создать связь",
|
||||
relationship_error: "Для создания связи типы первичного и внешнего ключа должны совпадать.",
|
||||
invalid_relationship: {
|
||||
title: "Недопустимая связь",
|
||||
description: "Тип исходного ключа не совпадает с типом связанного ключа. Убедитесь, что оба ключа имеют одинаковый тип данных."
|
||||
},
|
||||
circular_dependency: {
|
||||
title: "Обнаружена циклическая зависимость",
|
||||
toast_description: "Обнаружена циклическая ссылка между таблицами. Проверьте диаграмму слева и удалите одну из связей, чтобы исправить.",
|
||||
description: "В вашей схеме есть циклическая связь между таблицами. Чтобы устранить её,",
|
||||
suggestion: "удалите одну из перечисленных ниже связей, вызывающих цикл.",
|
||||
remove_relationship: "Удалить связь"
|
||||
}
|
||||
},
|
||||
table: {
|
||||
double_click: "Дважды щелкните для редактирования",
|
||||
overlapping_tables: "Перекрывающиеся таблицы",
|
||||
show_more: "Показать больше",
|
||||
show_less: "Показать меньше"
|
||||
},
|
||||
control_buttons: {
|
||||
redo: "Повтор",
|
||||
undo: "Отменить",
|
||||
zoom_in: "Увеличить",
|
||||
zoom_out: "Уменьшить",
|
||||
adjust_positions: "Настроить позиции",
|
||||
show_all: "Показать все"
|
||||
},
|
||||
menu: {
|
||||
file: "Файл",
|
||||
new: "Новый",
|
||||
open: "Открыть",
|
||||
save: "Сохранить",
|
||||
import: "Импорт",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySql",
|
||||
postgresql: "PostgreSQL",
|
||||
export_sql: "Экспорт SQL",
|
||||
generic: "Общий",
|
||||
export_orm_models: "Экспорт ORM моделей",
|
||||
delete_project: "Удалить проект",
|
||||
edit: "Редактировать",
|
||||
undo: "Отменить",
|
||||
redo: "Повторить",
|
||||
clear: "Очистить",
|
||||
view: "Вид",
|
||||
hide_controller: "Скрыть панель управления",
|
||||
show_controller: "Показать панель управления",
|
||||
cardinality_style: "Стиль кардинальности",
|
||||
hidden: "Скрытый",
|
||||
numeric: "Числовой",
|
||||
symbolic: "Символический",
|
||||
theme: "Тема",
|
||||
light: "Светлая",
|
||||
dark: "Тёмная",
|
||||
help: "Помощь",
|
||||
show_docs: "Показать документацию",
|
||||
join_discord: "Присоединиться к Discord"
|
||||
},
|
||||
modals: {
|
||||
close: "Закрыть",
|
||||
create: "Создать",
|
||||
pick_database: "Выберите вашу базу данных.",
|
||||
create_database_header: "Каждая база данных предлагает уникальные функции и возможности.",
|
||||
db_name: "Имя базы данных",
|
||||
db_name_error: "Пожалуйста, укажите имя базы данных",
|
||||
continue: "Продолжить",
|
||||
open: "Открыть",
|
||||
open_database: "Открыть базу данных",
|
||||
open_database_header: "Откройте базу данных, выбрав одну из списка.",
|
||||
delete_database: "Удалить базу данных",
|
||||
delete_database_content: "Это действие необратимо и навсегда удалит диаграмму.",
|
||||
delete: "Удалить",
|
||||
import_database: {
|
||||
title: "Импортируйте вашу базу данных",
|
||||
import: "Импорт",
|
||||
import_options: "Вы хотите импортировать с помощью:",
|
||||
import_error: "Ошибка разбора SQL",
|
||||
import_error_description: "Не удалось импортировать SQL, так как он содержит недопустимый синтаксис.",
|
||||
import_warning: "Предупреждение разбора SQL",
|
||||
import_warning_description: "Некоторые элементы не были обработаны из-за неподдерживаемых или неполных объявлений."
|
||||
},
|
||||
export_sql: "Экспорт SQL",
|
||||
export_sql_header: "Экспортируйте диаграмму базы данных в виде SQL-кода"
|
||||
},
|
||||
clipboard: {
|
||||
copy: "Копировать",
|
||||
copied: "Скопировано"
|
||||
},
|
||||
connection_status: {
|
||||
online: "Онлайн",
|
||||
offline: "Оффлайн",
|
||||
saving: "Сохранение",
|
||||
saved: "Сохранено",
|
||||
last_synced: "Последняя синхронизация",
|
||||
min_ago: "мин назад",
|
||||
hour_ago: "час назад",
|
||||
just_now: "Только что"
|
||||
},
|
||||
import: {
|
||||
instructions: "Инструкции",
|
||||
install: "Установить",
|
||||
run_command: "Выполните следующую команду в терминале.",
|
||||
example: "Пример",
|
||||
copy_code: "Скопируйте содержимое .sql файла в кодовую секцию ниже.",
|
||||
pg_admin: {
|
||||
step1: "Откройте <bold>Pg Admin</bold>.",
|
||||
step2: "Щёлкните правой кнопкой мыши по базе данных и выберите <bold>Резервное копирование</bold>.",
|
||||
step3: "Назовите файл <code>.sql</code>, выберите <bold>Формат: Обычный</bold> и <bold>Кодировка: UTF8</bold>.",
|
||||
step4: "Убедитесь, что <bold>Только схема</bold> включена, а <bold>Только данные</bold> выключены.",
|
||||
step5: "Нажмите <bold>Резервное копирование</bold> для экспорта, затем скопируйте содержимое в редактор кода ниже."
|
||||
},
|
||||
workbench: {
|
||||
step1: "Откройте <bold>MySQL Workbench</bold> и <bold>подключитесь</bold> к серверу.",
|
||||
step2: "В верхнем меню перейдите в <bold>Сервер > Экспорт данных</bold>.",
|
||||
step3: "Выберите <bold>Только структура</bold> в <bold>Настройках экспорта</bold>.",
|
||||
step4: "Выберите <bold>Экспорт в автономный файл</bold>, укажите путь и имя файла <code>.sql</code>.",
|
||||
step5: "Нажмите <bold>Начать экспорт</bold>, затем скопируйте содержимое в редактор кода ниже."
|
||||
},
|
||||
heidisql: {
|
||||
step1: "Откройте <bold>HeidiSQL</bold> и подключитесь к серверу.",
|
||||
step2: "В <bold>левой панели</bold> щёлкните правой кнопкой по нужной базе.",
|
||||
step3: "Выберите <bold>Экспортировать базу как SQL</bold>.",
|
||||
step4: "Выберите <bold>Без данных</bold>, включите <bold>Создание</bold> для экспорта только структуры.",
|
||||
step5: "Нажмите <bold>Экспорт</bold> и скопируйте содержимое файла <code>.sql</code> в редактор."
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "Запустите <bold>DB Browser for SQLite</bold>.",
|
||||
step2: "Перейдите в <bold>Файл > Открыть базу данных</bold> и выберите <code>.sqlite</code> или <code>.db</code> файл.",
|
||||
step3: "Выберите <bold>Файл > Экспорт > База данных в SQL файл</bold>.",
|
||||
step4: "Выберите <bold>Экспортировать только схему</bold> и нажмите <bold>Сохранить</bold>.",
|
||||
step5: "Скопируйте содержимое <code>.sql</code> файла в редактор ниже."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const ruLanguage: Language = {
|
||||
name: "Russian",
|
||||
nativeName: "Русский",
|
||||
code: "ru",
|
||||
};
|
||||
@@ -0,0 +1,272 @@
|
||||
import { Language } from "../types";
|
||||
|
||||
export const zh = {
|
||||
translation: {
|
||||
sidebar: {
|
||||
tables: "数据表",
|
||||
relationships: "关系"
|
||||
},
|
||||
|
||||
color_picker: {
|
||||
default_color: "默认颜色"
|
||||
},
|
||||
navbar: {
|
||||
rename_db: "重命名数据库",
|
||||
search: "搜索"
|
||||
},
|
||||
db_controller: {
|
||||
filter: "筛选",
|
||||
add_table: "添加表",
|
||||
add_field: "添加字段",
|
||||
add_index: "添加索引",
|
||||
delete_table: "删除表",
|
||||
duplicate: "复制",
|
||||
add_relationship: "添加关系",
|
||||
show_code: "显示代码",
|
||||
fields: "字段",
|
||||
indexes: "索引",
|
||||
note: "备注",
|
||||
name: "名称",
|
||||
type: "类型",
|
||||
nullable: "可为空",
|
||||
select_fields: "选择字段",
|
||||
unique: "唯一",
|
||||
table_note: "表备注",
|
||||
collapse: "全部折叠",
|
||||
primary_key: "主键",
|
||||
foreign_key: "外键",
|
||||
|
||||
source_table: "源表",
|
||||
referenced_table: "引用表",
|
||||
|
||||
select_table: "选择表",
|
||||
select_field: "选择字段",
|
||||
|
||||
empty_list: {
|
||||
no_tables: "暂无数据表",
|
||||
no_tables_description: "创建一个表以开始。",
|
||||
no_relationships: "暂无关系",
|
||||
no_relationships_description: "创建关系以连接两个表"
|
||||
},
|
||||
|
||||
cardinality: {
|
||||
name: "基数",
|
||||
one_to_one: "一对一",
|
||||
one_to_many: "一对多",
|
||||
many_to_one: "多对一",
|
||||
many_to_many: "多对多"
|
||||
},
|
||||
|
||||
foreign_key_actions: {
|
||||
title: "外键操作",
|
||||
on_delete: "删除时",
|
||||
on_update: "更新时",
|
||||
actions: {
|
||||
no_action: "无操作",
|
||||
cascade: "级联",
|
||||
set_null: "设为 NULL",
|
||||
set_default: "设为默认值",
|
||||
restrict: "限制"
|
||||
}
|
||||
},
|
||||
|
||||
field_settings: {
|
||||
title: "字段设置",
|
||||
unique: "唯一",
|
||||
unsigned: "无符号",
|
||||
numeric_setting: "数值设置",
|
||||
decimal_setting: "小数设置",
|
||||
zeroFill: "零填充",
|
||||
autoIncrement: "自动递增",
|
||||
note: "备注",
|
||||
delete_field: "删除字段",
|
||||
field_note: "字段备注",
|
||||
precision: "精度",
|
||||
text_setting: "文本设置",
|
||||
charset: "字符集",
|
||||
collation: "排序规则",
|
||||
scale: "小数位数",
|
||||
max_length: "最大长度",
|
||||
integer_width: "整数宽度",
|
||||
width: "宽度",
|
||||
default_value: "默认值",
|
||||
value: "值",
|
||||
length: "长度",
|
||||
values: "值集合",
|
||||
type_enter: "输入并按回车",
|
||||
precision_def: "允许的总位数(小数点前+后)。",
|
||||
scale_def: "小数点后的位数。",
|
||||
time_default_value: {
|
||||
no_value: "无值",
|
||||
custom: "自定义时间",
|
||||
now: "当前时间"
|
||||
},
|
||||
errors: {
|
||||
max_length: "必须为正整数,不能为小数。",
|
||||
integer_default_value: "整数默认值无效",
|
||||
precision: "精度必须为正整数,不能为小数。",
|
||||
scale: "小数位数必须为正整数,不能为小数。",
|
||||
scale_max_value: "小数位数必须小于等于精度值。"
|
||||
},
|
||||
pick_value: "选择值"
|
||||
},
|
||||
|
||||
delete: "删除",
|
||||
index_setting: "索引设置",
|
||||
table_actions: "表操作",
|
||||
actions: "操作",
|
||||
delete_index: "删除索引",
|
||||
index_name: "索引名称",
|
||||
create_relationship: "创建关系",
|
||||
relationship_error: "要创建关系,主键和外键的数据类型必须相同。",
|
||||
|
||||
invalid_relationship: {
|
||||
title: "无效关系",
|
||||
description: "源键类型与引用键类型不匹配,请确保两个键的数据类型一致。"
|
||||
},
|
||||
|
||||
circular_dependency: {
|
||||
title: "检测到循环依赖",
|
||||
toast_description: "发现表之间存在循环引用。请检查左侧图表并移除其中一个关系以修复。",
|
||||
description: "您的架构中存在表之间的循环外键关系。要修复它,",
|
||||
suggestion: "请移除以下导致循环的关系之一。",
|
||||
remove_relationship: "移除关系"
|
||||
}
|
||||
},
|
||||
|
||||
table: {
|
||||
double_click: "双击进行编辑",
|
||||
overlapping_tables: "表重叠",
|
||||
show_more: "显示更多",
|
||||
show_less: "显示更少"
|
||||
},
|
||||
|
||||
control_buttons: {
|
||||
redo: "重做",
|
||||
undo: "撤销",
|
||||
zoom_in: "放大",
|
||||
zoom_out: "缩小",
|
||||
adjust_positions: "调整位置",
|
||||
show_all: "显示全部"
|
||||
},
|
||||
|
||||
menu: {
|
||||
file: "文件",
|
||||
new: "新建",
|
||||
open: "打开",
|
||||
save: "保存",
|
||||
import: "导入",
|
||||
json: ".json",
|
||||
dbml: ".dbml",
|
||||
mysql: "MySql",
|
||||
postgresql: "Postgresql",
|
||||
export_sql: "导出 SQL",
|
||||
generic: "通用",
|
||||
export_orm_models: "导出 ORM 模型",
|
||||
delete_project: "删除项目",
|
||||
edit: "编辑",
|
||||
undo: "撤销",
|
||||
redo: "重做",
|
||||
clear: "清除",
|
||||
view: "视图",
|
||||
hide_controller: "隐藏控制器",
|
||||
show_controller: "显示控制器",
|
||||
cardinality_style: "基数样式",
|
||||
hidden: "隐藏",
|
||||
numeric: "数值",
|
||||
symbolic: "符号",
|
||||
theme: "主题",
|
||||
light: "浅色",
|
||||
dark: "深色",
|
||||
help: "帮助",
|
||||
show_docs: "查看文档",
|
||||
join_discord: "加入 Discord"
|
||||
},
|
||||
|
||||
modals: {
|
||||
close: "关闭",
|
||||
create: "创建",
|
||||
pick_database: "选择您的数据库。",
|
||||
create_database_header: "每种数据库提供不同的功能与特性。",
|
||||
db_name: "数据库名称",
|
||||
db_name_error: "请输入数据库名称",
|
||||
continue: "继续",
|
||||
open: "打开",
|
||||
open_database: "打开数据库",
|
||||
open_database_header: "从列表中选择一个数据库进行打开。",
|
||||
delete_database: "删除数据库",
|
||||
delete_database_content: "该操作不可撤销,将永久删除该图表。",
|
||||
delete: "删除",
|
||||
|
||||
import_database: {
|
||||
title: "导入数据库",
|
||||
import: "导入",
|
||||
import_options: "请选择导入方式:",
|
||||
import_error: "SQL 解析错误",
|
||||
import_error_description: "我们无法导入您的 SQL,因为它包含无效语法。",
|
||||
import_warning: "SQL 解析警告",
|
||||
import_warning_description: "由于不支持或不完整的声明,某些元素无法处理。"
|
||||
},
|
||||
export_sql: "导出 SQL",
|
||||
export_sql_header: "将您的数据库图导出为 SQL 代码"
|
||||
},
|
||||
|
||||
clipboard: {
|
||||
copy: "复制",
|
||||
copied: "已复制"
|
||||
},
|
||||
|
||||
connection_status: {
|
||||
online: "在线",
|
||||
offline: "离线",
|
||||
saving: "保存中",
|
||||
saved: "已保存",
|
||||
last_synced: "上次同步",
|
||||
min_ago: "分钟前",
|
||||
hour_ago: "小时前",
|
||||
just_now: "刚刚"
|
||||
},
|
||||
|
||||
import: {
|
||||
instructions: "说明",
|
||||
install: "安装",
|
||||
run_command: "在终端中运行以下命令。",
|
||||
example: "示例",
|
||||
copy_code: "将 .sql 文件的内容复制到下方代码区域。",
|
||||
pg_admin: {
|
||||
step1: "打开 <bold>Pg Admin</bold>。",
|
||||
step2: "右键点击数据库并选择 <bold>备份</bold>。",
|
||||
step3: "命名 <code>.sql</code> 文件,设置格式为 <bold>纯文本</bold>,编码为 <bold>UTF8</bold>。",
|
||||
step4: "确保 <bold>仅结构</bold> 选中,<bold>仅数据</bold> 未选中。",
|
||||
step5: "点击 <bold>备份</bold> 进行导出,然后将内容复制到下方代码编辑器。"
|
||||
},
|
||||
workbench: {
|
||||
step1: "打开 <bold>MySQL Workbench</bold> 并连接到服务器。",
|
||||
step2: "顶部菜单选择 <bold>Server > 数据导出</bold>。",
|
||||
step3: "在 <bold>导出选项</bold> 中选择 <bold>仅导出结构</bold>。",
|
||||
step4: "勾选 <bold>导出为自包含文件</bold>,设置保存位置和文件名。",
|
||||
step5: "点击 <bold>开始导出</bold>,然后复制 .sql 文件内容至代码编辑器。"
|
||||
},
|
||||
heidisql: {
|
||||
step1: "<bold>打开 HeidiSQL</bold> 并连接到服务器。",
|
||||
step2: "在 <bold>左侧栏中右键</bold> 要导出的数据库。",
|
||||
step3: "选择 <bold>导出为 SQL</bold>。",
|
||||
step4: "选择 <bold>无数据</bold>,并勾选 <bold>创建</bold> 以仅导出结构。",
|
||||
step5: "点击 <bold>导出</bold>,将 .sql 文件内容复制到下方代码编辑器中。"
|
||||
},
|
||||
dbbrowser: {
|
||||
step1: "启动 <bold>DB Browser for SQLite</bold>。",
|
||||
step2: "点击 <bold>文件 > 打开数据库</bold>,选择您的 <code>.sqlite</code> 或 <code>.db</code> 文件。",
|
||||
step3: "顶部菜单选择 <bold>文件 > 导出 > 导出为 SQL 文件</bold>。",
|
||||
step4: "选择 <bold>仅导出结构</bold> 并点击 <bold>保存</bold>。",
|
||||
step5: "将 .sql 文件内容复制到下方 <bold>代码编辑器</bold> 中。"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const zhLanguage: Language = {
|
||||
name: "Chinese",
|
||||
nativeName: "简体中文",
|
||||
code: "zh",
|
||||
};
|
||||
+2
-2
@@ -27,7 +27,7 @@ const RelationshipController: React.FC = ({ }) => {
|
||||
|
||||
|
||||
const { open } = useModal();
|
||||
const { database, isSyncing } = useDatabase();
|
||||
const { database ,isLoading } = useDatabase();
|
||||
const { relationships: allRelationships } = database || { relationships: [] };
|
||||
const [relationships, setRelationships] = useState<RelationshipType[]>(allRelationships);
|
||||
|
||||
@@ -169,7 +169,7 @@ const RelationshipController: React.FC = ({ }) => {
|
||||
|
||||
|
||||
{
|
||||
!isSyncing && allRelationships.length == 0 &&
|
||||
!isLoading && allRelationships.length == 0 &&
|
||||
<EmptyList
|
||||
title={t("db_controller.empty_list.no_relationships")}
|
||||
description={t("db_controller.empty_list.no_relationships_description")}
|
||||
|
||||
+88
-6
@@ -85,7 +85,7 @@ div[data-slot="content"] hr[role="separator"] {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Target the scrollbar */
|
||||
@@ -132,7 +132,7 @@ div[data-slot="content"] hr[role="separator"] {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
thead[role="rowgroup"] th {
|
||||
border-radius: 0px !important;
|
||||
@@ -205,8 +205,90 @@ button[data-testid="remove"] svg {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
|
||||
div[data-slot="calendar"] div[data-slot="input-wrapper"]{
|
||||
|
||||
div[data-slot="calendar"] div[data-slot="input-wrapper"] {
|
||||
background-color: hsl(var(--heroui-default));
|
||||
border : hsl(var(--heroui-divider))
|
||||
}
|
||||
border: hsl(var(--heroui-divider))
|
||||
}
|
||||
|
||||
|
||||
|
||||
html {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
.gh-button {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.gh-button {
|
||||
box-sizing: border-box;
|
||||
height: 30px;
|
||||
font-weight: bold;
|
||||
font-size: 11px;
|
||||
line-height: 14px;
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
border-radius: 3px;
|
||||
|
||||
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
border-radius: 4px;
|
||||
background-color: #eee;
|
||||
background-image: linear-gradient(#fcfcfc, #eee);
|
||||
border: 1px solid #d5d5d5;
|
||||
}
|
||||
|
||||
.gh-button:hover,
|
||||
.gh-button:focus {
|
||||
text-decoration: none;
|
||||
background-color: #ddd;
|
||||
background-image: linear-gradient(#eee, #ddd);
|
||||
border-color: #ccc;
|
||||
}
|
||||
|
||||
.gh-button:active {
|
||||
background: #dcdcdc;
|
||||
border-color: #b5b5b5;
|
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
.gh-button__icon {
|
||||
|
||||
|
||||
vertical-align: top;
|
||||
min-width: 20px;
|
||||
min-height: 20px;
|
||||
|
||||
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIxMiAxMiA0MCA0MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAxMiAxMiA0MCA0MCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBmaWxsPSIjMzMzMzMzIiBkPSJNMzIsMTMuNGMtMTAuNSwwLTE5LDguNS0xOSwxOWMwLDguNCw1LjUsMTUuNSwxMywxOGMxLDAuMiwxLjMtMC40LDEuMy0wLjljMC0wLjUsMC0xLjcsMC0zLjINCgljLTUuMywxLjEtNi40LTIuNi02LjQtMi42QzIwLDQxLjYsMTguOCw0MSwxOC44LDQxYy0xLjctMS4yLDAuMS0xLjEsMC4xLTEuMWMxLjksMC4xLDIuOSwyLDIuOSwyYzEuNywyLjksNC41LDIuMSw1LjUsMS42DQoJYzAuMi0xLjIsMC43LTIuMSwxLjItMi42Yy00LjItMC41LTguNy0yLjEtOC43LTkuNGMwLTIuMSwwLjctMy43LDItNS4xYy0wLjItMC41LTAuOC0yLjQsMC4yLTVjMCwwLDEuNi0wLjUsNS4yLDINCgljMS41LTAuNCwzLjEtMC43LDQuOC0wLjdjMS42LDAsMy4zLDAuMiw0LjcsMC43YzMuNi0yLjQsNS4yLTIsNS4yLTJjMSwyLjYsMC40LDQuNiwwLjIsNWMxLjIsMS4zLDIsMywyLDUuMWMwLDcuMy00LjUsOC45LTguNyw5LjQNCgljMC43LDAuNiwxLjMsMS43LDEuMywzLjVjMCwyLjYsMCw0LjYsMCw1LjJjMCwwLjUsMC40LDEuMSwxLjMsMC45YzcuNS0yLjYsMTMtOS43LDEzLTE4LjFDNTEsMjEuOSw0Mi41LDEzLjQsMzIsMTMuNHoiLz4NCjwvc3ZnPg0K);
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
|
||||
.dark .gh-button {
|
||||
background-image: linear-gradient(#80838d22, #15171b55);
|
||||
border-color: #333639aa;
|
||||
}
|
||||
|
||||
.dark .gh-button .gh-button__icon {
|
||||
filter: brightness(0) invert(1);
|
||||
/* Makes dark content white */
|
||||
}
|
||||
|
||||
.dark .gh-button:hover {
|
||||
text-decoration: none;
|
||||
background-color: #80838d22 !important;
|
||||
|
||||
border-color: #333639aa !important;
|
||||
}
|
||||
|
||||
.dark .gh-button:active {
|
||||
background-color: #80838d22 !important;
|
||||
|
||||
background-image: none !important;
|
||||
}
|
||||
Reference in New Issue
Block a user