Merge branch 'master' into dwelle/bump-socket.io

# Conflicts:
#	src/locales/en.json
dwelle/bump-socket.io
dwelle 2 years ago
commit fb4a7bdf45

@ -102,7 +102,7 @@
"private": true,
"scripts": {
"build-node": "node ./scripts/build-node.js",
"build:app:docker": "REACT_APP_DISABLE_SENTRY=true react-scripts build",
"build:app:docker": "cross-env REACT_APP_DISABLE_SENTRY=true REACT_APP_DISABLE_TRACKING=true react-scripts build",
"build:app": "cross-env REACT_APP_GIT_SHA=$VERCEL_GIT_COMMIT_SHA react-scripts build",
"build:version": "node ./scripts/build-version.js",
"build": "yarn build:app && yarn build:version",

@ -146,7 +146,8 @@
// setting this so that libraries installation reuses this window tab.
window.name = "_excalidraw";
</script>
<% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %>
<% if (process.env.REACT_APP_DISABLE_TRACKING !== 'true' &&
process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %>
<script
async
src="https://www.googletagmanager.com/gtag/js?id=%REACT_APP_GOOGLE_ANALYTICS_ID%"

@ -23,7 +23,7 @@ import { newElementWith } from "../element/mutateElement";
import { getDefaultAppState, isEraserActive } from "../appState";
import ClearCanvas from "../components/ClearCanvas";
import clsx from "clsx";
import MenuItem from "../components/MenuItem";
import DropdownMenuItem from "../components/dropdownMenu/DropdownMenuItem";
import { getShortcutFromShortcutName } from "./shortcuts";
export const actionChangeViewBackgroundColor = register({
@ -299,19 +299,23 @@ export const actionToggleTheme = register({
};
},
PanelComponent: ({ appState, updateData }) => (
<MenuItem
label={
appState.theme === "dark"
? t("buttons.lightMode")
: t("buttons.darkMode")
}
onClick={() => {
<DropdownMenuItem
onSelect={() => {
updateData(appState.theme === THEME.LIGHT ? THEME.DARK : THEME.LIGHT);
}}
icon={appState.theme === "dark" ? SunIcon : MoonIcon}
dataTestId="toggle-dark-mode"
shortcut={getShortcutFromShortcutName("toggleTheme")}
/>
ariaLabel={
appState.theme === "dark"
? t("buttons.lightMode")
: t("buttons.darkMode")
}
>
{appState.theme === "dark"
? t("buttons.lightMode")
: t("buttons.darkMode")}
</DropdownMenuItem>
),
keyTest: (event) => event.altKey && event.shiftKey && event.code === CODES.D,
});

@ -19,7 +19,7 @@ import { ActiveFile } from "../components/ActiveFile";
import { isImageFileHandle } from "../data/blob";
import { nativeFileSystemSupported } from "../data/filesystem";
import { Theme } from "../element/types";
import MenuItem from "../components/MenuItem";
import DropdownMenuItem from "../components/dropdownMenu/DropdownMenuItem";
import { getShortcutFromShortcutName } from "./shortcuts";
export const actionChangeProjectName = register({
@ -247,15 +247,19 @@ export const actionLoadScene = register({
}
},
keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.O,
PanelComponent: ({ updateData }) => (
<MenuItem
label={t("buttons.load")}
icon={LoadIcon}
onClick={updateData}
dataTestId="load-button"
shortcut={getShortcutFromShortcutName("loadScene")}
/>
),
PanelComponent: ({ updateData }) => {
return (
<DropdownMenuItem
icon={LoadIcon}
onSelect={updateData}
dataTestId="load-button"
shortcut={getShortcutFromShortcutName("loadScene")}
ariaLabel={t("buttons.load")}
>
{t("buttons.load")}
</DropdownMenuItem>
);
},
});
export const actionExportWithDarkMode = register({

@ -6,7 +6,7 @@ import { register } from "./register";
import { allowFullScreen, exitFullScreen, isFullScreen } from "../utils";
import { KEYS } from "../keys";
import { HelpButton } from "../components/HelpButton";
import MenuItem from "../components/MenuItem";
import DropdownMenuItem from "../components/dropdownMenu/DropdownMenuItem";
export const actionToggleCanvasMenu = register({
name: "toggleCanvasMenu",
@ -90,13 +90,15 @@ export const actionShortcuts = register({
},
PanelComponent: ({ updateData, isInHamburgerMenu }) =>
isInHamburgerMenu ? (
<MenuItem
label={t("helpDialog.title")}
<DropdownMenuItem
dataTestId="help-menu-item"
icon={HelpIcon}
onClick={updateData}
onSelect={updateData}
shortcut="?"
/>
ariaLabel={t("helpDialog.title")}
>
{t("helpDialog.title")}
</DropdownMenuItem>
) : (
<HelpButton title={t("helpDialog.title")} onClick={updateData} />
),

@ -5,7 +5,7 @@ import { save } from "../components/icons";
import { t } from "../i18n";
import "./ActiveFile.scss";
import MenuItem from "./MenuItem";
import DropdownMenuItem from "./dropdownMenu/DropdownMenuItem";
type ActiveFileProps = {
fileName?: string;
@ -13,11 +13,11 @@ type ActiveFileProps = {
};
export const ActiveFile = ({ fileName, onSave }: ActiveFileProps) => (
<MenuItem
label={`${t("buttons.save")}`}
<DropdownMenuItem
shortcut={getShortcutFromShortcutName("saveScene")}
dataTestId="save-button"
onClick={onSave}
onSelect={onSave}
icon={save}
/>
ariaLabel={`${t("buttons.save")}`}
>{`${t("buttons.save")}`}</DropdownMenuItem>
);

@ -272,13 +272,9 @@ import {
isLocalLink,
} from "../element/Hyperlink";
import { shouldShowBoundingBox } from "../element/transformHandles";
import { atom } from "jotai";
import { Fonts } from "../scene/Fonts";
import { actionPaste } from "../actions/actionClipboard";
export const isMenuOpenAtom = atom(false);
export const isDropdownOpenAtom = atom(false);
const deviceContextInitialValue = {
isSmScreen: false,
isMobile: false,
@ -289,7 +285,7 @@ const DeviceContext = React.createContext<Device>(deviceContextInitialValue);
DeviceContext.displayName = "DeviceContext";
export const useDevice = () => useContext<Device>(DeviceContext);
const ExcalidrawContainerContext = React.createContext<{
export const ExcalidrawContainerContext = React.createContext<{
container: HTMLDivElement | null;
id: string | null;
}>({ container: null, id: null });
@ -316,12 +312,19 @@ const ExcalidrawSetAppStateContext = React.createContext<
>(() => {});
ExcalidrawSetAppStateContext.displayName = "ExcalidrawSetAppStateContext";
const ExcalidrawActionManagerContext = React.createContext<
ActionManager | { renderAction: ActionManager["renderAction"] }
>({ renderAction: () => null });
ExcalidrawActionManagerContext.displayName = "ExcalidrawActionManagerContext";
export const useExcalidrawElements = () =>
useContext(ExcalidrawElementsContext);
export const useExcalidrawAppState = () =>
useContext(ExcalidrawAppStateContext);
export const useExcalidrawSetAppState = () =>
useContext(ExcalidrawSetAppStateContext);
export const useExcalidrawActionManager = () =>
useContext(ExcalidrawActionManagerContext);
let didTapTwice: boolean = false;
let tappedTwiceTimer = 0;
@ -559,75 +562,79 @@ class App extends React.Component<AppProps, AppState> {
<ExcalidrawElementsContext.Provider
value={this.scene.getNonDeletedElements()}
>
<LayerUI
canvas={this.canvas}
appState={this.state}
files={this.files}
setAppState={this.setAppState}
actionManager={this.actionManager}
elements={this.scene.getNonDeletedElements()}
onCollabButtonClick={onCollabButtonClick}
onLockToggle={this.toggleLock}
onPenModeToggle={this.togglePenMode}
onInsertElements={(elements) =>
this.addElementsFromPasteOrLibrary({
elements,
position: "center",
files: null,
})
}
langCode={getLanguage().code}
isCollaborating={this.props.isCollaborating}
renderTopRightUI={renderTopRightUI}
renderCustomStats={renderCustomStats}
renderCustomSidebar={this.props.renderSidebar}
showExitZenModeBtn={
typeof this.props?.zenModeEnabled === "undefined" &&
this.state.zenModeEnabled
}
libraryReturnUrl={this.props.libraryReturnUrl}
UIOptions={this.props.UIOptions}
focusContainer={this.focusContainer}
library={this.library}
id={this.id}
onImageAction={this.onImageAction}
renderWelcomeScreen={
this.state.showWelcomeScreen &&
this.state.activeTool.type === "selection" &&
!this.scene.getElementsIncludingDeleted().length
}
<ExcalidrawActionManagerContext.Provider
value={this.actionManager}
>
{this.props.children}
</LayerUI>
<div className="excalidraw-textEditorContainer" />
<div className="excalidraw-contextMenuContainer" />
{selectedElement.length === 1 &&
!this.state.contextMenu &&
this.state.showHyperlinkPopup && (
<Hyperlink
key={selectedElement[0].id}
element={selectedElement[0]}
setAppState={this.setAppState}
onLinkOpen={this.props.onLinkOpen}
<LayerUI
canvas={this.canvas}
appState={this.state}
files={this.files}
setAppState={this.setAppState}
actionManager={this.actionManager}
elements={this.scene.getNonDeletedElements()}
onCollabButtonClick={onCollabButtonClick}
onLockToggle={this.toggleLock}
onPenModeToggle={this.togglePenMode}
onInsertElements={(elements) =>
this.addElementsFromPasteOrLibrary({
elements,
position: "center",
files: null,
})
}
langCode={getLanguage().code}
isCollaborating={this.props.isCollaborating}
renderTopRightUI={renderTopRightUI}
renderCustomStats={renderCustomStats}
renderCustomSidebar={this.props.renderSidebar}
showExitZenModeBtn={
typeof this.props?.zenModeEnabled === "undefined" &&
this.state.zenModeEnabled
}
libraryReturnUrl={this.props.libraryReturnUrl}
UIOptions={this.props.UIOptions}
focusContainer={this.focusContainer}
library={this.library}
id={this.id}
onImageAction={this.onImageAction}
renderWelcomeScreen={
this.state.showWelcomeScreen &&
this.state.activeTool.type === "selection" &&
!this.scene.getElementsIncludingDeleted().length
}
>
{this.props.children}
</LayerUI>
<div className="excalidraw-textEditorContainer" />
<div className="excalidraw-contextMenuContainer" />
{selectedElement.length === 1 &&
!this.state.contextMenu &&
this.state.showHyperlinkPopup && (
<Hyperlink
key={selectedElement[0].id}
element={selectedElement[0]}
setAppState={this.setAppState}
onLinkOpen={this.props.onLinkOpen}
/>
)}
{this.state.toast !== null && (
<Toast
message={this.state.toast.message}
onClose={() => this.setToast(null)}
duration={this.state.toast.duration}
closable={this.state.toast.closable}
/>
)}
{this.state.toast !== null && (
<Toast
message={this.state.toast.message}
onClose={() => this.setToast(null)}
duration={this.state.toast.duration}
closable={this.state.toast.closable}
/>
)}
{this.state.contextMenu && (
<ContextMenu
items={this.state.contextMenu.items}
top={this.state.contextMenu.top}
left={this.state.contextMenu.left}
actionManager={this.actionManager}
/>
)}
<main>{this.renderCanvas()}</main>
{this.state.contextMenu && (
<ContextMenu
items={this.state.contextMenu.items}
top={this.state.contextMenu.top}
left={this.state.contextMenu.left}
actionManager={this.actionManager}
/>
)}
<main>{this.renderCanvas()}</main>
</ExcalidrawActionManagerContext.Provider>
</ExcalidrawElementsContext.Provider>{" "}
</ExcalidrawAppStateContext.Provider>
</ExcalidrawSetAppStateContext.Provider>
@ -2008,6 +2015,20 @@ class App extends React.Component<AppProps, AppState> {
return;
}
if (event.key === KEYS.PAGE_UP || event.key === KEYS.PAGE_DOWN) {
let offset =
(event.shiftKey ? this.state.width : this.state.height) /
this.state.zoom.value;
if (event.key === KEYS.PAGE_DOWN) {
offset = -offset;
}
if (event.shiftKey) {
this.setState((state) => ({ scrollX: state.scrollX + offset }));
} else {
this.setState((state) => ({ scrollY: state.scrollY + offset }));
}
}
if (this.actionManager.handleKeyDown(event)) {
return;
}
@ -2030,12 +2051,6 @@ class App extends React.Component<AppProps, AppState> {
? ELEMENT_SHIFT_TRANSLATE_AMOUNT
: ELEMENT_TRANSLATE_AMOUNT);
const selectedElements = getSelectedElements(
this.scene.getNonDeletedElements(),
this.state,
true,
);
let offsetX = 0;
let offsetY = 0;
@ -2049,6 +2064,12 @@ class App extends React.Component<AppProps, AppState> {
offsetY = step;
}
const selectedElements = getSelectedElements(
this.scene.getNonDeletedElements(),
this.state,
true,
);
selectedElements.forEach((element) => {
mutateElement(element, {
x: element.x + offsetX,

@ -3,7 +3,7 @@ import { t } from "../i18n";
import { TrashIcon } from "./icons";
import ConfirmDialog from "./ConfirmDialog";
import MenuItem from "./MenuItem";
import DropdownMenuItem from "./dropdownMenu/DropdownMenuItem";
const ClearCanvas = ({ onConfirm }: { onConfirm: () => void }) => {
const [showDialog, setShowDialog] = useState(false);
@ -13,12 +13,14 @@ const ClearCanvas = ({ onConfirm }: { onConfirm: () => void }) => {
return (
<>
<MenuItem
label={t("buttons.clearReset")}
<DropdownMenuItem
icon={TrashIcon}
onClick={toggleDialog}
onSelect={toggleDialog}
dataTestId="clear-canvas-button"
/>
ariaLabel={t("buttons.clearReset")}
>
{t("buttons.clearReset")}
</DropdownMenuItem>
{showDialog && (
<ConfirmDialog

@ -2,7 +2,7 @@ import { t } from "../i18n";
import { UsersIcon } from "./icons";
import "./CollabButton.scss";
import MenuItem from "./MenuItem";
import DropdownMenuItem from "./dropdownMenu/DropdownMenuItem";
import clsx from "clsx";
const CollabButton = ({
@ -19,13 +19,14 @@ const CollabButton = ({
return (
<>
{isInHamburgerMenu ? (
<MenuItem
label={t("labels.liveCollaboration")}
<DropdownMenuItem
dataTestId="collab-button"
icon={UsersIcon}
onClick={onClick}
isCollaborating={isCollaborating}
/>
onSelect={onClick}
ariaLabel={t("labels.liveCollaboration")}
>
{t("labels.liveCollaboration")}
</DropdownMenuItem>
) : (
<button
className={clsx("collab-button", { active: isCollaborating })}

@ -3,9 +3,9 @@ import { Dialog, DialogProps } from "./Dialog";
import "./ConfirmDialog.scss";
import DialogActionButton from "./DialogActionButton";
import { isMenuOpenAtom } from "./App";
import { isDropdownOpenAtom } from "./App";
import { useSetAtom } from "jotai";
import { isLibraryMenuOpenAtom } from "./LibraryMenuHeaderContent";
import { useExcalidrawSetAppState } from "./App";
interface Props extends Omit<DialogProps, "onCloseRequest"> {
onConfirm: () => void;
@ -23,9 +23,8 @@ const ConfirmDialog = (props: Props) => {
className = "",
...rest
} = props;
const setIsMenuOpen = useSetAtom(isMenuOpenAtom);
const setIsDropdownOpen = useSetAtom(isDropdownOpenAtom);
const setAppState = useExcalidrawSetAppState();
const setIsLibraryMenuOpen = useSetAtom(isLibraryMenuOpenAtom);
return (
<Dialog
@ -39,16 +38,16 @@ const ConfirmDialog = (props: Props) => {
<DialogActionButton
label={cancelText}
onClick={() => {
setIsMenuOpen(false);
setIsDropdownOpen(false);
setAppState({ openMenu: null });
setIsLibraryMenuOpen(false);
onCancel();
}}
/>
<DialogActionButton
label={confirmText}
onClick={() => {
setIsMenuOpen(false);
setIsDropdownOpen(false);
setAppState({ openMenu: null });
setIsLibraryMenuOpen(false);
onConfirm();
}}
actionType="danger"

@ -2,7 +2,11 @@ import clsx from "clsx";
import React, { useEffect, useState } from "react";
import { useCallbackRefState } from "../hooks/useCallbackRefState";
import { t } from "../i18n";
import { useExcalidrawContainer, useDevice } from "../components/App";
import {
useExcalidrawContainer,
useDevice,
useExcalidrawSetAppState,
} from "../components/App";
import { KEYS } from "../keys";
import "./Dialog.scss";
import { back, CloseIcon } from "./icons";
@ -10,8 +14,8 @@ import { Island } from "./Island";
import { Modal } from "./Modal";
import { AppState } from "../types";
import { queryFocusableElements } from "../utils";
import { isMenuOpenAtom, isDropdownOpenAtom } from "./App";
import { useSetAtom } from "jotai";
import { isLibraryMenuOpenAtom } from "./LibraryMenuHeaderContent";
export interface DialogProps {
children: React.ReactNode;
@ -67,12 +71,12 @@ export const Dialog = (props: DialogProps) => {
return () => islandNode.removeEventListener("keydown", handleKeyDown);
}, [islandNode, props.autofocus]);
const setIsMenuOpen = useSetAtom(isMenuOpenAtom);
const setIsDropdownOpen = useSetAtom(isDropdownOpenAtom);
const setAppState = useExcalidrawSetAppState();
const setIsLibraryMenuOpen = useSetAtom(isLibraryMenuOpenAtom);
const onClose = () => {
setIsMenuOpen(false);
setIsDropdownOpen(false);
setAppState({ openMenu: null });
setIsLibraryMenuOpen(false);
(lastActiveElement as HTMLElement).focus();
props.onCloseRequest();
};

@ -140,11 +140,11 @@ export const HelpDialog = ({ onClose }: { onClose?: () => void }) => {
/>
<Shortcut
label={t("toolBar.line")}
shortcuts={[KEYS.P, KEYS["6"]]}
shortcuts={[KEYS.L, KEYS["6"]]}
/>
<Shortcut
label={t("toolBar.freedraw")}
shortcuts={["Shift + P", KEYS["7"]]}
shortcuts={[KEYS.P, KEYS["7"]]}
/>
<Shortcut
label={t("toolBar.text")}
@ -230,6 +230,14 @@ export const HelpDialog = ({ onClose }: { onClose?: () => void }) => {
label={t("helpDialog.zoomToSelection")}
shortcuts={["Shift+2"]}
/>
<Shortcut
label={t("helpDialog.movePageUpDown")}
shortcuts={["PgUp/PgDn"]}
/>
<Shortcut
label={t("helpDialog.movePageLeftRight")}
shortcuts={["Shift+PgUp/PgDn"]}
/>
<Shortcut label={t("buttons.fullScreen")} shortcuts={["F"]} />
<Shortcut
label={t("buttons.zenMode")}

@ -1,10 +1,10 @@
import React, { useState } from "react";
import React from "react";
import { NonDeletedExcalidrawElement } from "../element/types";
import { t } from "../i18n";
import { AppState, ExportOpts, BinaryFiles } from "../types";
import { Dialog } from "./Dialog";
import { ExportIcon, exportToFileIcon, LinkIcon } from "./icons";
import { exportToFileIcon, LinkIcon } from "./icons";
import { ToolButton } from "./ToolButton";
import { actionSaveFileToDisk } from "../actions/actionExport";
import { Card } from "./Card";
@ -14,7 +14,6 @@ import { nativeFileSystemSupported } from "../data/filesystem";
import { trackEvent } from "../analytics";
import { ActionManager } from "../actions/manager";
import { getFrame } from "../utils";
import MenuItem from "./MenuItem";
export type ExportCB = (
elements: readonly NonDeletedExcalidrawElement[],
@ -94,6 +93,7 @@ export const JSONExportDialog = ({
actionManager,
exportOpts,
canvas,
setAppState,
}: {
elements: readonly NonDeletedExcalidrawElement[];
appState: AppState;
@ -101,24 +101,15 @@ export const JSONExportDialog = ({
actionManager: ActionManager;
exportOpts: ExportOpts;
canvas: HTMLCanvasElement | null;
setAppState: React.Component<any, AppState>["setState"];
}) => {
const [modalIsShown, setModalIsShown] = useState(false);
const handleClose = React.useCallback(() => {
setModalIsShown(false);
}, []);
setAppState({ openDialog: null });
}, [setAppState]);
return (
<>
<MenuItem
icon={ExportIcon}
label={t("buttons.export")}
onClick={() => {
setModalIsShown(true);
}}
dataTestId="json-export-button"
/>
{modalIsShown && (
{appState.openDialog === "jsonExport" && (
<Dialog onCloseRequest={handleClose} title={t("buttons.export")}>
<JSONExportModal
elements={elements}

@ -80,16 +80,6 @@
}
}
.layer-ui__wrapper__footer-center {
pointer-events: none;
& > * {
pointer-events: all;
}
display: flex;
width: 100%;
justify-content: flex-start;
}
.layer-ui__wrapper__footer-left,
.layer-ui__wrapper__footer-right,
.disable-zen-mode--visible {

@ -41,26 +41,17 @@ import "./LayerUI.scss";
import "./Toolbar.scss";
import { PenModeButton } from "./PenModeButton";
import { trackEvent } from "../analytics";
import { isMenuOpenAtom, useDevice } from "../components/App";
import { useDevice } from "../components/App";
import { Stats } from "./Stats";
import { actionToggleStats } from "../actions/actionToggleStats";
import Footer from "./footer/Footer";
import {
ExportImageIcon,
HamburgerMenuIcon,
WelcomeScreenMenuArrow,
WelcomeScreenTopToolbarArrow,
} from "./icons";
import { MenuLinks, Separator } from "./MenuUtils";
import { useOutsideClickHook } from "../hooks/useOutsideClick";
import { WelcomeScreenMenuArrow, WelcomeScreenTopToolbarArrow } from "./icons";
import WelcomeScreen from "./WelcomeScreen";
import { hostSidebarCountersAtom } from "./Sidebar/Sidebar";
import { jotaiScope } from "../jotai";
import { useAtom } from "jotai";
import { LanguageList } from "../excalidraw-app/components/LanguageList";
import WelcomeScreenDecor from "./WelcomeScreenDecor";
import { getShortcutFromShortcutName } from "../actions/shortcuts";
import MenuItem from "./MenuItem";
import MainMenu from "./mainMenu/MainMenu";
interface LayerUIProps {
actionManager: ActionManager;
@ -103,7 +94,6 @@ const LayerUI = ({
showExitZenModeBtn,
isCollaborating,
renderTopRightUI,
renderCustomStats,
renderCustomSidebar,
libraryReturnUrl,
@ -133,6 +123,7 @@ const LayerUI = ({
actionManager={actionManager}
exportOpts={UIOptions.canvasActions.export}
canvas={canvas}
setAppState={setAppState}
/>
);
};
@ -186,9 +177,35 @@ const LayerUI = ({
);
};
const [isMenuOpen, setIsMenuOpen] = useAtom(isMenuOpenAtom);
const menuRef = useOutsideClickHook(() => setIsMenuOpen(false));
const renderMenu = () => {
return (
childrenComponents.Menu || (
<MainMenu>
<MainMenu.DefaultItems.LoadScene />
<MainMenu.DefaultItems.SaveToActiveFile />
{UIOptions.canvasActions.export && <MainMenu.DefaultItems.Export />}
{UIOptions.canvasActions.saveAsImage && (
<MainMenu.DefaultItems.SaveAsImage />
)}
{onCollabButtonClick && (
<MainMenu.DefaultItems.LiveCollaboration
onSelect={onCollabButtonClick}
isCollaborating={isCollaborating}
/>
)}
<MainMenu.DefaultItems.Help />
<MainMenu.DefaultItems.ClearCanvas />
<MainMenu.Separator />
<MainMenu.Group title="Excalidraw links">
<MainMenu.DefaultItems.Socials />
</MainMenu.Group>
<MainMenu.Separator />
<MainMenu.DefaultItems.ToggleTheme />
<MainMenu.DefaultItems.ChangeCanvasBackground />
</MainMenu>
)
);
};
const renderCanvasActions = () => (
<div style={{ position: "relative" }}>
<WelcomeScreenDecor
@ -199,87 +216,7 @@ const LayerUI = ({
<div>{t("welcomeScreen.menuHints")}</div>
</div>
</WelcomeScreenDecor>
<button
data-prevent-outside-click
className={clsx("menu-button", "zen-mode-transition", {
"transition-left": appState.zenModeEnabled,
})}
onClick={() => setIsMenuOpen(!isMenuOpen)}
type="button"
data-testid="menu-button"
>
{HamburgerMenuIcon}
</button>
{isMenuOpen && (
<div
ref={menuRef}
style={{ position: "absolute", top: "100%", marginTop: ".25rem" }}
>
<Section heading="canvasActions">
{/* the zIndex ensures this menu has higher stacking order,
see https://github.com/excalidraw/excalidraw/pull/1445 */}
<Island
className="menu-container"
padding={2}
style={{ zIndex: 1 }}
>
{!appState.viewModeEnabled &&
actionManager.renderAction("loadScene")}
{/* // TODO barnabasmolnar/editor-redesign */}
{/* is this fine here? */}
{appState.fileHandle &&
actionManager.renderAction("saveToActiveFile")}
{renderJSONExportDialog()}
{UIOptions.canvasActions.saveAsImage && (
<MenuItem
label={t("buttons.exportImage")}
icon={ExportImageIcon}
dataTestId="image-export-button"
onClick={() => setAppState({ openDialog: "imageExport" })}
shortcut={getShortcutFromShortcutName("imageExport")}
/>
)}
{onCollabButtonClick && (
<CollabButton
isCollaborating={isCollaborating}
collaboratorCount={appState.collaborators.size}
onClick={onCollabButtonClick}
/>
)}
{actionManager.renderAction("toggleShortcuts", undefined, true)}
{!appState.viewModeEnabled &&
actionManager.renderAction("clearCanvas")}
<Separator />
<MenuLinks />
<Separator />
<div
style={{
display: "flex",
flexDirection: "column",
rowGap: ".5rem",
}}
>
<div>{actionManager.renderAction("toggleTheme")}</div>
<div style={{ padding: "0 0.625rem" }}>
<LanguageList style={{ width: "100%" }} />
</div>
{!appState.viewModeEnabled && (
<div>
<div style={{ fontSize: ".75rem", marginBottom: ".5rem" }}>
{t("labels.canvasBackground")}
</div>
<div style={{ padding: "0 0.625rem" }}>
{actionManager.renderAction("changeViewBackgroundColor")}
</div>
</div>
)}
</div>
</Island>
</Section>
</div>
)}
{renderMenu()}
</div>
);
@ -410,10 +347,7 @@ const LayerUI = ({
},
)}
>
<UserList
collaborators={appState.collaborators}
actionManager={actionManager}
/>
<UserList collaborators={appState.collaborators} />
{onCollabButtonClick && (
<CollabButton
isInHamburgerMenu={false}
@ -466,6 +400,7 @@ const LayerUI = ({
/>
)}
{renderImageExportDialog()}
{renderJSONExportDialog()}
{appState.pasteDialog.shown && (
<PasteChartDialog
setAppState={setAppState}
@ -497,6 +432,7 @@ const LayerUI = ({
renderCustomStats={renderCustomStats}
renderSidebars={renderSidebars}
device={device}
renderMenu={renderMenu}
/>
)}
@ -525,9 +461,8 @@ const LayerUI = ({
appState={appState}
actionManager={actionManager}
showExitZenModeBtn={showExitZenModeBtn}
>
{childrenComponents.FooterCenter}
</Footer>
footerCenter={childrenComponents.FooterCenter}
/>
{appState.showStats && (
<Stats

@ -129,4 +129,27 @@
padding-right: 0;
}
}
.layer-ui__sidebar__header .dropdown-menu {
&.dropdown-menu--mobile {
top: 100%;
}
.dropdown-menu-container {
--gap: 0;
z-index: 1;
position: absolute;
top: 100%;
left: 0;
:root[dir="rtl"] & {
right: 0;
left: auto;
}
width: 196px;
box-shadow: var(--library-dropdown-shadow);
border-radius: var(--border-radius-lg);
padding: 0.25rem 0.5rem;
}
}
}

@ -13,14 +13,15 @@ import {
import { ToolButton } from "./ToolButton";
import { fileOpen } from "../data/filesystem";
import { muteFSAbortError } from "../utils";
import { useAtom } from "jotai";
import { atom, useAtom } from "jotai";
import { jotaiScope } from "../jotai";
import ConfirmDialog from "./ConfirmDialog";
import PublishLibrary from "./PublishLibrary";
import { Dialog } from "./Dialog";
import { useOutsideClickHook } from "../hooks/useOutsideClick";
import MenuItem from "./MenuItem";
import { isDropdownOpenAtom } from "./App";
import DropdownMenu from "./dropdownMenu/DropdownMenu";
export const isLibraryMenuOpenAtom = atom(false);
const getSelectedItems = (
libraryItems: LibraryItems,
@ -45,7 +46,9 @@ export const LibraryMenuHeader: React.FC<{
appState,
}) => {
const [libraryItemsData] = useAtom(libraryItemsAtom, jotaiScope);
const [isLibraryMenuOpen, setIsLibraryMenuOpen] = useAtom(
isLibraryMenuOpenAtom,
);
const renderRemoveLibAlert = useCallback(() => {
const content = selectedItems.length
? t("alerts.removeItemsFromsLibrary", { count: selectedItems.length })
@ -173,85 +176,86 @@ export const LibraryMenuHeader: React.FC<{
});
};
const [isDropdownOpen, setIsDropdownOpen] = useAtom(isDropdownOpenAtom);
const dropdownRef = useOutsideClickHook(() => setIsDropdownOpen(false));
return (
<div style={{ position: "relative" }}>
<button
type="button"
className="Sidebar__dropdown-btn"
data-prevent-outside-click
onClick={() => setIsDropdownOpen(!isDropdownOpen)}
>
{DotsIcon}
</button>
{selectedItems.length > 0 && (
<div className="library-actions-counter">{selectedItems.length}</div>
)}
{isDropdownOpen && (
<div
className="Sidebar__dropdown-content menu-container"
ref={dropdownRef}
const renderLibraryMenu = () => {
return (
<DropdownMenu open={isLibraryMenuOpen}>
<DropdownMenu.Trigger
className="Sidebar__dropdown-btn"
onToggle={() => setIsLibraryMenuOpen(!isLibraryMenuOpen)}
>
{DotsIcon}
</DropdownMenu.Trigger>
<DropdownMenu.Content
onClickOutside={() => setIsLibraryMenuOpen(false)}
className="library-menu"
>
{!itemsSelected && (
<MenuItem
label={t("buttons.load")}
<DropdownMenu.Item
onSelect={onLibraryImport}
icon={LoadIcon}
dataTestId="lib-dropdown--load"
onClick={onLibraryImport}
/>
>
{t("buttons.load")}
</DropdownMenu.Item>
)}
{showRemoveLibAlert && renderRemoveLibAlert()}
{showPublishLibraryDialog && (
<PublishLibrary
onClose={() => setShowPublishLibraryDialog(false)}
libraryItems={getSelectedItems(
libraryItemsData.libraryItems,
selectedItems,
)}
appState={appState}
onSuccess={(data) =>
onPublishLibSuccess(data, libraryItemsData.libraryItems)
}
onError={(error) => window.alert(error)}
updateItemsInStorage={() =>
library.setLibrary(libraryItemsData.libraryItems)
}
onRemove={(id: string) =>
onSelectItems(selectedItems.filter((_id) => _id !== id))
}
/>
{!!items.length && (
<DropdownMenu.Item
onSelect={onLibraryExport}
icon={ExportIcon}
dataTestId="lib-dropdown--export"
>
{t("buttons.export")}
</DropdownMenu.Item>
)}
{publishLibSuccess && renderPublishSuccess()}
{!!items.length && (
<>
<MenuItem
label={t("buttons.export")}
icon={ExportIcon}
onClick={onLibraryExport}
dataTestId="lib-dropdown--export"
/>
<MenuItem
label={resetLabel}
icon={TrashIcon}
onClick={() => setShowRemoveLibAlert(true)}
dataTestId="lib-dropdown--remove"
/>
</>
<DropdownMenu.Item
onSelect={() => setShowRemoveLibAlert(true)}
icon={TrashIcon}
>
{resetLabel}
</DropdownMenu.Item>
)}
{itemsSelected && (
<MenuItem
label={t("buttons.publishLibrary")}
<DropdownMenu.Item
icon={publishIcon}
dataTestId="lib-dropdown--publish"
onClick={() => setShowPublishLibraryDialog(true)}
/>
onSelect={() => setShowPublishLibraryDialog(true)}
dataTestId="lib-dropdown--remove"
>
{t("buttons.publishLibrary")}
</DropdownMenu.Item>
)}
</DropdownMenu.Content>
</DropdownMenu>
);
};
return (
<div style={{ position: "relative" }}>
{renderLibraryMenu()}
{selectedItems.length > 0 && (
<div className="library-actions-counter">{selectedItems.length}</div>
)}
{showRemoveLibAlert && renderRemoveLibAlert()}
{showPublishLibraryDialog && (
<PublishLibrary
onClose={() => setShowPublishLibraryDialog(false)}
libraryItems={getSelectedItems(
libraryItemsData.libraryItems,
selectedItems,
)}
</div>
appState={appState}
onSuccess={(data) =>
onPublishLibSuccess(data, libraryItemsData.libraryItems)
}
onError={(error) => window.alert(error)}
updateItemsInStorage={() =>
library.setLibrary(libraryItemsData.libraryItems)
}
onRemove={(id: string) =>
onSelectItems(selectedItems.filter((_id) => _id !== id))
}
/>
)}
{publishLibSuccess && renderPublishSuccess()}
</div>
);
};

@ -1,85 +0,0 @@
@import "../css/variables.module";
.excalidraw {
.menu-container {
background-color: #fff !important;
max-height: calc(100vh - 150px);
overflow-y: auto;
}
.menu-button {
@include outlineButtonStyles;
background-color: var(--island-bg-color);
width: var(--lg-button-size);
height: var(--lg-button-size);
svg {
width: var(--lg-icon-size);
height: var(--lg-icon-size);
}
}
.menu-item {
display: flex;
background-color: transparent;
border: 0;
align-items: center;
padding: 0 0.625rem;
height: 2rem;
column-gap: 0.625rem;
font-size: 0.875rem;
color: var(--color-gray-100);
cursor: pointer;
border-radius: var(--border-radius-md);
width: 100%;
box-sizing: border-box;
font-weight: normal;
font-family: inherit;
@media screen and (min-width: 1921px) {
height: 2.25rem;
}
&__text {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
&__shortcut {
margin-inline-start: auto;
opacity: 0.5;
}
&:hover {
background-color: var(--button-hover);
text-decoration: none;
}
svg {
width: 1rem;
height: 1rem;
display: block;
}
&.active-collab {
background-color: #ecfdf5;
color: #064e3c;
}
}
&.theme--dark {
.menu-item {
color: var(--color-gray-40);
&.active-collab {
background-color: #064e3c;
color: #ecfdf5;
}
}
.menu-container {
background-color: var(--color-gray-90) !important;
}
}
}

@ -1,37 +0,0 @@
import clsx from "clsx";
import "./Menu.scss";
interface MenuProps {
icon: JSX.Element;
onClick: () => void;
label: string;
dataTestId: string;
shortcut?: string;
isCollaborating?: boolean;
}
const MenuItem = ({
icon,
onClick,
label,
dataTestId,
shortcut,
isCollaborating,
}: MenuProps) => {
return (
<button
className={clsx("menu-item", { "active-collab": isCollaborating })}
aria-label={label}
onClick={onClick}
data-testid={dataTestId}
title={label}
type="button"
>
<div className="menu-item__icon">{icon}</div>
<div className="menu-item__text">{label}</div>
{shortcut && <div className="menu-item__shortcut">{shortcut}</div>}
</button>
);
};
export default MenuItem;

@ -1,53 +0,0 @@
import { GithubIcon, DiscordIcon, PlusPromoIcon, TwitterIcon } from "./icons";
export const MenuLinks = () => (
<>
<a
href="https://plus.excalidraw.com/plus?utm_source=excalidraw&utm_medium=app&utm_content=hamburger"
target="_blank"
rel="noreferrer"
className="menu-item"
style={{ color: "var(--color-promo)" }}
>
<div className="menu-item__icon">{PlusPromoIcon}</div>
<div className="menu-item__text">Excalidraw+</div>
</a>
<a
className="menu-item"
href="https://github.com/excalidraw/excalidraw"
target="_blank"
rel="noopener noreferrer"
>
<div className="menu-item__icon">{GithubIcon}</div>
<div className="menu-item__text">GitHub</div>
</a>
<a
className="menu-item"
target="_blank"
href="https://discord.gg/UexuTaE"
rel="noopener noreferrer"
>
<div className="menu-item__icon">{DiscordIcon}</div>
<div className="menu-item__text">Discord</div>
</a>
<a
className="menu-item"
target="_blank"
href="https://twitter.com/excalidraw"
rel="noopener noreferrer"
>
<div className="menu-item__icon">{TwitterIcon}</div>
<div className="menu-item__text">Twitter</div>
</a>
</>
);
export const Separator = () => (
<div
style={{
height: "1px",
backgroundColor: "var(--default-border-color)",
margin: ".5rem 0",
}}
/>
);

@ -11,18 +11,13 @@ import { HintViewer } from "./HintViewer";
import { calculateScrollCenter } from "../scene";
import { SelectedShapeActions, ShapesSwitcher } from "./Actions";
import { Section } from "./Section";
import CollabButton from "./CollabButton";
import { SCROLLBAR_WIDTH, SCROLLBAR_MARGIN } from "../scene/scrollbars";
import { LockButton } from "./LockButton";
import { UserList } from "./UserList";
import { LibraryButton } from "./LibraryButton";
import { PenModeButton } from "./PenModeButton";
import { Stats } from "./Stats";
import { actionToggleStats } from "../actions";
import { MenuLinks, Separator } from "./MenuUtils";
import WelcomeScreen from "./WelcomeScreen";
import MenuItem from "./MenuItem";
import { ExportImageIcon } from "./icons";
type MobileMenuProps = {
appState: AppState;
@ -46,16 +41,14 @@ type MobileMenuProps = {
renderSidebars: () => JSX.Element | null;
device: Device;
renderWelcomeScreen?: boolean;
renderMenu: () => React.ReactNode;
};
export const MobileMenu = ({
appState,
elements,
actionManager,
renderJSONExportDialog,
renderImageExportDialog,
setAppState,
onCollabButtonClick,
onLockToggle,
onPenModeToggle,
canvas,
@ -66,6 +59,7 @@ export const MobileMenu = ({
renderSidebars,
device,
renderWelcomeScreen,
renderMenu,
}: MobileMenuProps) => {
const renderToolbar = () => {
return (
@ -147,16 +141,12 @@ export const MobileMenu = ({
const renderAppToolbar = () => {
if (appState.viewModeEnabled) {
return (
<div className="App-toolbar-content">
{actionManager.renderAction("toggleCanvasMenu")}
</div>
);
return <div className="App-toolbar-content">{renderMenu()}</div>;
}
return (
<div className="App-toolbar-content">
{actionManager.renderAction("toggleCanvasMenu")}
{renderMenu()}
{actionManager.renderAction("toggleEditMenu")}
{actionManager.renderAction("undo")}
{actionManager.renderAction("redo")}
@ -168,58 +158,6 @@ export const MobileMenu = ({
);
};
const renderCanvasActions = () => {
if (appState.viewModeEnabled) {
return (
<>
{renderJSONExportDialog()}
<MenuItem
label={t("buttons.exportImage")}
icon={ExportImageIcon}
dataTestId="image-export-button"
onClick={() => setAppState({ openDialog: "imageExport" })}
/>
{renderImageExportDialog()}
</>
);
}
return (
<>
{!appState.viewModeEnabled && actionManager.renderAction("loadScene")}
{renderJSONExportDialog()}
{renderImageExportDialog()}
<MenuItem
label={t("buttons.exportImage")}
icon={ExportImageIcon}
dataTestId="image-export-button"
onClick={() => setAppState({ openDialog: "imageExport" })}
/>
{onCollabButtonClick && (
<CollabButton
isCollaborating={isCollaborating}
collaboratorCount={appState.collaborators.size}
onClick={onCollabButtonClick}
/>
)}
{actionManager.renderAction("toggleShortcuts", undefined, true)}
{!appState.viewModeEnabled && actionManager.renderAction("clearCanvas")}
<Separator />
<MenuLinks />
<Separator />
{!appState.viewModeEnabled && (
<div style={{ marginBottom: ".5rem" }}>
<div style={{ fontSize: ".75rem", marginBottom: ".5rem" }}>
{t("labels.canvasBackground")}
</div>
<div style={{ padding: "0 0.625rem" }}>
{actionManager.renderAction("changeViewBackgroundColor")}
</div>
</div>
)}
{actionManager.renderAction("toggleTheme")}
</>
);
};
return (
<>
{renderSidebars()}
@ -244,27 +182,9 @@ export const MobileMenu = ({
}}
>
<Island padding={0}>
{appState.openMenu === "canvas" ? (
<Section className="App-mobile-menu" heading="canvasActions">
<div className="panelColumn">
<Stack.Col gap={2}>
{renderCanvasActions()}
{appState.collaborators.size > 0 && (
<fieldset>
<legend>{t("labels.collaborators")}</legend>
<UserList
mobile
collaborators={appState.collaborators}
actionManager={actionManager}
/>
</fieldset>
)}
</Stack.Col>
</div>
</Section>
) : appState.openMenu === "shape" &&
!appState.viewModeEnabled &&
showSelectedShapeActions(appState, elements) ? (
{appState.openMenu === "shape" &&
!appState.viewModeEnabled &&
showSelectedShapeActions(appState, elements) ? (
<Section className="App-mobile-menu" heading="selectedShapeActions">
<SelectedShapeActions
appState={appState}

@ -3,24 +3,6 @@
.excalidraw {
.Sidebar {
&__dropdown-content {
z-index: 1;
position: absolute;
top: 100%;
left: 0;
:root[dir="rtl"] & {
right: 0;
left: auto;
}
margin-top: 0.25rem;
width: 180px;
box-shadow: var(--library-dropdown-shadow);
border-radius: var(--border-radius-lg);
padding: 0.25rem 0.5rem;
}
&__close-btn,
&__pin-btn,
&__dropdown-btn {

@ -4,16 +4,16 @@ import React from "react";
import clsx from "clsx";
import { AppState, Collaborator } from "../types";
import { Tooltip } from "./Tooltip";
import { ActionManager } from "../actions/manager";
import { useExcalidrawActionManager } from "./App";
export const UserList: React.FC<{
className?: string;
mobile?: boolean;
collaborators: AppState["collaborators"];
actionManager: ActionManager;
}> = ({ className, mobile, collaborators, actionManager }) => {
const uniqueCollaborators = new Map<string, Collaborator>();
}> = ({ className, mobile, collaborators }) => {
const actionManager = useExcalidrawActionManager();
const uniqueCollaborators = new Map<string, Collaborator>();
collaborators.forEach((collaborator, socketId) => {
uniqueCollaborators.set(
// filter on user id, else fall back on unique socketId
@ -44,26 +44,6 @@ export const UserList: React.FC<{
);
});
// TODO barnabasmolnar/editor-redesign
// probably remove before shipping :)
// 20 fake collaborators; for easy, convenient debug purposes ˇˇ
// const avatars = Array.from({ length: 20 }).map((_, index) => {
// const avatarJSX = actionManager.renderAction("goToCollaborator", [
// index.toString(),
// {
// username: `User ${index}`,
// },
// ]);
// return mobile ? (
// <Tooltip label={`User ${index}`} key={index}>
// {avatarJSX}
// </Tooltip>
// ) : (
// <React.Fragment key={index}>{avatarJSX}</React.Fragment>
// );
// });
return (
<div className={clsx("UserList", className, { UserList_mobile: mobile })}>
{avatars}

@ -1,18 +1,10 @@
import { useAtom } from "jotai";
import { actionLoadScene, actionShortcuts } from "../actions";
import { ActionManager } from "../actions/manager";
import { getShortcutFromShortcutName } from "../actions/shortcuts";
import { isExcalidrawPlusSignedUser } from "../constants";
import { collabDialogShownAtom } from "../excalidraw-app/collab/Collab";
import { t } from "../i18n";
import { AppState } from "../types";
import {
ExcalLogo,
HelpIcon,
LoadIcon,
PlusPromoIcon,
UsersIcon,
} from "./icons";
import { ExcalLogo, HelpIcon, LoadIcon, PlusPromoIcon } from "./icons";
import "./WelcomeScreen.scss";
const WelcomeScreenItem = ({
@ -64,8 +56,6 @@ const WelcomeScreen = ({
appState: AppState;
actionManager: ActionManager;
}) => {
const [, setCollabDialogShown] = useAtom(collabDialogShownAtom);
let subheadingJSX;
if (isExcalidrawPlusSignedUser) {
@ -109,12 +99,6 @@ const WelcomeScreen = ({
icon={LoadIcon}
/>
)}
<WelcomeScreenItem
label={t("labels.liveCollaboration")}
shortcut={null}
onClick={() => setCollabDialogShown(true)}
icon={UsersIcon}
/>
<WelcomeScreenItem
onClick={() => actionManager.executeAction(actionShortcuts)}
label={t("helpDialog.title")}

@ -0,0 +1,127 @@
@import "../../css/variables.module";
.excalidraw {
.dropdown-menu {
position: absolute;
top: 100%;
margin-top: 0.25rem;
&--mobile {
bottom: 55px;
top: auto;
left: 0;
width: 100%;
display: flex;
flex-direction: column;
row-gap: 0.75rem;
.dropdown-menu-container {
padding: 8px 8px;
box-sizing: border-box;
background-color: var(--island-bg-color);
box-shadow: var(--shadow-island);
border-radius: var(--border-radius-lg);
position: relative;
transition: box-shadow 0.5s ease-in-out;
&.zen-mode {
box-shadow: none;
}
}
}
.dropdown-menu-container {
background-color: #fff !important;
max-height: calc(100vh - 150px);
overflow-y: auto;
--gap: 2;
}
.dropdown-menu-item-base {
display: flex;
padding: 0 0.625rem;
column-gap: 0.625rem;
font-size: 0.875rem;
color: var(--color-gray-100);
width: 100%;
box-sizing: border-box;
font-weight: normal;
font-family: inherit;
}
.dropdown-menu-item {
background-color: transparent;
border: 0;
align-items: center;
height: 2rem;
cursor: pointer;
border-radius: var(--border-radius-md);
@media screen and (min-width: 1921px) {
height: 2.25rem;
}
&__text {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
&__shortcut {
margin-inline-start: auto;
opacity: 0.5;
}
&:hover {
background-color: var(--button-hover);
text-decoration: none;
}
svg {
width: 1rem;
height: 1rem;
display: block;
}
}
.dropdown-menu-item-custom {
margin-top: 0.5rem;
}
.dropdown-menu-group-title {
font-size: 14px;
text-align: left;
margin: 10px 0;
font-weight: 500;
}
}
&.theme--dark {
.dropdown-menu-item {
color: var(--color-gray-40);
}
.dropdown-menu-container {
background-color: var(--color-gray-90) !important;
}
}
.dropdown-menu-button {
@include outlineButtonStyles;
background-color: var(--island-bg-color);
width: var(--lg-button-size);
height: var(--lg-button-size);
svg {
width: var(--lg-icon-size);
height: var(--lg-icon-size);
}
&--mobile {
border: none;
margin: 0;
padding: 0;
width: var(--default-button-size);
height: var(--default-button-size);
}
}
}

@ -0,0 +1,43 @@
import React from "react";
import DropdownMenuTrigger from "./DropdownMenuTrigger";
import DropdownMenuItem from "./DropdownMenuItem";
import MenuSeparator from "./DropdownMenuSeparator";
import DropdownMenuGroup from "./DropdownMenuGroup";
import DropdownMenuContent from "./DropdownMenuContent";
import DropdownMenuItemLink from "./DropdownMenuItemLink";
import DropdownMenuItemCustom from "./DropdownMenuItemCustom";
import {
getMenuContentComponent,
getMenuTriggerComponent,
} from "./dropdownMenuUtils";
import "./DropdownMenu.scss";
const DropdownMenu = ({
children,
open,
}: {
children?: React.ReactNode;
open: boolean;
}) => {
const MenuTriggerComp = getMenuTriggerComponent(children);
const MenuContentComp = getMenuContentComponent(children);
return (
<>
{MenuTriggerComp}
{open && MenuContentComp}
</>
);
};
DropdownMenu.Trigger = DropdownMenuTrigger;
DropdownMenu.Content = DropdownMenuContent;
DropdownMenu.Item = DropdownMenuItem;
DropdownMenu.ItemLink = DropdownMenuItemLink;
DropdownMenu.ItemCustom = DropdownMenuItemCustom;
DropdownMenu.Group = DropdownMenuGroup;
DropdownMenu.Separator = MenuSeparator;
export default DropdownMenu;
DropdownMenu.displayName = "DropdownMenu";

@ -0,0 +1,51 @@
import { useOutsideClickHook } from "../../hooks/useOutsideClick";
import { Island } from "../Island";
import { useDevice } from "../App";
import clsx from "clsx";
import Stack from "../Stack";
const MenuContent = ({
children,
onClickOutside,
className = "",
style,
}: {
children?: React.ReactNode;
onClickOutside?: () => void;
className?: string;
style?: React.CSSProperties;
}) => {
const device = useDevice();
const menuRef = useOutsideClickHook(() => {
onClickOutside?.();
});
const classNames = clsx(`dropdown-menu ${className}`, {
"dropdown-menu--mobile": device.isMobile,
}).trim();
return (
<div
ref={menuRef}
className={classNames}
style={style}
data-testid="dropdown-menu"
>
{/* the zIndex ensures this menu has higher stacking order,
see https://github.com/excalidraw/excalidraw/pull/1445 */}
{device.isMobile ? (
<Stack.Col className="dropdown-menu-container">{children}</Stack.Col>
) : (
<Island
className="dropdown-menu-container"
padding={2}
style={{ zIndex: 1 }}
>
{children}
</Island>
)}
</div>
);
};
export default MenuContent;
MenuContent.displayName = "DropdownMenuContent";

@ -0,0 +1,23 @@
import React from "react";
const MenuGroup = ({
children,
className = "",
style,
title,
}: {
children: React.ReactNode;
className?: string;
style?: React.CSSProperties;
title?: string;
}) => {
return (
<div className={`dropdown-menu-group ${className}`} style={style}>
{title && <p className="dropdown-menu-group-title">{title}</p>}
{children}
</div>
);
};
export default MenuGroup;
MenuGroup.displayName = "DropdownMenuGroup";

@ -0,0 +1,45 @@
import React from "react";
import MenuItemContent from "./DropdownMenuItemContent";
export const getDrodownMenuItemClassName = (className = "") => {
return `dropdown-menu-item dropdown-menu-item-base ${className}`.trim();
};
const DropdownMenuItem = ({
icon,
onSelect,
children,
dataTestId,
shortcut,
className,
style,
ariaLabel,
}: {
icon?: JSX.Element;
onSelect: () => void;
children: React.ReactNode;
dataTestId?: string;
shortcut?: string;
className?: string;
style?: React.CSSProperties;
ariaLabel?: string;
}) => {
return (
<button
aria-label={ariaLabel}
onClick={onSelect}
data-testid={dataTestId}
title={ariaLabel}
type="button"
className={getDrodownMenuItemClassName(className)}
style={style}
>
<MenuItemContent icon={icon} shortcut={shortcut}>
{children}
</MenuItemContent>
</button>
);
};
export default DropdownMenuItem;
DropdownMenuItem.displayName = "DropdownMenuItem";

@ -0,0 +1,23 @@
import { useDevice } from "../App";
const MenuItemContent = ({
icon,
shortcut,
children,
}: {
icon?: JSX.Element;
shortcut?: string;
children: React.ReactNode;
}) => {
const device = useDevice();
return (
<>
<div className="dropdown-menu-item__icon">{icon}</div>
<div className="dropdown-menu-item__text">{children}</div>
{shortcut && !device.isMobile && (
<div className="dropdown-menu-item__shortcut">{shortcut}</div>
)}
</>
);
};
export default MenuItemContent;

@ -0,0 +1,23 @@
const DropdownMenuItemCustom = ({
children,
className = "",
style,
dataTestId,
}: {
children: React.ReactNode;
className?: string;
style?: React.CSSProperties;
dataTestId?: string;
}) => {
return (
<div
className={`dropdown-menu-item-base dropdown-menu-item-custom ${className}`.trim()}
style={style}
data-testid={dataTestId}
>
{children}
</div>
);
};
export default DropdownMenuItemCustom;

@ -0,0 +1,42 @@
import MenuItemContent from "./DropdownMenuItemContent";
import React from "react";
import { getDrodownMenuItemClassName } from "./DropdownMenuItem";
const DropdownMenuItemLink = ({
icon,
dataTestId,
shortcut,
href,
children,
className = "",
style,
ariaLabel,
}: {
icon?: JSX.Element;
children: React.ReactNode;
dataTestId?: string;
shortcut?: string;
className?: string;
href: string;
style?: React.CSSProperties;
ariaLabel?: string;
}) => {
return (
<a
href={href}
target="_blank"
rel="noreferrer"
className={getDrodownMenuItemClassName(className)}
style={style}
data-testid={dataTestId}
title={ariaLabel}
aria-label={ariaLabel}
>
<MenuItemContent icon={icon} shortcut={shortcut}>
{children}
</MenuItemContent>
</a>
);
};
export default DropdownMenuItemLink;
DropdownMenuItemLink.displayName = "DropdownMenuItemLink";

@ -0,0 +1,14 @@
import React from "react";
const MenuSeparator = () => (
<div
style={{
height: "1px",
backgroundColor: "var(--default-border-color)",
margin: ".5rem 0",
}}
/>
);
export default MenuSeparator;
MenuSeparator.displayName = "DropdownMenuSeparator";

@ -0,0 +1,37 @@
import clsx from "clsx";
import { useDevice, useExcalidrawAppState } from "../App";
const MenuTrigger = ({
className = "",
children,
onToggle,
}: {
className?: string;
children: React.ReactNode;
onToggle: () => void;
}) => {
const appState = useExcalidrawAppState();
const device = useDevice();
const classNames = clsx(
`dropdown-menu-button ${className}`,
"zen-mode-transition",
{
"transition-left": appState.zenModeEnabled,
"dropdown-menu-button--mobile": device.isMobile,
},
).trim();
return (
<button
data-prevent-outside-click
className={classNames}
onClick={onToggle}
type="button"
data-testid="dropdown-menu-button"
>
{children}
</button>
);
};
export default MenuTrigger;
MenuTrigger.displayName = "DropdownMenuTrigger";

@ -0,0 +1,35 @@
import React from "react";
export const getMenuTriggerComponent = (children: React.ReactNode) => {
const comp = React.Children.toArray(children).find(
(child) =>
React.isValidElement(child) &&
typeof child.type !== "string" &&
//@ts-ignore
child?.type.displayName &&
//@ts-ignore
child.type.displayName === "DropdownMenuTrigger",
);
if (!comp) {
return null;
}
//@ts-ignore
return comp;
};
export const getMenuContentComponent = (children: React.ReactNode) => {
const comp = React.Children.toArray(children).find(
(child) =>
React.isValidElement(child) &&
typeof child.type !== "string" &&
//@ts-ignore
child?.type.displayName &&
//@ts-ignore
child.type.displayName === "DropdownMenuContent",
);
if (!comp) {
return null;
}
//@ts-ignore
return comp;
};

@ -1,7 +1,7 @@
import clsx from "clsx";
import { ActionManager } from "../../actions/manager";
import { t } from "../../i18n";
import { AppState } from "../../types";
import { AppState, UIChildrenComponents } from "../../types";
import {
ExitZenModeAction,
FinalizeAction,
@ -13,20 +13,19 @@ import { WelcomeScreenHelpArrow } from "../icons";
import { Section } from "../Section";
import Stack from "../Stack";
import WelcomeScreenDecor from "../WelcomeScreenDecor";
import FooterCenter from "./FooterCenter";
const Footer = ({
appState,
actionManager,
showExitZenModeBtn,
renderWelcomeScreen,
children,
footerCenter,
}: {
appState: AppState;
actionManager: ActionManager;
showExitZenModeBtn: boolean;
renderWelcomeScreen: boolean;
children?: React.ReactNode;
footerCenter: UIChildrenComponents["FooterCenter"];
}) => {
const device = useDevice();
const showFinalize =
@ -71,7 +70,7 @@ const Footer = ({
</Section>
</Stack.Col>
</div>
<FooterCenter>{children}</FooterCenter>
{footerCenter}
<div
className={clsx("layer-ui__wrapper__footer-right zen-mode-transition", {
"transition-right disable-pointerEvents": appState.zenModeEnabled,

@ -0,0 +1,10 @@
.footer-center {
pointer-events: none;
& > * {
pointer-events: all;
}
display: flex;
width: 100%;
justify-content: flex-start;
}

@ -1,11 +1,12 @@
import clsx from "clsx";
import { useExcalidrawAppState } from "../App";
import "./FooterCenter.scss";
const FooterCenter = ({ children }: { children?: React.ReactNode }) => {
const appState = useExcalidrawAppState();
return (
<div
className={clsx("layer-ui__wrapper__footer-center zen-mode-transition", {
className={clsx("footer-center zen-mode-transition", {
"layer-ui__wrapper__footer-left--transition-bottom":
appState.zenModeEnabled,
})}

@ -0,0 +1,174 @@
import clsx from "clsx";
import { getShortcutFromShortcutName } from "../../actions/shortcuts";
import { t } from "../../i18n";
import {
useExcalidrawAppState,
useExcalidrawSetAppState,
useExcalidrawActionManager,
} from "../App";
import { ExportIcon, ExportImageIcon, UsersIcon } from "../icons";
import { GithubIcon, DiscordIcon, TwitterIcon } from "../icons";
import DropdownMenuItem from "../dropdownMenu/DropdownMenuItem";
import DropdownMenuItemLink from "../dropdownMenu/DropdownMenuItemLink";
export const LoadScene = () => {
const appState = useExcalidrawAppState();
const actionManager = useExcalidrawActionManager();
if (appState.viewModeEnabled) {
return null;
}
return actionManager.renderAction("loadScene");
};
LoadScene.displayName = "LoadScene";
export const SaveToActiveFile = () => {
const appState = useExcalidrawAppState();
const actionManager = useExcalidrawActionManager();
if (!appState.fileHandle) {
return null;
}
return actionManager.renderAction("saveToActiveFile");
};
SaveToActiveFile.displayName = "SaveToActiveFile";
export const SaveAsImage = () => {
const setAppState = useExcalidrawSetAppState();
// Hack until we tie "t" to lang state
// eslint-disable-next-line
const appState = useExcalidrawAppState();
return (
<DropdownMenuItem
icon={ExportImageIcon}
dataTestId="image-export-button"
onSelect={() => setAppState({ openDialog: "imageExport" })}
shortcut={getShortcutFromShortcutName("imageExport")}
ariaLabel={t("buttons.exportImage")}
>
{t("buttons.exportImage")}
</DropdownMenuItem>
);
};
SaveAsImage.displayName = "SaveAsImage";
export const Help = () => {
// Hack until we tie "t" to lang state
// eslint-disable-next-line
const appState = useExcalidrawAppState();
const actionManager = useExcalidrawActionManager();
return actionManager.renderAction("toggleShortcuts", undefined, true);
};
Help.displayName = "Help";
export const ClearCanvas = () => {
const appState = useExcalidrawAppState();
const actionManager = useExcalidrawActionManager();
if (appState.viewModeEnabled) {
return null;
}
return actionManager.renderAction("clearCanvas");
};
ClearCanvas.displayName = "ClearCanvas";
export const ToggleTheme = () => {
// Hack until we tie "t" to lang state
// eslint-disable-next-line
const appState = useExcalidrawAppState();
const actionManager = useExcalidrawActionManager();
return actionManager.renderAction("toggleTheme");
};
ToggleTheme.displayName = "ToggleTheme";
export const ChangeCanvasBackground = () => {
const appState = useExcalidrawAppState();
const actionManager = useExcalidrawActionManager();
if (appState.viewModeEnabled) {
return null;
}
return (
<div style={{ marginTop: "0.5rem" }}>
<div style={{ fontSize: ".75rem", marginBottom: ".5rem" }}>
{t("labels.canvasBackground")}
</div>
<div style={{ padding: "0 0.625rem" }}>
{actionManager.renderAction("changeViewBackgroundColor")}
</div>
</div>
);
};
ChangeCanvasBackground.displayName = "ChangeCanvasBackground";
export const Export = () => {
// Hack until we tie "t" to lang state
// eslint-disable-next-line
const appState = useExcalidrawAppState();
const setAppState = useExcalidrawSetAppState();
return (
<DropdownMenuItem
icon={ExportIcon}
onSelect={() => {
setAppState({ openDialog: "jsonExport" });
}}
dataTestId="json-export-button"
ariaLabel={t("buttons.export")}
>
{t("buttons.export")}
</DropdownMenuItem>
);
};
Export.displayName = "Export";
export const Socials = () => (
<>
<DropdownMenuItemLink
icon={GithubIcon}
href="https://github.com/excalidraw/excalidraw"
ariaLabel="GitHub"
>
GitHub
</DropdownMenuItemLink>
<DropdownMenuItemLink
icon={DiscordIcon}
href="https://discord.gg/UexuTaE"
ariaLabel="Discord"
>
Discord
</DropdownMenuItemLink>
<DropdownMenuItemLink
icon={TwitterIcon}
href="https://twitter.com/excalidraw"
ariaLabel="Twitter"
>
Twitter
</DropdownMenuItemLink>
</>
);
Socials.displayName = "Socials";
export const LiveCollaboration = ({
onSelect,
isCollaborating,
}: {
onSelect: () => void;
isCollaborating: boolean;
}) => {
// Hack until we tie "t" to lang state
// eslint-disable-next-line
const appState = useExcalidrawAppState();
return (
<DropdownMenuItem
dataTestId="collab-button"
icon={UsersIcon}
className={clsx({
"active-collab": isCollaborating,
})}
onSelect={onSelect}
>
{t("labels.liveCollaboration")}
</DropdownMenuItem>
);
};
LiveCollaboration.displayName = "LiveCollaboration";

@ -0,0 +1,56 @@
import React from "react";
import {
useDevice,
useExcalidrawAppState,
useExcalidrawSetAppState,
} from "../App";
import DropdownMenu from "../dropdownMenu/DropdownMenu";
import * as DefaultItems from "./DefaultItems";
import { UserList } from "../UserList";
import { t } from "../../i18n";
import { HamburgerMenuIcon } from "../icons";
const MainMenu = ({ children }: { children?: React.ReactNode }) => {
const device = useDevice();
const appState = useExcalidrawAppState();
const setAppState = useExcalidrawSetAppState();
const onClickOutside = device.isMobile
? undefined
: () => setAppState({ openMenu: null });
return (
<DropdownMenu open={appState.openMenu === "canvas"}>
<DropdownMenu.Trigger
onToggle={() => {
setAppState({
openMenu: appState.openMenu === "canvas" ? null : "canvas",
});
}}
>
{HamburgerMenuIcon}
</DropdownMenu.Trigger>
<DropdownMenu.Content onClickOutside={onClickOutside}>
{children}
{device.isMobile && appState.collaborators.size > 0 && (
<fieldset className="UserList-Wrapper">
<legend>{t("labels.collaborators")}</legend>
<UserList mobile={true} collaborators={appState.collaborators} />
</fieldset>
)}
</DropdownMenu.Content>
</DropdownMenu>
);
};
MainMenu.Trigger = DropdownMenu.Trigger;
MainMenu.Item = DropdownMenu.Item;
MainMenu.ItemLink = DropdownMenu.ItemLink;
MainMenu.ItemCustom = DropdownMenu.ItemCustom;
MainMenu.Group = DropdownMenu.Group;
MainMenu.Separator = DropdownMenu.Separator;
MainMenu.DefaultItems = DefaultItems;
export default MainMenu;
MainMenu.displayName = "Menu";

@ -569,6 +569,20 @@
display: none;
}
}
.UserList-Wrapper {
margin: 0;
padding: 0;
border: none;
text-align: left;
legend {
display: block;
font-size: 0.75rem;
font-weight: 400;
margin: 0 0 0.25rem;
padding: 0;
}
}
}
.ErrorSplash.excalidraw {

@ -242,6 +242,12 @@ class Collab extends PureComponent<Props, CollabState> {
);
}
} catch (error: any) {
this.setState({
// firestore doesn't return a specific error code when size exceeded
errorMessage: /is longer than.*?bytes/.test(error.message)
? t("errors.collabSaveFailed_sizeExceeded")
: t("errors.collabSaveFailed"),
});
console.error(error);
}
};

@ -8,23 +8,21 @@ export const LanguageList = ({ style }: { style?: React.CSSProperties }) => {
const [langCode, setLangCode] = useAtom(langCodeAtom);
return (
<React.Fragment>
<select
className="dropdown-select dropdown-select__language"
onChange={({ target }) => setLangCode(target.value)}
value={langCode}
aria-label={i18n.t("buttons.selectLanguage")}
style={style}
>
<option key={i18n.defaultLang.code} value={i18n.defaultLang.code}>
{i18n.defaultLang.label}
<select
className="dropdown-select dropdown-select__language"
onChange={({ target }) => setLangCode(target.value)}
value={langCode}
aria-label={i18n.t("buttons.selectLanguage")}
style={style}
>
<option key={i18n.defaultLang.code} value={i18n.defaultLang.code}>
{i18n.defaultLang.label}
</option>
{languages.map((lang) => (
<option key={lang.code} value={lang.code}>
{lang.label}
</option>
{languages.map((lang) => (
<option key={lang.code} value={lang.code}>
{lang.label}
</option>
))}
</select>
</React.Fragment>
))}
</select>
);
};

@ -4,7 +4,7 @@
&.theme--dark {
--color-primary-contrast-offset: #726dff; // to offset Chubb illusion
}
.layer-ui__wrapper .layer-ui__wrapper__footer-center {
.footer-center {
justify-content: flex-end;
margin-top: auto;
margin-bottom: auto;
@ -24,7 +24,29 @@
height: 1.2rem;
}
}
.dropdown-menu-container {
.dropdown-menu-item {
&.active-collab {
background-color: #ecfdf5;
color: #064e3c;
}
&.ExcalidrawPlus {
color: var(--color-promo);
}
}
}
&.theme--dark {
.dropdown-menu-item {
&.active-collab {
background-color: #064e3c;
color: #ecfdf5;
}
}
}
}
.excalidraw-app.is-collaborating {
[data-testid="clear-canvas-button"] {
display: none;

@ -21,7 +21,12 @@ import {
} from "../element/types";
import { useCallbackRefState } from "../hooks/useCallbackRefState";
import { t } from "../i18n";
import { Excalidraw, defaultLang, Footer } from "../packages/excalidraw/index";
import {
Excalidraw,
defaultLang,
Footer,
MainMenu,
} from "../packages/excalidraw/index";
import {
AppState,
LibraryItems,
@ -79,8 +84,11 @@ import { reconcileElements } from "./collab/reconciliation";
import { parseLibraryTokensFromUrl, useHandleLibrary } from "../data/library";
import { EncryptedIcon } from "./components/EncryptedIcon";
import { ExcalidrawPlusAppLink } from "./components/ExcalidrawPlusAppLink";
import { LanguageList } from "./components/LanguageList";
import { PlusPromoIcon } from "../components/icons";
polyfill();
window.EXCALIDRAW_THROTTLE_RENDER = true;
const languageDetector = new LanguageDetector();
@ -229,7 +237,6 @@ export const langCodeAtom = atom(
const ExcalidrawWrapper = () => {
const [errorMessage, setErrorMessage] = useState("");
const [langCode, setLangCode] = useAtom(langCodeAtom);
// initial state
// ---------------------------------------------------------------------------
@ -594,6 +601,39 @@ const ExcalidrawWrapper = () => {
localStorage.setItem(STORAGE_KEYS.LOCAL_STORAGE_LIBRARY, serializedItems);
};
const renderMenu = () => {
return (
<MainMenu>
<MainMenu.DefaultItems.LoadScene />
<MainMenu.DefaultItems.SaveToActiveFile />
<MainMenu.DefaultItems.Export />
<MainMenu.DefaultItems.SaveAsImage />
<MainMenu.DefaultItems.LiveCollaboration
isCollaborating={isCollaborating}
onSelect={() => setCollabDialogShown(true)}
/>
<MainMenu.DefaultItems.Help />
<MainMenu.DefaultItems.ClearCanvas />
<MainMenu.Separator />
<MainMenu.ItemLink
icon={PlusPromoIcon}
href="https://plus.excalidraw.com/plus?utm_source=excalidraw&utm_medium=app&utm_content=hamburger"
className="ExcalidrawPlus"
>
Excalidraw+
</MainMenu.ItemLink>
<MainMenu.DefaultItems.Socials />
<MainMenu.Separator />
<MainMenu.DefaultItems.ToggleTheme />
<MainMenu.ItemCustom>
<LanguageList style={{ width: "100%" }} />
</MainMenu.ItemCustom>
<MainMenu.DefaultItems.ChangeCanvasBackground />
</MainMenu>
);
};
return (
<div
style={{ height: "100%" }}
@ -640,6 +680,7 @@ const ExcalidrawWrapper = () => {
autoFocus={true}
theme={theme}
>
{renderMenu()}
<Footer>
<div style={{ display: "flex", gap: ".5rem", alignItems: "center" }}>
<ExcalidrawPlusAppLink />

@ -29,6 +29,8 @@ export const KEYS = {
ARROW_LEFT: "ArrowLeft",
ARROW_RIGHT: "ArrowRight",
ARROW_UP: "ArrowUp",
PAGE_UP: "PageUp",
PAGE_DOWN: "PageDown",
BACKSPACE: "Backspace",
ALT: "Alt",
CTRL_OR_CMD: isDarwin ? "metaKey" : "ctrlKey",

@ -1,6 +1,7 @@
{
"labels": {
"paste": "لصق",
"pasteAsPlaintext": "",
"pasteCharts": "لصق الرسوم البيانية",
"selectAll": "تحديد الكل",
"multiSelect": "إضافة عنصر للتحديد",
@ -71,7 +72,7 @@
"layers": "الطبقات",
"actions": "الإجراءات",
"language": "اللغة",
"liveCollaboration": "بدء المشاركة الحية",
"liveCollaboration": "",
"duplicateSelection": "تكرار",
"untitled": "غير معنون",
"name": "الاسم",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "إعادة تعيين اللوحة",
"exportJSON": "صدر الملف",
"exportImage": "إحفظ كصورة",
"export": "تصدير",
"exportImage": "",
"export": "",
"exportToPng": "تصدير بصيغة PNG",
"exportToSvg": "تصدير بصيغة SVG",
"copyToClipboard": "نسخ إلى الحافظة",
@ -144,7 +145,7 @@
"scale": "مقاس",
"save": "احفظ للملف الحالي",
"saveAs": "حفظ كـ",
"load": "تحميل",
"load": "",
"getShareableLink": "احصل على رابط المشاركة",
"close": "غلق",
"selectLanguage": "اختر اللغة",
@ -235,7 +236,7 @@
"resize": "يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،\nاضغط على ALT لتغيير الحجم من المركز",
"resizeImage": "يمكنك تغيير الحجم بحرية بالضغط بأستمرار على SHIFT،\nاضغط بأستمرار على ALT أيضا لتغيير الحجم من المركز",
"rotate": "يمكنك تقييد الزوايا من خلال الضغط على SHIFT أثناء الدوران",
"lineEditor_info": "انقر نقراً مزدوجاً أو اضغط Enter لتعديل النقاط",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -310,7 +311,9 @@
"view": "عرض",
"zoomToFit": "تكبير للملائمة",
"zoomToSelection": "تكبير للعنصر المحدد",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "مسح اللوحة"
@ -391,7 +394,8 @@
"fileSaved": "تم حفظ الملف.",
"fileSavedToFilename": "حفظ باسم {filename}",
"canvas": "لوحة الرسم",
"selection": "العنصر المحدد"
"selection": "العنصر المحدد",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "أبيض",
@ -439,5 +443,12 @@
"5c940d": "ليموني 9",
"e67700": "أصفر 9",
"d9480f": "برتقالي 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Постави",
"pasteAsPlaintext": "",
"pasteCharts": "Постави графики",
"selectAll": "Маркирай всичко",
"multiSelect": "Добави елемент към селекция",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Нулиране на платно",
"exportJSON": "",
"exportImage": "Запиши като изображение",
"export": "Експортиране",
"exportImage": "",
"export": "",
"exportToPng": "Изнасяне в PNG",
"exportToSvg": "Изнасяне в SVG",
"copyToClipboard": "Копиране в клипборда",
@ -144,7 +145,7 @@
"scale": "Мащаб",
"save": "",
"saveAs": "Запиши като",
"load": "Зареждане",
"load": "",
"getShareableLink": "Получаване на връзка за споделяне",
"close": "Затвори",
"selectLanguage": "Избор на език",
@ -235,7 +236,7 @@
"resize": "Може да ограничите при преоразмеряване като задържите SHIFT,\nзадръжте ALT за преоразмерите през центъра",
"resizeImage": "",
"rotate": "Можете да ограничите ъглите, като държите SHIFT, докато се въртите",
"lineEditor_info": "Кликнете два пъти или натиснете Enter за да промените точките",
"lineEditor_info": "",
"lineEditor_pointSelected": "Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -310,7 +311,9 @@
"view": "Преглед",
"zoomToFit": "Приближи докато се виждат всички елементи",
"zoomToSelection": "Приближи селекцията",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "পেস্ট করুন",
"pasteAsPlaintext": "",
"pasteCharts": "চার্ট পেস্ট করুন",
"selectAll": "সবটা সিলেক্ট করুন",
"multiSelect": "একাধিক সিলেক্ট করুন",
@ -71,7 +72,7 @@
"layers": "মাত্রা",
"actions": "ক্রিয়া",
"language": "ভাষা",
"liveCollaboration": "যুগ্ম কার্য",
"liveCollaboration": "",
"duplicateSelection": "সদৃশ সিলেক্ট",
"untitled": "অনামী",
"name": "নাম",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "ক্যানভাস সাফ করুন",
"exportJSON": "জেসন নিবদ্ধ করুন",
"exportImage": "চিত্র নিবদ্ধ করুন",
"export": "নিবদ্ধ",
"exportImage": "",
"export": "",
"exportToPng": "পীএনজী ছবির মতন নিবদ্ধ করুন",
"exportToSvg": "এসভীজী ছবির মতন নিবদ্ধ করুন",
"copyToClipboard": "ক্লিপবোর্ডে কপি করুন",
@ -144,7 +145,7 @@
"scale": "মাপ",
"save": "জমা করুন",
"saveAs": "অন্যভাবে জমা করুন",
"load": "লোড করুন",
"load": "",
"getShareableLink": "ভাগযোগ্য লিঙ্ক পান",
"close": "বন্ধ করুন",
"selectLanguage": "ভাষা চিহ্নিত করুন",
@ -214,7 +215,7 @@
"text": "লেখা",
"library": "সংগ্রহ",
"lock": "আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন",
"penMode": "পিঞ্চ-জুম প্রতিরোধ করুন এবং শুধুমাত্র কলম থেকে ইনপুট গ্রহণ করুন",
"penMode": "",
"link": "একটি নির্বাচিত আকৃতির জন্য লিঙ্ক যোগ বা আপডেট করুন",
"eraser": "ঝাড়ন"
},
@ -235,7 +236,7 @@
"resize": "আপনি আকার পরিবর্তন করার সময় শিফ্ট ধরে রেখে অনুপাতকে সীমাবদ্ধ করতে পারেন,\nকেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরে রাখুন",
"resizeImage": "আপনি শিফ্ট ধরে রেখে অবাধে আকার পরিবর্তন করতে পারেন, কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরুন",
"rotate": "আপনি ঘোরানোর সময় শিফ্ট ধরে রেখে কোণগুলিকে সীমাবদ্ধ করতে পারেন",
"lineEditor_info": "পয়েন্ট সম্পাদনা করতে ডাবল-ক্লিক করুন বা এন্টার টিপুন",
"lineEditor_info": "",
"lineEditor_pointSelected": "বিন্দু(গুলি) মুছতে ডিলিট টিপুন, কন্ট্রোল/কম্যান্ড যোগে ডি টিপুন নকল করতে অথবা সরানোর জন্য টানুন",
"lineEditor_nothingSelected": "সম্পাদনা করার জন্য একটি বিন্দু নির্বাচন করুন (একাধিক নির্বাচন করতে শিফ্ট ধরে রাখুন),\nঅথবা অল্ট ধরে রাখুন এবং নতুন বিন্দু যোগ করতে ক্লিক করুন",
"placeImage": "ছবিটি স্থাপন করতে ক্লিক করুন, অথবা নিজে আকার সেট করতে ক্লিক করুন এবং টেনে আনুন",
@ -310,7 +311,9 @@
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": "বাছাই"
"selection": "বাছাই",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "সাদা",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Enganxa",
"pasteAsPlaintext": "",
"pasteCharts": "Enganxa els diagrames",
"selectAll": "Selecciona-ho tot",
"multiSelect": "Afegeix un element a la selecció",
@ -71,7 +72,7 @@
"layers": "Capes",
"actions": "Accions",
"language": "Llengua",
"liveCollaboration": "Col·laboració en directe",
"liveCollaboration": "",
"duplicateSelection": "Duplica",
"untitled": "Sense títol",
"name": "Nom",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Neteja el llenç",
"exportJSON": "Exporta a un fitxer",
"exportImage": "Desa com a imatge",
"export": "Exporta",
"exportImage": "",
"export": "",
"exportToPng": "Exporta a PNG",
"exportToSvg": "Exporta a SNG",
"copyToClipboard": "Copia al porta-retalls",
@ -144,7 +145,7 @@
"scale": "Escala",
"save": "Desa al fitxer actual",
"saveAs": "Anomena i desa",
"load": "Carrega",
"load": "",
"getShareableLink": "Obté l'enllaç per a compartir",
"close": "Tanca",
"selectLanguage": "Trieu la llengua",
@ -214,7 +215,7 @@
"text": "Text",
"library": "Biblioteca",
"lock": "Mantenir activa l'eina seleccionada desprès de dibuixar",
"penMode": "Evita el zoom i accepta solament el dibuix lliure amb bolígraf",
"penMode": "",
"link": "Afegeix / actualitza l'enllaç per a la forma seleccionada",
"eraser": "Esborrador"
},
@ -235,7 +236,7 @@
"resize": "Per restringir les proporcions mentres es canvia la mida, mantenir premut el majúscul (SHIFT); per canviar la mida des del centre, mantenir premut ALT",
"resizeImage": "Podeu redimensionar lliurement prement MAJÚSCULA;\nper a redimensionar des del centre, premeu ALT",
"rotate": "Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)",
"lineEditor_info": "Fes doble clic o premi Enter per editar punts",
"lineEditor_info": "",
"lineEditor_pointSelected": "Premeu Suprimir per a eliminar el(s) punt(s), CtrlOrCmd+D per a duplicar-lo, o arrossegueu-lo per a moure'l",
"lineEditor_nothingSelected": "Seleccioneu un punt per a editar-lo (premeu SHIFT si voleu\nselecció múltiple), o manteniu Alt i feu clic per a afegir més punts",
"placeImage": "Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment",
@ -310,7 +311,9 @@
"view": "Visualització",
"zoomToFit": "Zoom per veure tots els elements",
"zoomToSelection": "Zoom per veure la selecció",
"toggleElementLock": "Blocar/desblocar la selecció"
"toggleElementLock": "Blocar/desblocar la selecció",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Neteja el llenç"
@ -391,7 +394,8 @@
"fileSaved": "S'ha desat el fitxer.",
"fileSavedToFilename": "S'ha desat a {filename}",
"canvas": "el llenç",
"selection": "la selecció"
"selection": "la selecció",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Blanc",
@ -439,5 +443,12 @@
"5c940d": "Llima 9",
"e67700": "Groc 9",
"d9480f": "Taronja 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Vložit",
"pasteAsPlaintext": "",
"pasteCharts": "Vložit grafy",
"selectAll": "Vybrat vše",
"multiSelect": "Přidat prvek do výběru",
@ -60,18 +61,18 @@
"center": "Na střed",
"right": "Vpravo",
"extraBold": "Extra tlustý",
"architect": "",
"artist": "",
"architect": "Architekt",
"artist": "Umělec",
"cartoonist": "",
"fileTitle": "Název souboru",
"colorPicker": "Výběr barvy",
"canvasColors": "",
"canvasColors": "Použito na plátně",
"canvasBackground": "Pozadí plátna",
"drawingCanvas": "",
"drawingCanvas": "Kreslicí plátno",
"layers": "Vrstvy",
"actions": "Akce",
"language": "Jazyk",
"liveCollaboration": "Živá spolupráce",
"liveCollaboration": "Živá spolupráce...",
"duplicateSelection": "Duplikovat",
"untitled": "Bez názvu",
"name": "Název",
@ -98,57 +99,57 @@
"flipHorizontal": "Převrátit vodorovně",
"flipVertical": "Převrátit svisle",
"viewMode": "Náhled",
"toggleExportColorScheme": "",
"toggleExportColorScheme": "Přepnout exportování barevného schématu",
"share": "Sdílet",
"showStroke": "",
"showBackground": "",
"showStroke": "Zobrazit výběr barvy",
"showBackground": "Zobrazit výběr barev pozadí",
"toggleTheme": "Přepnout tmavý řežim",
"personalLib": "",
"excalidrawLib": "",
"decreaseFontSize": "",
"increaseFontSize": "",
"unbindText": "",
"bindText": "",
"personalLib": "Osobní knihovna",
"excalidrawLib": "Exkalidraw knihovna",
"decreaseFontSize": "Zmenšit písmo",
"increaseFontSize": "Zvětšit písmo",
"unbindText": "Zrušit vazbu textu",
"bindText": "Vázat text s kontejnerem",
"link": {
"edit": "",
"create": "",
"label": ""
"edit": "Upravit odkaz",
"create": "Vytvořit odkaz",
"label": "Odkaz"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Upravit čáru",
"exit": "Ukončit editor řádků"
},
"elementLock": {
"lock": "",
"unlock": "",
"lockAll": "",
"unlockAll": ""
"lock": "Uzamknout",
"unlock": "Odemknout",
"lockAll": "Uzamknout vše",
"unlockAll": "Odemknout vše"
},
"statusPublished": "",
"sidebarLock": ""
"statusPublished": "Zveřejněno",
"sidebarLock": "Ponechat postranní panel otevřený"
},
"library": {
"noItems": "",
"hint_emptyLibrary": "",
"hint_emptyPrivateLibrary": ""
"noItems": "Dosud neexistují žádné položky...",
"hint_emptyLibrary": "Vyberte položku na plátně a přidejte ji sem nebo nainstalujte knihovnu z veřejného úložiště níže.",
"hint_emptyPrivateLibrary": "Vyberte položku na plátně a přidejte ji sem."
},
"buttons": {
"clearReset": "",
"exportJSON": "",
"exportImage": "",
"export": "Exportovat",
"clearReset": "Resetovat plátno",
"exportJSON": "Exportovat do souboru",
"exportImage": "Exportovat obrázek...",
"export": "Uložit jako...",
"exportToPng": "Exportovat do PNG",
"exportToSvg": "Exportovat do SVG",
"copyToClipboard": "Kopírovat do schránky",
"copyPngToClipboard": "Kopírovat PNG do schránky",
"scale": "Měřítko",
"save": "",
"save": "Uložit do aktuálního souboru",
"saveAs": "Uložit jako",
"load": "Nahrát",
"load": "Otevřít",
"getShareableLink": "Získat odkaz pro sdílení",
"close": "Zavřít",
"selectLanguage": "Zvolit jazyk",
"scrollBackToContent": "",
"scrollBackToContent": "Přejít zpět na obsah",
"zoomIn": "Přiblížit",
"zoomOut": "Oddálit",
"resetZoom": "Resetovat přiblížení",
@ -157,7 +158,7 @@
"edit": "Upravit",
"undo": "Zpět",
"redo": "Znovu",
"resetLibrary": "",
"resetLibrary": "Obnovit knihovnu",
"createNewRoom": "Vytvořit novou místnost",
"fullScreen": "Celá obrazovka",
"darkMode": "Tmavý režim",
@ -176,17 +177,17 @@
"couldNotCreateShareableLink": "Nepodařilo se vytvořit sdílitelný odkaz.",
"couldNotCreateShareableLinkTooBig": "Nepodařilo se vytvořit sdílený odkaz: scéna je příliš velká",
"couldNotLoadInvalidFile": "Nepodařilo se načíst neplatný soubor",
"importBackendFailed": "",
"cannotExportEmptyCanvas": "",
"couldNotCopyToClipboard": "",
"decryptFailed": "",
"uploadedSecurly": "",
"loadSceneOverridePrompt": "",
"importBackendFailed": "Import z backendu se nezdařil.",
"cannotExportEmptyCanvas": "Nelze exportovat prázdné plátno.",
"couldNotCopyToClipboard": "Nelze zkopírovat do schránky.",
"decryptFailed": "Nelze dešifrovat data.",
"uploadedSecurly": "Nahrávání je zabezpečeno koncovým šifrováním, což znamená, že server Excalidraw ani třetí strany nemohou obsah přečíst.",
"loadSceneOverridePrompt": "Načítání externího výkresu nahradí váš existující obsah. Přejete si pokračovat?",
"collabStopOverridePrompt": "",
"errorAddingToLibrary": "",
"errorRemovingFromLibrary": "",
"confirmAddLibrary": "",
"imageDoesNotContainScene": "",
"errorAddingToLibrary": "Položku nelze přidat do knihovny",
"errorRemovingFromLibrary": "Položku nelze odstranit z knihovny",
"confirmAddLibrary": "Tímto přidáte {{numShapes}} tvarů do tvé knihovny. Jste si jisti?",
"imageDoesNotContainScene": "Zdá se, že tento obrázek neobsahuje žádná data o scéně. Zapnuli jste při exportu vkládání scény?",
"cannotRestoreFromImage": "",
"invalidSceneUrl": "",
"resetLibrary": "",
@ -255,8 +256,8 @@
"clearCanvasMessage": "",
"clearCanvasMessage_button": "",
"clearCanvasCaveat": "",
"trackedToSentry_pre": "",
"trackedToSentry_post": "",
"trackedToSentry_pre": "Chyba identifikátoru ",
"trackedToSentry_post": " byl zaznamenán v našem systému.",
"openIssueMessage_pre": "",
"openIssueMessage_button": "",
"openIssueMessage_post": "",
@ -310,7 +311,9 @@
"view": "Zobrazení",
"zoomToFit": "Přiblížit na zobrazení všech prvků",
"zoomToSelection": "Přiblížit na výběr",
"toggleElementLock": "Zamknout/odemknout výběr"
"toggleElementLock": "Zamknout/odemknout výběr",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Vymazat plátno"
@ -391,7 +394,8 @@
"fileSaved": "Soubor byl uložen.",
"fileSavedToFilename": "Uloženo do {filename}",
"canvas": "plátno",
"selection": "výběr"
"selection": "výběr",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Bílá",
@ -439,5 +443,12 @@
"5c940d": "Limetková 9",
"e67700": "Žlutá 9",
"d9480f": "Oranzova"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Indsæt",
"pasteAsPlaintext": "",
"pasteCharts": "Indsæt diagrammer",
"selectAll": "Marker alle",
"multiSelect": "Tilføj element til markering",
@ -69,12 +70,12 @@
"canvasBackground": "Lærredsbaggrund",
"drawingCanvas": "Tegnelærred",
"layers": "Lag",
"actions": "",
"actions": "Handlinger",
"language": "Sprog",
"liveCollaboration": "Direkte samarbejde",
"liveCollaboration": "",
"duplicateSelection": "",
"untitled": "",
"name": "",
"untitled": "Unavngivet",
"name": "Navn",
"yourName": "Dit navn",
"madeWithExcalidraw": "Fremstillet med Excalidraw",
"group": "",
@ -144,7 +145,7 @@
"scale": "",
"save": "",
"saveAs": "Gem som",
"load": "Indlæs",
"load": "",
"getShareableLink": "Lav et delbart link",
"close": "Luk",
"selectLanguage": "Vælg sprog",
@ -310,7 +311,9 @@
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "Fil gemt.",
"fileSavedToFilename": "Gemt som {filename}",
"canvas": "canvas",
"selection": "markering"
"selection": "markering",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Einfügen",
"pasteAsPlaintext": "Als reinen Text einfügen",
"pasteCharts": "Diagramme einfügen",
"selectAll": "Alle auswählen",
"multiSelect": "Element zur Auswahl hinzufügen",
@ -71,7 +72,7 @@
"layers": "Ebenen",
"actions": "Aktionen",
"language": "Sprache",
"liveCollaboration": "Live-Zusammenarbeit",
"liveCollaboration": "Live-Zusammenarbeit...",
"duplicateSelection": "Duplizieren",
"untitled": "Unbenannt",
"name": "Name",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Zeichenfläche löschen & Hintergrundfarbe zurücksetzen",
"exportJSON": "In Datei exportieren",
"exportImage": "Als Bild speichern",
"export": "Exportieren",
"exportImage": "Exportiere Bild...",
"export": "Speichern als...",
"exportToPng": "Als PNG exportieren",
"exportToSvg": "Als SVG exportieren",
"copyToClipboard": "In Zwischenablage kopieren",
@ -144,7 +145,7 @@
"scale": "Skalierung",
"save": "In aktueller Datei speichern",
"saveAs": "Speichern unter",
"load": "Laden",
"load": "Öffnen",
"getShareableLink": "Teilbaren Link erhalten",
"close": "Schließen",
"selectLanguage": "Sprache auswählen",
@ -214,7 +215,7 @@
"text": "Text",
"library": "Bibliothek",
"lock": "Ausgewähltes Werkzeug nach Zeichnen aktiv lassen",
"penMode": "Verhindere Pinch-Zoom und akzeptiere Eingabe nur vom Stift",
"penMode": "Stift-Modus - Berührung verhindern",
"link": "Link für ausgewählte Form hinzufügen / aktualisieren",
"eraser": "Radierer"
},
@ -235,7 +236,7 @@
"resize": "Du kannst die Proportionen einschränken, indem du SHIFT während der Größenänderung gedrückt hältst. Halte ALT gedrückt, um die Größe vom Zentrum aus zu ändern",
"resizeImage": "Du kannst die Größe frei ändern, indem du SHIFT gedrückt hältst; halte ALT, um die Größe vom Zentrum aus zu ändern",
"rotate": "Du kannst Winkel einschränken, indem du SHIFT während der Drehung gedrückt hältst",
"lineEditor_info": "Doppelklicken oder Eingabetaste drücken, um Punkte zu bearbeiten",
"lineEditor_info": "CtrlOrCmd halten und Doppelklick oder CtrlOrCmd + Eingabe drücken, um Punkte zu bearbeiten",
"lineEditor_pointSelected": "Drücke Löschen, um Punkt(e) zu entfernen, CtrlOrCmd+D zum Duplizieren oder ziehe zum Verschieben",
"lineEditor_nothingSelected": "Wähle einen zu bearbeitenden Punkt (halte SHIFT gedrückt um mehrere Punkte auszuwählen),\noder halte Alt gedrückt und klicke um neue Punkte hinzuzufügen",
"placeImage": "Klicken, um das Bild zu platzieren oder klicken und ziehen um seine Größe manuell zu setzen",
@ -310,7 +311,9 @@
"view": "Ansicht",
"zoomToFit": "Zoomen um alle Elemente einzupassen",
"zoomToSelection": "Auf Auswahl zoomen",
"toggleElementLock": "Auswahl sperren/entsperren"
"toggleElementLock": "Auswahl sperren/entsperren",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Zeichenfläche löschen"
@ -391,7 +394,8 @@
"fileSaved": "Datei gespeichert.",
"fileSavedToFilename": "Als {filename} gespeichert",
"canvas": "Zeichenfläche",
"selection": "Auswahl"
"selection": "Auswahl",
"pasteAsSingleElement": "Verwende {{shortcut}} , um als einzelnes Element\neinzufügen oder in einen existierenden Texteditor einzufügen"
},
"colors": {
"ffffff": "Weiß",
@ -439,5 +443,12 @@
"5c940d": "Hellgrün 9",
"e67700": "Gelb 9",
"d9480f": "Orange 9"
},
"welcomeScreen": {
"data": "Alle Daten werden lokal in Deinem Browser gespeichert.",
"switchToPlusApp": "Möchtest du stattdessen zu Excalidraw+ gehen?",
"menuHints": "Exportieren, Einstellungen, Sprachen, ...",
"toolbarHints": "Wähle ein Werkzeug & beginne zu zeichnen!",
"helpHints": "Kurzbefehle & Hilfe"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Επικόλληση",
"pasteAsPlaintext": "",
"pasteCharts": "Επικόλληση γραφημάτων",
"selectAll": "Επιλογή όλων",
"multiSelect": "Προσθέστε το στοιχείο στην επιλογή",
@ -71,7 +72,7 @@
"layers": "Στρώματα",
"actions": "Ενέργειες",
"language": "Γλώσσα",
"liveCollaboration": "Ζωντανή συνεργασία",
"liveCollaboration": "",
"duplicateSelection": "Δημιουργία αντιγράφου",
"untitled": "Χωρίς τίτλο",
"name": "Όνομα",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Επαναφορά του καμβά",
"exportJSON": "Εξαγωγή σε αρχείο",
"exportImage": "Αποθήκευση ως εικόνα",
"export": "Εξαγωγή",
"exportImage": "",
"export": "",
"exportToPng": "Εξαγωγή σε PNG",
"exportToSvg": "Εξαγωγή σε SVG",
"copyToClipboard": "Αντιγραφή στο πρόχειρο",
@ -144,7 +145,7 @@
"scale": "Κλίμακα",
"save": "Αποθήκευση στο τρέχον αρχείο",
"saveAs": "Αποθήκευση ως",
"load": "Άνοιγμα",
"load": "",
"getShareableLink": "Δημόσιος σύνδεσμος",
"close": "Κλείσιμο",
"selectLanguage": "Επιλογή γλώσσας",
@ -235,7 +236,7 @@
"resize": "Μπορείς να περιορίσεις τις αναλογίες κρατώντας το SHIFT ενώ αλλάζεις μέγεθος,\nκράτησε πατημένο το ALT για αλλαγή μεγέθους από το κέντρο",
"resizeImage": "Μπορείτε να αλλάξετε το μέγεθος ελεύθερα κρατώντας πατημένο το SHIFT,\nκρατήστε πατημένο το ALT για να αλλάξετε το μέγεθος από το κέντρο",
"rotate": "Μπορείς να περιορίσεις τις γωνίες κρατώντας πατημένο το πλήκτρο SHIFT κατά την περιστροφή",
"lineEditor_info": "Διπλό-κλικ ή πιέστε Enter για να επεξεργαστείτε τα σημεία",
"lineEditor_info": "",
"lineEditor_pointSelected": "Πατήστε Διαγραφή για αφαίρεση σημείου(ων),\nCtrlOrCmd+D για αντιγραφή, ή σύρετε για μετακίνηση",
"lineEditor_nothingSelected": "Επιλέξτε ένα σημείο για να επεξεργαστείτε (κρατήστε πατημένο το SHIFT για να επιλέξετε πολλαπλά),\nή κρατήστε πατημένο το Alt και κάντε κλικ για να προσθέσετε νέα σημεία",
"placeImage": "Κάντε κλικ για να τοποθετήσετε την εικόνα ή κάντε κλικ και σύρετε για να ορίσετε το μέγεθός της χειροκίνητα",
@ -310,7 +311,9 @@
"view": "Προβολή",
"zoomToFit": "Zoom ώστε να χωρέσουν όλα τα στοιχεία",
"zoomToSelection": "Ζουμ στην επιλογή",
"toggleElementLock": "Κλείδωμα/Ξεκλείδωμα επιλογής"
"toggleElementLock": "Κλείδωμα/Ξεκλείδωμα επιλογής",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Καθαρισμός καμβά"
@ -391,7 +394,8 @@
"fileSaved": "Το αρχείο αποθηκεύτηκε.",
"fileSavedToFilename": "Αποθηκεύτηκε στο {filename}",
"canvas": "καμβάς",
"selection": "επιλογή"
"selection": "επιλογή",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Λευκό",
@ -439,5 +443,12 @@
"5c940d": "Πρασινοκίτρινο 9",
"e67700": "Κίτρινο 9",
"d9480f": "Πορτοκαλί 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -204,7 +204,9 @@
"cannotResolveCollabServer": "Couldn't connect to the collab server. Please reload the page and try again.",
"importLibraryError": "Couldn't load library",
"socketDisconnected": "You've been disconnected from the server",
"socketConnectionError": "Couldn't connect to the server"
"socketConnectionError": "Couldn't connect to the server",
"collabSaveFailed": "Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.",
"collabSaveFailed_sizeExceeded": "Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work."
},
"toolBar": {
"selection": "Selection",
@ -314,7 +316,9 @@
"view": "View",
"zoomToFit": "Zoom to fit all elements",
"zoomToSelection": "Zoom to selection",
"toggleElementLock": "Lock/unlock selection"
"toggleElementLock": "Lock/unlock selection",
"movePageUpDown": "Move page up/down",
"movePageLeftRight": "Move page left/right"
},
"clearCanvasDialog": {
"title": "Clear canvas"

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Pegar",
"pasteAsPlaintext": "Pegar como texto sin formato",
"pasteCharts": "Pegar gráficos",
"selectAll": "Seleccionar todo",
"multiSelect": "Añadir elemento a la selección",
@ -71,7 +72,7 @@
"layers": "Capas",
"actions": "Acciones",
"language": "Idioma",
"liveCollaboration": "Colaboración en directo",
"liveCollaboration": "Colaboración en directo...",
"duplicateSelection": "Duplicar",
"untitled": "Sin título",
"name": "Nombre",
@ -115,8 +116,8 @@
"label": "Enlace"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Editar línea",
"exit": "Salir del editor en línea"
},
"elementLock": {
"lock": "Bloquear",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Limpiar lienzo y reiniciar el color de fondo",
"exportJSON": "Exportar a archivo",
"exportImage": "Guardar como imagen",
"export": "Exportar",
"exportImage": "Exportar imagen...",
"export": "Guardar en...",
"exportToPng": "Exportar a PNG",
"exportToSvg": "Exportar a SVG",
"copyToClipboard": "Copiar al portapapeles",
@ -144,7 +145,7 @@
"scale": "Escalar",
"save": "Guardar en archivo actual",
"saveAs": "Guardar como",
"load": "Cargar",
"load": "Abrir",
"getShareableLink": "Obtener enlace para compartir",
"close": "Cerrar",
"selectLanguage": "Elegir idioma",
@ -214,7 +215,7 @@
"text": "Texto",
"library": "Biblioteca",
"lock": "Mantener la herramienta seleccionada activa después de dibujar",
"penMode": "Evitar el zoom de pellizco y aceptar la entrada libre sólo desde el lápiz",
"penMode": "Modo Lápiz - previene toque",
"link": "Añadir/Actualizar enlace para una forma seleccionada",
"eraser": "Borrar"
},
@ -235,10 +236,10 @@
"resize": "Para mantener las proporciones mantén SHIFT presionado mientras modificas el tamaño, \nmantén presionado ALT para modificar el tamaño desde el centro",
"resizeImage": "Puede redimensionar libremente pulsando SHIFT,\npulse ALT para redimensionar desde el centro",
"rotate": "Puedes restringir los ángulos manteniendo presionado SHIFT mientras giras",
"lineEditor_info": "Doble clic o pulse Enter para editar puntos",
"lineEditor_info": "Mantenga pulsado CtrlOrCmd y haga doble click o presione CtrlOrCmd + Enter para editar puntos",
"lineEditor_pointSelected": "Presione Suprimir para eliminar el/los punto(s), CtrlOrCmd+D para duplicarlo, o arrástrelo para moverlo",
"lineEditor_nothingSelected": "Seleccione un punto a editar (mantenga MAYÚSCULAS para seleccionar múltiples),\no mantenga pulsado Alt y haga clic para añadir nuevos puntos",
"placeImage": "Haga clic para colocar la imagen o haga clic y arrastre para establecer su tamaño manualmente",
"lineEditor_nothingSelected": "Seleccione un punto a editar (mantenga MAYÚSCULAS para seleccionar múltiples),\no mantenga pulsado Alt y haga click para añadir nuevos puntos",
"placeImage": "Haga clic para colocar la imagen o haga click y arrastre para establecer su tamaño manualmente",
"publishLibrary": "Publica tu propia biblioteca",
"bindTextToElement": "Presione Entrar para agregar",
"deepBoxSelect": "Mantén CtrlOrCmd para seleccionar en profundidad, y para evitar arrastrar",
@ -288,7 +289,7 @@
},
"helpDialog": {
"blog": "Lea nuestro blog",
"click": "clic",
"click": "click",
"deepSelect": "Selección profunda",
"deepBoxSelect": "Seleccione en profundidad dentro de la caja, y evite arrastrar",
"curvedArrow": "Flecha curva",
@ -301,7 +302,7 @@
"github": "¿Ha encontrado un problema? Envíelo",
"howto": "Siga nuestras guías",
"or": "o",
"preventBinding": "Evitar yuxtaposición de flechas",
"preventBinding": "Evitar enlace de flechas",
"tools": "Herramientas",
"shortcuts": "Atajos del teclado",
"textFinish": "Finalizar edición (editor de texto)",
@ -310,7 +311,9 @@
"view": "Vista",
"zoomToFit": "Ajustar la vista para mostrar todos los elementos",
"zoomToSelection": "Zoom a la selección",
"toggleElementLock": "Bloquear/desbloquear selección"
"toggleElementLock": "Bloquear/desbloquear selección",
"movePageUpDown": "Mover página hacia arriba/abajo",
"movePageLeftRight": "Mover página hacia la izquierda/derecha"
},
"clearCanvasDialog": {
"title": "Borrar lienzo"
@ -328,7 +331,7 @@
"authorName": "Nombre o nombre de usuario",
"libraryName": "Nombre de tu biblioteca",
"libraryDesc": "Descripción de su biblioteca para ayudar a la gente a entender su uso",
"githubHandle": "GitHub maneja (opcional), así que puede editar la biblioteca una vez enviada para su revisión",
"githubHandle": "Nombre de usuario de GitHub (opcional), así podrá editar la biblioteca una vez enviada para su revisión",
"twitterHandle": "Nombre de usuario de Twitter (opcional), así que sabemos a quién acreditar cuando se promociona en Twitter",
"website": "Enlace a su sitio web personal o en cualquier otro lugar (opcional)"
},
@ -379,7 +382,7 @@
"title": "Estadísticas para nerds",
"total": "Total",
"version": "Versión",
"versionCopy": "Clic para copiar",
"versionCopy": "Click para copiar",
"versionNotAvailable": "Versión no disponible",
"width": "Ancho"
},
@ -391,7 +394,8 @@
"fileSaved": "Archivo guardado.",
"fileSavedToFilename": "Guardado en {filename}",
"canvas": "lienzo",
"selection": "selección"
"selection": "selección",
"pasteAsSingleElement": "Usa {{shortcut}} para pegar como un solo elemento,\no pegar en un editor de texto existente"
},
"colors": {
"ffffff": "Blanco",
@ -439,5 +443,12 @@
"5c940d": "Lima 9",
"e67700": "Amarillo 9",
"d9480f": "Naranja 9"
},
"welcomeScreen": {
"data": "Toda su información es guardada localmente en su navegador.",
"switchToPlusApp": "¿Quieres ir a Excalidraw+ en su lugar?",
"menuHints": "Exportar, preferencias, idiomas, ...",
"toolbarHints": "¡Escoge una herramienta & Empiece a dibujar!",
"helpHints": "Atajos & ayuda"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Itsatsi",
"pasteAsPlaintext": "",
"pasteCharts": "Itsatsi grafikoak",
"selectAll": "Hautatu dena",
"multiSelect": "Gehitu elementua hautapenera",
@ -71,7 +72,7 @@
"layers": "Geruzak",
"actions": "Ekintzak",
"language": "Hizkuntza",
"liveCollaboration": "Zuzeneko elkarlana",
"liveCollaboration": "Zuzeneko elkarlana...",
"duplicateSelection": "Bikoiztu",
"untitled": "Izengabea",
"name": "Izena",
@ -115,8 +116,8 @@
"label": "Esteka"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Editatu lerroa",
"exit": "Irten lerro-editoretik"
},
"elementLock": {
"lock": "Blokeatu",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Garbitu oihala",
"exportJSON": "Esportatu fitxategira",
"exportImage": "Gorde irudi gisa",
"export": "Esportatu",
"exportImage": "Esportatu irudia...",
"export": "Gorde hemen...",
"exportToPng": "Esportatu PNG gisa",
"exportToSvg": "Esportatu SVG gisa",
"copyToClipboard": "Kopiatu arbelera",
@ -144,7 +145,7 @@
"scale": "Eskala",
"save": "Gorde uneko fitxategian",
"saveAs": "Gorde honela",
"load": "Kargatu",
"load": "Ireki",
"getShareableLink": "Lortu partekatzeko esteka",
"close": "Itxi",
"selectLanguage": "Hautatu hizkuntza",
@ -214,7 +215,7 @@
"text": "Testua",
"library": "Liburutegia",
"lock": "Mantendu aktibo hautatutako tresna marraztu ondoren",
"penMode": "Saihestu txikiagotzea eta onartu marrazte libreko idazketa solik arkatza bidez",
"penMode": "Luma modua - ukipena saihestu",
"link": "Gehitu / Eguneratu esteka hautatutako forma baterako",
"eraser": "Borragoma"
},
@ -235,7 +236,7 @@
"resize": "Proportzioak mantendu ditzakezu SHIFT sakatuta tamaina aldatzen duzun bitartean.\nsakatu ALT erditik tamaina aldatzeko",
"resizeImage": "Tamaina libreki alda dezakezu SHIFT sakatuta,\nsakatu ALT erditik tamaina aldatzeko",
"rotate": "Angeluak mantendu ditzakezu SHIFT sakatuta biratzen duzun bitartean",
"lineEditor_info": "Egin klik bikoitza edo sakatu Sartu puntuak editatzeko",
"lineEditor_info": "",
"lineEditor_pointSelected": "Sakatu Ezabatu puntuak kentzeko,\nKtrl+D bikoizteko, edo arrastatu mugitzeko",
"lineEditor_nothingSelected": "Hautatu editatzeko puntu bat (SHIFT sakatuta anitz hautatzeko),\nedo eduki Alt sakatuta eta egin klik puntu berriak gehitzeko",
"placeImage": "Egin klik irudia kokatzeko, edo egin klik eta arrastatu bere tamaina eskuz ezartzeko",
@ -310,7 +311,9 @@
"view": "Bistaratu",
"zoomToFit": "Egin zoom elementu guztiak ikusteko",
"zoomToSelection": "Zooma hautapenera",
"toggleElementLock": "Blokeatu/desbloketatu hautapena"
"toggleElementLock": "Blokeatu/desbloketatu hautapena",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Garbitu oihala"
@ -391,7 +394,8 @@
"fileSaved": "Fitxategia gorde da.",
"fileSavedToFilename": "{filename}-n gorde da",
"canvas": "oihala",
"selection": "hautapena"
"selection": "hautapena",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Zuria",
@ -439,5 +443,12 @@
"5c940d": "Lima 9",
"e67700": "Horia 9",
"d9480f": "Laranja 9"
},
"welcomeScreen": {
"data": "Zure datu guztiak modu lokalean gordetzen dira zure nabigatzailean.",
"switchToPlusApp": "Horren ordez Excalidraw+-ra joan nahi al zenuen?",
"menuHints": "Esportatu, hobespenak, hizkuntzak,...",
"toolbarHints": "Aukeratu tresna bat eta hasi marrazten!",
"helpHints": "Lasterbideak eta laguntza"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "جای گذاری",
"pasteAsPlaintext": "",
"pasteCharts": "قراردادن نمودارها",
"selectAll": "انتخاب همه",
"multiSelect": "یک ایتم به انتخاب شده ها اضافه کنید.",
@ -71,7 +72,7 @@
"layers": "لایه ها",
"actions": "عملیات",
"language": "زبان",
"liveCollaboration": "همکاری زنده",
"liveCollaboration": "همکاری آنلاین...",
"duplicateSelection": "تکرار",
"untitled": "بدون عنوان",
"name": "نام",
@ -115,8 +116,8 @@
"label": "لینک"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "ویرایش لینک",
"exit": "خروج از ویرایشگر"
},
"elementLock": {
"lock": "قفل",
@ -125,18 +126,18 @@
"unlockAll": "باز کردن قفل همه"
},
"statusPublished": "منتشر شده",
"sidebarLock": ""
"sidebarLock": "باز نگه داشتن سایدبار"
},
"library": {
"noItems": "",
"hint_emptyLibrary": "",
"hint_emptyPrivateLibrary": ""
"noItems": "آیتمی به اینجا اضافه نشده...",
"hint_emptyLibrary": "یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.",
"hint_emptyPrivateLibrary": "یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید."
},
"buttons": {
"clearReset": "پاکسازی بوم نقاشی",
"exportJSON": "خروجی در فایل",
"exportImage": "ذخیره به عنوان عکس",
"export": "تبدیل",
"exportImage": "خروجی گرفتن از تصویر...",
"export": "ذخیره در...",
"exportToPng": "تبدیل به PNG",
"exportToSvg": "تبدیل به SVG",
"copyToClipboard": "کپی در حافظه موقت",
@ -144,7 +145,7 @@
"scale": "مقیاس",
"save": "ذخیره در همین فایل",
"saveAs": "ذخیره با نام",
"load": "بارگذاری",
"load": "باز کردن",
"getShareableLink": "دریافت لینک قابل اشتراک",
"close": "بستن",
"selectLanguage": "انتخاب زبان",
@ -214,7 +215,7 @@
"text": "متن",
"library": "کتابخانه",
"lock": "ابزار انتخاب شده را بعد از کشیدن نگه دار",
"penMode": "از زوم کوچک کردن جلوگیری کنید و ورودی آزاد را فقط از قلم بپذیرید",
"penMode": "حالت قلم - جلوگیری از تماس",
"link": "افزودن/به‌روزرسانی پیوند برای شکل انتخابی",
"eraser": "پاک کن"
},
@ -235,7 +236,7 @@
"resize": "می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید",
"resizeImage": "با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،\nبرای تغییر اندازه از مرکز، ALT را نگه دارید",
"rotate": "با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید",
"lineEditor_info": "دوبار کلیک کنید یا Enter را فشار دهید تا نقاط را ویرایش کنید",
"lineEditor_info": "",
"lineEditor_pointSelected": "برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید",
"lineEditor_nothingSelected": "یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،\nیا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید",
"placeImage": "برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود",
@ -310,7 +311,9 @@
"view": "مشاهده",
"zoomToFit": "بزرگنمایی برای دیدن تمام آیتم ها",
"zoomToSelection": "بزرگنمایی قسمت انتخاب شده",
"toggleElementLock": "قفل/بازکردن انتخاب شده ها"
"toggleElementLock": "قفل/بازکردن انتخاب شده ها",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "پاک کردن بوم"
@ -391,7 +394,8 @@
"fileSaved": "فایل ذخیره شد.",
"fileSavedToFilename": "ذخیره در {filename}",
"canvas": "بوم",
"selection": "انتخاب"
"selection": "انتخاب",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "سفید",
@ -439,5 +443,12 @@
"5c940d": "لیمویی 9",
"e67700": "زرد 9",
"d9480f": "نارنجی 9"
},
"welcomeScreen": {
"data": "همه ی داده های شما به صورت محلی در مرورگر ذخیره میشود.",
"switchToPlusApp": "آیا ترجیح میدهید به Excalidraw+ بروید؟",
"menuHints": "خروجی گرفتن، تنظیمات، زبانها، ...",
"toolbarHints": "یک ابزار را انتخاب کنید و ترسیم را شروع کنید!",
"helpHints": "میانبرها و کمک"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Liitä",
"pasteAsPlaintext": "",
"pasteCharts": "Liitä kaaviot",
"selectAll": "Valitse kaikki",
"multiSelect": "Lisää kohde valintaan",
@ -71,7 +72,7 @@
"layers": "Tasot",
"actions": "Toiminnot",
"language": "Kieli",
"liveCollaboration": "Live-yhteistyö",
"liveCollaboration": "",
"duplicateSelection": "Monista",
"untitled": "Nimetön",
"name": "Nimi",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Tyhjennä piirtoalue",
"exportJSON": "Vie tiedostoon",
"exportImage": "Tallenna kuvana",
"export": "Vie",
"exportImage": "",
"export": "",
"exportToPng": "Vie PNG-tiedostona",
"exportToSvg": "Vie SVG-tiedostona",
"copyToClipboard": "Kopioi leikepöydälle",
@ -144,7 +145,7 @@
"scale": "Koko",
"save": "Tallenna nykyiseen tiedostoon",
"saveAs": "Tallenna nimellä",
"load": "Avaa",
"load": "",
"getShareableLink": "Hae jaettava linkki",
"close": "Sulje",
"selectLanguage": "Valitse kieli",
@ -214,7 +215,7 @@
"text": "Teksti",
"library": "Kirjasto",
"lock": "Pidä valittu työkalu aktiivisena piirron jälkeen",
"penMode": "Estä nipistyszoomaus ja vastaanota ainoastaan kynällä piirretty",
"penMode": "",
"link": "Lisää/päivitä linkki valitulle muodolle",
"eraser": "Poistotyökalu"
},
@ -235,7 +236,7 @@
"resize": "Voit rajoittaa mittasuhteet pitämällä SHIFT-näppäintä alaspainettuna kun muutat kokoa, pidä ALT-näppäintä alaspainettuna muuttaaksesi kokoa keskipisteen suhteen",
"resizeImage": "Voit muuttaa kokoa vapaasti pitämällä SHIFTiä pohjassa, pidä ALT pohjassa muuttaaksesi kokoa keskipisteen ympäri",
"rotate": "Voit rajoittaa kulman pitämällä SHIFT pohjassa pyörittäessäsi",
"lineEditor_info": "Kaksoisnapauta tai paina Enter muokataksesi pisteitä",
"lineEditor_info": "",
"lineEditor_pointSelected": "Poista piste(et) painamalla delete, monista painamalla CtrlOrCmd+D, tai liikuta raahaamalla",
"lineEditor_nothingSelected": "Valitse muokattava piste (monivalinta pitämällä SHIFT pohjassa), tai paina Alt ja klikkaa lisätäksesi uusia pisteitä",
"placeImage": "Klikkaa asettaaksesi kuvan, tai klikkaa ja raahaa asettaaksesi sen koon manuaalisesti",
@ -310,7 +311,9 @@
"view": "Näkymä",
"zoomToFit": "Näytä kaikki elementit",
"zoomToSelection": "Näytä valinta",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Pyyhi piirtoalue"
@ -391,7 +394,8 @@
"fileSaved": "Tiedosto tallennettu.",
"fileSavedToFilename": "Tallennettiin kohteeseen {filename}",
"canvas": "piirtoalue",
"selection": "valinta"
"selection": "valinta",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Valkoinen",
@ -439,5 +443,12 @@
"5c940d": "Limenvihreä 9",
"e67700": "Keltainen 9",
"d9480f": "Oranssi 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Coller",
"pasteAsPlaintext": "",
"pasteCharts": "Coller les graphiques",
"selectAll": "Tout sélectionner",
"multiSelect": "Ajouter l'élément à la sélection",
@ -44,7 +45,7 @@
"exportEmbedScene": "Intégrer la scène",
"exportEmbedScene_details": "Les données de scène seront enregistrées dans le fichier PNG/SVG exporté, afin que la scène puisse être restaurée à partir de celui-ci.\nCela augmentera la taille du fichier exporté.",
"addWatermark": "Ajouter \"Réalisé avec Excalidraw\"",
"handDrawn": "À la main",
"handDrawn": "Manuscrit",
"normal": "Normale",
"code": "Code",
"small": "Petite",
@ -71,7 +72,7 @@
"layers": "Disposition",
"actions": "Actions",
"language": "Langue",
"liveCollaboration": "Collaboration en direct",
"liveCollaboration": "Collaboration en direct...",
"duplicateSelection": "Dupliquer",
"untitled": "Sans-titre",
"name": "Nom",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Réinitialiser le canevas",
"exportJSON": "Exporter comme fichier",
"exportImage": "Enregistrer comme image",
"export": "Exporter",
"exportImage": "Exporter l'image...",
"export": "Enregistrer sous...",
"exportToPng": "Enregistrer en PNG",
"exportToSvg": "Enregistrer en SVG",
"copyToClipboard": "Copier dans le presse-papier",
@ -214,7 +215,7 @@
"text": "Texte",
"library": "Bibliothèque",
"lock": "Garder l'outil sélectionné actif après le dessin",
"penMode": "Empêcher le zoom tactile et accepter la saisie libre uniquement à partir du stylet",
"penMode": "Mode stylo - évite le toucher",
"link": "Ajouter/mettre à jour le lien pour une forme sélectionnée",
"eraser": "Gomme"
},
@ -235,7 +236,7 @@
"resize": "Vous pouvez conserver les proportions en maintenant la touche MAJ pendant le redimensionnement, maintenez la touche ALT pour redimensionner par rapport au centre",
"resizeImage": "Vous pouvez redimensionner librement en maintenant SHIFT,\nmaintenez ALT pour redimensionner depuis le centre",
"rotate": "Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation",
"lineEditor_info": "Double-cliquez ou appuyez sur Entrée pour éditer les points",
"lineEditor_info": "",
"lineEditor_pointSelected": "Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer",
"lineEditor_nothingSelected": "Sélectionner un point pour éditer (maintenir la touche MAJ pour en sélectionner plusieurs),\nou maintenir la touche Alt enfoncée et cliquer pour ajouter de nouveaux points",
"placeImage": "Cliquez pour placer l'image, ou cliquez et faites glisser pour définir sa taille manuellement",
@ -310,7 +311,9 @@
"view": "Affichage",
"zoomToFit": "Zoomer pour voir tous les éléments",
"zoomToSelection": "Zoomer sur la sélection",
"toggleElementLock": "Verrouiller/déverrouiller la sélection"
"toggleElementLock": "Verrouiller/déverrouiller la sélection",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Effacer la zone de dessin"
@ -391,7 +394,8 @@
"fileSaved": "Fichier enregistré.",
"fileSavedToFilename": "Enregistré sous {filename}",
"canvas": "canevas",
"selection": "sélection"
"selection": "sélection",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Blanc",
@ -439,5 +443,12 @@
"5c940d": "Citron vert 9",
"e67700": "Jaune 9",
"d9480f": "Orange 9"
},
"welcomeScreen": {
"data": "Toutes vos données sont sauvegardées en local dans votre navigateur.",
"switchToPlusApp": "Vous vouliez plutôt aller à Excalidraw+ ?",
"menuHints": "Exportation, préférences, langues, ...",
"toolbarHints": "Choisissez un outil et commencez à dessiner !",
"helpHints": "Raccourcis et aide"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Paste",
"paste": "Pegar",
"pasteAsPlaintext": "",
"pasteCharts": "Pegar gráficos",
"selectAll": "Seleccionar todo",
"multiSelect": "Engadir elemento á selección",
@ -42,9 +43,9 @@
"onlySelected": "Só seleccionados",
"withBackground": "Fondo",
"exportEmbedScene": "Inserir escena",
"exportEmbedScene_details": "",
"exportEmbedScene_details": "Os datos da escena serán gardados no ficheiro PNG/SVG exportado polo que a escena poderá ser restaurada dende el. Isto aumentará o tamaño do ficheiro exportado.",
"addWatermark": "Engadir \"Feito con Excalidraw\"",
"handDrawn": "Debuzado á man",
"handDrawn": "Debuxado a man",
"normal": "Normal",
"code": "Código",
"small": "Pequeno",
@ -71,7 +72,7 @@
"layers": "Capas",
"actions": "Accións",
"language": "Idioma",
"liveCollaboration": "Colaboración en directo",
"liveCollaboration": "Colaboración en directo...",
"duplicateSelection": "Duplicar",
"untitled": "Sen título",
"name": "Nome",
@ -95,8 +96,8 @@
"centerHorizontally": "Centrar horizontalmente",
"distributeHorizontally": "Distribuír horizontalmente",
"distributeVertically": "Distribuír verticalmente",
"flipHorizontal": "",
"flipVertical": "",
"flipHorizontal": "Virar horizontalmente",
"flipVertical": "Virar verticalmente",
"viewMode": "Modo de visualización",
"toggleExportColorScheme": "Alternar esquema de cores de exportación",
"share": "Compartir",
@ -115,8 +116,8 @@
"label": "Ligazón"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Editar liña",
"exit": "Saír do editor de liñas"
},
"elementLock": {
"lock": "Bloquear",
@ -129,14 +130,14 @@
},
"library": {
"noItems": "Aínda non hai elementos engadidos...",
"hint_emptyLibrary": "",
"hint_emptyPrivateLibrary": ""
"hint_emptyLibrary": "Seleccione un elemento no lenzo para engadilo aquí, ou instale unha biblioteca dende o repositorio público, como se detalla a continuación.",
"hint_emptyPrivateLibrary": "Seleccione un elemento do lenzo para engadilo aquí."
},
"buttons": {
"clearReset": "Limpar o lenzo",
"exportJSON": "Exportar a arquivo",
"exportImage": "Gardar como imaxe",
"export": "Exportar",
"exportImage": "Exportar imaxe...",
"export": "Gardar en...",
"exportToPng": "Exportar a PNG",
"exportToSvg": "Exportar a SVG",
"copyToClipboard": "Copiar ao portapapeis",
@ -144,7 +145,7 @@
"scale": "Escala",
"save": "Gardar no ficheiro actual",
"saveAs": "Gardar como",
"load": "Cargar",
"load": "Abrir",
"getShareableLink": "Obter unha ligazón que se poida compartir",
"close": "Pechar",
"selectLanguage": "Seleccionar idioma",
@ -176,35 +177,35 @@
"couldNotCreateShareableLink": "Non se puido crear unha ligazón para compartir.",
"couldNotCreateShareableLinkTooBig": "Non se puido crear a ligazón para compartir: a escena é demasiado grande",
"couldNotLoadInvalidFile": "Non se puido cargar o ficheiro non válido",
"importBackendFailed": "",
"cannotExportEmptyCanvas": "",
"couldNotCopyToClipboard": "",
"importBackendFailed": "A importación dende o backend fallou.",
"cannotExportEmptyCanvas": "Non se pode exportar un lenzo baleiro.",
"couldNotCopyToClipboard": "Non se puido copiar ao portapapeis.",
"decryptFailed": "Non se poideron descifrar os datos.",
"uploadedSecurly": "A carga foi asegurada con cifrado de extremo a extremo, o que significa que o servidor de Excalidraw e terceiros non poder ler o contenido.",
"loadSceneOverridePrompt": "Si carga este debuxo externo, reemprazará o que ten. ¿Desexa continuar?",
"collabStopOverridePrompt": "",
"errorAddingToLibrary": "",
"errorRemovingFromLibrary": "",
"confirmAddLibrary": "",
"imageDoesNotContainScene": "",
"cannotRestoreFromImage": "",
"invalidSceneUrl": "",
"resetLibrary": "",
"removeItemsFromsLibrary": "",
"invalidEncryptionKey": ""
"uploadedSecurly": "A carga foi asegurada con cifrado de extremo a extremo, o que significa que o servidor de Excalidraw e terceiros non poden ler o contido.",
"loadSceneOverridePrompt": "A carga dun debuxo externo substituirá o contido existente. Desexa continuar?",
"collabStopOverridePrompt": "Deter a sesión, sobrescribirá o seu debuxo local previamente almacenado. Está seguro?\n\n(Se quere manter o seu debuxo local, simplemente peche a lapela do navegador.)",
"errorAddingToLibrary": "Non se puido engadir o elemento á biblioteca",
"errorRemovingFromLibrary": "Non se puido eliminar o elemento da biblioteca",
"confirmAddLibrary": "Isto engadirá {{numShapes}} forma(s) a túa biblioteca. Estás seguro?",
"imageDoesNotContainScene": "Esta imaxe non parece conter ningún dato da escena. Activou a inserción de escenas durante a exportación?",
"cannotRestoreFromImage": "Non se puido restaurar a escena dende este arquivo de imaxe",
"invalidSceneUrl": "Non se puido importar a escena dende a URL proporcionada. Ou ben está malformada ou non contén un JSON con información válida para Excalidraw.",
"resetLibrary": "Isto limpará a súa biblioteca. Está seguro?",
"removeItemsFromsLibrary": "Eliminar {{count}} elemento(s) da biblioteca?",
"invalidEncryptionKey": "A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada."
},
"errors": {
"unsupportedFileType": "",
"imageInsertError": "",
"fileTooBig": "",
"svgImageInsertError": "",
"invalidSVGString": "",
"cannotResolveCollabServer": "",
"importLibraryError": ""
"unsupportedFileType": "Tipo de ficheiro non soportado.",
"imageInsertError": "Non se puido inserir a imaxe. Probe de novo máis tarde...",
"fileTooBig": "O ficheiro é demasiado grande. O tamaño máximo permitido é {{maxSize}}.",
"svgImageInsertError": "Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.",
"invalidSVGString": "SVG inválido.",
"cannotResolveCollabServer": "Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.",
"importLibraryError": "Non se puido cargar a biblioteca"
},
"toolBar": {
"selection": "Selección",
"image": "",
"image": "Inserir imaxe",
"rectangle": "Rectángulo",
"diamond": "Diamante",
"ellipse": "Elipse",
@ -214,230 +215,240 @@
"text": "Texto",
"library": "Biblioteca",
"lock": "Manter a ferramenta seleccionada activa despois de debuxar",
"penMode": "",
"link": "",
"eraser": ""
"penMode": "Modo lapis - evitar o contacto",
"link": "Engadir/ Actualizar ligazón para a forma seleccionada",
"eraser": "Goma de borrar"
},
"headings": {
"canvasActions": "Accións do lenzo",
"selectedShapeActions": "",
"shapes": ""
"selectedShapeActions": "Accións da forma seleccionada",
"shapes": "Formas"
},
"hints": {
"canvasPanning": "",
"linearElement": "",
"freeDraw": "",
"text": "",
"text_selected": "",
"text_editing": "",
"linearElementMulti": "",
"lockAngle": "",
"resize": "",
"resizeImage": "",
"rotate": "",
"canvasPanning": "Para mover o lenzo, manteña a roda do rato ou a barra de espazo mentres arrastra",
"linearElement": "Faga clic para iniciar varios puntos, arrastre para unha sola liña",
"freeDraw": "Fai clic e arrastra, solta cando acabes",
"text": "Consello: tamén podes engadir texto facendo dobre-clic en calquera lugar coa ferramenta de selección",
"text_selected": "Dobre-clic ou prema ENTER para editar o texto",
"text_editing": "Prema Escape ou CtrlOrCmd+ENTER para finalizar a edición",
"linearElementMulti": "Faga clic no último punto ou prema Escape ou Enter para rematar",
"lockAngle": "Pode reducir o ángulo mantendo SHIFT",
"resize": "Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,\nmanteña ALT para axustalo dende o centro",
"resizeImage": "Pode axustar o tamaño libremente mantendo SHIFT,\nmanteña ALT para axustalo dende o centro",
"rotate": "Podes reducir os ángulos mantendo SHIFT mentres os rotas",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
"publishLibrary": "",
"bindTextToElement": "",
"deepBoxSelect": "",
"eraserRevert": ""
"lineEditor_pointSelected": "Prema Suprimir para eliminar o(s) punto(s)\nCtrlOrCmd+D para duplicalos, ou arrastre para movelos",
"lineEditor_nothingSelected": "Seleccione un punto para editar (manteña pulsado SHIFT para selección múltiple),\nou manteña pulsado Alt e faga clic para engadir novos puntos",
"placeImage": "Faga clic para colocar a imaxe, ou faga clic e arrastre para establecer o seu tamaño manualmente",
"publishLibrary": "Publica a túa propia biblioteca",
"bindTextToElement": "Prema a tecla enter para engadir texto",
"deepBoxSelect": "Manteña pulsado CtrlOrCmd para seleccionar en profundidade e evitar o arrastre",
"eraserRevert": "Manteña pulsado Alt para reverter os elementos marcados para a súa eliminación"
},
"canvasError": {
"cannotShowPreview": "",
"canvasTooBig": "",
"canvasTooBigTip": ""
"cannotShowPreview": "Non se pode mostrar a vista previa",
"canvasTooBig": "Pode que o lenzo sexa demasiado grande.",
"canvasTooBigTip": "Consello: Probe a acercar un pouco os elementos máis afastados."
},
"errorSplash": {
"headingMain_pre": "",
"headingMain_button": "",
"clearCanvasMessage": "",
"clearCanvasMessage_button": "",
"clearCanvasCaveat": "",
"trackedToSentry_pre": "",
"trackedToSentry_post": "",
"openIssueMessage_pre": "",
"openIssueMessage_button": "",
"openIssueMessage_post": "",
"sceneContent": ""
"headingMain_pre": "Atopouse un erro. Probe ",
"headingMain_button": "recargando a páxina.",
"clearCanvasMessage": "Se recargar non funcionou, probe ",
"clearCanvasMessage_button": "limpando o lenzo.",
"clearCanvasCaveat": " Isto resultará nunha perda do seu traballo ",
"trackedToSentry_pre": "O erro con identificador ",
"trackedToSentry_post": " foi rastrexado no noso sistema.",
"openIssueMessage_pre": "Fomos moi cautelosos de non incluír a información da súa escena no erro. Se a súa escena non é privada, por favor, considere o seguimento do noso ",
"openIssueMessage_button": "rastrexador de erros.",
"openIssueMessage_post": " Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.",
"sceneContent": "Contido da escena:"
},
"roomDialog": {
"desc_intro": "",
"desc_privacy": "",
"button_startSession": "",
"button_stopSession": "",
"desc_inProgressIntro": "",
"desc_shareLink": "",
"desc_exitSession": "",
"shareTitle": ""
"desc_intro": "Podes invitar xente a colaborar contigo na túa escena actual.",
"desc_privacy": "Non te preocupes, a sesión usa cifrado de punto a punto, polo que calquera cousa que debuxes mantense privada. Nin tan sequera o noso servidor será capaz de ver o que fas.",
"button_startSession": "Comezar sesión",
"button_stopSession": "Rematar sesión",
"desc_inProgressIntro": "A sesión de colaboración en directo está agora en progreso.",
"desc_shareLink": "Comparte esta ligazón con calquera que queiras colaborar:",
"desc_exitSession": "Deter a sesión desconectarao da sala, pero poderá seguir traballando coa escena de maneira local. Teña en conta que isto non afectará a outras persoas, que poderán seguir colaborando na súa versión.",
"shareTitle": "Únase a unha sesión de colaboración en directo en Excalidraw"
},
"errorDialog": {
"title": "Erro"
},
"exportDialog": {
"disk_title": "",
"disk_details": "",
"disk_button": "",
"link_title": "",
"link_details": "",
"link_button": "",
"excalidrawplus_description": "",
"excalidrawplus_button": "",
"excalidrawplus_exportError": ""
"disk_title": "Gardar no disco",
"disk_details": "Exporte os datos da escena a un ficheiro que poderás importar máis tarde.",
"disk_button": "Gardar nun ficheiro",
"link_title": "Ligazón para compartir",
"link_details": "Exportar como unha ligazón de só lectura.",
"link_button": "Exportar a unha ligazón",
"excalidrawplus_description": "Garde a escena no seu espazo de traballo en Excalidraw+.",
"excalidrawplus_button": "Exportar",
"excalidrawplus_exportError": "Non se puido exportar a Excalidraw+ neste momento..."
},
"helpDialog": {
"blog": "",
"click": "",
"deepSelect": "",
"deepBoxSelect": "",
"curvedArrow": "",
"curvedLine": "",
"documentation": "",
"doubleClick": "",
"drag": "",
"editor": "",
"editSelectedShape": "",
"github": "",
"howto": "",
"or": "",
"preventBinding": "",
"tools": "",
"shortcuts": "",
"textFinish": "",
"textNewLine": "",
"title": "",
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"blog": "Le o noso blog",
"click": "clic",
"deepSelect": "Selección en profundidade",
"deepBoxSelect": "Selección en profundidade dentro da caixa, evitando o arrastre",
"curvedArrow": "Frecha curva",
"curvedLine": "Liña curva",
"documentation": "Documentación",
"doubleClick": "dobre-clic",
"drag": "arrastrar",
"editor": "Editor",
"editSelectedShape": "Editar a forma seleccionada (texto/frecha/liña)",
"github": "Encontrou un problema? Envíeo",
"howto": "Sigue as nosas normas",
"or": "ou",
"preventBinding": "Evitar a unión de frechas",
"tools": "Ferramentas",
"shortcuts": "Atallos de teclado",
"textFinish": "Rematar de editar (editor de texto)",
"textNewLine": "Engadir unha nova liña (editor de texto)",
"title": "Axuda",
"view": "Vista",
"zoomToFit": "Zoom que se axuste a todos os elementos",
"zoomToSelection": "Zoom á selección",
"toggleElementLock": "Bloquear/desbloquear selección",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
"title": "Limpar lenzo"
},
"publishDialog": {
"title": "",
"itemName": "",
"authorName": "",
"githubUsername": "",
"twitterUsername": "",
"libraryName": "",
"libraryDesc": "",
"website": "",
"title": "Publicar biblioteca",
"itemName": "Nome do elemento",
"authorName": "Nome do autor",
"githubUsername": "Nome de usuario en Github",
"twitterUsername": "Nome de usuario en Twitter",
"libraryName": "Nome da biblioteca",
"libraryDesc": "Descrición da biblioteca",
"website": "Páxina web",
"placeholder": {
"authorName": "",
"libraryName": "",
"libraryDesc": "",
"githubHandle": "",
"twitterHandle": "",
"website": ""
"authorName": "O seu nome ou nome de usuario",
"libraryName": "Nome da súa biblioteca",
"libraryDesc": "Descrición da súa biblioteca para axudar a xente a entender o seu uso",
"githubHandle": "Nome de usuario de GitHub (opcional), así poderás editar a biblioteca unha vez enviada para a súa revisión",
"twitterHandle": "Nome de usuario en Twitter(opcional), así sabemos a quen darlle crédito cando se lle de promoción a través de Twitter",
"website": "Ligazón ao teu sitio web persoal ou a outro sitio (opcional)"
},
"errors": {
"required": "",
"website": ""
"required": "Obrigatorio",
"website": "Introduza unha URL válida"
},
"noteDescription": {
"pre": "",
"link": "",
"post": ""
"pre": "Envíe a súa biblioteca para que sexa incluída no ",
"link": "repositorio público de bibliotecas",
"post": "para que outra xente a poida usar nos seus debuxos."
},
"noteGuidelines": {
"pre": "",
"link": "",
"post": ""
"pre": "A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as ",
"link": "normas",
"post": " antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario."
},
"noteLicense": {
"pre": "",
"link": "",
"post": ""
"pre": "Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a ",
"link": "Licenza MIT, ",
"post": "o cal significa que, en resumo, calquera pode usalo sen restricións."
},
"noteItems": "",
"atleastOneLibItem": "",
"republishWarning": ""
"noteItems": "Cada elemento da biblioteca debe ter o seu nome propio para que se poida filtrar. Os seguintes elementos da biblioteca serán incluídos:",
"atleastOneLibItem": "Por favor seleccione polo menos un elemento da biblioteca para comezar",
"republishWarning": "Nota: algúns dos elementos seleccionados están marcados como xa publicados/enviados. Só deberías reenviar elementos cando se actualice unha biblioteca ou envío."
},
"publishSuccessDialog": {
"title": "",
"content": "",
"link": ""
"title": "Biblioteca enviada",
"content": "Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estado",
"link": "aquí"
},
"confirmDialog": {
"resetLibrary": "",
"removeItemsFromLib": ""
"resetLibrary": "Restablecer biblioteca",
"removeItemsFromLib": "Eliminar os elementos seleccionados da biblioteca"
},
"encrypted": {
"tooltip": "",
"link": ""
"tooltip": "Os teus debuxos están cifrados de punto a punto, polo que os servidores de Excalidraw nunca os verán.",
"link": "Entrada do blog acerca do cifrado de punto a punto en Excalidraw"
},
"stats": {
"angle": "",
"element": "",
"elements": "",
"height": "",
"scene": "",
"selected": "",
"storage": "",
"title": "",
"total": "",
"version": "",
"versionCopy": "",
"versionNotAvailable": "",
"width": ""
"angle": "Ángulo",
"element": "Elemento",
"elements": "Elementos",
"height": "Alto",
"scene": "Escena",
"selected": "Seleccionado",
"storage": "Almacenamento",
"title": "Estadísticas para nerds",
"total": "Total",
"version": "Versión",
"versionCopy": "Faga clic para copiar",
"versionNotAvailable": "Versión non dispoñible",
"width": "Ancho"
},
"toast": {
"addedToLibrary": "",
"copyStyles": "",
"copyToClipboard": "",
"copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"addedToLibrary": "Engadido á biblioteca",
"copyStyles": "Estilos copiados.",
"copyToClipboard": "Copiado ao portapapeis.",
"copyToClipboardAsPng": "Copiar {{exportSelection}} ao portapapeis como PNG\n({{exportColorScheme}})",
"fileSaved": "Ficheiro gardado.",
"fileSavedToFilename": "Gardado en {filename}",
"canvas": "lenzo",
"selection": "selección",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
"f8f9fa": "",
"f1f3f5": "",
"fff5f5": "",
"fff0f6": "",
"f8f0fc": "",
"f3f0ff": "",
"edf2ff": "",
"e7f5ff": "",
"e3fafc": "",
"e6fcf5": "",
"ebfbee": "",
"f4fce3": "",
"fff9db": "",
"fff4e6": "",
"transparent": "",
"ced4da": "",
"868e96": "",
"fa5252": "",
"e64980": "",
"be4bdb": "",
"7950f2": "",
"4c6ef5": "",
"228be6": "",
"15aabf": "",
"12b886": "",
"40c057": "",
"82c91e": "",
"fab005": "",
"fd7e14": "",
"000000": "",
"343a40": "",
"495057": "",
"c92a2a": "",
"a61e4d": "",
"862e9c": "",
"5f3dc4": "",
"364fc7": "",
"1864ab": "",
"0b7285": "",
"087f5b": "",
"2b8a3e": "",
"5c940d": "",
"e67700": "",
"d9480f": ""
"ffffff": "Branco",
"f8f9fa": "Gris 0",
"f1f3f5": "Gris 1",
"fff5f5": "Vermello 0",
"fff0f6": "Rosa 0",
"f8f0fc": "Uva 0",
"f3f0ff": "Violeta 0",
"edf2ff": "Índigo 0",
"e7f5ff": "Azul 0",
"e3fafc": "Ciano 0",
"e6fcf5": "Turquesa 0",
"ebfbee": "Verde 0",
"f4fce3": "Lima 0",
"fff9db": "Amarelo 0",
"fff4e6": "Laranxa 0",
"transparent": "Transparente",
"ced4da": "Gris 4",
"868e96": "Gris 6",
"fa5252": "Vermello 6",
"e64980": "Rosa 6",
"be4bdb": "Uva 6",
"7950f2": "Violeta 6",
"4c6ef5": "Índigo 6",
"228be6": "Azul 6",
"15aabf": "Ciano 6",
"12b886": "Turquesa 6",
"40c057": "Verde 6",
"82c91e": "Lima 6",
"fab005": "Amarelo 6",
"fd7e14": "Laranxa 6",
"000000": "Negro",
"343a40": "Gris 8",
"495057": "Gris 7",
"c92a2a": "Vermello 9",
"a61e4d": "Rosa 9",
"862e9c": "Uva 9",
"5f3dc4": "Violeta 9",
"364fc7": "Índigo 9",
"1864ab": "Azul 9",
"0b7285": "Ciano 9",
"087f5b": "Turquesa 9",
"2b8a3e": "Verde 9",
"5c940d": "Lima 9",
"e67700": "Amarelo 9",
"d9480f": "Laranxa 9"
},
"welcomeScreen": {
"data": "Toda a información é gardada de maneira local no seu navegador.",
"switchToPlusApp": "Queres ir a Excalidraw+ no seu lugar?",
"menuHints": "Exportar, preferencias, idiomas, ...",
"toolbarHints": "Escolle unha ferramenta & Comeza a debuxar!",
"helpHints": "Atallos & axuda"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "הדבק",
"pasteAsPlaintext": "",
"pasteCharts": "הדבק גרפים",
"selectAll": "בחר הכל",
"multiSelect": "הוסף אובייקט לבחירה",
@ -71,7 +72,7 @@
"layers": "שכבות",
"actions": "פעולות",
"language": "שפה",
"liveCollaboration": "התחל שיתוף חי",
"liveCollaboration": "",
"duplicateSelection": "שכפל",
"untitled": "ללא כותרת",
"name": "שם",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "אפס את הלוח",
"exportJSON": "ייצא לקובץ",
"exportImage": "שמירה כתמונה",
"export": "ייצא",
"exportImage": "ייצוא התמונה...",
"export": "שמור ל...",
"exportToPng": "יצא ל PNG",
"exportToSvg": "יצא ל SVG",
"copyToClipboard": "העתק ללוח",
@ -144,7 +145,7 @@
"scale": "קנה מידה",
"save": "שמירת קובץ נוכחי",
"saveAs": "שמירה בשם",
"load": "טען",
"load": "פתח",
"getShareableLink": "קבל קישור לשיתוף",
"close": "סגור",
"selectLanguage": "בחר שפה",
@ -235,7 +236,7 @@
"resize": "ניתן להגביל פרופורציות על ידי לחיצה על SHIFT תוך כדי שינוי גודל,\nהחזק ALT בשביל לשנות גודל ביחס למרכז",
"resizeImage": "",
"rotate": "ניתן להגביל זוויות על ידי לחיצה על SHIFT תוך כדי סיבוב",
"lineEditor_info": "לחץ לחיצה כפולה או אנטר לעריכת הנקודות",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -310,7 +311,9 @@
"view": "תצוגה",
"zoomToFit": "גלילה להצגת כל האלמנטים במסך",
"zoomToSelection": "התמקד בבחירה",
"toggleElementLock": "נעילה/ביטול הנעילה של הרכיבים הנבחרים"
"toggleElementLock": "נעילה/ביטול הנעילה של הרכיבים הנבחרים",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "ניקוי הקנבס"
@ -391,7 +394,8 @@
"fileSaved": "קובץ נשמר.",
"fileSavedToFilename": "נשמר לקובץ {filename}",
"canvas": "משטח ציור",
"selection": "בחירה"
"selection": "בחירה",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "לבן",
@ -439,5 +443,12 @@
"5c940d": "ליים 9",
"e67700": "ירוק 9",
"d9480f": "כתום 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "चिपकाएँ",
"pasteAsPlaintext": "",
"pasteCharts": "चार्ट चिपकाएँ",
"selectAll": "सभी चुनें",
"multiSelect": "आकार को चयन में जोड़ें",
@ -52,7 +53,7 @@
"large": "बड़ा",
"veryLarge": "बहुत बड़ा",
"solid": "दृढ़",
"hachure": "हाचुरे",
"hachure": "हैशूर",
"crossHatch": "क्रॉस हैच",
"thin": "पतला",
"bold": "मोटा",
@ -71,7 +72,7 @@
"layers": "परतें",
"actions": "कार्रवाई",
"language": "भाषा",
"liveCollaboration": "जीवंत सहयोग",
"liveCollaboration": "जीवंत सहयोग...",
"duplicateSelection": "डुप्लिकेट",
"untitled": "अशीर्षित",
"name": "नाम",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "कैनवास रीसेट करें",
"exportJSON": "",
"exportImage": "",
"export": "निर्यात",
"exportImage": "प्रतिमा निर्यात करे...",
"export": "यंहा सुरक्षित करे...",
"exportToPng": "पीएनजी के रूप में निर्यात करे",
"exportToSvg": "Svg के रूप में निर्यात करे",
"copyToClipboard": "क्लिपबोर्ड पर प्रतिलिपि बनाएँ",
@ -144,7 +145,7 @@
"scale": "पैमाना",
"save": "",
"saveAs": "सेव करे इस तरह",
"load": "लोड करें",
"load": "खोलें",
"getShareableLink": "साझा करने योग्य लिंक प्राप्त करें",
"close": "बंद करें",
"selectLanguage": "भाषा चुनें",
@ -214,7 +215,7 @@
"text": "पाठ",
"library": "लाइब्रेरी",
"lock": "ड्राइंग के बाद चयनित टूल को सक्रिय रखें",
"penMode": "",
"penMode": "पेन का मोड - स्पर्श टाले",
"link": "",
"eraser": "रबड़"
},
@ -235,7 +236,7 @@
"resize": "आकार बदलते समय आप SHIFT को पकड़ कर अनुपात में कमी कर सकते हैं,\nकेंद्र से आकार बदलने के लिए ALT दबाए रखें",
"resizeImage": "",
"rotate": "आप घूर्णन करते समय SHIFT पकड़कर कोणों को विवश कर सकते हैं",
"lineEditor_info": "बिंदुओं को संपादित करने के लिए Enter पर डबल-क्लिक करें या दबाएँ",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -310,7 +311,9 @@
"view": "दृश्य",
"zoomToFit": "सभी तत्वों को फिट करने के लिए ज़ूम करें",
"zoomToSelection": "चयन तक ज़ूम करे",
"toggleElementLock": "ताले के अंदर/बाहर चुनाव"
"toggleElementLock": "ताले के अंदर/बाहर चुनाव",
"movePageUpDown": "पृष्ठ ऊपर/नीचे करे",
"movePageLeftRight": "पृष्ठ बायी/दायी तरफ करे"
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "सफेद",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "पीला",
"d9480f": "नारंगी"
},
"welcomeScreen": {
"data": "आपका सर्व डेटा ब्राउज़र के भीतर स्थानिक जगह पे सुरक्षित किया गया.",
"switchToPlusApp": "बजाय आपको Excalidraw+ जगह जाना है?",
"menuHints": "निर्यात, पसंद, भाषायें, ...",
"toolbarHints": "औजार चुने और चित्रकारी प्रारंभ करे!",
"helpHints": "शॉर्ट्कट & सहाय्य"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Beillesztés",
"pasteAsPlaintext": "",
"pasteCharts": "Grafikon beillesztése",
"selectAll": "Összes kijelölése",
"multiSelect": "Elem hozzáadása a kijelöléshez",
@ -71,7 +72,7 @@
"layers": "Rétegek",
"actions": "Műveletek",
"language": "Nyelv",
"liveCollaboration": "Élő együttműködés",
"liveCollaboration": "",
"duplicateSelection": "Duplikálás",
"untitled": "Névtelen",
"name": "Név",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Vászon törlése",
"exportJSON": "Exportálás fájlba",
"exportImage": "Mentés képként",
"export": "Exportálás",
"exportImage": "",
"export": "",
"exportToPng": "Exportálás PNG-be",
"exportToSvg": "Exportálás SVG-be",
"copyToClipboard": "Vágólapra másolás",
@ -144,7 +145,7 @@
"scale": "Nagyítás",
"save": "Mentés az aktuális fájlba",
"saveAs": "Mentés másként",
"load": "Betöltés",
"load": "",
"getShareableLink": "Megosztható link létrehozása",
"close": "Bezárás",
"selectLanguage": "Nyelv kiválasztása",
@ -214,7 +215,7 @@
"text": "Szöveg",
"library": "Könyvtár",
"lock": "Rajzolás után az aktív eszközt tartsa kijelölve",
"penMode": "Akadályozza meg a kicsinyítést, és csak tollról fogadja el a szabadkézi bevitelt",
"penMode": "",
"link": "Hivatkozás hozzáadása/frissítése a kiválasztott alakzathoz",
"eraser": ""
},
@ -235,7 +236,7 @@
"resize": "A SHIFT billentyű lenyomva tartásával az átméretezés megtartja az arányokat,\naz ALT lenyomva tartásával pedig a középpont egy helyben marad",
"resizeImage": "A SHIFT billentyű lenyomva tartásával szabadon átméretezheted,\ntartsd lenyomva az ALT billentyűt a középről való átméretezéshez",
"rotate": "A SHIFT billentyű lenyomva tartásával korlátozhatja a szögek illesztését",
"lineEditor_info": "Kattints duplán, vagy nyomj entert a pontok szerkesztéséhez",
"lineEditor_info": "",
"lineEditor_pointSelected": "Nyomd meg a Törlés gombot a pont(ok) eltávolításához,\nA Ctrl/Cmd+D a többszörözéshez, vagy húzással mozgathatja",
"lineEditor_nothingSelected": "Válaszd ki a szerkeszteni kívánt pontot (több kijelöléséhez tartsd lenyomva a SHIFT billentyűt),\nvagy Alt, és kattintson az új pontok hozzáadásához",
"placeImage": "Kattints a kép elhelyezéséhez, vagy kattints és méretezd manuálisan",
@ -310,7 +311,9 @@
"view": "Nézet",
"zoomToFit": "Az összes elem látótérbe hozása",
"zoomToSelection": "Kijelölésre nagyítás",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Rajzvászon alaphelyzetbe"
@ -391,7 +394,8 @@
"fileSaved": "Fájl elmentve.",
"fileSavedToFilename": "Mentve mint {filename}",
"canvas": "rajzvászon",
"selection": "kijelölés"
"selection": "kijelölés",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Fehér",
@ -441,9 +445,10 @@
"d9480f": "Narancs 9"
},
"welcomeScreen": {
"data": "Minden adatodat kizárólag a böngésződben tároljuk.",
"menuHints": "Export, beállítások, nyelvek, ...",
"toolbarHints": "Válassz egy eszközt & kezdj alkotni!",
"helpHints": "Gyorsbillentyűk & súgó"
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Tempel",
"pasteAsPlaintext": "Tempel sebagai teks biasa",
"pasteCharts": "Tempel diagram",
"selectAll": "Pilih semua",
"multiSelect": "Tambahkan elemen ke pilihan",
@ -71,7 +72,7 @@
"layers": "Lapisan",
"actions": "Aksi",
"language": "Bahasa",
"liveCollaboration": "Kolaborasi langsung",
"liveCollaboration": "Kolaborasi langsung...",
"duplicateSelection": "Duplikat",
"untitled": "Tanpa judul",
"name": "Nama",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Setel Ulang Kanvas",
"exportJSON": "Ekspor ke file",
"exportImage": "Simpan gambar",
"export": "Ekspor",
"exportImage": "Ekspor gambar...",
"export": "Simpan ke...",
"exportToPng": "Ekspor ke PNG",
"exportToSvg": "Ekspor ke SVG",
"copyToClipboard": "Salin ke Papan Klip",
@ -144,7 +145,7 @@
"scale": "Skala",
"save": "Simpan ke file sekarang",
"saveAs": "Simpan sebagai",
"load": "Muat",
"load": "Buka",
"getShareableLink": "Buat Tautan yang Bisa Dibagian",
"close": "Tutup",
"selectLanguage": "Pilih bahasa",
@ -214,7 +215,7 @@
"text": "Teks",
"library": "Pustaka",
"lock": "Biarkan alat yang dipilih aktif setelah menggambar",
"penMode": "Cegah jepit perbesar dan terima hanya input freedraw dari pena",
"penMode": "Mode pena - mencegah sentuhan",
"link": "Tambah/Perbarui tautan untuk bentuk yang dipilih",
"eraser": "Penghapus"
},
@ -235,7 +236,7 @@
"resize": "Anda dapat menjaga proposi dengan menekan SHIFT sambil mengubah ukuran,\ntekan AlT untuk mengubah ukuran dari tengah",
"resizeImage": "Anda dapat mengubah secara bebas dengan menekan SHIFT,\nTekan ALT untuk mengubah dari tengah",
"rotate": "Anda dapat menjaga sudut dengan menahan SHIFT sambil memutar",
"lineEditor_info": "Klik ganda atau tekan Enter untuk mengedit titik",
"lineEditor_info": "Tekan Ctrl/Cmd dan Dobel-klik atau tekan Ctrl/Cmd +Enter untuk mengedit poin",
"lineEditor_pointSelected": "Tekan Delete untuk menghapus titik, Ctrl/Cmd + D untuk menduplikasi, atau seret untuk memindahkan",
"lineEditor_nothingSelected": "Pilih titik untuk mengedit (tekan SHIFT untuk pilih banyak), atau tekan Alt dan klik untuk tambahkan titik baru",
"placeImage": "Klik untuk tempatkan gambar, atau klik dan jatuhkan untuk tetapkan ukuran secara manual",
@ -310,7 +311,9 @@
"view": "Tampilan",
"zoomToFit": "Perbesar agar sesuai dengan semua elemen",
"zoomToSelection": "Perbesar ke seleksi",
"toggleElementLock": "Kunci/lepas seleksi"
"toggleElementLock": "Kunci/lepas seleksi",
"movePageUpDown": "Pindah halaman keatas/kebawah",
"movePageLeftRight": "Pindah halaman kebawah/keatas"
},
"clearCanvasDialog": {
"title": "Hapus kanvas"
@ -391,7 +394,8 @@
"fileSaved": "File tersimpan.",
"fileSavedToFilename": "Disimpan ke {filename}",
"canvas": "kanvas",
"selection": "pilihan"
"selection": "pilihan",
"pasteAsSingleElement": "Gunakan {{shortcut}} untuk menempelkan sebagai satu elemen,\natau tempelkan ke teks editor yang ada"
},
"colors": {
"ffffff": "Putih",
@ -439,5 +443,12 @@
"5c940d": "Lime 9",
"e67700": "Kuning 9",
"d9480f": "Jingga 9"
},
"welcomeScreen": {
"data": "Semua data Anda tersimpan secara lokal di browser.",
"switchToPlusApp": "Apa Anda ingin berpindah ke Excalidraw+?",
"menuHints": "Ekspor, preferensi, bahasa, ...",
"toolbarHints": "Ambil alat & mulai menggambar!",
"helpHints": "Pintasan & bantuan"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Incolla",
"pasteAsPlaintext": "Incolla come testo normale",
"pasteCharts": "Incolla grafici",
"selectAll": "Seleziona tutto",
"multiSelect": "Aggiungi elemento alla selezione",
@ -71,7 +72,7 @@
"layers": "Livelli",
"actions": "Azioni",
"language": "Lingua",
"liveCollaboration": "Collaborazione live",
"liveCollaboration": "Collaborazione dal vivo...",
"duplicateSelection": "Duplica",
"untitled": "Senza titolo",
"name": "Nome",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Svuota la tela",
"exportJSON": "Esporta su file",
"exportImage": "Salva come immagine",
"export": "Esporta",
"exportImage": "Esporta immagine...",
"export": "Salva in...",
"exportToPng": "Esporta come PNG",
"exportToSvg": "Esporta come SVG",
"copyToClipboard": "Copia negli appunti",
@ -144,7 +145,7 @@
"scale": "Scala",
"save": "Salva sul file corrente",
"saveAs": "Salva con nome",
"load": "Carica",
"load": "Apri",
"getShareableLink": "Ottieni link condivisibile",
"close": "Chiudi",
"selectLanguage": "Seleziona lingua",
@ -214,7 +215,7 @@
"text": "Testo",
"library": "Libreria",
"lock": "Mantieni lo strumento selezionato attivo dopo aver disegnato",
"penMode": "Impedisci il pinch-zoom e accetta l'input di disegno libero solo dalla penna",
"penMode": "Modalità penna - previene il tocco",
"link": "Aggiungi/ aggiorna il link per una forma selezionata",
"eraser": "Gomma"
},
@ -235,7 +236,7 @@
"resize": "Per vincolare le proporzioni, tieni premuto MAIUSC durante il ridimensionamento;\nper ridimensionare dal centro, tieni premuto ALT",
"resizeImage": "Puoi ridimensionare liberamente tenendo premuto SHIFT,\ntieni premuto ALT per ridimensionare dal centro",
"rotate": "Puoi mantenere gli angoli tenendo premuto SHIFT durante la rotazione",
"lineEditor_info": "Fai doppio click o premi invio per modificare i punti",
"lineEditor_info": "Tieni premuto Ctrl o Cmd e doppio clic oppure premi Ctrl o Cmd + Invio per modificare i punti",
"lineEditor_pointSelected": "Premi Elimina per rimuovere il punto(i),\nCtrlOCmd+D per duplicare o trascinare per spostare",
"lineEditor_nothingSelected": "Seleziona un punto da modificare (tieni premuto MAIUSC per selezionare più punti),\noppure tieni premuto Alt e fai clic per aggiungere nuovi punti",
"placeImage": "Fai click per posizionare l'immagine, o click e trascina per impostarne la dimensione manualmente",
@ -310,7 +311,9 @@
"view": "Vista",
"zoomToFit": "Adatta zoom per mostrare tutti gli elementi",
"zoomToSelection": "Zoom alla selezione",
"toggleElementLock": "Blocca/sblocca selezione"
"toggleElementLock": "Blocca/sblocca selezione",
"movePageUpDown": "Sposta la pagina su/giù",
"movePageLeftRight": "Sposta la pagina a sinistra/destra"
},
"clearCanvasDialog": {
"title": "Svuota la tela"
@ -391,7 +394,8 @@
"fileSaved": "File salvato.",
"fileSavedToFilename": "Salvato in {filename}",
"canvas": "tela",
"selection": "selezione"
"selection": "selezione",
"pasteAsSingleElement": "Usa {{shortcut}} per incollare come un singolo elemento,\no incollare in un editor di testo esistente"
},
"colors": {
"ffffff": "Bianco",
@ -439,5 +443,12 @@
"5c940d": "Lime 9",
"e67700": "Giallo 9",
"d9480f": "Arancio 9"
},
"welcomeScreen": {
"data": "Tutti i tuoi dati sono salvati localmente nel browser.",
"switchToPlusApp": "Volevi invece andare su Excalidraw+?",
"menuHints": "Esporta, preferenze, lingue, ...",
"toolbarHints": "Scegli uno strumento & Inizia a disegnare!",
"helpHints": "Scorciatoie & aiuto"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "貼り付け",
"pasteAsPlaintext": "",
"pasteCharts": "チャートの貼り付け",
"selectAll": "すべて選択",
"multiSelect": "複数選択",
@ -71,7 +72,7 @@
"layers": "レイヤー",
"actions": "操作",
"language": "言語",
"liveCollaboration": "共同編集",
"liveCollaboration": "共同編集...",
"duplicateSelection": "複製",
"untitled": "無題",
"name": "名前",
@ -115,8 +116,8 @@
"label": "リンク"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "行を編集",
"exit": "行エディタを終了"
},
"elementLock": {
"lock": "ロック",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "キャンバスのリセット",
"exportJSON": "ファイルへエクスポート",
"exportImage": "画像として保存",
"export": "エクスポート",
"exportImage": "画像のエクスポート...",
"export": "名前を付けて保存...",
"exportToPng": "PNG にエクスポート",
"exportToSvg": "SVG にエクスポート",
"copyToClipboard": "クリップボードにコピー",
@ -144,7 +145,7 @@
"scale": "スケール",
"save": "現在のファイルに保存",
"saveAs": "名前を付けて保存",
"load": "読み込み...",
"load": "開く",
"getShareableLink": "共有URLの取得",
"close": "閉じる",
"selectLanguage": "言語の選択",
@ -214,7 +215,7 @@
"text": "テキスト",
"library": "ライブラリ",
"lock": "描画後も使用中のツールを選択したままにする",
"penMode": "ピンチとズームを抑止し、ペンからのみ自由な入力を受け付けます",
"penMode": "ペンモード - タッチ防止",
"link": "選択した図形のリンクを追加/更新",
"eraser": "消しゴム"
},
@ -235,7 +236,7 @@
"resize": "サイズを変更中にSHIFTを押すと縦横比を固定できます。Altを押すと中央からサイズを変更できます",
"resizeImage": "SHIFTを長押しすると自由にサイズを変更できます。\n中央からサイズを変更するにはALTを長押しします",
"rotate": "回転中にSHIFT キーを押すと角度を制限することができます",
"lineEditor_info": "ポイントを編集するには、ダブルクリックまたはEnterキーを押します",
"lineEditor_info": "",
"lineEditor_pointSelected": "Deleteキーを押すと点を削除、CtrlOrCmd+Dで複製、マウスドラッグで移動",
"lineEditor_nothingSelected": "編集する点を選択SHIFTを押したままで複数選択、\nAltキーを押しながらクリックすると新しい点を追加",
"placeImage": "クリックして画像を配置するか、クリックしてドラッグしてサイズを手動で設定します",
@ -310,7 +311,9 @@
"view": "表示",
"zoomToFit": "すべての要素が収まるようにズーム",
"zoomToSelection": "選択要素にズーム",
"toggleElementLock": "選択したアイテムをロック/ロック解除"
"toggleElementLock": "選択したアイテムをロック/ロック解除",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "キャンバスを消去"
@ -391,7 +394,8 @@
"fileSaved": "ファイルを保存しました",
"fileSavedToFilename": "{filename} に保存しました",
"canvas": "キャンバス",
"selection": "選択"
"selection": "選択",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "ホワイト",
@ -439,5 +443,12 @@
"5c940d": "ライム 9",
"e67700": "イエロー 9",
"d9480f": "オレンジ 9"
},
"welcomeScreen": {
"data": "すべてのデータはブラウザにローカル保存されます。",
"switchToPlusApp": "代わりにExcalidraw+を開きますか?",
"menuHints": "エクスポート, 設定, 言語, ...",
"toolbarHints": "ツールを選んで描き始めよう!",
"helpHints": "ショートカットとヘルプ"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Senṭeḍ",
"pasteAsPlaintext": "",
"pasteCharts": "Senṭeḍ udlifen",
"selectAll": "Fren akk",
"multiSelect": "Rnu aferdis ɣer tefrayt",
@ -71,7 +72,7 @@
"layers": "Tissiyin",
"actions": "Tigawin",
"language": "Tutlayt",
"liveCollaboration": "Amɛiwen s srid",
"liveCollaboration": "",
"duplicateSelection": "Sisleg",
"untitled": "War azwel",
"name": "Isem",
@ -115,8 +116,8 @@
"label": "Aseɣwen"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Ẓreg izirig",
"exit": "Ffeɣ seg umaẓrag n yizirig"
},
"elementLock": {
"lock": "Sekkeṛ",
@ -125,18 +126,18 @@
"unlockAll": "Serreḥ akk"
},
"statusPublished": "Yeffeɣ-d",
"sidebarLock": ""
"sidebarLock": "Eǧǧ afeggag n yidis yeldi"
},
"library": {
"noItems": "",
"hint_emptyLibrary": "",
"hint_emptyPrivateLibrary": ""
"noItems": "Ulac iferdisen yettwarnan yakan...",
"hint_emptyLibrary": "Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi, neɣ sbedd tamkarḍit seg usarsay azayez, ukessar-agi.",
"hint_emptyPrivateLibrary": "Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi."
},
"buttons": {
"clearReset": "Ales awennez n teɣzut n usuneɣ",
"exportJSON": "Sifeḍ afaylu",
"exportImage": "Sekles am tugna",
"export": "Sifeḍ",
"exportImage": "Sifeḍ tugna...",
"export": "Sekles di...",
"exportToPng": "Sifeḍ ɣer PNG",
"exportToSvg": "Sifeḍ ɣer SVG",
"copyToClipboard": "Nɣel ɣer tecfawit",
@ -144,7 +145,7 @@
"scale": "Taskala",
"save": "Sekles deg ufaylu amiran",
"saveAs": "Sekles am",
"load": "Sali-d",
"load": "Ldi",
"getShareableLink": "Awi-d aseɣwen n beṭṭu",
"close": "Mdel",
"selectLanguage": "Fren tutlayt",
@ -235,7 +236,7 @@
"resize": "Tzemreḍ ad tḥettemeḍ assaɣ s tuṭṭfa n tqeffalt SHIFT mi ara tettbeddileḍ tiddi,\nma teṭṭfeḍ ALT abeddel n tiddi ad yili si tlemmast",
"resizeImage": "Tzemreḍ ad talseḍ tiddi s tilelli s tuṭṭfa n SHIFT,\nṭṭef ALT akken ad talseḍ tiddi si tlemmast",
"rotate": "Tzemreḍ ad tḥettemeḍ tiɣemmar s tuṭṭfa n SHIFT di tuzzya",
"lineEditor_info": "Ssit snat n tikkal neɣ ssed taqeffalt Kcem akken ad tẓergeḍ tinqiḍin",
"lineEditor_info": "",
"lineEditor_pointSelected": "Ssed taqeffalt kkes akken ad tekkseḍ tanqiḍ (tinqiḍin),\nCtrlOrCmd+D akken ad tsiselgeḍ, neɣ zuɣer akken ad tesmuttiḍ",
"lineEditor_nothingSelected": "Fren tanqiḍt akken ad tẓergeḍ (ṭṭef SHIFT akken ad tferneḍ aṭas),\nneɣ ṭṭef Alt akken ad ternuḍ tinqiḍin timaynutin",
"placeImage": "Ssit akken ad tserseḍ tugna, neɣ ssit u zuɣer akken ad tesbaduḍ tiddi-ines s ufus",
@ -310,7 +311,9 @@
"view": "Tamuɣli",
"zoomToFit": "Simɣur akken ad twliḍ akk iferdisen",
"zoomToSelection": "Simɣur ɣer tefrayt",
"toggleElementLock": "Sekkeṛ/kkes asekker i tefrayt"
"toggleElementLock": "Sekkeṛ/kkes asekker i tefrayt",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Sfeḍ taɣzut n usuneɣ"
@ -391,7 +394,8 @@
"fileSaved": "Afaylu yettwasekles.",
"fileSavedToFilename": "Yettwasekles di {filename}",
"canvas": "taɣzut n usuneɣ",
"selection": "tafrayt"
"selection": "tafrayt",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Amellal",
@ -439,5 +443,12 @@
"5c940d": "Llim 9",
"e67700": "Awraɣ 9",
"d9480f": "Aččinawi 9"
},
"welcomeScreen": {
"data": "Akk isefka-inek•inem ttwakelsen s wudem adigan deg yiminig-inek•inem.",
"switchToPlusApp": "Tebɣiḍ ad tedduḍ ɣer Excalidraw+ deg umḍiq?",
"menuHints": "Asifeḍ, ismenyifen, tutlayin, ...",
"toolbarHints": "Fren afecku tebduḍ asuneɣ!",
"helpHints": "Inegzumen akked tallelt"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Қою",
"pasteAsPlaintext": "",
"pasteCharts": "Диаграммаларды қою",
"selectAll": "Бәрін таңдау",
"multiSelect": "",
@ -136,7 +137,7 @@
"clearReset": "",
"exportJSON": "",
"exportImage": "",
"export": "Экспорт",
"export": "",
"exportToPng": "",
"exportToSvg": "",
"copyToClipboard": "",
@ -310,7 +311,9 @@
"view": "Көру",
"zoomToFit": "Барлық элементтердің көлеміне сәйкес үлкейту",
"zoomToSelection": "Таңдалғанды үлкейту",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "Файл сақталды.",
"fileSavedToFilename": "{filename} сақталды",
"canvas": "",
"selection": "таңдау"
"selection": "таңдау",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "붙여넣기",
"pasteAsPlaintext": "",
"pasteCharts": "차트 붙여넣기",
"selectAll": "전체 선택",
"multiSelect": "선택 영역에 추가하기",
@ -71,7 +72,7 @@
"layers": "레이어",
"actions": "동작",
"language": "언어",
"liveCollaboration": "실시간 협업",
"liveCollaboration": "",
"duplicateSelection": "복제",
"untitled": "제목 없음",
"name": "이름",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "캔버스 초기화",
"exportJSON": "파일로 내보내기",
"exportImage": "이미지로 저장",
"export": "내보내기",
"exportImage": "",
"export": "",
"exportToPng": "PNG로 내보내기",
"exportToSvg": "SVG로 내보내기",
"copyToClipboard": "클립보드로 복사",
@ -144,7 +145,7 @@
"scale": "크기",
"save": "현재 파일에 저장",
"saveAs": "다른 이름으로 저장",
"load": "불러오기",
"load": "",
"getShareableLink": "공유 가능한 링크 생성",
"close": "닫기",
"selectLanguage": "언어 선택",
@ -214,7 +215,7 @@
"text": "텍스트",
"library": "라이브러리",
"lock": "선택된 도구 유지하기",
"penMode": "핀치 줌을 하지 않도록 하고 펜을 통해서 자유롭게 그리기",
"penMode": "",
"link": "선택한 도형에 대해서 링크를 추가/업데이트",
"eraser": "지우개"
},
@ -235,7 +236,7 @@
"resize": "SHIFT 키를 누르면서 조정하면 크기의 비율이 제한됩니다.\nALT를 누르면서 조정하면 중앙을 기준으로 크기를 조정합니다.",
"resizeImage": "SHIFT를 눌러서 자유롭게 크기를 변경하거나,\nALT를 눌러서 중앙을 고정하고 크기를 변경하기",
"rotate": "SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.",
"lineEditor_info": "지점을 수정하려면 두 번 클릭하거나 Enter 키를 누르세요.",
"lineEditor_info": "",
"lineEditor_pointSelected": "Delete 키로 꼭짓점을 제거하거나,\nCtrlOrCmd+D 로 복제하거나, 드래그 해서 이동시키기",
"lineEditor_nothingSelected": "꼭짓점을 선택해서 수정하거나 (SHIFT를 눌러서 여러개 선택),\nAlt를 누르고 클릭해서 새로운 꼭짓점 추가하기",
"placeImage": "클릭해서 이미지를 배치하거나, 클릭하고 드래그해서 사이즈를 조정하기",
@ -310,7 +311,9 @@
"view": "보기",
"zoomToFit": "모든 요소가 보이도록 확대/축소",
"zoomToSelection": "선택 영역으로 확대/축소",
"toggleElementLock": "선택한 항목을 잠금/잠금 해제"
"toggleElementLock": "선택한 항목을 잠금/잠금 해제",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "캔버스 지우기"
@ -391,7 +394,8 @@
"fileSaved": "파일이 저장되었습니다.",
"fileSavedToFilename": "{filename} 로 저장되었습니다",
"canvas": "캔버스",
"selection": "선택한 요소"
"selection": "선택한 요소",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "화이트",
@ -439,5 +443,12 @@
"5c940d": "라임 9",
"e67700": "노란색 9",
"d9480f": "주황색 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,36 +1,37 @@
{
"labels": {
"paste": "دانانەوە",
"pasteAsPlaintext": "",
"pasteCharts": "دانانەوەی خشتەکان",
"selectAll": "دیاریکردنی هەموو",
"multiSelect": "زیادکردنی بۆ دیاریکراوەکان",
"moveCanvas": "کانڤای زیاتر",
"moveCanvas": "تابلۆ بجوڵێنە",
"cut": "بڕین",
"copy": "لەبەرگرتنەوە",
"copyAsPng": "PNGلەبەرگرتنەوە بۆ تەختەنووس وەک",
"copyAsSvg": "SVGلەبەرگرتنەوە بۆ تەختەنووس وەک",
"copyText": "لەبەرگرتنەوە بۆ تەختەنووس وەک نوسین",
"bringForward": یهێنە پێش",
"bringForward": هێنە پێشتر",
"sendToBack": "بنێرە دواوە",
"bringToFront": "بهێنە بەردەم",
"sendBackward": "بنێرە کۆتای",
"bringToFront": "بهێنە پێشەوە",
"sendBackward": "بنێرە دواتر",
"delete": "سڕینەوە",
"copyStyles": "لەبەرگرتنەوەی ستایل",
"pasteStyles": "دانانەوەی ستایل",
"stroke": "هێڵکار",
"background": "باکگراوند",
"background": "پاشبنەما",
"fill": "پڕکردنەوە",
"strokeWidth": "پانی هێڵکاری",
"strokeStyle": "ستایلی هێڵکاری",
"strokeStyle_solid": "سادە",
"strokeStyle_dashed": "داشاوی",
"strokeStyle_dashed": "پچڕ پچڕ",
"strokeStyle_dotted": "خاڵدار",
"sloppiness": "خواری",
"opacity": "ناڕونی",
"sloppiness": "لێژی",
"opacity": "ڕوونی",
"textAlign": "ڕێکخستنی دەق",
"edges": "لێوارەکان",
"sharp": "تیژ",
"round": "چەماو",
"round": "چەماوە",
"arrowheads": "سەرەتیر",
"arrowhead_none": "هیچیان",
"arrowhead_arrow": "تیر",
@ -65,13 +66,13 @@
"cartoonist": "کارتۆنی",
"fileTitle": "ناوی فایل",
"colorPicker": "ڕەنگ هەڵگر",
"canvasColors": "کانڤای بەکارهاتوو",
"canvasBackground": "باکگراوندی کانڤاکان",
"drawingCanvas": "کێشانی کانڤا",
"canvasColors": "بەکارهاتووە لەسەر تابلۆ",
"canvasBackground": "پاشبنەمای تابلۆ",
"drawingCanvas": "کێشانی تابلۆ",
"layers": "چینەکان",
"actions": "کردارەکان",
"language": "زمان",
"liveCollaboration": "هاوکاری ڕاستەوخۆ",
"liveCollaboration": "هاوکاریکردنی زیندو...",
"duplicateSelection": "لەبەرگرتنەوە",
"untitled": "Untitled",
"name": "ناو",
@ -129,14 +130,14 @@
},
"library": {
"noItems": "هێشتا هیچ بڕگەیەک زیاد نەکراوە...",
"hint_emptyLibrary": "شتێک لەسەر کانڤاس هەڵبژێرە بۆ ئەوەی لێرە زیاد بکەیت، یان کتێبخانەیەک لە کۆگای گشتیەوە دابمەزرێنە، لە خوارەوە.",
"hint_emptyPrivateLibrary": "شتێک لەسەر کانڤاس هەڵبژێرە بۆ ئەوەی لێرە زیاد بکەیت."
"hint_emptyLibrary": "شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت، یان کتێبخانەیەک لە کۆگا گشتیەکەوە دابمەزرێنە، لە خوارەوە.",
"hint_emptyPrivateLibrary": "شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت."
},
"buttons": {
"clearReset": "کانڤاسەکە ڕێست بکەرەوە",
"clearReset": "تابلۆکە وەک سەرەتا لێبکەوە",
"exportJSON": "هەناردەکردن بۆ فایل",
"exportImage": "پاشەکەوتکرد وەک وێنە",
"export": "هەناردەکردن",
"exportImage": "وێنە هەناردە بکە...",
"export": "پاشەکەوت بکە بۆ...",
"exportToPng": "هەناردەکردن بۆ PNG",
"exportToSvg": "هەناردەکردن بۆ SVG",
"copyToClipboard": "له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس",
@ -144,7 +145,7 @@
"scale": "پێوەر",
"save": "پاشەکەوت بکە بۆ فایلی بەردەست",
"saveAs": "پاشەکەوتکردن وەک",
"load": ارکردن",
"load": کەرەوە",
"getShareableLink": "بەستەری هاوبەشیپێکردن بەدەستبهێنە",
"close": "داخستن",
"selectLanguage": "دیاریکردنی زمان",
@ -172,12 +173,12 @@
"confirm": "دوپاتکردنەوە"
},
"alerts": {
"clearReset": "ئەمە هەموو کانڤاکە خاوێن دەکاتەوە، دڵنیایت؟",
"clearReset": "ئەمە هەموو تابلۆکە خاوێن دەکاتەوە، دڵنیایت؟",
"couldNotCreateShareableLink": "نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت",
"couldNotCreateShareableLinkTooBig": "نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت: دیمەنەکە زۆر گەورەیە",
"couldNotLoadInvalidFile": "ناتوانرا باربکرێت، فایلەکە دروستنییە",
"importBackendFailed": "هاوردەکردن لە پاشکۆکە سەرکەوتوو نەبوو.",
"cannotExportEmptyCanvas": "ناتوانرێت کانڤای بەتاڵ هەناردەبکرێت",
"cannotExportEmptyCanvas": "ناتوانرێت تابلۆی بەتاڵ هەناردەبکرێت.",
"couldNotCopyToClipboard": "ناتوانرا لەبەربگیرێتەوە بۆ تەختەنوس",
"decryptFailed": "ناتوانرا داتاکان شیبکرێتەوە",
"uploadedSecurly": "بارکردنەکە بە کۆدکردنی کۆتایی بۆ کۆتایی پارێزراوە، ئەمەش واتە سێرڤەری Excalidraw و لایەنی سێیەم ناتوانن ناوەڕۆکەکە بخوێننەوە.",
@ -214,17 +215,17 @@
"text": "دەق",
"library": "کتێبخانە",
"lock": "ئامێرە دیاریکراوەکان چالاک بهێڵەوە دوای وێنەکێشان",
"penMode": "ڕێگری بکە لە گەورەکردنەوەی پینچ و قبولکردنی تێکردنی فریدراو تەنها لە پێنووسەوە",
"penMode": "شێوازی قەڵەم - دەست لێدان ڕابگرە",
"link": "زیادکردن/ نوێکردنەوەی لینک بۆ شێوەی دیاریکراو",
"eraser": "سڕەر"
},
"headings": {
"canvasActions": "کردارەکانی کانڤا",
"canvasActions": "کردارەکانی تابلۆ",
"selectedShapeActions": "کردارەکانی شێوەی دەستنیشانکراو",
"shapes": "شێوەکان"
},
"hints": {
"canvasPanning": "بۆ جوڵاندنی کانڤاکە، لە کاتی ڕاکێشاندا ویل ماوس یان سپەیسبار دابگرە",
"canvasPanning": "بۆ جوڵاندنی تابلۆ، لە کاتی ڕاکێشاندا ویلی ماوس یان شریتی بۆشایی دابگرە",
"linearElement": "کرتە بکە بۆ دەستپێکردنی چەند خاڵێک، ڕایبکێشە بۆ یەک هێڵ",
"freeDraw": "کرتە بکە و ڕایبکێشە، کاتێک تەواو بوویت دەست هەڵگرە",
"text": "زانیاری: هەروەها دەتوانیت دەق زیادبکەیت بە دوو کرتەکردن لە هەر شوێنێک لەگەڵ ئامڕازی دەستنیشانکردن",
@ -235,7 +236,7 @@
"resize": "دەتوانیت ڕێژەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی گۆڕینی قەبارەدا،\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە",
"resizeImage": "دەتوانیت بە ئازادی قەبارە بگۆڕیت بە ڕاگرتنی SHIFT،\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە",
"rotate": "دەتوانیت گۆشەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی سوڕانەوەدا",
"lineEditor_info": "دووجار کلیک بکە یان Enter بکە بۆ دەستکاریکردنی خاڵەکان",
"lineEditor_info": "",
"lineEditor_pointSelected": "بۆ لابردنی خاڵەکان Delete دابگرە، Ctrl Cmd+D بکە بۆ لەبەرگرتنەوە، یان بۆ جووڵە ڕاکێشان بکە",
"lineEditor_nothingSelected": "خاڵێک هەڵبژێرە بۆ دەستکاریکردن (SHIFT ڕابگرە بۆ هەڵبژاردنی چەندین)،\nیان Alt ڕابگرە و کلیک بکە بۆ زیادکردنی خاڵە نوێیەکان",
"placeImage": "کلیک بکە بۆ دانانی وێنەکە، یان کلیک بکە و ڕایبکێشە بۆ ئەوەی قەبارەکەی بە دەستی دابنێیت",
@ -245,15 +246,15 @@
"eraserRevert": "بۆ گەڕاندنەوەی ئەو توخمانەی کە بۆ سڕینەوە نیشانە کراون، Alt ڕابگرە"
},
"canvasError": {
"cannotShowPreview": "ناتوانێت پێشبینین پیشان بدرێت",
"canvasTooBig": "کانڤاکە لەوانەیە زۆر گەورەبێت.",
"canvasTooBigTip": "زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک نزیکتر لە یەکتر بجوڵێنن."
"cannotShowPreview": "ناتوانرێ پێشبینین پیشان بدرێت",
"canvasTooBig": "تابلۆکە لەوانەیە زۆر گەورەبێت.",
"canvasTooBigTip": "زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک لە یەکتر نزیک بکەوە."
},
"errorSplash": {
"headingMain_pre": "تووشی هەڵەیەک بوو. هەوڵ بدە ",
"headingMain_button": "دووبارە بارکردنی لاپەڕەکە.",
"clearCanvasMessage": "ئەگەر دووبارە بارکردنەوە کار نەکات، هەوڵبدە ",
"clearCanvasMessage_button": "کانڤاکە خاوێن بکەیتەوە.",
"clearCanvasMessage": "ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە ",
"clearCanvasMessage_button": "خاوێنکردنەوەی تابلۆکە.",
"clearCanvasCaveat": " ئەمە دەبێتە هۆی لەدەستدانی ئەوەی کە کردوتە ",
"trackedToSentry_pre": "هەڵەکە لەگەڵ ناسێنەری ",
"trackedToSentry_post": " لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.",
@ -310,10 +311,12 @@
"view": "دیمەن",
"zoomToFit": "زووم بکە بۆ ئەوەی لەگەڵ هەموو توخمەکاندا بگونجێت",
"zoomToSelection": "زووم بکە بۆ دەستنیشانکراوەکان",
"toggleElementLock": "قفڵ/کردنەوەی دەستنیشانکراوەکان"
"toggleElementLock": "قفڵ/کردنەوەی دەستنیشانکراوەکان",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "خاوێنکردنەوەی کانڤا"
"title": "تابلۆکە خاوێن بکەرەوە"
},
"publishDialog": {
"title": "پێشکەشکردنی کتێبخانە",
@ -390,8 +393,9 @@
"copyToClipboardAsPng": "کۆپی کراوە {{exportSelection}} بۆ کلیپبۆرد وەک PNG\n({{exportColorScheme}})",
"fileSaved": "فایل هەڵگیرا.",
"fileSavedToFilename": "هەڵگیراوە بۆ {filename}",
"canvas": "کانڤاکان",
"selection": "دەستنیشانکراوەکان"
"canvas": "تابلۆ",
"selection": "دەستنیشانکراوەکان",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "سپی",
@ -439,5 +443,12 @@
"5c940d": "نارنجی 9",
"e67700": "زەرد 9",
"d9480f": "پرتەقاڵی 9"
},
"welcomeScreen": {
"data": "هەموو داتاکانت لە ناو بڕاوزەرەکەتدا پاشەکەوت کراوە.",
"switchToPlusApp": "دەتویست بچیت بۆ Excalidraw+؟",
"menuHints": "هەناردەکردن، پەسندکردنەکان، زمانەکان، ...",
"toolbarHints": "ئامرازێک هەڵبژێرە و دەستبکە بە وێنەکێشان!",
"helpHints": "قەدبڕەکان و یارمەتی"
}
}

@ -1,19 +1,20 @@
{
"labels": {
"paste": "Įklijuoti",
"pasteAsPlaintext": "Įklijuoti kaip paprastą tekstą",
"pasteCharts": "Įklijuoti diagramas",
"selectAll": "Pažymėti viską",
"multiSelect": "",
"moveCanvas": "",
"multiSelect": "Pridėkite elementą prie pasirinktų",
"moveCanvas": "Judinti drobę",
"cut": "Iškirpti",
"copy": "Kopijuoti",
"copyAsPng": "",
"copyAsSvg": "",
"copyText": "",
"bringForward": "",
"sendToBack": "",
"bringToFront": "",
"sendBackward": "",
"copyAsPng": "Kopijuoti į iškarpinę kaip PNG",
"copyAsSvg": "Kopijuoti į iškarpinę kaip SVG",
"copyText": "Kopijuoti į iškarpinę kaip tekstą",
"bringForward": "Kelti priekio link",
"sendToBack": "Nustumti į užnugarį",
"bringToFront": "Iškelti į priekį",
"sendBackward": "Nustumti link užnugario",
"delete": "Ištrinti",
"copyStyles": "Kopijuoti stilius",
"pasteStyles": "Įklijuoti stilius",
@ -22,56 +23,56 @@
"fill": "Užpildymas",
"strokeWidth": "Linijos storis",
"strokeStyle": "Linijos stilius",
"strokeStyle_solid": "",
"strokeStyle_dashed": "",
"strokeStyle_dotted": "",
"sloppiness": "",
"opacity": "",
"textAlign": "",
"strokeStyle_solid": "Ištisinė",
"strokeStyle_dashed": "Brūkšniuota",
"strokeStyle_dotted": "Taškuota",
"sloppiness": "Netvarkingumas",
"opacity": "Nepermatomumas",
"textAlign": "Teksto lygiavimas",
"edges": "Kraštai",
"sharp": "",
"round": "",
"arrowheads": "",
"arrowhead_none": "",
"arrowhead_arrow": "",
"arrowhead_bar": "",
"arrowhead_dot": "",
"sharp": "Aštrus",
"round": "Užapvalintas",
"arrowheads": "Rodyklės viršūnės",
"arrowhead_none": "Jokios",
"arrowhead_arrow": "Rodyklė",
"arrowhead_bar": "Brukšnys",
"arrowhead_dot": "Taškas",
"arrowhead_triangle": "Trikampis",
"fontSize": "",
"fontFamily": "",
"onlySelected": "",
"withBackground": "",
"exportEmbedScene": "",
"exportEmbedScene_details": "",
"fontSize": "Šrifto dydis",
"fontFamily": "Šriftas",
"onlySelected": "Tik pasirinktus",
"withBackground": "Fonas",
"exportEmbedScene": "Įterpti sceną",
"exportEmbedScene_details": "Scenos duomenys bus išsaugoti eksportuotame PNG/SVG faile taip, jog vėliau scena galėtu būti iš jo atkurta.\nTai padydins eksportuoto failo dydį.",
"addWatermark": "Sukurta su Excalidraw",
"handDrawn": "",
"handDrawn": "Ranka rašytas",
"normal": "Normalus",
"code": "Kodas",
"small": "Mažas",
"medium": "Vidutinis",
"large": "Didelis",
"veryLarge": "",
"veryLarge": "Labai didelis",
"solid": "",
"hachure": "",
"crossHatch": "",
"thin": "",
"bold": "",
"left": "",
"center": "",
"right": "",
"extraBold": "",
"architect": "",
"artist": "",
"cartoonist": "",
"thin": "Plonas",
"bold": "Pastorintas",
"left": "Kairėje",
"center": "Centre",
"right": "Dešinėje",
"extraBold": "Labiau pastorintas",
"architect": "Architektas",
"artist": "Menininkas",
"cartoonist": "Karikatūristas",
"fileTitle": "Failo pavadinimas",
"colorPicker": "",
"colorPicker": "Spalvos parinkiklis",
"canvasColors": "",
"canvasBackground": "",
"canvasBackground": "Drobės fonas",
"drawingCanvas": "",
"layers": "",
"actions": "",
"language": "",
"liveCollaboration": "",
"layers": "Sluoksniai",
"actions": "Veiksmai",
"language": "Kalba",
"liveCollaboration": "Bendradarbiavimas gyvai...",
"duplicateSelection": "",
"untitled": "",
"name": "",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "",
"exportJSON": "Eksportuoti į failą",
"exportImage": "Išsaugoti kaip paveikslėlį",
"export": "Eksportuoti",
"exportImage": "",
"export": "",
"exportToPng": "Eksportuoti į PNG",
"exportToSvg": "Eksportuoti į SVG",
"copyToClipboard": "Kopijuoti į iškarpinę",
@ -144,7 +145,7 @@
"scale": "",
"save": "",
"saveAs": "Išsaugoti kaip",
"load": "Įkelti",
"load": "",
"getShareableLink": "Gauti nuorodą dalinimuisi",
"close": "Uždaryti",
"selectLanguage": "Pasirinkite kalbą",
@ -182,52 +183,52 @@
"decryptFailed": "",
"uploadedSecurly": "",
"loadSceneOverridePrompt": "",
"collabStopOverridePrompt": "",
"errorAddingToLibrary": "",
"errorRemovingFromLibrary": "",
"confirmAddLibrary": "",
"imageDoesNotContainScene": "",
"cannotRestoreFromImage": "",
"invalidSceneUrl": "",
"resetLibrary": "",
"removeItemsFromsLibrary": "",
"invalidEncryptionKey": ""
"collabStopOverridePrompt": "Sesijos nutraukimas perrašys ankstesnį, lokaliai išsaugotą piešinį. Ar tikrai to nori?\n\n(Jei nori išlaikyti lokalų piešinį, tiesiog uždaryk naršyklės skirtuką.)",
"errorAddingToLibrary": "Nepavyko įtraukti elemento į biblioteką",
"errorRemovingFromLibrary": "Nepavyko pašalinti elemento iš bibliotekos",
"confirmAddLibrary": "Tai įtrauks {{numShapes}} figūrą/-as į tavo biblioteką. Ar tikrai to nori?",
"imageDoesNotContainScene": "Panašu, jog šis paveiksliukas neturi scenos duomenų. Ar yra įjuntas scenos įtraukimas ekportavimo metu?",
"cannotRestoreFromImage": "Nepavyko atstatyti scenos iš šio nuotraukos failo",
"invalidSceneUrl": "Nepavyko suimportuoti scenos iš pateiktos nuorodos (URL). Ji arba blogai suformatuota, arba savyje neturi teisingų Excalidraw JSON duomenų.",
"resetLibrary": "Tai išvalys tavo biblioteką. Ar tikrai to nori?",
"removeItemsFromsLibrary": "Ištrinti {{count}} elementą/-us iš bibliotekos?",
"invalidEncryptionKey": "Šifravimo raktas turi būti iš 22 simbolių. Redagavimas gyvai yra išjungtas."
},
"errors": {
"unsupportedFileType": "",
"imageInsertError": "",
"fileTooBig": "",
"svgImageInsertError": "",
"invalidSVGString": "",
"cannotResolveCollabServer": "",
"importLibraryError": ""
"unsupportedFileType": "Nepalaikomas failo tipas.",
"imageInsertError": "Nepyko įkelti paveiksliuko. Pabandyk vėliau...",
"fileTooBig": "Per didelis failas. Didžiausias leidžiamas dydis yra {{maxSize}}.",
"svgImageInsertError": "Nepavyko įtraukti SVG paveiksliuko. Panašu, jog SVG yra nevalidus.",
"invalidSVGString": "Nevalidus SVG.",
"cannotResolveCollabServer": "Nepavyko prisijungti prie serverio bendradarbiavimui. Perkrauk puslapį ir pabandyk prisijungti dar kartą.",
"importLibraryError": "Nepavyko įkelti bibliotekos"
},
"toolBar": {
"selection": "",
"image": "",
"rectangle": "",
"diamond": "",
"ellipse": "",
"arrow": "",
"line": "",
"selection": "Žymėjimas",
"image": "Įkelti paveiksliuką",
"rectangle": "Stačiakampis",
"diamond": "Deimantas",
"ellipse": "Elipsė",
"arrow": "Rodyklė",
"line": "Linija",
"freedraw": "Piešti",
"text": "Tekstas",
"library": "Biblioteka",
"lock": "",
"penMode": "",
"link": "",
"eraser": ""
"lock": "Baigus piešti, išlaikyti pasirinktą įrankį",
"penMode": "Rašyklio režimas - neleisti prisilietimų",
"link": "Pridėti / Atnaujinti pasirinktos figūros nuorodą",
"eraser": "Trintukas"
},
"headings": {
"canvasActions": "",
"selectedShapeActions": "",
"canvasActions": "Veiksmai su drobe",
"selectedShapeActions": "Veiksmai su pasirinkta figūra",
"shapes": "Figūros"
},
"hints": {
"canvasPanning": "",
"linearElement": "",
"freeDraw": "",
"text": "",
"canvasPanning": "Norint judinti drobę, judink pelę kartu įspaudus pelės ratuką arba tarpo klavišą",
"linearElement": "Paspaudimai sukurs papildomus taškus, nepertraukiamas tempimas sukurs liniją",
"freeDraw": "Spausk ir tempk, paleisk kai norėsi pabaigti",
"text": "Užuomina: tekstą taip pat galima pridėti bet kur su dvigubu pelės paspaudimu, kol parinkas žymėjimo įrankis",
"text_selected": "",
"text_editing": "",
"linearElementMulti": "",
@ -283,72 +284,74 @@
"link_details": "",
"link_button": "",
"excalidrawplus_description": "",
"excalidrawplus_button": "",
"excalidrawplus_button": "Eksportuoti",
"excalidrawplus_exportError": ""
},
"helpDialog": {
"blog": "",
"click": "",
"click": "paspaudimas",
"deepSelect": "",
"deepBoxSelect": "",
"curvedArrow": "",
"curvedLine": "",
"documentation": "",
"doubleClick": "",
"curvedArrow": "Banguota rodyklė",
"curvedLine": "Banguota linija",
"documentation": "Dokumentacija",
"doubleClick": "dvigubas paspaudimas",
"drag": "vilkti",
"editor": "",
"editor": "Redaktorius",
"editSelectedShape": "",
"github": "",
"howto": "",
"or": "",
"github": "Radai klaidą? Pateik",
"howto": "Vadovaukis mūsų gidu",
"or": "arba",
"preventBinding": "",
"tools": "",
"shortcuts": "",
"textFinish": "",
"textNewLine": "",
"title": "",
"tools": "Įrankiai",
"shortcuts": "Spartieji klavišai",
"textFinish": "Baigti redagavimą (teksto redaktoriuje)",
"textNewLine": "Pridėti naują eilutę (tekto redaktoriuje)",
"title": "Pagalba",
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"zoomToSelection": "Priartinti iki pažymėtos vietos",
"toggleElementLock": "",
"movePageUpDown": "Pajudinti puslapį aukštyn/žemyn",
"movePageLeftRight": "Pajudinti puslapį kairėn/dešinėn"
},
"clearCanvasDialog": {
"title": ""
"title": "Išvalyti drobę"
},
"publishDialog": {
"title": "",
"itemName": "",
"authorName": "",
"githubUsername": "",
"twitterUsername": "",
"libraryName": "",
"libraryDesc": "",
"title": "Paviešinti biblioteką",
"itemName": "Elemento pavadinimas",
"authorName": "Autoriaus vardas",
"githubUsername": "Github spalyvardis",
"twitterUsername": "Twitter slapyvardis",
"libraryName": "Bibliotekos pavadinimas",
"libraryDesc": "Bibliotekos aprašas",
"website": "Tinklalapis",
"placeholder": {
"authorName": "",
"libraryName": "",
"libraryDesc": "",
"authorName": "Tavo vardas arba spalyvardis",
"libraryName": "Tavo bibliotekos pavadinimas",
"libraryDesc": "Tavo bibliotekos aprašas, padėti žmonėms geriau suprasti jos paskirtį",
"githubHandle": "",
"twitterHandle": "",
"website": ""
},
"errors": {
"required": "",
"website": ""
"required": "Privalomas",
"website": "Įveskite teisingą nuorodą (URL)"
},
"noteDescription": {
"pre": "",
"pre": "Pateik savo biblioteką, jog ji galėtų būti įtraukta į ",
"link": "",
"post": ""
"post": "jog kiti žmonės galėtų tai naudoti savo piešiniuose."
},
"noteGuidelines": {
"pre": "",
"link": "",
"pre": "Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti ",
"link": "gairės",
"post": ""
},
"noteLicense": {
"pre": "",
"link": "",
"link": "MIT licencija, ",
"post": ""
},
"noteItems": "",
@ -356,13 +359,13 @@
"republishWarning": ""
},
"publishSuccessDialog": {
"title": "",
"content": "",
"title": "Biblioteka pateikta",
"content": "Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būseną",
"link": "čia"
},
"confirmDialog": {
"resetLibrary": "",
"removeItemsFromLib": ""
"resetLibrary": "Atstatyti biblioteką",
"removeItemsFromLib": "Pašalinti pasirinktus elementus iš bibliotekos"
},
"encrypted": {
"tooltip": "",
@ -370,74 +373,82 @@
},
"stats": {
"angle": "",
"element": "",
"elements": "",
"height": "",
"scene": "",
"selected": "",
"storage": "",
"title": "",
"element": "Elementas",
"elements": "Elementai",
"height": "Aukštis",
"scene": "Scena",
"selected": "Pasirinkta",
"storage": "Saugykla",
"title": "Informacija moksliukams",
"total": "",
"version": "",
"versionCopy": "",
"versionNotAvailable": "",
"width": ""
"width": "Plotis"
},
"toast": {
"addedToLibrary": "",
"addedToLibrary": "Pridėta į biblioteką",
"copyStyles": "",
"copyToClipboard": "",
"copyToClipboard": "Nukopijuota į iškarpinę.",
"copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"fileSaved": "Failas išsaugotas.",
"fileSavedToFilename": "Išsaugota į {filename}",
"canvas": "drobė",
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
"f8f9fa": "",
"f1f3f5": "",
"fff5f5": "",
"fff0f6": "",
"ffffff": "Balta",
"f8f9fa": "Pilka 0",
"f1f3f5": "Pilka 1",
"fff5f5": "Raudona 0",
"fff0f6": "Rožinė 0",
"f8f0fc": "",
"f3f0ff": "",
"edf2ff": "",
"e7f5ff": "",
"f3f0ff": "Violetinė 0",
"edf2ff": "Indigo 0",
"e7f5ff": "Mėlyna 0",
"e3fafc": "",
"e6fcf5": "",
"ebfbee": "",
"ebfbee": "Žalia 0",
"f4fce3": "",
"fff9db": "",
"fff4e6": "",
"transparent": "",
"ced4da": "",
"868e96": "",
"fa5252": "",
"e64980": "",
"fff9db": "Geltona 0",
"fff4e6": "Oranžinė 0",
"transparent": "Permatoma",
"ced4da": "Pilka 4",
"868e96": "Pilka 6",
"fa5252": "Raudona 6",
"e64980": "Rožinė 6",
"be4bdb": "",
"7950f2": "",
"4c6ef5": "",
"228be6": "",
"7950f2": "Violetinė 6",
"4c6ef5": "Indigo 6",
"228be6": "Mėlyna 6",
"15aabf": "",
"12b886": "",
"40c057": "",
"40c057": "Žalia 6",
"82c91e": "",
"fab005": "",
"fd7e14": "",
"000000": "",
"343a40": "",
"495057": "",
"c92a2a": "",
"a61e4d": "",
"fab005": "Geltona 6",
"fd7e14": "Oranžinė 6",
"000000": "Juoda",
"343a40": "Pilna 8",
"495057": "Pilka 7",
"c92a2a": "Raudona 9",
"a61e4d": "Rožinė 9",
"862e9c": "",
"5f3dc4": "",
"364fc7": "",
"1864ab": "",
"5f3dc4": "Violetinė 9",
"364fc7": "Indigo 9",
"1864ab": "Mėlyna 9",
"0b7285": "",
"087f5b": "",
"2b8a3e": "",
"2b8a3e": "Žalia 9",
"5c940d": "",
"e67700": "",
"d9480f": ""
"e67700": "Geltona 9",
"d9480f": "Oranžinė 9"
},
"welcomeScreen": {
"data": "Visi tavo duomenys išsaugoti lokaliai naršyklėje.",
"switchToPlusApp": "Ar vietoj to norėjai patekti į Excalidraw+?",
"menuHints": "Eksportavimas, parinktys, kalbos, ...",
"toolbarHints": "Pasirink įrankį ir Pradėk piešti!",
"helpHints": "Spartieji klavišai ir pagalba"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Ielīmēt",
"pasteAsPlaintext": "",
"pasteCharts": "Ielīmēt grafikus",
"selectAll": "Atlasīt visu",
"multiSelect": "Pievienot elementu atlasei",
@ -71,7 +72,7 @@
"layers": "Slāņi",
"actions": "Darbības",
"language": "Valoda",
"liveCollaboration": "Sadarbība tiešsaistē",
"liveCollaboration": "Sadarbība tiešsaistē...",
"duplicateSelection": "Izveidot kopiju",
"untitled": "Bez nosaukuma",
"name": "Vārds",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Atiestatīt tāfeli",
"exportJSON": "Eksportēt kā failu",
"exportImage": "Saglabāt kā attēlu",
"export": "Eksportēt",
"exportImage": "Eksportēt attēlu...",
"export": "Saglabāt uz...",
"exportToPng": "Eksportēt kā PNG",
"exportToSvg": "Eksportēt kā SVG",
"copyToClipboard": "Kopēt starpliktuvē",
@ -144,7 +145,7 @@
"scale": "Mērogs",
"save": "Saglabāt pašreizējo datni",
"saveAs": "Saglabāt kā",
"load": "Ielādēt",
"load": "Atvērt",
"getShareableLink": "Iegūt kopīgošanas saiti",
"close": "Aizvērt",
"selectLanguage": "Izvēlieties valodu",
@ -214,7 +215,7 @@
"text": "Teksts",
"library": "Bibliotēka",
"lock": "Paturēt izvēlēto rīku pēc darbības",
"penMode": "Lietojot pildspalvu, bloķēt tuvināšanu un atļaut tikai zīmēšanu",
"penMode": "Pildspalvas režīms novērst pieskaršanos",
"link": "Pievienot/rediģēt atlasītās figūras saiti",
"eraser": "Dzēšgumija"
},
@ -235,7 +236,7 @@
"resize": "Kad maināt izmēru, varat ierobežot proporcijas, turot nospiestu SHIFT,\nvai arī ALT, lai mainītu izmēru ap centru",
"resizeImage": "Varat brīvi mainīt izmēru, turot nospiestu SHIFT;\nturiet nospiestu ALT, lai mainītu izmēru ap centru",
"rotate": "Rotējot varat ierobežot leņķi, turot nospiestu SHIFT",
"lineEditor_info": "Dubultklikšķiniet vai spiediet ievades taustiņu, lai rediģētu punktus",
"lineEditor_info": "",
"lineEditor_pointSelected": "Spiediet dzēšanas taustiņu, lai noņemtu punktus, CtrlOrCmd+D, lai to kopētu, vai velciet, lai pārvietotu",
"lineEditor_nothingSelected": "Atlasiet punktu, lai labotu (turiet nospiestu SHIFT, lai atlasītu vairākus),\nvai turiet Alt un clikšķiniet, lai pievienotu jaunus punktus",
"placeImage": "Klikšķiniet, lai novietotu attēlu, vai spiediet un velciet, lai iestatītu tā izmēru",
@ -310,7 +311,9 @@
"view": "Skatīt",
"zoomToFit": "Iestatīt mērogu, kas iekļauj visus elementus",
"zoomToSelection": "Iestatīt mērogu, lai rādītu atlasi",
"toggleElementLock": "Fiksēt/atbrīvot atlasīto"
"toggleElementLock": "Fiksēt/atbrīvot atlasīto",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Notīrīt tāfeli"
@ -391,7 +394,8 @@
"fileSaved": "Datne saglabāta.",
"fileSavedToFilename": "Saglabāts kā {filename}",
"canvas": "tāfeli",
"selection": "atlasi"
"selection": "atlasi",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Balts",
@ -439,5 +443,12 @@
"5c940d": "Laims 9",
"e67700": "Dzeltens 9",
"d9480f": "Oranžs 9"
},
"welcomeScreen": {
"data": "Visi jūsu dati tiek glabāti uz vietas jūsu pārlūkā.",
"switchToPlusApp": "",
"menuHints": "Eksportēšana, iestatījumi, valodas...",
"toolbarHints": "Izvēlieties rīku un sāciet zīmēt!",
"helpHints": "Saīsnes un palīdzība"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "चिटकवा",
"pasteAsPlaintext": "",
"pasteCharts": "चार्ट चिकटवा",
"selectAll": "समस्त निवडा",
"multiSelect": "निवडित तत्व जोडा",
@ -71,7 +72,7 @@
"layers": "स्तर",
"actions": "क्रिया",
"language": "भाषा",
"liveCollaboration": "थेट सहयोग",
"liveCollaboration": "ज्वलंत सहयोग...",
"duplicateSelection": "प्रतिलिपि",
"untitled": "अशीर्षकांकित",
"name": "नाव",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "पटल पुसा",
"exportJSON": "फ़ाइलमधे बाहेर ठेवा",
"exportImage": "प्रतिमेस्वरूप जतन करा",
"export": "बाहेर ठेवा",
"exportImage": "प्रतिमा निर्यात करा...",
"export": "येथे सुरक्षित करा...",
"exportToPng": "पी-एन-जी स्वरूपात बाहेर ठेवा",
"exportToSvg": "एस-वी-जी स्वरूपात बाहेर ठेवा",
"copyToClipboard": "फळी वर कॉपी करा",
@ -144,7 +145,7 @@
"scale": "मोजपट्टी",
"save": "वर्तमान फ़ाइल मधे जतन करा",
"saveAs": "ह्या नावाने जतन करा",
"load": "बाहेरुन भरा",
"load": "उघडा",
"getShareableLink": "सामायिके साठी दुवा प्राप्त करा",
"close": "बंद करा",
"selectLanguage": "भाषा निवड करा",
@ -214,7 +215,7 @@
"text": "टेक्स्ट",
"library": "संग्रह",
"lock": "निवडलेले यंत्र चित्रकरण झाल्या नंतर ही सक्रिय ठेवा",
"penMode": "पिंच-झूम प्रतिबंधित करा आणि फक्त पेन हे यंत्र मुक्त चित्री करण साठी स्वीकारा",
"penMode": "पेन चा मोड - स्पर्श टाळा",
"link": "निवडलेल्या आकारासाठी दुवा जोडा/बदल करा",
"eraser": "खोड रबर"
},
@ -235,7 +236,7 @@
"resize": "आकार छोटा मोठा करताना SHIFT धरून तुम्ही प्रमाण मर्यादित करू शकता, \nकेंद्रापासून आकार छोटा मोठा करण्यासाठी ALT धरून ठेवा",
"resizeImage": "SHIFT धरून तुम्ही मुक्तपणे आकार मोठा छोटा करु शकता,\nकेंद्रापासून आकार मोठा छोटा करण्यासाठी ALT धरून ठेवा",
"rotate": "फिरवत असताना शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता",
"lineEditor_info": "बिंदु संपादित करण्या साठी दुहेरी क्लिक किव्हा एंटर की दाबा",
"lineEditor_info": "",
"lineEditor_pointSelected": "बिंदु (एक किव्हा अनेक) काढ़ण्या साठी डिलीट की दाबा,\nCtrlOrCmd बरोबार D प्रति साठी,\nकिव्हा ड्रेग हलवण्या साठी",
"lineEditor_nothingSelected": "संपादित करण्यासाठी एक बिंदू निवडा (अनेक निवडण्यासाठी SHIFT धरून ठेवा),\nकिंवा Alt धरून ठेवा आणि नवीन बिंदू जोडण्यासाठी क्लिक करा",
"placeImage": "प्रतिमा ठेवण्यासाठी क्लिक करा, किंवा त्याचा आकार बदलण्या साठी क्लिक करा आणि ड्रॅग करा",
@ -310,7 +311,9 @@
"view": "दृश्य",
"zoomToFit": "सर्व तत्व दिसतील असे दृश्यरूप आकार करा",
"zoomToSelection": "निवडी प्रयंत दृश्यरूप आकार करा",
"toggleElementLock": "कुलूपातून आत/बाहेर निवड"
"toggleElementLock": "कुलूपातून आत/बाहेर निवड",
"movePageUpDown": "पान वर/खाली करा",
"movePageLeftRight": "पान डावी/उजवी कडे करा"
},
"clearCanvasDialog": {
"title": "पटल स्वच्छ करा"
@ -391,7 +394,8 @@
"fileSaved": "फ़ाइल जतन झाली.",
"fileSavedToFilename": "{filename} मधे जतन झाली",
"canvas": "पटल",
"selection": "निवड"
"selection": "निवड",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "पांढरा",
@ -439,5 +443,12 @@
"5c940d": "नीबू 9",
"e67700": "पीला 9",
"d9480f": "नारंगी 9"
},
"welcomeScreen": {
"data": "तुमचा सर्व डेटा ब्राउज़र मधे स्थानिक जागेत सुरक्षित झाला.",
"switchToPlusApp": "त्याएवजी तुम्हाला Excalidraw+ पर्याय हवा आहे का?",
"menuHints": "निर्यात, पसंती, भाषा, ...",
"toolbarHints": "साधन निवडा आणि चित्रीकरण सुरु करा!",
"helpHints": "शॉर्टकट & सहाय"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "ထား",
"pasteAsPlaintext": "",
"pasteCharts": "",
"selectAll": "အကုန်ရွေး",
"multiSelect": "ရွေးထားသည့်ထဲပုံထည့်",
@ -136,7 +137,7 @@
"clearReset": "ကားချပ်ရှင်းလင်း",
"exportJSON": "",
"exportImage": "",
"export": "ထုတ်",
"export": "",
"exportToPng": "PNG ထုတ်",
"exportToSvg": "SVG ထုတ်",
"copyToClipboard": "ကူးယူ",
@ -144,7 +145,7 @@
"scale": "စကေး",
"save": "",
"saveAs": "ပြောင်းသိမ်း",
"load": "တင်သွင်း",
"load": "",
"getShareableLink": "မျှဝေရန် လင့်ခ်ရယူ",
"close": "ပိတ်",
"selectLanguage": "ဘာသာစကားရွေးပါ",
@ -235,7 +236,7 @@
"resize": "အချိုးအစားကန့်သတ်ရန် Shift နှင့် ဗဟိုမှချိန်ညှိရန် Alt တို့ကိုနှိပ်ထားနိုင်သည်",
"resizeImage": "",
"rotate": "Shift ကိုနှိပ်ထားခြင်းဖြင့် ထောင့်အလိုက်လှည့်နိုင်သည်",
"lineEditor_info": "အမှတ်များပြင်ဆင်သတ်မှတ်ရင် ကလစ်နှစ်ချက် (သို့) Enter ကိုနှိပ်ပါ",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -310,7 +311,9 @@
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Lim inn",
"pasteAsPlaintext": "Lim inn som klartekst",
"pasteCharts": "Lim inn diagrammer",
"selectAll": "Velg alt",
"multiSelect": "Legg til element i utvalg",
@ -71,7 +72,7 @@
"layers": "Lag",
"actions": "Handlinger",
"language": "Språk",
"liveCollaboration": "Sanntids-samarbeid",
"liveCollaboration": "Sanntids-samarbeid...",
"duplicateSelection": "Dupliser",
"untitled": "Uten navn",
"name": "Navn",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Tøm lerretet og tilbakestill bakgrunnsfargen",
"exportJSON": "Eksporter til fil",
"exportImage": "Lagre som bilde",
"export": "Eksporter",
"exportImage": "Eksporter bilde...",
"export": "Lagre som...",
"exportToPng": "Eksporter til PNG",
"exportToSvg": "Eksporter til SVG",
"copyToClipboard": "Kopier til utklippstavle",
@ -214,7 +215,7 @@
"text": "Tekst",
"library": "Bibliotek",
"lock": "Behold merket verktøy som aktivt",
"penMode": "Forhindre zoom ved kniping og godta frihåndstegning kun fra penn",
"penMode": "Pennemodus - forhindre berøring",
"link": "Legg til / oppdater link for en valgt figur",
"eraser": "Viskelær"
},
@ -235,7 +236,7 @@
"resize": "Du kan beholde forholdet ved å trykke SHIFT mens du endrer størrelse,\ntrykk ALT for å endre størrelsen fra midten",
"resizeImage": "Du kan endre størrelse fritt ved å holde SHIFT,\nhold ALT for å endre størrelse fra midten",
"rotate": "Du kan låse vinklene ved å holde SHIFT mens du roterer",
"lineEditor_info": "Dobbeltklikk eller trykk Enter for å redigere punkter",
"lineEditor_info": "Hold Ctrl/Cmd og dobbelklikk eller trykk Ctrl/Cmd + Enter for å endre punkter",
"lineEditor_pointSelected": "Trykk på Slett for å fjerne punktet, Ctrl / Cmd+D for å duplisere, eller dra for å flytte",
"lineEditor_nothingSelected": "Velg et punkt å redigere (hold SHIFT for å velge flere),\neller hold Alt og klikk for å legge til nye punkter",
"placeImage": "Klikk for å plassere bildet, eller klikk og dra for å angi størrelsen manuelt",
@ -310,7 +311,9 @@
"view": "Vis",
"zoomToFit": "Zoom for å se alle elementer",
"zoomToSelection": "Zoom til utvalg",
"toggleElementLock": "Lås/lås opp utvalg"
"toggleElementLock": "Lås/lås opp utvalg",
"movePageUpDown": "Flytt side opp/ned",
"movePageLeftRight": "Flytt siden til venstre/høyre"
},
"clearCanvasDialog": {
"title": "Tøm lerret"
@ -391,7 +394,8 @@
"fileSaved": "Fil lagret.",
"fileSavedToFilename": "Lagret til {filename}",
"canvas": "lerret",
"selection": "utvalg"
"selection": "utvalg",
"pasteAsSingleElement": "Bruk {{shortcut}} for å lime inn som ett enkelt element,\neller lim inn i en eksisterende tekstbehandler"
},
"colors": {
"ffffff": "Hvit",
@ -439,5 +443,12 @@
"5c940d": "Limegrønn 9",
"e67700": "Gul 9",
"d9480f": "Oransje 9"
},
"welcomeScreen": {
"data": "Alle dine data lagres lokalt i din nettleser.",
"switchToPlusApp": "Ønsker du å gå til Excalidraw+ i stedet?",
"menuHints": "Eksporter, innstillinger, språk, ...",
"toolbarHints": "Velg et verktøy og start å tegne!",
"helpHints": "Snarveier & hjelp"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Plakken",
"pasteAsPlaintext": "Plakken als platte tekst",
"pasteCharts": "Plak grafieken",
"selectAll": "Alles selecteren",
"multiSelect": "Voeg element toe aan selectie",
@ -9,14 +10,14 @@
"copy": "Kopiëren",
"copyAsPng": "Kopieer als PNG",
"copyAsSvg": "Kopieer naar klembord als SVG",
"copyText": "Kopiëren naar klembord als tekst",
"copyText": "Kopieer naar klembord als tekst",
"bringForward": "Breng naar voren",
"sendToBack": "Stuur naar achtergrond",
"bringToFront": "Breng naar voorgrond",
"sendBackward": "Breng naar achter",
"delete": "Verwijderen",
"copyStyles": "Opmaak kopiëren",
"pasteStyles": "Opmaak plakken",
"copyStyles": "Kopieer opmaak",
"pasteStyles": "Plak opmaak",
"stroke": "Lijn",
"background": "Achtergrond",
"fill": "Invulling",
@ -71,7 +72,7 @@
"layers": "Lagen",
"actions": "Acties",
"language": "Taal",
"liveCollaboration": "Live Samenwerking",
"liveCollaboration": "Live Samenwerking...",
"duplicateSelection": "Dupliceer",
"untitled": "Naamloos",
"name": "Naam",
@ -105,38 +106,38 @@
"toggleTheme": "Thema aan/uit",
"personalLib": "Persoonlijke bibliotheek",
"excalidrawLib": "Excalidraw bibliotheek",
"decreaseFontSize": "",
"increaseFontSize": "",
"decreaseFontSize": "Letters verkleinen",
"increaseFontSize": "Letters vergroten",
"unbindText": "Ontkoppel tekst",
"bindText": "",
"bindText": "Koppel tekst aan de container",
"link": {
"edit": "",
"create": "",
"label": ""
"edit": "Wijzig link",
"create": "Maak link",
"label": "Link"
},
"lineEditor": {
"edit": "Bewerk regel",
"exit": "Verlaat regel-editor"
},
"elementLock": {
"lock": "",
"unlock": "",
"lockAll": "",
"unlockAll": ""
"lock": "Vergrendel",
"unlock": "Ontgrendel",
"lockAll": "Vergrendel alles",
"unlockAll": "Ontgrendel alles"
},
"statusPublished": "",
"sidebarLock": ""
"statusPublished": "Gepubliceerd",
"sidebarLock": "Zijbalk open houden"
},
"library": {
"noItems": "",
"hint_emptyLibrary": "",
"hint_emptyPrivateLibrary": ""
"noItems": "Nog geen items toegevoegd...",
"hint_emptyLibrary": "Selecteer een item op het canvas om het hier toe te voegen of installeer een bibliotheek uit de openbare repository, hieronder.",
"hint_emptyPrivateLibrary": "Selecteer een item op het canvas om het hier toe te voegen."
},
"buttons": {
"clearReset": "Canvas opnieuw instellen",
"exportJSON": "Exporteren naar bestand",
"exportImage": "Als afbeelding opslaan",
"export": "Exporteren",
"exportImage": "Exporteer afbeelding...",
"export": "Sla op...",
"exportToPng": "Exporteren naar PNG",
"exportToSvg": "Exporteren naar SVG",
"copyToClipboard": "Kopieer",
@ -181,11 +182,11 @@
"couldNotCopyToClipboard": "Kon niet naar klembord kopiëren.",
"decryptFailed": "Kan gegevens niet decoderen.",
"uploadedSecurly": "De upload is beveiligd met end-to-end encryptie, wat betekent dat de Excalidraw server en derden de inhoud niet kunnen lezen.",
"loadSceneOverridePrompt": "Het laden van externe tekening zal uw bestaande inhoud vervangen. Wil je doorgaan?",
"loadSceneOverridePrompt": "Het inladen van een externe tekening zal je bestaande inhoud vervangen. Wil je verdergaan?",
"collabStopOverridePrompt": "Wanneer de sessie wordt gestopt, overschrijft u de eerdere, lokaal opgeslagen tekening. Weet je het zeker?\n\n(Als je de lokale tekening wilt behouden, sluit je in plaats daarvan het browsertabblad)",
"errorAddingToLibrary": "Kan item niet toevoegen aan de bibliotheek",
"errorRemovingFromLibrary": "Kan item niet uit de bibliotheek verwijderen",
"confirmAddLibrary": "Hiermee worden {{numShapes}} vorm(n) aan uw bibliotheek toegevoegd. Ben je het zeker?",
"confirmAddLibrary": "Dit zal {{numShapes}} vorm(en) toevoegen aan je bibliotheek. Weet je het zeker?",
"imageDoesNotContainScene": "Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je scène embedding tijdens het exporteren ingeschakeld?",
"cannotRestoreFromImage": "Scène kan niet worden hersteld vanuit dit afbeeldingsbestand",
"invalidSceneUrl": "Kan scène niet importeren vanuit de opgegeven URL. Het is onjuist of bevat geen geldige Excalidraw JSON-gegevens.",
@ -197,26 +198,26 @@
"unsupportedFileType": "Niet-ondersteund bestandstype.",
"imageInsertError": "Afbeelding invoegen mislukt. Probeer het later opnieuw...",
"fileTooBig": "Bestand is te groot. Maximale grootte is {{maxSize}}.",
"svgImageInsertError": "",
"svgImageInsertError": "Kon geen SVG-afbeelding invoegen. De SVG-opmaak ziet er niet geldig uit.",
"invalidSVGString": "Ongeldige SVG.",
"cannotResolveCollabServer": "",
"importLibraryError": ""
"cannotResolveCollabServer": "Kan geen verbinding maken met de collab server. Herlaad de pagina en probeer het opnieuw.",
"importLibraryError": "Kon bibliotheek niet laden"
},
"toolBar": {
"selection": "Selectie",
"image": "",
"image": "Voeg afbeelding in",
"rectangle": "Rechthoek",
"diamond": "Ruit",
"ellipse": "Ovaal",
"arrow": "Pijl",
"line": "Lijn",
"freedraw": "Tekenen",
"freedraw": "Teken",
"text": "Tekst",
"library": "Bibliotheek",
"lock": "Geselecteerde tool actief houden na tekenen",
"penMode": "Voorkom pinch-zoom en accepteer freedraw invoer alleen van pen",
"penMode": "Pen modus - Blokkeer aanraken",
"link": "",
"eraser": ""
"eraser": "Gum"
},
"headings": {
"canvasActions": "Canvasacties",
@ -235,7 +236,7 @@
"resize": "Houd tijdens het vergroten SHIFT ingedrukt om verhoudingen te behouden,\ngebruik ALT om vanuit het midden te vergroten/verkleinen",
"resizeImage": "",
"rotate": "Je kan hoeken beperken door SHIFT ingedrukt te houden wanneer je draait",
"lineEditor_info": "Dubbelklik of druk op Enter om punten te bewerken",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -258,15 +259,15 @@
"trackedToSentry_pre": "De fout met ID ",
"trackedToSentry_post": " was gevolgd op ons systeem.",
"openIssueMessage_pre": "We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze ",
"openIssueMessage_button": "bug tracker.",
"openIssueMessage_button": "bugtracker.",
"openIssueMessage_post": " Kopieer de informatie hieronder naar de GitHub issue.",
"sceneContent": "Scène-inhoud:"
},
"roomDialog": {
"desc_intro": "Je kunt mensen uitnodigen om met je samen te werken.",
"desc_privacy": "Geen zorgen, de sessie gebruikt end-to-end encryptie, dus wat je tekent blijft privé. Zelfs onze server zal niet kunnen zien wat je tekent.",
"button_startSession": "Sessie starten",
"button_stopSession": "Sessie afbreken",
"button_startSession": "Start sessie",
"button_stopSession": "Stop sessie",
"desc_inProgressIntro": "De live-samenwerkingssessie is nu gestart.",
"desc_shareLink": "Deel deze link met iedereen waarmee je wil samenwerken:",
"desc_exitSession": "Het stoppen van de sessie zal je loskoppelen van de kamer, maar je kunt lokaal doorwerken met de scène.\nPas op: dit heeft geen invloed op andere mensen en dat zij nog steeds in staat zullen zijn om samen te werken aan hun versie.",
@ -283,7 +284,7 @@
"link_details": "Exporteren als een alleen-lezen link.",
"link_button": "Exporteer naar link",
"excalidrawplus_description": "Sla de scène op in je Excalidraw+ werkruimte.",
"excalidrawplus_button": "Exporteren",
"excalidrawplus_button": "Exporteer",
"excalidrawplus_exportError": "Kan op dit moment niet exporteren naar Excalidraw+..."
},
"helpDialog": {
@ -302,7 +303,7 @@
"howto": "Volg onze handleidingen",
"or": "of",
"preventBinding": "Pijlbinding voorkomen",
"tools": "",
"tools": "Tools",
"shortcuts": "Sneltoetsen",
"textFinish": "Voltooi het bewerken (teksteditor)",
"textNewLine": "Nieuwe regel toevoegen (teksteditor)",
@ -310,10 +311,12 @@
"view": "Weergave",
"zoomToFit": "Zoom in op alle elementen",
"zoomToSelection": "Inzoomen op selectie",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "Pagina omhoog/omlaag",
"movePageLeftRight": "Verplaats pagina links/rechts"
},
"clearCanvasDialog": {
"title": ""
"title": "Wis canvas"
},
"publishDialog": {
"title": "Publiceer bibliotheek",
@ -321,13 +324,13 @@
"authorName": "Naam auteur",
"githubUsername": "GitHub gebruikersnaam",
"twitterUsername": "Twitter gebruikersnaam",
"libraryName": "Bibliotheek naam",
"libraryDesc": "Bibliotheek beschrijving",
"libraryName": "Naam bibliotheek",
"libraryDesc": "Beschrijving van de bibliotheek",
"website": "Website",
"placeholder": {
"authorName": "Uw naam of gebruikersnaam:",
"authorName": "Je naam of gebruikersnaam",
"libraryName": "Naam van je bibliotheek",
"libraryDesc": "Beschrijving van uw bibliotheek om mensen te helpen het gebruik ervan te begrijpen",
"libraryDesc": "Beschrijving van je bibliotheek om mensen te helpen het gebruik ervan te begrijpen",
"githubHandle": "",
"twitterHandle": "",
"website": "Link naar je persoonlijke website of elders (optioneel)"
@ -343,12 +346,12 @@
},
"noteGuidelines": {
"pre": "",
"link": "",
"link": "richtlijnen",
"post": ""
},
"noteLicense": {
"pre": "",
"link": "",
"link": "MIT-licentie, ",
"post": ""
},
"noteItems": "",
@ -391,7 +394,8 @@
"fileSaved": "Bestand opgeslagen.",
"fileSavedToFilename": "Opgeslagen als {filename}",
"canvas": "canvas",
"selection": "selectie"
"selection": "selectie",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Wit",
@ -439,5 +443,12 @@
"5c940d": "Limoen 9",
"e67700": "Geel 9",
"d9480f": "Oranje 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Lim inn",
"pasteAsPlaintext": "",
"pasteCharts": "Lim inn diagram",
"selectAll": "Vel alt",
"multiSelect": "Legg til element i utval",
@ -71,7 +72,7 @@
"layers": "Lag",
"actions": "Handlingar",
"language": "Språk",
"liveCollaboration": "Sanntids-samarbeid",
"liveCollaboration": "",
"duplicateSelection": "Dupliser",
"untitled": "Utan namn",
"name": "Namn",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Tilbakestill lerretet",
"exportJSON": "Eksporter til fil",
"exportImage": "Lagre som bilete",
"export": "Eksporter",
"exportImage": "",
"export": "",
"exportToPng": "Eksporter til PNG",
"exportToSvg": "Eksporter til SVG",
"copyToClipboard": "Kopier til utklippstavla",
@ -144,7 +145,7 @@
"scale": "Skaler",
"save": "Lagre til noverande fil",
"saveAs": "Lagre som",
"load": "Opne",
"load": "",
"getShareableLink": "Hent delingslenke",
"close": "Lukk",
"selectLanguage": "Vel språk",
@ -214,7 +215,7 @@
"text": "Tekst",
"library": "Bibliotek",
"lock": "Hald fram med valt verktøy",
"penMode": "Forhindre zoom ved kniping og godta frihandsteikning kun frå penn",
"penMode": "",
"link": "Legg til/ oppdater lenke til valt figur",
"eraser": "Viskelêr"
},
@ -235,7 +236,7 @@
"resize": "Du kan halde fram med forholdet ved å trykke SHIFT medan du endrar storleik,\ntrykk ALT for å endre storleiken frå midten",
"resizeImage": "Du kan endre storleiken fritt ved å halde inne SHIFT,\nhald ALT for å endre storleik frå sentrum",
"rotate": "Du kan låse vinklane ved å halde SHIFT medan du roterer",
"lineEditor_info": "Dobbeltklikk eller trykk Enter for å redigere punkt",
"lineEditor_info": "",
"lineEditor_pointSelected": "Trykk på Slett for å fjerne punkt(a),\nCtrl / Cmd+D for å duplisere, eller drag for å flytte",
"lineEditor_nothingSelected": "Vel eit punkt å redigere (hald inne SHIFT for å velje fleire),\neller hald inne Alt og klikk for å legge til nye punkt",
"placeImage": "Klikk for å plassere biletet, eller klikk og drag for å velje storleik manuelt",
@ -310,7 +311,9 @@
"view": "Vising",
"zoomToFit": "Zoom for å sjå alle elementa",
"zoomToSelection": "Zoom til utval",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Tøm lerretet"
@ -391,7 +394,8 @@
"fileSaved": "Fila er lagra.",
"fileSavedToFilename": "Lagra som {filename}",
"canvas": "lerret",
"selection": "val"
"selection": "val",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Kvit",
@ -439,5 +443,12 @@
"5c940d": "Limegrøn 9",
"e67700": "Gul 9",
"d9480f": "Oransj 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Pegar",
"pasteAsPlaintext": "Pegar en tèxt brut",
"pasteCharts": "Pegar los grafics",
"selectAll": "Tot seleccionar",
"multiSelect": "Apondre un element a la seleccion",
@ -71,7 +72,7 @@
"layers": "Calques",
"actions": "Accions",
"language": "Lenga",
"liveCollaboration": "Collaboracion en dirèct",
"liveCollaboration": "Collaboracion en dirèct...",
"duplicateSelection": "Duplicar",
"untitled": "Sens títol",
"name": "Nom",
@ -129,14 +130,14 @@
},
"library": {
"noItems": "Cap delement pas encara apondut...",
"hint_emptyLibrary": "",
"hint_emptyPrivateLibrary": ""
"hint_emptyLibrary": "Seleccionatz un element dapondre aquí, o installatz una bibliotèca del depaus public, çai-jos.",
"hint_emptyPrivateLibrary": "Seleccionatz un element dapondre aquí pel canabàs."
},
"buttons": {
"clearReset": "Reïnicializar lo canabàs",
"exportJSON": "Exportar en fichièr",
"exportImage": "Salvar coma imatge",
"export": "Exportar",
"exportImage": "Exportar imatges...",
"export": "Enregistrar dins...",
"exportToPng": "Exportar en PNG",
"exportToSvg": "Exportar en SVG",
"copyToClipboard": "Copiar al quichapapièrs",
@ -144,7 +145,7 @@
"scale": "Escala",
"save": "Salvar al fichièr actual",
"saveAs": "Enregistrar jos",
"load": "Cargar",
"load": "Dobrir",
"getShareableLink": "Obténer lo ligam de partatge",
"close": "Tampar",
"selectLanguage": "Causir una lenga",
@ -214,7 +215,7 @@
"text": "Tèxt",
"library": "Bibliotèca",
"lock": "Mantenir activa laisina aprèp dessenhar",
"penMode": "Empachar lagradiment tactil e acceptar la picada liura solament amb un estilò",
"penMode": "Mòde estilo - empachar lo contact",
"link": "Apondre/Actualizar lo ligam per una fòrma seleccionada",
"eraser": "Goma"
},
@ -235,7 +236,7 @@
"resize": "Podètz servar las proporcions en mantenent la tòca MAJ pendent lo redimensionament,\nmantenètz la tòca ALT per redimensionar a partir del centre",
"resizeImage": "Podètz retalhar liurament en quichant CTRL,\nquichatz ALT per retalhar a partir del centre",
"rotate": "Podètz restrénger los angles en mantenent MAJ pendent la rotacion",
"lineEditor_info": "Doble-clicatz o quichatz Entrada per modificar los punts",
"lineEditor_info": "",
"lineEditor_pointSelected": "Quichar Suprimir per tirar lo(s) punt(s),\nCtrlOCmd+D per duplicar, o lisatz per desplaçar",
"lineEditor_nothingSelected": "Seleccionar un punt deditar (manténer Maj. per ne seleccionar mantun),\no manténer Alt e clicar per napondre de novèls",
"placeImage": "Clicatz per plaçar limatge, o clicatz e lisatz per definir sa talha manualament",
@ -310,7 +311,9 @@
"view": "Vista",
"zoomToFit": "Zoomar per veire totes los elements",
"zoomToSelection": "Zoomar la seleccion",
"toggleElementLock": "Verrolhar/Desverrolhar la seleccion"
"toggleElementLock": "Verrolhar/Desverrolhar la seleccion",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Escafar canabàs"
@ -353,7 +356,7 @@
},
"noteItems": "Cada element de bibliotèca deu aver un nom pròpri per èsser filtrable. Los elements de bibliotèca seguentas seràn incluses:",
"atleastOneLibItem": "Volgatz seleccionar almens un element de bibliotèca per començar",
"republishWarning": ""
"republishWarning": "Nòta: dunes elements seleccionats son marcats ja coma publicats/enviats. Deuriatz sonque tornar enviar los elements pendent lactualizacion duna bibliotèca existenta o un mandadís."
},
"publishSuccessDialog": {
"title": "Bibliotèca somesa",
@ -391,7 +394,8 @@
"fileSaved": "Fichièr enregistrat.",
"fileSavedToFilename": "Enregistrat jos {filename}",
"canvas": "canabàs",
"selection": "seleccion"
"selection": "seleccion",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Blanc",
@ -439,5 +443,12 @@
"5c940d": "Verd citron 9",
"e67700": "Jaune 9",
"d9480f": "Irange 9"
},
"welcomeScreen": {
"data": "Totas las donadas son enregistradas dins vòstre navegador.",
"switchToPlusApp": "Volètz puslèu utilizar Excalidraw+?",
"menuHints": "Exportar, preferéncias, lengas, ...",
"toolbarHints": "Prenètz un esplech e començatz de dessenhar!",
"helpHints": "Acorchis e ajuda"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "ਪੇਸਟ ਕਰੋ",
"pasteAsPlaintext": "",
"pasteCharts": "ਚਾਰਟ ਪੇਸਟ ਕਰੋ",
"selectAll": "ਸਾਰੇ ਚੁਣੋ",
"multiSelect": "ਐਲੀਮੈਂਟ ਨੂੰ ਚੋਣ ਵਿੱਚ ਜੋੜੋ",
@ -71,7 +72,7 @@
"layers": "ਪਰਤਾਂ",
"actions": "ਕਾਰਵਾਈਆਂ",
"language": "ਭਾਸ਼ਾ",
"liveCollaboration": "ਲਾਇਵ ਸਹਿਯੋਗ",
"liveCollaboration": "",
"duplicateSelection": "ਡੁਪਲੀਕੇਟ ਬਣਾਓ",
"untitled": "ਬੇ-ਸਿਰਨਾਵਾਂ",
"name": "ਨਾਂ",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "ਕੈਨਵਸ ਰੀਸੈੱਟ ਕਰੋ",
"exportJSON": "ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ",
"exportImage": "ਤਸਵੀਰ ਵਜੋਂ ਸਾਂਭੋ",
"export": "ਨਿਰਯਾਤ",
"exportImage": "",
"export": "",
"exportToPng": "PNG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ",
"exportToSvg": "SVG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ",
"copyToClipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ",
@ -144,7 +145,7 @@
"scale": "ਪੈਮਾਇਸ਼",
"save": "ਮੌਜੂਦਾ ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ",
"saveAs": "ਇਸ ਵਜੋਂ ਸਾਂਭੋ",
"load": "ਲੋਡ ਕਰੋ",
"load": "",
"getShareableLink": "ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਲਵੋ",
"close": "ਬੰਦ ਕਰੋ",
"selectLanguage": "ਭਾਸ਼ਾ ਚੁਣੋ",
@ -235,7 +236,7 @@
"resize": "ਤੁਸੀਂ ਅਕਾਰ ਬਦਲਦੇ ਸਮੇਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਅਨੁਪਾਤ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ, ਵਿਚਕਾਰ ਤੋਂ ਅਕਾਰ ਬਦਲਣ ਲਈ ALT ਦਬਾਓ",
"resizeImage": "",
"rotate": "ਤੁਸੀਂ ਘੁਮਾਉਂਦੇ ਹੋਏ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ",
"lineEditor_info": "ਬਿੰਦੂਆਂ ਨੂੰ ਸੋਧਣ ਲਈ ਡਬਲ-ਕਲਿੱਕ ਜਾਂ ਐਂਟਰ ਦਬਾਓ",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "",
@ -310,7 +311,9 @@
"view": "ਦਿੱਖ",
"zoomToFit": "ਸਾਰੇ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ",
"zoomToSelection": "ਚੋਣ ਤੱਕ ਜ਼ੂਮ ਕਰੋ",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "ਕੈਨਵਸ ਨੂੰ ਸਾਫ਼ ਕਰੋ"
@ -391,7 +394,8 @@
"fileSaved": "ਫਾਈਲ ਸਾਂਭੀ ਗਈ।",
"fileSavedToFilename": "{filename} ਵਿੱਚ ਸਾਂਭੀ",
"canvas": "ਕੈਨਵਸ",
"selection": "ਚੋਣ"
"selection": "ਚੋਣ",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "ਚਿੱਟਾ",
@ -439,5 +443,12 @@
"5c940d": "ਲਾਇਮ 9",
"e67700": "ਪੀਲਾ 9",
"d9480f": "ਸੰਤਰੀ 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,52 +1,52 @@
{
"ar-SA": 90,
"bg-BG": 58,
"bn-BD": 64,
"ca-ES": 99,
"cs-CZ": 66,
"da-DK": 34,
"de-DE": 100,
"el-GR": 99,
"ar-SA": 87,
"bg-BG": 55,
"bn-BD": 61,
"ca-ES": 95,
"cs-CZ": 76,
"da-DK": 33,
"de-DE": 99,
"el-GR": 95,
"en": 100,
"es-ES": 99,
"eu-ES": 99,
"es-ES": 100,
"eu-ES": 98,
"fa-IR": 98,
"fi-FI": 97,
"fr-FR": 100,
"gl-ES": 45,
"he-IL": 94,
"hi-IN": 69,
"hu-HU": 94,
"fi-FI": 94,
"fr-FR": 98,
"gl-ES": 98,
"he-IL": 91,
"hi-IN": 70,
"hu-HU": 90,
"id-ID": 100,
"it-IT": 100,
"ja-JP": 99,
"ja-JP": 98,
"kab-KAB": 95,
"kk-KZ": 22,
"ko-KR": 100,
"ku-TR": 100,
"lt-LT": 23,
"lv-LV": 100,
"mr-IN": 100,
"my-MM": 44,
"kk-KZ": 21,
"ko-KR": 96,
"ku-TR": 98,
"lt-LT": 66,
"lv-LV": 98,
"mr-IN": 99,
"my-MM": 42,
"nb-NO": 100,
"nl-NL": 86,
"nn-NO": 95,
"oc-FR": 99,
"pa-IN": 87,
"pl-PL": 89,
"pt-BR": 100,
"pt-PT": 99,
"nl-NL": 91,
"nn-NO": 91,
"oc-FR": 98,
"pa-IN": 84,
"pl-PL": 85,
"pt-BR": 97,
"pt-PT": 98,
"ro-RO": 100,
"ru-RU": 99,
"ru-RU": 100,
"si-LK": 8,
"sk-SK": 100,
"sl-SI": 100,
"sv-SE": 99,
"ta-IN": 97,
"tr-TR": 100,
"uk-UA": 100,
"vi-VN": 16,
"zh-CN": 100,
"zh-HK": 27,
"sv-SE": 98,
"ta-IN": 94,
"tr-TR": 99,
"uk-UA": 98,
"vi-VN": 20,
"zh-CN": 98,
"zh-HK": 26,
"zh-TW": 100
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Wklej",
"pasteAsPlaintext": "",
"pasteCharts": "Wklej wykresy",
"selectAll": "Zaznacz wszystko",
"multiSelect": "Dodaj element do zaznaczenia",
@ -71,7 +72,7 @@
"layers": "Warstwy",
"actions": "Akcje",
"language": "Język",
"liveCollaboration": "Współpraca na żywo",
"liveCollaboration": "",
"duplicateSelection": "Powiel",
"untitled": "Bez tytułu",
"name": "Nazwa",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Wyczyść dokument i zresetuj kolor dokumentu",
"exportJSON": "Eksportuj do pliku",
"exportImage": "Zapisz jako obraz",
"export": "Zapisz jako",
"exportImage": "",
"export": "",
"exportToPng": "Zapisz jako PNG",
"exportToSvg": "Zapisz jako SVG",
"copyToClipboard": "Skopiuj do schowka",
@ -144,7 +145,7 @@
"scale": "Skala",
"save": "",
"saveAs": "Zapisz jako",
"load": "Otwórz",
"load": "",
"getShareableLink": "Udostępnij",
"close": "Zamknij",
"selectLanguage": "Wybierz język",
@ -235,7 +236,7 @@
"resize": "Możesz zachować proporcję trzymająć wcisnięty SHIFT, przytrzymaj ALT by zmienić rozmiar względem środka",
"resizeImage": "Możesz zmienić rozmiar swobodnie trzymając SHIFT,\nprzytrzymaj ALT, aby przeskalować względem środka obiektu",
"rotate": "Możesz obracać element w równych odstępach trzymając wciśnięty SHIFT",
"lineEditor_info": "Kliknij dwukrotnie lub naciśnij Enter, aby edytować punkty",
"lineEditor_info": "",
"lineEditor_pointSelected": "",
"lineEditor_nothingSelected": "",
"placeImage": "Kliknij, aby umieścić obraz, lub kliknij i przeciągnij, aby ustawić jego rozmiar ręcznie",
@ -310,7 +311,9 @@
"view": "Widok",
"zoomToFit": "Powiększ, aby wyświetlić wszystkie elementy",
"zoomToSelection": "Przybliż do zaznaczenia",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Wyczyść płótno"
@ -391,7 +394,8 @@
"fileSaved": "Zapisano plik.",
"fileSavedToFilename": "Zapisano jako {filename}",
"canvas": "płótno",
"selection": "zaznaczenie"
"selection": "zaznaczenie",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Biały",
@ -439,5 +443,12 @@
"5c940d": "Limonkowy 9",
"e67700": "Żółty 9",
"d9480f": "Pomarańczowy 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Colar",
"pasteAsPlaintext": "",
"pasteCharts": "Colar gráficos",
"selectAll": "Selecionar tudo",
"multiSelect": "Adicionar elemento à seleção",
@ -71,7 +72,7 @@
"layers": "Camadas",
"actions": "Ações",
"language": "Idioma",
"liveCollaboration": "Colaboração ao vivo",
"liveCollaboration": "Colaboração ao vivo...",
"duplicateSelection": "Duplicar",
"untitled": "Sem título",
"name": "Nome",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Limpar o canvas e redefinir a cor de fundo",
"exportJSON": "Exportar arquivo",
"exportImage": "Salvar como imagem",
"export": "Exportar",
"exportImage": "Exportar imagem...",
"export": "Salvar como...",
"exportToPng": "Exportar em PNG",
"exportToSvg": "Exportar em SVG",
"copyToClipboard": "Copiar para o clipboard",
@ -144,7 +145,7 @@
"scale": "Escala",
"save": "Salvar para o arquivo atual",
"saveAs": "Salvar como",
"load": "Carregar",
"load": "Abrir",
"getShareableLink": "Obter um link de compartilhamento",
"close": "Fechar",
"selectLanguage": "Selecionar idioma",
@ -214,7 +215,7 @@
"text": "Texto",
"library": "Biblioteca",
"lock": "Manter ativa a ferramenta selecionada após desenhar",
"penMode": "Prevenir a ação de tocar-ampliar e permitir apenas interações da caneta",
"penMode": "",
"link": "Adicionar/Atualizar link para uma forma selecionada",
"eraser": "Borracha"
},
@ -235,7 +236,7 @@
"resize": "Você pode restringir proporções segurando SHIFT enquanto redimensiona,\nsegure ALT para redimensionar do centro",
"resizeImage": "Você pode redimensionar livremente segurando SHIFT,\nsegure ALT para redimensionar a partir do centro",
"rotate": "Você pode restringir os ângulos segurando SHIFT enquanto gira",
"lineEditor_info": "Clique duas vezes ou pressione Enter para editar os pontos",
"lineEditor_info": "",
"lineEditor_pointSelected": "Pressione Delete para remover o(s) ponto(s),\nCtrl/Cmd+D para duplicar ou arraste para mover",
"lineEditor_nothingSelected": "Selecione um ponto para editar (segure SHIFT para selecionar vários) ou segure Alt e clique para adicionar novos pontos",
"placeImage": "Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho",
@ -310,7 +311,9 @@
"view": "Visualizar",
"zoomToFit": "Ampliar para encaixar todos os elementos",
"zoomToSelection": "Ampliar a seleção",
"toggleElementLock": "Bloquear/desbloquear seleção"
"toggleElementLock": "Bloquear/desbloquear seleção",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Limpar a tela"
@ -391,7 +394,8 @@
"fileSaved": "Arquivo salvo.",
"fileSavedToFilename": "Salvo em {filename}",
"canvas": "tela",
"selection": "seleção"
"selection": "seleção",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Braco",
@ -439,5 +443,12 @@
"5c940d": "Lima 9",
"e67700": "Amarelo 9",
"d9480f": "Laranja 9"
},
"welcomeScreen": {
"data": "Todos os dados são salvos localmente no seu navegador.",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Colar",
"pasteAsPlaintext": "",
"pasteCharts": "Colar gráficos",
"selectAll": "Selecionar tudo",
"multiSelect": "Adicionar elemento à seleção",
@ -71,7 +72,7 @@
"layers": "Camadas",
"actions": "Ações",
"language": "Idioma",
"liveCollaboration": "Colaboração ao vivo",
"liveCollaboration": "Colaboração ao vivo...",
"duplicateSelection": "Duplicar",
"untitled": "Sem título",
"name": "Nome",
@ -115,8 +116,8 @@
"label": "Ligação"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Editar linha",
"exit": "Sair do editor de linha"
},
"elementLock": {
"lock": "Bloquear",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Limpar a área de desenho e redefinir a cor de fundo",
"exportJSON": "Exportar para ficheiro",
"exportImage": "Guardar como imagem",
"export": "Exportar",
"exportImage": "Exportar imagem...",
"export": "Guardar para...",
"exportToPng": "Exportar em PNG",
"exportToSvg": "Exportar em SVG",
"copyToClipboard": "Copiar para o clipboard",
@ -144,7 +145,7 @@
"scale": "Escala",
"save": "Guardar no ficheiro atual",
"saveAs": "Guardar como",
"load": "Carregar",
"load": "Abrir",
"getShareableLink": "Obter um link de partilha",
"close": "Fechar",
"selectLanguage": "Selecionar idioma",
@ -214,7 +215,7 @@
"text": "Texto",
"library": "Biblioteca",
"lock": "Manter a ferramenta selecionada ativa após desenhar",
"penMode": "Impedir o <em>pinch-zoom</em> e aceitar desenho livre apenas da caneta",
"penMode": "Modo caneta - impedir toque",
"link": "Acrescentar/ Adicionar ligação para uma forma seleccionada",
"eraser": "Borracha"
},
@ -235,7 +236,7 @@
"resize": "Pode restringir as proporções mantendo a tecla SHIFT premida enquanto redimensiona,\nmantenha a tecla ALT premida para redimensionar a partir do centro",
"resizeImage": "Pode redimensionar livremente mantendo pressionada a tecla SHIFT,\nmantenha pressionada a tecla ALT para redimensionar do centro",
"rotate": "Pode restringir os ângulos mantendo a tecla SHIFT premida enquanto roda",
"lineEditor_info": "Clique duas vezes ou pressione a tecla Enter para editar os pontos",
"lineEditor_info": "",
"lineEditor_pointSelected": "Carregue na tecla Delete para remover o(s) ponto(s), CtrlOuCmd+D para duplicar, ou arraste para mover",
"lineEditor_nothingSelected": "Seleccione um ponto para editar (carregue em SHIFT para seleccionar vários),\nou carregue em Alt e clique para acrescentar novos pontos",
"placeImage": "Clique para colocar a imagem ou clique e arraste para definir o seu tamanho manualmente",
@ -310,7 +311,9 @@
"view": "Visualizar",
"zoomToFit": "Ajustar para todos os elementos caberem",
"zoomToSelection": "Ampliar a seleção",
"toggleElementLock": "Trancar/destrancar selecção"
"toggleElementLock": "Trancar/destrancar selecção",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Apagar tela"
@ -391,7 +394,8 @@
"fileSaved": "Ficheiro guardado.",
"fileSavedToFilename": "Guardado como {filename}",
"canvas": "área de desenho",
"selection": "seleção"
"selection": "seleção",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Branco",
@ -439,5 +443,12 @@
"5c940d": "Lima 9",
"e67700": "Amarelo 9",
"d9480f": "Laranja 9"
},
"welcomeScreen": {
"data": "Todos os dados estão guardados no seu navegador local.",
"switchToPlusApp": "Queria antes ir para o Excalidraw+?",
"menuHints": "Exportar, preferências, idiomas...",
"toolbarHints": "Escolha uma ferramenta e comece a desenhar!",
"helpHints": "Atalhos e ajuda"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Lipire",
"pasteAsPlaintext": "Inserare ca text simplu",
"pasteCharts": "Lipire diagrame",
"selectAll": "Selectare totală",
"multiSelect": "Adaugă element la selecție",
@ -71,7 +72,7 @@
"layers": "Straturi",
"actions": "Acțiuni",
"language": "Limbă",
"liveCollaboration": "Colaborare în direct",
"liveCollaboration": "Colaborare în direct...",
"duplicateSelection": "Duplicare",
"untitled": "Nedenumit",
"name": "Nume",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Resetare pânză",
"exportJSON": "Exportare la fișiere",
"exportImage": "Salvare ca imagine",
"export": "Exportare",
"exportImage": "Exportare imagine...",
"export": "Salvare în...",
"exportToPng": "Exportare ca PNG",
"exportToSvg": "Exportare ca SVG",
"copyToClipboard": "Copiere în memoria temporară",
@ -144,7 +145,7 @@
"scale": "Scală",
"save": "Salvare în fișierul curent",
"saveAs": "Salvare ca",
"load": "Încărcare",
"load": "Deschidere",
"getShareableLink": "Obține URL partajabil",
"close": "Închidere",
"selectLanguage": "Selectare limbă",
@ -214,7 +215,7 @@
"text": "Text",
"library": "Bibliotecă",
"lock": "Menține activ instrumentul selectat după desenare",
"penMode": "Împiedică mărirea prin ciupire și acceptă desenarea liberă doar de la stilou",
"penMode": "Mod stilou împiedică atingerea",
"link": "Adăugare/actualizare URL pentru forma selectată",
"eraser": "Radieră"
},
@ -235,7 +236,7 @@
"resize": "Poți constrânge proporțiile, ținând apăsată tasta SHIFT în timp ce redimensionezi,\nține apăsată tasta ALT pentru a redimensiona de la centru",
"resizeImage": "Poți redimensiona liber ținând apăsată tasta SHIFT,\nține apăsată tasta ALT pentru a redimensiona din centru",
"rotate": "Poți constrânge unghiurile, ținând apăsată tasta SHIFT în timp ce rotești",
"lineEditor_info": "Dă dublu clic sau apasă tasta Enter pentru a edita punctele",
"lineEditor_info": "Ține apăsată tasta Ctrl sau Cmd și dă dublu clic sau apasă tasta Ctrl sau Cmd + Enter pentru a edita puncte",
"lineEditor_pointSelected": "Apasă tasta Delete pentru a elimina punctele,\ncombinația de taste Ctrl sau Cmd + D pentru a le duplica sau glisează-le pentru a le schimba poziția",
"lineEditor_nothingSelected": "Selectează un punct pentru a-l edita (ține apăsată tasta SHIFT pentru a selecta mai multe),\nsau ține apăsată tasta Alt și dă clic pentru a adăuga puncte noi",
"placeImage": "Dă clic pentru a poziționa imaginea sau dă clic și glisează pentru a seta manual dimensiunea imaginii",
@ -310,7 +311,9 @@
"view": "Vizualizare",
"zoomToFit": "Transfocare pentru a cuprinde totul",
"zoomToSelection": "Transfocare la selecție",
"toggleElementLock": "Blocare/deblocare selecție"
"toggleElementLock": "Blocare/deblocare selecție",
"movePageUpDown": "Deplasare pagină sus/jos",
"movePageLeftRight": "Deplasare pagină stânga/dreapta"
},
"clearCanvasDialog": {
"title": "Ștergere pânză"
@ -391,7 +394,8 @@
"fileSaved": "Fișier salvat.",
"fileSavedToFilename": "Salvat în {filename}",
"canvas": "pânza",
"selection": "selecția"
"selection": "selecția",
"pasteAsSingleElement": "Folosește {{shortcut}} pentru a insera ca un singur element\nsau insera într-un editor de text existent"
},
"colors": {
"ffffff": "Alb",
@ -439,5 +443,12 @@
"5c940d": "Verde-limetă 9",
"e67700": "Galben 9",
"d9480f": "Portocaliu 9"
},
"welcomeScreen": {
"data": "Toate datele tale sunt salvate local în navigatorul tău.",
"switchToPlusApp": "Ai vrut să mergi în schimb la Excalidraw+?",
"menuHints": "Exportare, preferințe, limbi, ...",
"toolbarHints": "Alege un instrument și începe să desenezi!",
"helpHints": "Comenzi rapide și ajutor"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Вставить",
"pasteAsPlaintext": "Вставить как обычный текст",
"pasteCharts": "Вставить диаграммы",
"selectAll": "Выбрать всё",
"multiSelect": "Добавить элемент в выделенный фрагмент",
@ -71,7 +72,7 @@
"layers": "Слои",
"actions": "Действия",
"language": "Язык",
"liveCollaboration": "Совместное взаимодействие",
"liveCollaboration": "Онлайн взаимодействие...",
"duplicateSelection": "Дубликат",
"untitled": "Безымянный",
"name": "Имя",
@ -115,8 +116,8 @@
"label": "Ссылка"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Редактирование строки",
"exit": "Выход из редактора строки"
},
"elementLock": {
"lock": "Блокировать",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Очистить холст и сбросить цвет фона",
"exportJSON": "Сохранить в",
"exportImage": "Сохранить как изображение",
"export": "Экспортировать",
"exportImage": "Экспортировать изображение...",
"export": "Сохранить как...",
"exportToPng": "Экспорт в PNG",
"exportToSvg": "Экспорт в SVG",
"copyToClipboard": "Скопировать в буфер обмена",
@ -144,7 +145,7 @@
"scale": "Масштаб",
"save": "Сохранить в текущий файл",
"saveAs": "Сохранить как",
"load": "Загрузить",
"load": "Открыть",
"getShareableLink": "Получить доступ по ссылке",
"close": "Закрыть",
"selectLanguage": "Выбрать язык",
@ -214,7 +215,7 @@
"text": "Текст",
"library": "Библиотека",
"lock": "Сохранять выбранный инструмент активным после рисования",
"penMode": "Отключить масштабирование щипком и рисовать только с помощью пера",
"penMode": "Режим пера - предотвращение касания",
"link": "Добавить/обновить ссылку для выбранной фигуры",
"eraser": "Ластик"
},
@ -235,7 +236,7 @@
"resize": "Вы можете ограничить пропорции, удерживая SHIFT во время изменения размеров,\nудерживайте ALT чтобы изменить размер из центра",
"resizeImage": "Вы можете свободно изменять размеры, удерживая кнопку SHIFT,\nудерживайте кнопку ALT, чтобы изменять размер относительно центра",
"rotate": "Вы можете ограничить углы, удерживая SHIFT во время вращения",
"lineEditor_info": "Дважды кликните или нажмите Enter, чтобы редактировать точки",
"lineEditor_info": "Удерживайте CtrlOrCmd и дважды кликните или нажмите CtrlOrCmd + Enter для редактирования точек",
"lineEditor_pointSelected": "Нажмите Delete для удаления точки (точек),\nCtrl+D или Cmd+D для дублирования, перетащите для перемещения",
"lineEditor_nothingSelected": "Выберите точку для редактирования (удерживайте SHIFT выбора нескольких точек),\nили удерживайте Alt и кликните для добавления новых точек",
"placeImage": "Щелкните, чтобы разместить изображение, или нажмите и перетащите, чтобы установить его размер вручную",
@ -310,7 +311,9 @@
"view": "Просмотр",
"zoomToFit": "Отмастштабировать, чтобы поместились все элементы",
"zoomToSelection": "Увеличить до выделенного",
"toggleElementLock": "Заблокировать/разблокировать выделение"
"toggleElementLock": "Заблокировать/разблокировать выделение",
"movePageUpDown": "Сдвинуть страницу вверх/вниз",
"movePageLeftRight": "Сдвинуть страницу вправо/влево"
},
"clearCanvasDialog": {
"title": "Очистить холст"
@ -391,7 +394,8 @@
"fileSaved": "Файл сохранён.",
"fileSavedToFilename": "Сохранено в {filename}",
"canvas": "холст",
"selection": "выделение"
"selection": "выделение",
"pasteAsSingleElement": "Используйте {{shortcut}}, чтобы вставить один объект,\nили вставьте в существующий текстовый редактор"
},
"colors": {
"ffffff": "Белый",
@ -439,5 +443,12 @@
"5c940d": "Лайм 9",
"e67700": "Жёлтый 9",
"d9480f": "Оранжевый 9"
},
"welcomeScreen": {
"data": "Все ваши данные сохраняются локально в вашем браузере.",
"switchToPlusApp": "Хотите перейти на Excalidraw+?",
"menuHints": "Экспорт, настройки, языки, ...",
"toolbarHints": "Выберите инструмент и начните рисовать!",
"helpHints": "Сочетания клавиш и помощь"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "අලවන්න",
"pasteAsPlaintext": "",
"pasteCharts": "ප්‍රස්ථාරය",
"selectAll": "සියල්ලම",
"multiSelect": "තෝරා ගැනීමට අංගය එකතු කරන්න",
@ -310,7 +311,9 @@
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Vložiť",
"pasteAsPlaintext": "Vložiť ako obyčajný text",
"pasteCharts": "Vložiť grafy",
"selectAll": "Vybrať všetko",
"multiSelect": "Pridať prvok do výberu",
@ -71,7 +72,7 @@
"layers": "Vrstvy",
"actions": "Akcie",
"language": "Jazyk",
"liveCollaboration": "Živá spolupráca",
"liveCollaboration": "Živá spolupráca...",
"duplicateSelection": "Duplikovať",
"untitled": "Bez názvu",
"name": "Meno",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Obnoviť plátno",
"exportJSON": "Exportovať do súboru",
"exportImage": "Uložiť ako obrázok",
"export": "Exportovať",
"exportImage": "Exportovať obrázok...",
"export": "Uložiť do...",
"exportToPng": "Exportovať do PNG",
"exportToSvg": "Exportovať do SVG",
"copyToClipboard": "Kopírovať do schránky",
@ -144,7 +145,7 @@
"scale": "Mierka",
"save": "Uložiť do aktuálneho súboru",
"saveAs": "Uložiť ako",
"load": "Nahrať",
"load": "Otvoriť",
"getShareableLink": "Získať odkaz na zdieľanie",
"close": "Zavrieť",
"selectLanguage": "Zvoliť jazyk",
@ -214,7 +215,7 @@
"text": "Text",
"library": "Knižnica",
"lock": "Nechať zvolený nástroj aktívny po skončení kreslenia",
"penMode": "Zabrániť priblíženiu potiahnutím a povoliť vstup voľnou rokou iba z pera",
"penMode": "Režim pera zabrániť dotyku",
"link": "Pridať/ Upraviť odkaz pre vybraný tvar",
"eraser": "Guma"
},
@ -235,7 +236,7 @@
"resize": "Počas zmeny veľkosti zachováte proporcie podržaním SHIFT,\\npodržaním ALT meníte veľkosť so zachovaním stredu",
"resizeImage": "Podržte SHIFT pre voľnú zmenu veľkosti, podržte ALT pre zmenu veľkosti od stredu",
"rotate": "Počas rotácie obmedzíte uhol podržaním SHIFT",
"lineEditor_info": "Použite dvojklik alebo stlačte Enter na editáciu bodov",
"lineEditor_info": "Podržte CtrlOrCmd a kliknite dva krát alebo stlačte CtrlOrCmd + Enter pre editáciu bodov",
"lineEditor_pointSelected": "Stačte Delete na vymazanie bodu (bodov), CtrlOrCmd+D na duplikovanie, alebo potiahnite na presunutie",
"lineEditor_nothingSelected": "Zvoľte bod na upravovanie (podržte SHIFT pre zvolenie viacerých bodov) alebo podržte Alt a kliknite na pridanie nového bodu",
"placeImage": "Kliknite pre umiestnenie obrázka alebo kliknite a ťahajte pre zmenu jeho veľkosti",
@ -310,7 +311,9 @@
"view": "Zobrazenie",
"zoomToFit": "Priblížiť aby boli zahrnuté všetky prvky",
"zoomToSelection": "Priblížiť na výber",
"toggleElementLock": "Zamknúť/odomknúť vybrané"
"toggleElementLock": "Zamknúť/odomknúť vybrané",
"movePageUpDown": "Posunúť stranu hore/dole",
"movePageLeftRight": "Posunúť stranu doľava/doprava"
},
"clearCanvasDialog": {
"title": "Vyčistiť plátno"
@ -391,7 +394,8 @@
"fileSaved": "Súbor uložený.",
"fileSavedToFilename": "Uložený ako {filename}",
"canvas": "plátna",
"selection": "výberu"
"selection": "výberu",
"pasteAsSingleElement": "Použitím {{shortcut}} vložte ako samostatný prvok alebo vložte do existujúceho editovaného textu"
},
"colors": {
"ffffff": "Biela",
@ -439,5 +443,12 @@
"5c940d": "Limetková 9",
"e67700": "Žltá 9",
"d9480f": "Oranžová 9"
},
"welcomeScreen": {
"data": "Všetky vaše dáta sú uložené lokálne vo vašom prehliadači.",
"switchToPlusApp": "Chceli ste namiesto toho prejsť do Excalidraw+?",
"menuHints": "Exportovanie, nastavenia, jazyky, ...",
"toolbarHints": "Zvoľte nástroj a začnite kresliť!",
"helpHints": "Klávesové skratky a pomocník"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Prilepi",
"pasteAsPlaintext": "Prilepi kot navadno besedilo",
"pasteCharts": "Prilepi grafikone",
"selectAll": "Izberi vse",
"multiSelect": "Dodaj element v izbor",
@ -71,7 +72,7 @@
"layers": "Plasti",
"actions": "Dejanja",
"language": "Jezik",
"liveCollaboration": "Sodelovanje v živo",
"liveCollaboration": "Sodelovanje v živo...",
"duplicateSelection": "Podvoji",
"untitled": "Neimenovana",
"name": "Ime",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Ponastavi platno",
"exportJSON": "Izvozi v datoteko",
"exportImage": "Shrani kot sliko",
"export": "Izvoz",
"exportImage": "Izvozi sliko...",
"export": "Shrani v...",
"exportToPng": "Izvozi v PNG",
"exportToSvg": "Izvozi v SVG",
"copyToClipboard": "Kopiraj v odložišče",
@ -144,7 +145,7 @@
"scale": "Povečava",
"save": "Shrani v trenutno datoteko",
"saveAs": "Shrani kot",
"load": "Naloži",
"load": "Odpri",
"getShareableLink": "Pridobi povezavo za deljenje",
"close": "Zapri",
"selectLanguage": "Izberi jezik",
@ -214,7 +215,7 @@
"text": "Besedilo",
"library": "Knjižnica",
"lock": "Ohrani izbrano orodje aktivno po risanju",
"penMode": "Prepreči povečavo s prsti in dovoli samo risanje s peresom",
"penMode": "Način peresa - prepreči dotik",
"link": "Dodaj/posodobi povezavo za izbrano obliko",
"eraser": "Radirka"
},
@ -235,7 +236,7 @@
"resize": "Razmerja lahko omejite tako, da držite tipko Shift med spreminjanjem velikosti. Držite tipko Alt, da spremenite velikost od središča",
"resizeImage": "Velikost lahko prosto spreminjate tako, da držite tipko Shift. Držite tipko Alt, da spremenite velikost od središča",
"rotate": "Kote lahko omejite tako, da med vrtenjem držite tipko Shift",
"lineEditor_info": "Dvokliknite ali pritisnite tipko Enter, da uredite točke",
"lineEditor_info": "Držite CtrlOrCmd in dvokliknite ali pritisnite CtrlOrCmd + Enter za urejanje točk",
"lineEditor_pointSelected": "Pritisnite tipko Delete, da odstranite točko(e), CtrlOrCmd+D za podvojitev ali povlecite za premikanje",
"lineEditor_nothingSelected": "Izberite točko za urejanje (pridržite tipko Shift za izbiro več točk), ali držite tipko Alt in kliknite za dodajanje novih točk",
"placeImage": "Kliknite, da postavite sliko, ali kliknite in povlecite, da ročno nastavite njeno velikost",
@ -310,7 +311,9 @@
"view": "Pogled",
"zoomToFit": "Približaj na vse elemente",
"zoomToSelection": "Približaj na izbor",
"toggleElementLock": "Zakleni/odkleni izbor"
"toggleElementLock": "Zakleni/odkleni izbor",
"movePageUpDown": "Premakni stran gor/dol",
"movePageLeftRight": "Premakni stran levo/desno"
},
"clearCanvasDialog": {
"title": "Počisti platno"
@ -391,7 +394,8 @@
"fileSaved": "Datoteka shranjena.",
"fileSavedToFilename": "Shranjeno v {filename}",
"canvas": "platno",
"selection": "izbor"
"selection": "izbor",
"pasteAsSingleElement": "Uporabite {{shortcut}}, da prilepite kot en element,\n ali prilepite v obstoječ urejevalnik besedil"
},
"colors": {
"ffffff": "Bela",
@ -439,5 +443,12 @@
"5c940d": "Limeta 9",
"e67700": "Rumena 9",
"d9480f": "Oranžna 9"
},
"welcomeScreen": {
"data": "Vsi vaši podatki so shranjeni lokalno v vašem brskalniku.",
"switchToPlusApp": "Ste namesto tega želeli odpreti Excalidraw+?",
"menuHints": "Izvoz, nastavitve, jeziki, ...",
"toolbarHints": "Izberi orodje in začni z risanjem!",
"helpHints": "Bljižnice in pomoč"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Klistra in",
"pasteAsPlaintext": "",
"pasteCharts": "Klistra in diagram",
"selectAll": "Markera alla",
"multiSelect": "Lägg till element till markering",
@ -71,7 +72,7 @@
"layers": "Lager",
"actions": "Åtgärder",
"language": "Språk",
"liveCollaboration": "Samarbeta live",
"liveCollaboration": "Samarbeta live...",
"duplicateSelection": "Duplicera",
"untitled": "Namnlös",
"name": "Namn",
@ -115,8 +116,8 @@
"label": "Länk"
},
"lineEditor": {
"edit": "",
"exit": ""
"edit": "Redigera linje",
"exit": "Avsluta linjeredigerare"
},
"elementLock": {
"lock": "Lås",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Återställ canvasen",
"exportJSON": "Exportera till fil",
"exportImage": "Spara som bild",
"export": "Exportera",
"exportImage": "Exportera bild...",
"export": "Spara till...",
"exportToPng": "Exportera till PNG",
"exportToSvg": "Exportera till SVG",
"copyToClipboard": "Kopiera till urklipp",
@ -214,7 +215,7 @@
"text": "Text",
"library": "Bibliotek",
"lock": "Håll valt verktyg aktivt efter ritande",
"penMode": "Förhindra nypzoom och acceptera endast frihandsteckning från penna",
"penMode": "Pennläge - förhindra touch",
"link": "Lägg till / Uppdatera länk för en vald form",
"eraser": "Radergummi"
},
@ -235,7 +236,7 @@
"resize": "Du kan behålla proportioner genom att hålla SHIFT medan du ändrar storlek,\nhåller du ALT ändras storlek relativt mitten",
"resizeImage": "Du kan ändra storlek fritt genom att hålla SHIFT,\nhåll ALT för att ändra storlek från mitten",
"rotate": "Du kan begränsa vinklar genom att hålla SHIFT medan du roterar",
"lineEditor_info": "Dubbelklicka eller tryck på Enter för att redigera punkter",
"lineEditor_info": "",
"lineEditor_pointSelected": "Tryck på Ta bort för att ta bort punkt(er), Ctrl + D eller Cmd + D för att duplicera, eller dra för att flytta",
"lineEditor_nothingSelected": "Välj en punkt att redigera (håll SHIFT för att välja flera),\neller håll ned Alt och klicka för att lägga till nya punkter",
"placeImage": "Klicka för att placera bilden, eller klicka och dra för att ställa in dess storlek manuellt",
@ -310,7 +311,9 @@
"view": "Visa",
"zoomToFit": "Zooma för att rymma alla element",
"zoomToSelection": "Zooma till markering",
"toggleElementLock": "Lås/Lås upp valda"
"toggleElementLock": "Lås/Lås upp valda",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Rensa canvas"
@ -391,7 +394,8 @@
"fileSaved": "Fil sparad.",
"fileSavedToFilename": "Sparad till {filename}",
"canvas": "canvas",
"selection": "markering"
"selection": "markering",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Vit",
@ -439,5 +443,12 @@
"5c940d": "Limegrön 9",
"e67700": "Gul 9",
"d9480f": "Orange 9"
},
"welcomeScreen": {
"data": "All din data sparas lokalt i din webbläsare.",
"switchToPlusApp": "Ville du gå till Excalidraw+ istället?",
"menuHints": "Export, inställningar, språk, ...",
"toolbarHints": "Välj ett verktyg och börja rita!",
"helpHints": "Genvägar och hjälp"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "ஒட்டு",
"pasteAsPlaintext": "",
"pasteCharts": "விளக்கப்படங்களை ஒட்டு",
"selectAll": "எல்லாம் தேர்ந்தெடு",
"multiSelect": "உறுப்பைத் தெரிவில் சேர்",
@ -71,7 +72,7 @@
"layers": "அடுக்குகள்",
"actions": "செயல்கள்",
"language": "மொழி",
"liveCollaboration": "நேரடி கூட்டுப்பணி",
"liveCollaboration": "",
"duplicateSelection": "நகலாக்கு",
"untitled": "தலைப்பற்றது",
"name": "பெயர்",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "கித்தானை அகரமாக்கு",
"exportJSON": "கோப்புக்கு ஏற்றுமதிசெய்",
"exportImage": "படமாகச் சேமி",
"export": "ஏற்றுமதி",
"exportImage": "",
"export": "",
"exportToPng": "PNGக்கு ஏற்றுமதிசெய்",
"exportToSvg": "SVGக்கு ஏற்றுமதிசெய்",
"copyToClipboard": "நகலகத்திற்கு நகலெடு",
@ -144,7 +145,7 @@
"scale": "அளவு",
"save": "தற்போதைய கோப்புக்குச் சேமி",
"saveAs": "இப்படி சேமி",
"load": "ஏற்று",
"load": "",
"getShareableLink": "பகிரக்கூடிய தொடுப்பைப் பெறு",
"close": "மூடு",
"selectLanguage": "மொழியைத் தேர்ந்தெடு",
@ -214,7 +215,7 @@
"text": "உரை",
"library": "நூலகம்",
"lock": "தேர்ந்த கருவியை வரைந்த பின்பும் வைத்திரு",
"penMode": "கிள்ளிப்பெரிதாக்குவதைத் தவிர் மற்றும் பேனாவிலிருந்து மட்டும் கட்டற்றவரைவை ஏல்",
"penMode": "",
"link": "தேர்தெடுத்த வடிவத்திற்குத் தொடுப்பைச் சேர்/ புதுப்பி",
"eraser": "அழிப்பி"
},
@ -235,7 +236,7 @@
"resize": "மறுஅளவிடுகையில் SHIFTஐ அழுத்திப்பிடித்து விகிதசமத்தை வற்புறுத்தலாம்,\nமையத்திலிருந்து மறுஅளவிட ALTஐ அழுத்திப்பிடி",
"resizeImage": "SHIFTஐ நீண்டழுத்தி கட்டற்று அளவுமாற்றலாம்,\nமையத்திலிருந்து அளவுமாற்ற ALTஐ நீண்டழுத்துக",
"rotate": "சுழற்றுகையில் SHIFTஐ அழுத்திப்பிடித்து கோணங்களை வற்புறுத்தலாம்",
"lineEditor_info": "புள்ளிகளைத் திருத்த இரு-சொடுக்கு அ Enterஐ அழுத்து",
"lineEditor_info": "",
"lineEditor_pointSelected": "புள்ளி(கள்)ஐ நீக்க Deleteஐ அழுத்து,\nநகலாக்க CtrlOrCmd+D, அ நகர்த்த பிடித்திழு",
"lineEditor_nothingSelected": "திருத்த புள்ளியைத் தேர்ந்தெடு (பலவற்றை தேர SHIFTஐ அழுத்திப்பிடி),\nஅ புதிய புள்ளிகளைச் சேர்க்க Altஐ அழுத்திப்பிடித்துச் சொடுக்கு",
"placeImage": "படத்தை வைக்கச் சொடுக்கு, அ கைமுறையாக அளவு அமைக்க சொடுக்கி பிடித்திழு",
@ -310,7 +311,9 @@
"view": "பார்",
"zoomToFit": "அனைத்துறுப்புகளும் பொருந்தும்படி விரிவாக்கு",
"zoomToSelection": "தெரிவுக்கு விரிவாக்கு",
"toggleElementLock": "தேர்ந்தெடுப்பைப் பூட்டு/பூட்டவிழ்"
"toggleElementLock": "தேர்ந்தெடுப்பைப் பூட்டு/பூட்டவிழ்",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "கித்தானைத் துடை"
@ -391,7 +394,8 @@
"fileSaved": "கோப்பு சேமிக்கப்பட்டது.",
"fileSavedToFilename": "{filename}-க்கு சேமிக்கப்பட்டது",
"canvas": "கித்தான்",
"selection": "தெரிவு"
"selection": "தெரிவு",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "வெள்ளை",
@ -439,5 +443,12 @@
"5c940d": "தேசிக்காய்நிறம் 9",
"e67700": "மஞ்சள் 9",
"d9480f": "ஆரஞ்சு 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Yapıştır",
"pasteAsPlaintext": "Düz metin olarak yapıştır",
"pasteCharts": "Grafikleri yapıştır",
"selectAll": "Tümünü seç",
"multiSelect": "Seçime öge ekle",
@ -71,7 +72,7 @@
"layers": "Katmanlar",
"actions": "Eylemler",
"language": "Dil",
"liveCollaboration": "Canlı ortak çalışma alanı",
"liveCollaboration": "Canlı ortak çalışma alanı...",
"duplicateSelection": "Çoğalt",
"untitled": "Adsız",
"name": "İsim",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Tuvali sıfırla",
"exportJSON": "Dosyaya aktar",
"exportImage": "Görüntü olarak kaydet",
"export": "Dışa aktar",
"exportImage": "Resimleri dışa aktar...",
"export": "Şuraya kaydet...",
"exportToPng": "PNG olarak dışa aktar",
"exportToSvg": "SVG olarak dışa aktar",
"copyToClipboard": "Panoya kopyala",
@ -144,7 +145,7 @@
"scale": "Ölçek",
"save": "Geçerli dosyaya kaydet",
"saveAs": "Farklı kaydet",
"load": "Yükle",
"load": "",
"getShareableLink": "Paylaşılabilir bağlantı al",
"close": "Kapat",
"selectLanguage": "Dil seçin",
@ -214,7 +215,7 @@
"text": "Yazı",
"library": "Kütüphane",
"lock": "Seçilen aracı çizimden sonra aktif tut",
"penMode": "Çift parmak sıkıştırmayı önle ve serbest çizimi yalnızca kalemle yap",
"penMode": "Kalem modu - dokunmayı engelle",
"link": "Seçilen şekil için bağlantı Ekle/Güncelle",
"eraser": "Silgi"
},
@ -235,7 +236,7 @@
"resize": "Yeniden boyutlandırırken SHIFT tuşunu basılı tutarak oranları sınırlayabilirsiniz,\nmerkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun",
"resizeImage": "SHIFT'e basılı tutarak serbestçe yeniden boyutlandırabilirsiniz, merkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun",
"rotate": "Döndürürken SHIFT tuşuna basılı tutarak açıları koruyabilirsiniz",
"lineEditor_info": "Noktaları düzenlemek için çift-tıklayın veya Enter'a basın",
"lineEditor_info": "Puanları düzenlemek için ctrl veya cmd tuşuna basılı tutup çift tıklayın veya enter tuşuna basın",
"lineEditor_pointSelected": "Sil tuşuna basarak noktaları silin,\nCtrl/Cmd + D ile çoğaltın, ya da sürükleyerek taşıyın",
"lineEditor_nothingSelected": "Düzenlemek için bir nokta seçin (birden fazla seçmek için SHIFT tuşunu basılı tutun),\nveya Alt tuşunu basılı tutun ve yeni noktalar eklemek için tıklayın",
"placeImage": "Resmi yerleştirmek için tıklayın ya da boyutunu manuel olarak ayarlamak için tıklayıp sürükleyin",
@ -310,7 +311,9 @@
"view": "Görünüm",
"zoomToFit": "Tüm öğeleri sığdırmak için yakınlaştır",
"zoomToSelection": "Seçime yakınlaş",
"toggleElementLock": "Seçimi Kilitle/çöz"
"toggleElementLock": "Seçimi Kilitle/çöz",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "Tuvali temizle"
@ -391,7 +394,8 @@
"fileSaved": "Dosya kaydedildi.",
"fileSavedToFilename": "{filename} kaydedildi",
"canvas": "tuval",
"selection": "seçim"
"selection": "seçim",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Beyaz",
@ -439,5 +443,12 @@
"5c940d": "Yeşil 9",
"e67700": "Sarı 9",
"d9480f": "Turuncu 9"
},
"welcomeScreen": {
"data": "Tüm veri internet gezgininize yerel olarak kaydedildi.",
"switchToPlusApp": "Excalidraw+ kullanmak ister miydiniz?",
"menuHints": "Dışa aktar, seçenkeler, diller, ...",
"toolbarHints": "Bir araç seçin & Çizime başlayın!",
"helpHints": "Kısayollar & yardım"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Вставити",
"pasteAsPlaintext": "Вставити як простий текст",
"pasteCharts": "Вставити діаграми",
"selectAll": "Вибрати все",
"multiSelect": "Додати елемент до вибраного",
@ -71,7 +72,7 @@
"layers": "Шари",
"actions": "Дії",
"language": "Мова",
"liveCollaboration": "Спільна робота",
"liveCollaboration": "",
"duplicateSelection": "Дублювати",
"untitled": "Без назви",
"name": "Ім’я",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "Очистити полотно",
"exportJSON": "Експорт у файл",
"exportImage": "Зберегти як зображення",
"export": "Експортувати",
"exportImage": "Експорт зображення...",
"export": "Зберегти як...",
"exportToPng": "Експортувати в PNG",
"exportToSvg": "Експортувати в SVG",
"copyToClipboard": "Скопіювати до буферу обміну",
@ -144,7 +145,7 @@
"scale": "Масштаб",
"save": "Зберегти до поточного файлу",
"saveAs": "Зберегти як",
"load": "Завантажити",
"load": "Відкрити",
"getShareableLink": "Отримати посилання",
"close": "Закрити",
"selectLanguage": "Обрати мову",
@ -214,7 +215,7 @@
"text": "Текст",
"library": "Бібліотека",
"lock": "Залишити обраний інструмент після креслення",
"penMode": "Вимкнути масштабування через мультитач та малювати тільки з допомогою пера",
"penMode": "Режим пера - запобігання дотику",
"link": "Додати/Оновити посилання для вибраної форми",
"eraser": "Очищувач"
},
@ -235,7 +236,7 @@
"resize": "Ви можете зберегти пропорції, утримуючи SHIFT під час зміни розміру,\nутримуйте ALT для змінення розміру від центру",
"resizeImage": "Ви можете змінювати розміри утримуючи клавішу SHIFT, втримуйте клавішу ALT щоб змінювати розмір відносно центру",
"rotate": "Ви можете обмежити кути, утримуючи SHIFT під час обертання",
"lineEditor_info": "Двічі клацніть або натисніть Enter щоб редагувати точки",
"lineEditor_info": "",
"lineEditor_pointSelected": "Натисніть Delete для видалення точку (точок), або Ctrl/Cmd+D для дублювання, перетаскування працює як звично",
"lineEditor_nothingSelected": "Виберіть точку для редагування (втримуйте клавішу SHIFT для вибору кількох точок), або клавішу Alt для додавання нових точок",
"placeImage": "Клацніть, щоб розмістити зображення, або натисніть та потягніть щоб змінити його розмір",
@ -310,7 +311,9 @@
"view": "Вигляд",
"zoomToFit": "Збільшити щоб умістити всі елементи",
"zoomToSelection": "Наблизити вибране",
"toggleElementLock": "Заблокувати/розблокувати вибране"
"toggleElementLock": "Заблокувати/розблокувати вибране",
"movePageUpDown": "Пересунути сторінку вгору/вниз",
"movePageLeftRight": "Пересунути сторінку вліво/вправо"
},
"clearCanvasDialog": {
"title": "Очистити полотно"
@ -391,7 +394,8 @@
"fileSaved": "Файл збережено.",
"fileSavedToFilename": "Збережено в {filename}",
"canvas": "полотно",
"selection": "виділення"
"selection": "виділення",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "Білий",
@ -439,5 +443,12 @@
"5c940d": "Лаймовий 9",
"e67700": "Жовтий 9",
"d9480f": "Помаранчевий 9"
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "Оберіть інструмент і почніть малювати!",
"helpHints": "Комбінації клавіш і допомога"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "Dán",
"pasteAsPlaintext": "",
"pasteCharts": "Dán biểu đồ",
"selectAll": "Chọn tất cả",
"multiSelect": "Thêm mới vào Select",
@ -44,7 +45,7 @@
"exportEmbedScene": "",
"exportEmbedScene_details": "",
"addWatermark": "Làm với Excalidraw\"",
"handDrawn": "",
"handDrawn": "Vẽ tay",
"normal": "Bình thường",
"code": "Mã",
"small": "Nhỏ",
@ -52,34 +53,34 @@
"large": "Lớn",
"veryLarge": "Rất lớn",
"solid": "Đặc",
"hachure": "",
"crossHatch": "",
"hachure": "Nét gạch gạch",
"crossHatch": "Nét gạch chéo",
"thin": "Mỏng",
"bold": "In đậm",
"left": "Trái",
"center": "Giữa",
"right": "Phải",
"extraBold": "",
"architect": "",
"artist": "",
"cartoonist": "",
"architect": "Kiến trúc sư",
"artist": "Nghệ sỹ",
"cartoonist": "Hoạt hình",
"fileTitle": "",
"colorPicker": "",
"colorPicker": "Chọn màu",
"canvasColors": "",
"canvasBackground": "",
"drawingCanvas": "",
"layers": "",
"actions": "",
"language": "",
"layers": "Lớp",
"actions": "Chức năng",
"language": "Ngôn ngữ",
"liveCollaboration": "",
"duplicateSelection": "",
"untitled": "",
"name": "",
"yourName": "",
"duplicateSelection": "Tạo bản sao",
"untitled": "Không có tiêu đề",
"name": "Tên",
"yourName": "Tên của bạn",
"madeWithExcalidraw": "Làm với Excalidraw",
"group": "",
"ungroup": "",
"collaborators": "",
"collaborators": "Cộng tác viên",
"showGrid": "",
"addToLibrary": "",
"removeFromLibrary": "",
@ -310,7 +311,9 @@
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "",
"selection": ""
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "粘贴",
"pasteAsPlaintext": "",
"pasteCharts": "粘贴图表",
"selectAll": "全部选中",
"multiSelect": "添加元素到选区",
@ -45,12 +46,12 @@
"exportEmbedScene_details": "画布数据将被保存到导出的 PNG/SVG 文件,以便恢复。\n将会增加导出的文件大小。",
"addWatermark": "添加 “使用 Excalidraw 创建” 水印",
"handDrawn": "手写",
"normal": "正常",
"normal": "普通",
"code": "代码",
"small": "小",
"medium": "中",
"large": "大",
"veryLarge": "大",
"small": "小",
"medium": "中",
"large": "大",
"veryLarge": "大",
"solid": "实心",
"hachure": "线条",
"crossHatch": "交叉线条",
@ -71,7 +72,7 @@
"layers": "图层",
"actions": "操作",
"language": "语言",
"liveCollaboration": "实时协作",
"liveCollaboration": "实时协作...",
"duplicateSelection": "复制",
"untitled": "无标题",
"name": "名字",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "重置画布",
"exportJSON": "导出为文件",
"exportImage": "保存为图像",
"export": "导出",
"exportImage": "导出图片...",
"export": "保存到...",
"exportToPng": "导出为 PNG",
"exportToSvg": "导出为 SVG",
"copyToClipboard": "复制到剪贴板",
@ -144,7 +145,7 @@
"scale": "缩放",
"save": "保存至当前文件",
"saveAs": "保存为",
"load": "载入文件",
"load": "打开",
"getShareableLink": "获取共享链接",
"close": "关闭",
"selectLanguage": "选择语言",
@ -214,7 +215,7 @@
"text": "文字",
"library": "素材库",
"lock": "绘制后保持所选的工具栏状态",
"penMode": "禁用手势缩放并只接收来自触控笔的输入",
"penMode": "笔模式 避免误触",
"link": "为选中的形状添加/更新链接",
"eraser": "橡皮"
},
@ -235,7 +236,7 @@
"resize": "您可以按住SHIFT来限制比例大小\n按住ALT来调整中心大小",
"resizeImage": "按住SHIFT可以自由缩放\n按住ALT可以从中间缩放",
"rotate": "旋转时可以按住 Shift 来约束角度",
"lineEditor_info": "双击或按回车键编辑",
"lineEditor_info": "",
"lineEditor_pointSelected": "按下 Delete 移除点Ctrl 或 Cmd+D 以复制,拖动以移动",
"lineEditor_nothingSelected": "选择要编辑的点 (按住 SHIFT 选择多个)\n或按住 Alt 并点击以添加新点",
"placeImage": "点击放置图像,或者点击并拖动以手动设置图像大小",
@ -310,7 +311,9 @@
"view": "视图",
"zoomToFit": "缩放以适应所有元素",
"zoomToSelection": "缩放到选区",
"toggleElementLock": "锁定/解锁"
"toggleElementLock": "锁定/解锁",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": "清除画布"
@ -391,7 +394,8 @@
"fileSaved": "文件已保存。",
"fileSavedToFilename": "保存到 {filename}",
"canvas": "画布",
"selection": "选择项"
"selection": "选择项",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "白",
@ -439,5 +443,12 @@
"5c940d": "柠檬绿 9",
"e67700": "黄 9",
"d9480f": "橙 9"
},
"welcomeScreen": {
"data": "您的所有数据都储存在浏览器本地。",
"switchToPlusApp": "是否前往 Excalidraw+ ",
"menuHints": "导出、首选项、语言...",
"toolbarHints": "选择工具并开始绘图!",
"helpHints": "快捷键和帮助"
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "貼上",
"pasteAsPlaintext": "",
"pasteCharts": "貼上圖表",
"selectAll": "全選",
"multiSelect": "多重選取",
@ -71,7 +72,7 @@
"layers": "圖層",
"actions": "動作",
"language": "🌏 語言",
"liveCollaboration": "多人連線",
"liveCollaboration": "",
"duplicateSelection": "製作副本",
"untitled": "未命名的作品",
"name": "",
@ -310,7 +311,9 @@
"view": "",
"zoomToFit": "",
"zoomToSelection": "",
"toggleElementLock": ""
"toggleElementLock": "",
"movePageUpDown": "",
"movePageLeftRight": ""
},
"clearCanvasDialog": {
"title": ""
@ -391,7 +394,8 @@
"fileSaved": "",
"fileSavedToFilename": "",
"canvas": "畫布",
"selection": ""
"selection": "",
"pasteAsSingleElement": ""
},
"colors": {
"ffffff": "",
@ -439,5 +443,12 @@
"5c940d": "",
"e67700": "",
"d9480f": ""
},
"welcomeScreen": {
"data": "",
"switchToPlusApp": "",
"menuHints": "",
"toolbarHints": "",
"helpHints": ""
}
}

@ -1,6 +1,7 @@
{
"labels": {
"paste": "貼上",
"pasteAsPlaintext": "以純文字貼上",
"pasteCharts": "貼上圖表",
"selectAll": "全選",
"multiSelect": "將物件加入選取範圍",
@ -71,7 +72,7 @@
"layers": "圖層",
"actions": "動作",
"language": "語言",
"liveCollaboration": "即時協作",
"liveCollaboration": "即時協作...",
"duplicateSelection": "複製",
"untitled": "無標題",
"name": "名稱",
@ -135,8 +136,8 @@
"buttons": {
"clearReset": "重置 canvas",
"exportJSON": "匯出至檔案",
"exportImage": "另存為圖片",
"export": "輸出",
"exportImage": "匯出圖片",
"export": "儲存至...",
"exportToPng": "輸出成 PNG",
"exportToSvg": "輸出成 SVG",
"copyToClipboard": "複製至剪貼簿",
@ -144,7 +145,7 @@
"scale": "縮放比例",
"save": "儲存目前檔案",
"saveAs": "儲存為",
"load": "載入",
"load": "開啟",
"getShareableLink": "取得共享連結",
"close": "關閉",
"selectLanguage": "選擇語言",
@ -214,7 +215,7 @@
"text": "文字",
"library": "資料庫",
"lock": "可連續使用選取的工具",
"penMode": "停止使用手勢縮放並接受以繪圖筆繪圖輸入",
"penMode": "筆模式 - 避免觸摸",
"link": "為所選的形狀增加\b/更新連結",
"eraser": "橡皮擦"
},
@ -235,7 +236,7 @@
"resize": "縮放時按住 Shift 可保持原比例縮放;\\n按住 Alt 可由中心點進行縮放",
"resizeImage": "按住 SHIFT 可任意縮放,按住 ALT 可由中央縮放。",
"rotate": "旋轉時按住 Shift 可限制旋轉角度",
"lineEditor_info": "雙擊滑鼠左鍵或按 Enter 來編輯控制點",
"lineEditor_info": "按住 Ctrl 或 Cmd 並雙擊或按住 Ctrl 或 Cmd + Enter 來編輯控制點",
"lineEditor_pointSelected": "按下 Delete 可移除錨點Ctrl 或 Cmd + D 可複製;或可拖曳來移動",
"lineEditor_nothingSelected": "選擇要編輯的錨點(按住 SHIFT 可多選),\n或按住 Alt 並點擊以增加新錨點。",
"placeImage": "點擊以放置圖片,或點擊並拖曳以手動調整其尺寸。",
@ -310,7 +311,9 @@
"view": "檢視",
"zoomToFit": "放大至填滿畫面",
"zoomToSelection": "縮放至選取區",
"toggleElementLock": "鎖定/解鎖已選的項目"
"toggleElementLock": "鎖定/解鎖已選的項目",
"movePageUpDown": "向上/下移動頁面",
"movePageLeftRight": "向左/右移動頁面"
},
"clearCanvasDialog": {
"title": "清除畫布"
@ -391,7 +394,8 @@
"fileSaved": "已儲存檔案。",
"fileSavedToFilename": "儲存為 {filename}",
"canvas": "畫布",
"selection": "已選項目"
"selection": "已選項目",
"pasteAsSingleElement": "使用 {{shortcut}} 以做為單一物件貼上,\n或貼上至現有的文字編輯器"
},
"colors": {
"ffffff": "白",
@ -439,5 +443,12 @@
"5c940d": "黃綠 9",
"e67700": "黃 9",
"d9480f": "橘 9"
},
"welcomeScreen": {
"data": "您的所有資料都儲存在本機瀏覽器。",
"switchToPlusApp": "您是否是要前往 Excalidraw+ ",
"menuHints": "輸出、偏好設定、語言...",
"toolbarHints": "選個工具開始畫圖吧!",
"helpHints": "快速鍵與說明"
}
}

@ -15,6 +15,8 @@ Please add the latest change on the top under the correct section.
### Features
- Expose component API for the Excalidraw main menu [#6034](https://github.com/excalidraw/excalidraw/pull/6034), You can read more about its usage [here](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#MainMenu)
- Render Footer as a component instead of render prop [#5970](https://github.com/excalidraw/excalidraw/pull/5970). You can read more about its usage [here](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#Footer)
#### BREAKING CHANGE

@ -405,6 +405,195 @@ const App = () => {
};
```
This will only for `Desktop` devices.
For `mobile` you will need to render it inside the [MainMenu](#mainmenu). You can use the [`useDevice`](#useDevice) hook to check the type of device, this will be available only inside the `children` of `Excalidraw` component.
```js
import { useDevice, Footer } from "@excalidraw/excalidraw";
const MobileFooter = ({
}) => {
const device = useDevice();
if (device.isMobile) {
return (
<Footer>
<button
className="custom-footer"
onClick={() => alert("This is custom footer in mobile menu")}
>
{" "}
custom footer{" "}
</button>
</Footer>
);
}
return null;
};
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.Item onSelect={() => window.alert("Item1")}> Item1 </MainMenu.Item>
<MainMenu.Item onSelect={() => window.alert("Item2")}> Item 2 </>
<MobileFooter/>
</MainMenu>
</Excalidraw>
}
```
You can visit the[ example](https://ehlz3.csb.app/) for working demo.
#### MainMenu
By default Excalidraw will render the `MainMenu` with default options. If you want to customise the `MainMenu`, you can pass the `MainMenu` component with the list options. You can visit [codesandbox example](https://ehlz3.csb.app/) for a working demo.
**Usage**
```js
import { MainMenu } from "@excalidraw/excalidraw";
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.Item onSelect={() => window.alert("Item1")}> Item1 </MainMenu.Item>
<MainMenu.Item onSelect={() => window.alert("Item2")}> Item 2 </>
</MainMenu>
</Excalidraw>
}
```
**MainMenu**
This is the `MainMenu` component which you need to import to render the menu with custom options.
**MainMenu.Item**
To render an item, its recommended to use `MainMenu.Item`.
| Prop | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `onSelect` | `Function` | Yes | `undefined` | The handler is triggered when the item is selected. |
| `children` | `React.ReactNode` | Yes | `undefined` | The content of the menu item |
| `icon` | `JSX.Element` | No | `undefined` | The icon used in the menu item |
| `shortcut` | `string` | No | `undefined` | The shortcut to be shown for the menu item |
| `className` | `string` | No | "" | The class names to be added to the menu item |
| `style` | `React.CSSProperties` | No | `undefined` | The inline styles to be added to the menu item |
| `ariaLabel` | `string` | `undefined` | No | The `aria-label` to be added to the item for accessibility |
| `dataTestId` | `string` | `undefined` | No | The `data-testid` to be added to the item. |
**MainMenu.ItemLink**
To render an item as a link, its recommended to use `MainMenu.ItemLink`.
**Usage**
```js
import { MainMenu } from "@excalidraw/excalidraw";
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.ItemLink href="https://google.com">Google</MainMenu.ItemLink>
<MainMenu.ItemLink href="https://excalidraw.com">
Excalidraw
</MainMenu.ItemLink>
</MainMenu>
</Excalidraw>;
};
```
| Prop | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `href` | `string` | Yes | `undefined` | The `href` attribute to be added to the `anchor` element. |
| `children` | `React.ReactNode` | Yes | `undefined` | The content of the menu item |
| `icon` | `JSX.Element` | No | `undefined` | The icon used in the menu item |
| `shortcut` | `string` | No | `undefined` | The shortcut to be shown for the menu item |
| `className` | `string` | No | "" | The class names to be added to the menu item |
| `style` | `React.CSSProperties` | No | `undefined` | The inline styles to be added to the menu item |
| `ariaLabel` | `string` | No | `undefined` | The `aria-label` to be added to the item for accessibility |
| `dataTestId` | `string` | No | `undefined` | The `data-testid` to be added to the item. |
**MainMenu.ItemCustom**
To render a custom item, you can use `MainMenu.ItemCustom`.
**Usage**
```js
import { MainMenu } from "@excalidraw/excalidraw";
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.ItemCustom>
<button
style={{ height: "2rem" }}
onClick={() => window.alert("custom menu item")}
>
{" "}
custom item
</button>
</MainMenu.ItemCustom>
</MainMenu>
</Excalidraw>;
};
```
| Prop | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `children` | `React.ReactNode` | Yes | `undefined` | The content of the menu item |
| `className` | `string` | No | "" | The class names to be added to the menu item |
| `style` | `React.CSSProperties` | No | `undefined` | The inline styles to be added to the menu item |
| `dataTestId` | `string` | No | `undefined` | The `data-testid` to be added to the item. |
**MainMenu.DefaultItems**
For the items which are shown in the menu in [excalidraw.com](https://excalidraw.com), you can use `MainMenu.DefaultItems`
```js
import { MainMenu } from "@excalidraw/excalidraw";
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.DefaultItems.Socials/>
<MainMenu.DefaultItems.Export/>
<MainMenu.Item onSelect={() => window.alert("Item1")}> Item1 </MainMenu.Item>
<MainMenu.Item onSelect={() => window.alert("Item2")}> Item 2 </>
</MainMenu>
</Excalidraw>
}
```
Here is a [complete list](https://github.com/excalidraw/excalidraw/blob/master/src/components/mainMenu/DefaultItems.tsx) of the default items.
**MainMenu.Group**
To Group item in the main menu, you can use `MainMenu.Group`
```js
import { MainMenu } from "@excalidraw/excalidraw";
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.Group title="Excalidraw items">
<MainMenu.DefaultItems.Socials/>
<MainMenu.DefaultItems.Export/>
</MainMenu.Group>
<MainMenu.Group title="custom items">
<MainMenu.Item onSelect={() => window.alert("Item1")}> Item1 </MainMenu.Item>
<MainMenu.Item onSelect={() => window.alert("Item2")}> Item 2 </>
</MainMenu.Group>
</MainMenu>
</Excalidraw>
}
```
| Prop | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `children ` | `React.ReactNode` | Yes | `undefined` | The content of the `Menu Group` |
| `title` | `string` | No | `undefined` | The `title` for the grouped items |
| `className` | `string` | No | "" | The `classname` to be added to the group |
| `style` | `React.CSsSProperties` | No | `undefined` | The inline `styles` to be added to the group |
### Props
| Name | Type | Default | Description |
@ -1369,6 +1558,53 @@ viewportCoordsToSceneCoords({clientX: number, clientY: number}, appState: <a hre
This function returns equivalent scene coords for the provided viewport coords in params.
#### useDevice
This hook can be used to check the type of device which is being used. It can only be used inside the `children` of `Excalidraw` component
```js
import { useDevice, Footer } from "@excalidraw/excalidraw";
const MobileFooter = ({
}) => {
const device = useDevice();
if (device.isMobile) {
return (
<Footer>
<button
className="custom-footer"
onClick={() => alert("This is custom footer in mobile menu")}
>
{" "}
custom footer{" "}
</button>
</Footer>
);
}
return null;
};
const App = () => {
<Excalidraw>
<MainMenu>
<MainMenu.Item> Item1 </MainMenu.Item>
<MainMenu.Item> Item 2 </>
<MobileFooter/>
</MainMenu>
</Excalidraw>
}
```
The `device` has the following `attributes`
| Name | Type | Description |
| --- | --- | --- |
| `isSmScreen` | `boolean` | Set to `true` when the device small screen is small (Width < `640px` ) |
| `isMobile` | `boolean` | Set to `true` when the device is `mobile` |
| `isTouchScreen` | `boolean` | Set to `true` for `touch` devices |
| `canDeviceFitSidebar` | `boolean` | Implies whether there is enough space to fit the `sidebar` |
### Exported constants
#### `FONT_FAMILY`

@ -73,9 +73,4 @@
.custom-element {
padding: 0.1rem;
}
&.excalidraw-container .layer-ui__wrapper .layer-ui__wrapper__footer-center {
// Remove once we stop importing langauge list from excalidraw app
justify-content: flex-start;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save