Compare commits
36
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
385416d231 | ||
|
|
4d04e3e9a1 | ||
|
|
e08ebdec28 | ||
|
|
86605829c6 | ||
|
|
c398af6c92 | ||
|
|
973f2a464d | ||
|
|
02cef5ea92 | ||
|
|
d615c2cea1 | ||
|
|
446f871536 | ||
|
|
34bff557e3 | ||
|
|
a0e54e3768 | ||
|
|
d6ec1dc7e6 | ||
|
|
62e20aa247 | ||
|
|
0199c82e98 | ||
|
|
3c07ff358a | ||
|
|
d9c85ff18f | ||
|
|
6d84fa21c5 | ||
|
|
5666fd8199 | ||
|
|
abdacf8239 | ||
|
|
1068153b25 | ||
|
|
09876aba6d | ||
|
|
8ceb55dd02 | ||
|
|
b1f3cc50ee | ||
|
|
c72c47f0cd | ||
|
|
37b75263f8 | ||
|
|
c08840358b | ||
|
|
e99baaa6bb | ||
|
|
a8857f2849 | ||
|
|
df1f9281b4 | ||
|
|
c210b7b092 | ||
|
|
660d21fe46 | ||
|
|
c7780cb9cb | ||
|
|
4e265629c3 | ||
|
|
1c611d6c4f | ||
|
|
ab6af41d33 | ||
|
|
15dfe0cc7c |
@@ -9,7 +9,7 @@ You will need to import the `Footer` component from the package and wrap your co
|
|||||||
```jsx live
|
```jsx live
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<div style={{ height: "500px" }}>
|
<div style={{ height: "500px"}}>
|
||||||
<Excalidraw>
|
<Excalidraw>
|
||||||
<Footer>
|
<Footer>
|
||||||
<button
|
<button
|
||||||
@@ -27,19 +27,19 @@ function App() {
|
|||||||
|
|
||||||
This will only work for `Desktop` devices.
|
This will only work for `Desktop` devices.
|
||||||
|
|
||||||
For `mobile` you will need to render it inside the [MainMenu](#mainmenu). You can use the [`useEditorInterface`](#useEditorInterface) hook to check the type of device, this will be available only inside the `children` of `Excalidraw` component.
|
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.
|
||||||
|
|
||||||
Open the `Menu` in the below playground and you will see the `custom footer` rendered.
|
Open the `Menu` in the below playground and you will see the `custom footer` rendered.
|
||||||
|
|
||||||
```jsx live noInline
|
```jsx live noInline
|
||||||
const MobileFooter = ({}) => {
|
const MobileFooter = ({}) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
if (editorInterface.formFactor === "phone") {
|
if (device.editor.isMobile) {
|
||||||
return (
|
return (
|
||||||
<Footer>
|
<Footer>
|
||||||
<button
|
<button
|
||||||
className="custom-footer"
|
className="custom-footer"
|
||||||
style={{ marginLeft: "20px", height: "2rem" }}
|
style= {{ marginLeft: '20px', height: '2rem'}}
|
||||||
onClick={() => alert("This is custom footer in mobile menu")}
|
onClick={() => alert("This is custom footer in mobile menu")}
|
||||||
>
|
>
|
||||||
custom footer
|
custom footer
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ viewportCoordsToSceneCoords({ clientX: number, clientY: number },<br/> 
|
|||||||
appState: <a href="https://github.com/excalidraw/excalidraw/blob/master/packages/excalidraw/types.ts#L95">AppState</a><br/>): {x: number, y: number}
|
appState: <a href="https://github.com/excalidraw/excalidraw/blob/master/packages/excalidraw/types.ts#L95">AppState</a><br/>): {x: number, y: number}
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
### useEditorInterface
|
### 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.
|
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.
|
||||||
|
|
||||||
@@ -300,8 +300,8 @@ Open the `main menu` in the below example to view the footer.
|
|||||||
|
|
||||||
```jsx live noInline
|
```jsx live noInline
|
||||||
const MobileFooter = ({}) => {
|
const MobileFooter = ({}) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
if (editorInterface.formFactor === "phone") {
|
if (device.editor.isMobile) {
|
||||||
return (
|
return (
|
||||||
<Footer>
|
<Footer>
|
||||||
<button
|
<button
|
||||||
@@ -336,20 +336,12 @@ render(<App />);
|
|||||||
The `device` has the following `attributes`, some grouped into `viewport` and `editor` objects, per context.
|
The `device` has the following `attributes`, some grouped into `viewport` and `editor` objects, per context.
|
||||||
|
|
||||||
| Name | Type | Description |
|
| Name | Type | Description |
|
||||||
| ---- | ---- | ----------- |
|
| --- | --- | --- |
|
||||||
|
| `viewport.isMobile` | `boolean` | Set to `true` when viewport is in `mobile` breakpoint |
|
||||||
The `EditorInterface` object has the following properties:
|
| `viewport.isLandscape` | `boolean` | Set to `true` when the viewport is in `landscape` mode |
|
||||||
|
| `editor.canFitSidebar` | `boolean` | Set to `true` if there's enough space to fit the `sidebar` |
|
||||||
| Name | Type | Description |
|
| `editor.isMobile` | `boolean` | Set to `true` when editor container is in `mobile` breakpoint |
|
||||||
| --- | --- | --- | --- | --- | --- |
|
| `isTouchScreen` | `boolean` | Set to `true` for `touch` when touch event detected |
|
||||||
| `formFactor` | `'phone' | 'tablet' | 'desktop'` | Indicates the device type based on screen size |
|
|
||||||
| `desktopUIMode` | `'compact' | 'full'` | UI mode for desktop form factor |
|
|
||||||
| `userAgent.raw` | `string` | Raw user agent string |
|
|
||||||
| `userAgent.isMobileDevice` | `boolean` | True if device is mobile |
|
|
||||||
| `userAgent.platform` | `'ios' | 'android' | 'other' | 'unknown'` | Device platform |
|
|
||||||
| `isTouchScreen` | `boolean` | True if touch events are detected |
|
|
||||||
| `canFitSidebar` | `boolean` | True if sidebar can fit in the viewport |
|
|
||||||
| `isLandscape` | `boolean` | True if viewport is in landscape mode |
|
|
||||||
|
|
||||||
### i18n
|
### i18n
|
||||||
|
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ const MobileFooter = ({
|
|||||||
excalidrawAPI: ExcalidrawImperativeAPI;
|
excalidrawAPI: ExcalidrawImperativeAPI;
|
||||||
excalidrawLib: typeof TExcalidraw;
|
excalidrawLib: typeof TExcalidraw;
|
||||||
}) => {
|
}) => {
|
||||||
const { useEditorInterface, Footer } = excalidrawLib;
|
const { useDevice, Footer } = excalidrawLib;
|
||||||
|
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
if (editorInterface.formFactor === "phone") {
|
if (device.editor.isMobile) {
|
||||||
return (
|
return (
|
||||||
<Footer>
|
<Footer>
|
||||||
<CustomFooter
|
<CustomFooter
|
||||||
|
|||||||
+16
-356
@@ -4,8 +4,6 @@ import {
|
|||||||
TTDDialogTrigger,
|
TTDDialogTrigger,
|
||||||
CaptureUpdateAction,
|
CaptureUpdateAction,
|
||||||
reconcileElements,
|
reconcileElements,
|
||||||
getCommonBounds,
|
|
||||||
useEditorInterface,
|
|
||||||
} from "@excalidraw/excalidraw";
|
} from "@excalidraw/excalidraw";
|
||||||
import { trackEvent } from "@excalidraw/excalidraw/analytics";
|
import { trackEvent } from "@excalidraw/excalidraw/analytics";
|
||||||
import { getDefaultAppState } from "@excalidraw/excalidraw/appState";
|
import { getDefaultAppState } from "@excalidraw/excalidraw/appState";
|
||||||
@@ -58,21 +56,9 @@ import {
|
|||||||
useHandleLibrary,
|
useHandleLibrary,
|
||||||
} from "@excalidraw/excalidraw/data/library";
|
} from "@excalidraw/excalidraw/data/library";
|
||||||
|
|
||||||
import { getSelectedElements } from "@excalidraw/element/selection";
|
|
||||||
|
|
||||||
import {
|
|
||||||
decodeConstraints,
|
|
||||||
encodeConstraints,
|
|
||||||
} from "@excalidraw/excalidraw/scene/scrollConstraints";
|
|
||||||
|
|
||||||
import { useApp } from "@excalidraw/excalidraw/components/App";
|
|
||||||
|
|
||||||
import { clamp } from "@excalidraw/math";
|
|
||||||
|
|
||||||
import type { RemoteExcalidrawElement } from "@excalidraw/excalidraw/data/reconcile";
|
import type { RemoteExcalidrawElement } from "@excalidraw/excalidraw/data/reconcile";
|
||||||
import type { RestoredDataState } from "@excalidraw/excalidraw/data/restore";
|
import type { RestoredDataState } from "@excalidraw/excalidraw/data/restore";
|
||||||
import type {
|
import type {
|
||||||
ExcalidrawElement,
|
|
||||||
FileId,
|
FileId,
|
||||||
NonDeletedExcalidrawElement,
|
NonDeletedExcalidrawElement,
|
||||||
OrderedExcalidrawElement,
|
OrderedExcalidrawElement,
|
||||||
@@ -83,9 +69,8 @@ import type {
|
|||||||
BinaryFiles,
|
BinaryFiles,
|
||||||
ExcalidrawInitialDataState,
|
ExcalidrawInitialDataState,
|
||||||
UIAppState,
|
UIAppState,
|
||||||
ScrollConstraints,
|
|
||||||
} from "@excalidraw/excalidraw/types";
|
} from "@excalidraw/excalidraw/types";
|
||||||
import type { Merge, ResolutionType } from "@excalidraw/common/utility-types";
|
import type { ResolutionType } from "@excalidraw/common/utility-types";
|
||||||
import type { ResolvablePromise } from "@excalidraw/common/utils";
|
import type { ResolvablePromise } from "@excalidraw/common/utils";
|
||||||
|
|
||||||
import CustomStats from "./CustomStats";
|
import CustomStats from "./CustomStats";
|
||||||
@@ -152,281 +137,10 @@ import { ExcalidrawPlusIframeExport } from "./ExcalidrawPlusIframeExport";
|
|||||||
|
|
||||||
import "./index.scss";
|
import "./index.scss";
|
||||||
|
|
||||||
import { ExcalidrawPlusPromoBanner } from "./components/ExcalidrawPlusPromoBanner";
|
|
||||||
import { AppSidebar } from "./components/AppSidebar";
|
|
||||||
|
|
||||||
import type { CollabAPI } from "./collab/Collab";
|
import type { CollabAPI } from "./collab/Collab";
|
||||||
|
|
||||||
polyfill();
|
polyfill();
|
||||||
|
|
||||||
type DebugScrollConstraints = Merge<
|
|
||||||
ScrollConstraints,
|
|
||||||
{ viewportZoomFactor: number; enabled: boolean }
|
|
||||||
>;
|
|
||||||
|
|
||||||
const ConstraintsSettings = ({
|
|
||||||
initialConstraints,
|
|
||||||
excalidrawAPI,
|
|
||||||
}: {
|
|
||||||
initialConstraints: DebugScrollConstraints;
|
|
||||||
excalidrawAPI: ExcalidrawImperativeAPI;
|
|
||||||
}) => {
|
|
||||||
const [constraints, setConstraints] =
|
|
||||||
useState<DebugScrollConstraints>(initialConstraints);
|
|
||||||
|
|
||||||
const app = useApp();
|
|
||||||
const frames = app.scene.getNonDeletedFramesLikes();
|
|
||||||
const [activeFrameId, setActiveFrameId] = useState<string | null>(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const params = new URLSearchParams(window.location.search);
|
|
||||||
params.set("constraints", encodeConstraints(constraints));
|
|
||||||
history.replaceState(null, "", `?${params.toString()}`);
|
|
||||||
|
|
||||||
constraints.enabled
|
|
||||||
? excalidrawAPI.setScrollConstraints(constraints)
|
|
||||||
: excalidrawAPI.setScrollConstraints(null);
|
|
||||||
}, [constraints, excalidrawAPI]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const frame = frames.find((frame) => frame.id === activeFrameId);
|
|
||||||
if (frame) {
|
|
||||||
const { x, y, width, height } = frame;
|
|
||||||
setConstraints((s) => ({
|
|
||||||
x: Math.round(x),
|
|
||||||
y: Math.round(y),
|
|
||||||
width: Math.round(width),
|
|
||||||
height: Math.round(height),
|
|
||||||
enabled: s.enabled,
|
|
||||||
viewportZoomFactor: s.viewportZoomFactor,
|
|
||||||
lockZoom: s.lockZoom,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}, [activeFrameId, frames]);
|
|
||||||
|
|
||||||
const [selection, setSelection] = useState<ExcalidrawElement[]>([]);
|
|
||||||
useEffect(() => {
|
|
||||||
return excalidrawAPI.onChange((elements, appState) => {
|
|
||||||
setSelection(getSelectedElements(elements, appState));
|
|
||||||
});
|
|
||||||
}, [excalidrawAPI]);
|
|
||||||
|
|
||||||
const parseValue = (
|
|
||||||
value: string,
|
|
||||||
opts?: {
|
|
||||||
min?: number;
|
|
||||||
max?: number;
|
|
||||||
},
|
|
||||||
) => {
|
|
||||||
const { min = -Infinity, max = Infinity } = opts || {};
|
|
||||||
let parsedValue = parseInt(value);
|
|
||||||
if (isNaN(parsedValue)) {
|
|
||||||
parsedValue = 0;
|
|
||||||
}
|
|
||||||
return clamp(parsedValue, min, max);
|
|
||||||
};
|
|
||||||
|
|
||||||
const inputStyle = {
|
|
||||||
width: "4rem",
|
|
||||||
height: "1rem",
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
position: "fixed",
|
|
||||||
bottom: 10,
|
|
||||||
left: "calc(50%)",
|
|
||||||
transform: "translateX(-50%)",
|
|
||||||
zIndex: 999999,
|
|
||||||
display: "flex",
|
|
||||||
alignItems: "center",
|
|
||||||
justifyContent: "center",
|
|
||||||
flexDirection: "column",
|
|
||||||
gap: "0.5rem",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
gap: "0.6rem",
|
|
||||||
alignItems: "center",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
enabled:{" "}
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
defaultChecked={!!constraints.enabled}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({ ...s, enabled: e.target.checked }))
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
x:{" "}
|
|
||||||
<input
|
|
||||||
placeholder="x"
|
|
||||||
type="number"
|
|
||||||
step={"10"}
|
|
||||||
value={constraints.x.toString()}
|
|
||||||
onChange={(e) => {
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
x: parseValue(e.target.value),
|
|
||||||
}));
|
|
||||||
}}
|
|
||||||
style={inputStyle}
|
|
||||||
/>
|
|
||||||
y:{" "}
|
|
||||||
<input
|
|
||||||
placeholder="y"
|
|
||||||
type="number"
|
|
||||||
step={"10"}
|
|
||||||
value={constraints.y.toString()}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
y: parseValue(e.target.value),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
style={inputStyle}
|
|
||||||
/>
|
|
||||||
w:{" "}
|
|
||||||
<input
|
|
||||||
placeholder="width"
|
|
||||||
type="number"
|
|
||||||
step={"10"}
|
|
||||||
value={constraints.width.toString()}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
width: parseValue(e.target.value, {
|
|
||||||
min: 200,
|
|
||||||
}),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
style={inputStyle}
|
|
||||||
/>
|
|
||||||
h:{" "}
|
|
||||||
<input
|
|
||||||
placeholder="height"
|
|
||||||
type="number"
|
|
||||||
step={"10"}
|
|
||||||
value={constraints.height.toString()}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
height: parseValue(e.target.value, {
|
|
||||||
min: 200,
|
|
||||||
}),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
style={inputStyle}
|
|
||||||
/>
|
|
||||||
zoomFactor:
|
|
||||||
<input
|
|
||||||
placeholder="zoom factor"
|
|
||||||
type="number"
|
|
||||||
min="0.1"
|
|
||||||
max="1"
|
|
||||||
step="0.1"
|
|
||||||
value={constraints.viewportZoomFactor.toString()}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
viewportZoomFactor: parseFloat(e.target.value.toString()) ?? 0.7,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
style={inputStyle}
|
|
||||||
/>
|
|
||||||
overscrollAllowance:
|
|
||||||
<input
|
|
||||||
placeholder="overscroll allowance"
|
|
||||||
type="number"
|
|
||||||
min="0"
|
|
||||||
max="1"
|
|
||||||
step="0.1"
|
|
||||||
value={constraints.overscrollAllowance?.toString()}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
overscrollAllowance: parseFloat(e.target.value.toString()) ?? 0.5,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
style={inputStyle}
|
|
||||||
/>
|
|
||||||
lockZoom:{" "}
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
defaultChecked={!!constraints.lockZoom}
|
|
||||||
onChange={(e) =>
|
|
||||||
setConstraints((s) => ({ ...s, lockZoom: e.target.checked }))
|
|
||||||
}
|
|
||||||
value={constraints.lockZoom?.toString()}
|
|
||||||
/>
|
|
||||||
{selection.length > 0 && (
|
|
||||||
<button
|
|
||||||
onClick={() => {
|
|
||||||
const bbox = getCommonBounds(selection);
|
|
||||||
setConstraints((s) => ({
|
|
||||||
...s,
|
|
||||||
x: Math.round(bbox[0]),
|
|
||||||
y: Math.round(bbox[1]),
|
|
||||||
width: Math.round(bbox[2] - bbox[0]),
|
|
||||||
height: Math.round(bbox[3] - bbox[1]),
|
|
||||||
}));
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
use selection
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{frames.length > 0 && (
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
gap: "0.6rem",
|
|
||||||
flexDirection: "row",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
onClick={() => {
|
|
||||||
const currentIndex = frames.findIndex(
|
|
||||||
(frame) => frame.id === activeFrameId,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (currentIndex === -1) {
|
|
||||||
setActiveFrameId(frames[frames.length - 1].id);
|
|
||||||
} else {
|
|
||||||
const nextIndex =
|
|
||||||
(currentIndex - 1 + frames.length) % frames.length;
|
|
||||||
setActiveFrameId(frames[nextIndex].id);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Prev
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
onClick={() => {
|
|
||||||
const currentIndex = frames.findIndex(
|
|
||||||
(frame) => frame.id === activeFrameId,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (currentIndex === -1) {
|
|
||||||
setActiveFrameId(frames[0].id);
|
|
||||||
} else {
|
|
||||||
const nextIndex = (currentIndex + 1) % frames.length;
|
|
||||||
setActiveFrameId(frames[nextIndex].id);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Next
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
window.EXCALIDRAW_THROTTLE_RENDER = true;
|
window.EXCALIDRAW_THROTTLE_RENDER = true;
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -498,20 +212,10 @@ const initializeScene = async (opts: {
|
|||||||
)
|
)
|
||||||
> => {
|
> => {
|
||||||
const searchParams = new URLSearchParams(window.location.search);
|
const searchParams = new URLSearchParams(window.location.search);
|
||||||
const hashParams = new URLSearchParams(window.location.hash.slice(1));
|
|
||||||
const id = searchParams.get("id");
|
const id = searchParams.get("id");
|
||||||
const shareableLink = hashParams.get("json")?.split(",");
|
const jsonBackendMatch = window.location.hash.match(
|
||||||
|
/^#json=([a-zA-Z0-9_-]+),([a-zA-Z0-9_-]+)$/,
|
||||||
if (shareableLink) {
|
);
|
||||||
hashParams.delete("json");
|
|
||||||
const hash = `#${decodeURIComponent(hashParams.toString())}`;
|
|
||||||
window.history.replaceState(
|
|
||||||
{},
|
|
||||||
APP_NAME,
|
|
||||||
`${window.location.origin}${hash}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const externalUrlMatch = window.location.hash.match(/^#url=(.*)$/);
|
const externalUrlMatch = window.location.hash.match(/^#url=(.*)$/);
|
||||||
|
|
||||||
const localDataState = importFromLocalStorage();
|
const localDataState = importFromLocalStorage();
|
||||||
@@ -521,7 +225,7 @@ const initializeScene = async (opts: {
|
|||||||
} = await loadScene(null, null, localDataState);
|
} = await loadScene(null, null, localDataState);
|
||||||
|
|
||||||
let roomLinkData = getCollaborationLinkData(window.location.href);
|
let roomLinkData = getCollaborationLinkData(window.location.href);
|
||||||
const isExternalScene = !!(id || shareableLink || roomLinkData);
|
const isExternalScene = !!(id || jsonBackendMatch || roomLinkData);
|
||||||
if (isExternalScene) {
|
if (isExternalScene) {
|
||||||
if (
|
if (
|
||||||
// don't prompt if scene is empty
|
// don't prompt if scene is empty
|
||||||
@@ -531,16 +235,16 @@ const initializeScene = async (opts: {
|
|||||||
// otherwise, prompt whether user wants to override current scene
|
// otherwise, prompt whether user wants to override current scene
|
||||||
(await openConfirmModal(shareableLinkConfirmDialog))
|
(await openConfirmModal(shareableLinkConfirmDialog))
|
||||||
) {
|
) {
|
||||||
if (shareableLink) {
|
if (jsonBackendMatch) {
|
||||||
scene = await loadScene(
|
scene = await loadScene(
|
||||||
shareableLink[0],
|
jsonBackendMatch[1],
|
||||||
shareableLink[1],
|
jsonBackendMatch[2],
|
||||||
localDataState,
|
localDataState,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
scene.scrollToContent = true;
|
scene.scrollToContent = true;
|
||||||
if (!roomLinkData) {
|
if (!roomLinkData) {
|
||||||
// window.history.replaceState({}, APP_NAME, window.location.origin);
|
window.history.replaceState({}, APP_NAME, window.location.origin);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// https://github.com/excalidraw/excalidraw/issues/1919
|
// https://github.com/excalidraw/excalidraw/issues/1919
|
||||||
@@ -557,7 +261,7 @@ const initializeScene = async (opts: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
roomLinkData = null;
|
roomLinkData = null;
|
||||||
// window.history.replaceState({}, APP_NAME, window.location.origin);
|
window.history.replaceState({}, APP_NAME, window.location.origin);
|
||||||
}
|
}
|
||||||
} else if (externalUrlMatch) {
|
} else if (externalUrlMatch) {
|
||||||
window.history.replaceState({}, APP_NAME, window.location.origin);
|
window.history.replaceState({}, APP_NAME, window.location.origin);
|
||||||
@@ -618,12 +322,12 @@ const initializeScene = async (opts: {
|
|||||||
key: roomLinkData.roomKey,
|
key: roomLinkData.roomKey,
|
||||||
};
|
};
|
||||||
} else if (scene) {
|
} else if (scene) {
|
||||||
return isExternalScene && shareableLink
|
return isExternalScene && jsonBackendMatch
|
||||||
? {
|
? {
|
||||||
scene,
|
scene,
|
||||||
isExternalScene,
|
isExternalScene,
|
||||||
id: shareableLink[0],
|
id: jsonBackendMatch[1],
|
||||||
key: shareableLink[1],
|
key: jsonBackendMatch[2],
|
||||||
}
|
}
|
||||||
: { scene, isExternalScene: false };
|
: { scene, isExternalScene: false };
|
||||||
}
|
}
|
||||||
@@ -638,8 +342,6 @@ const ExcalidrawWrapper = () => {
|
|||||||
|
|
||||||
const [langCode, setLangCode] = useAppLangCode();
|
const [langCode, setLangCode] = useAppLangCode();
|
||||||
|
|
||||||
const editorInterface = useEditorInterface();
|
|
||||||
|
|
||||||
// initial state
|
// initial state
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -961,8 +663,8 @@ const ExcalidrawWrapper = () => {
|
|||||||
debugRenderer(
|
debugRenderer(
|
||||||
debugCanvasRef.current,
|
debugCanvasRef.current,
|
||||||
appState,
|
appState,
|
||||||
elements,
|
|
||||||
window.devicePixelRatio,
|
window.devicePixelRatio,
|
||||||
|
() => forceRefresh((prev) => !prev),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1033,32 +735,6 @@ const ExcalidrawWrapper = () => {
|
|||||||
[setShareDialogState],
|
[setShareDialogState],
|
||||||
);
|
);
|
||||||
|
|
||||||
const [constraints] = useState<DebugScrollConstraints>(() => {
|
|
||||||
const stored = new URLSearchParams(location.search.slice(1)).get(
|
|
||||||
"constraints",
|
|
||||||
);
|
|
||||||
let storedConstraints = {};
|
|
||||||
if (stored) {
|
|
||||||
try {
|
|
||||||
storedConstraints = decodeConstraints(stored);
|
|
||||||
} catch {
|
|
||||||
console.error("Invalid scroll constraints in URL");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
width: document.body.clientWidth,
|
|
||||||
height: document.body.clientHeight,
|
|
||||||
lockZoom: false,
|
|
||||||
viewportZoomFactor: 0.7,
|
|
||||||
overscrollAllowance: 0.5,
|
|
||||||
enabled: !isTestEnv(),
|
|
||||||
...storedConstraints,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
// browsers generally prevent infinite self-embedding, there are
|
// browsers generally prevent infinite self-embedding, there are
|
||||||
// cases where it still happens, and while we disallow self-embedding
|
// cases where it still happens, and while we disallow self-embedding
|
||||||
// by not whitelisting our own origin, this serves as an additional guard
|
// by not whitelisting our own origin, this serves as an additional guard
|
||||||
@@ -1172,27 +848,18 @@ const ExcalidrawWrapper = () => {
|
|||||||
if (isMobile || !collabAPI || isCollabDisabled) {
|
if (isMobile || !collabAPI || isCollabDisabled) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="excalidraw-ui-top-right">
|
<div className="top-right-ui">
|
||||||
{excalidrawAPI?.getEditorInterface().formFactor === "desktop" && (
|
|
||||||
<ExcalidrawPlusPromoBanner
|
|
||||||
isSignedIn={isExcalidrawPlusSignedUser}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{collabError.message && <CollabError collabError={collabError} />}
|
{collabError.message && <CollabError collabError={collabError} />}
|
||||||
<LiveCollaborationTrigger
|
<LiveCollaborationTrigger
|
||||||
isCollaborating={isCollaborating}
|
isCollaborating={isCollaborating}
|
||||||
onSelect={() =>
|
onSelect={() =>
|
||||||
setShareDialogState({ isOpen: true, type: "share" })
|
setShareDialogState({ isOpen: true, type: "share" })
|
||||||
}
|
}
|
||||||
editorInterface={editorInterface}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
// scrollConstraints={constraints.enabled ? constraints : undefined}
|
|
||||||
onLinkOpen={(element, event) => {
|
onLinkOpen={(element, event) => {
|
||||||
if (element.link && isElementLink(element.link)) {
|
if (element.link && isElementLink(element.link)) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -1200,12 +867,6 @@ const ExcalidrawWrapper = () => {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{/* {excalidrawAPI && !isTestEnv() && (
|
|
||||||
<ConstraintsSettings
|
|
||||||
excalidrawAPI={excalidrawAPI}
|
|
||||||
initialConstraints={constraints}
|
|
||||||
/>
|
|
||||||
)} */}
|
|
||||||
<AppMainMenu
|
<AppMainMenu
|
||||||
onCollabDialogOpen={onCollabDialogOpen}
|
onCollabDialogOpen={onCollabDialogOpen}
|
||||||
isCollaborating={isCollaborating}
|
isCollaborating={isCollaborating}
|
||||||
@@ -1280,8 +941,6 @@ const ExcalidrawWrapper = () => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<AppSidebar />
|
|
||||||
|
|
||||||
{errorMessage && (
|
{errorMessage && (
|
||||||
<ErrorDialog onClose={() => setErrorMessage("")}>
|
<ErrorDialog onClose={() => setErrorMessage("")}>
|
||||||
{errorMessage}
|
{errorMessage}
|
||||||
@@ -1484,6 +1143,7 @@ const ExcalidrawWrapper = () => {
|
|||||||
ref={debugCanvasRef}
|
ref={debugCanvasRef}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
{/* <FreedrawDebugSliders /> */}
|
||||||
</Excalidraw>
|
</Excalidraw>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { isExcalidrawPlusSignedUser } from "../app_constants";
|
|||||||
|
|
||||||
import { DebugFooter, isVisualDebuggerEnabled } from "./DebugCanvas";
|
import { DebugFooter, isVisualDebuggerEnabled } from "./DebugCanvas";
|
||||||
import { EncryptedIcon } from "./EncryptedIcon";
|
import { EncryptedIcon } from "./EncryptedIcon";
|
||||||
|
import { ExcalidrawPlusAppLink } from "./ExcalidrawPlusAppLink";
|
||||||
|
|
||||||
export const AppFooter = React.memo(
|
export const AppFooter = React.memo(
|
||||||
({ onChange }: { onChange: () => void }) => {
|
({ onChange }: { onChange: () => void }) => {
|
||||||
@@ -18,7 +19,11 @@ export const AppFooter = React.memo(
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{isVisualDebuggerEnabled() && <DebugFooter onChange={onChange} />}
|
{isVisualDebuggerEnabled() && <DebugFooter onChange={onChange} />}
|
||||||
{!isExcalidrawPlusSignedUser && <EncryptedIcon />}
|
{isExcalidrawPlusSignedUser ? (
|
||||||
|
<ExcalidrawPlusAppLink />
|
||||||
|
) : (
|
||||||
|
<EncryptedIcon />
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Footer>
|
</Footer>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
.excalidraw {
|
|
||||||
.app-sidebar-promo-container {
|
|
||||||
padding: 0.75rem;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
gap: 1rem;
|
|
||||||
flex: 1 1 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-sidebar-promo-image {
|
|
||||||
margin: 1rem 0;
|
|
||||||
|
|
||||||
height: 16.25rem;
|
|
||||||
background-size: contain;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
|
|
||||||
background-image: radial-gradient(
|
|
||||||
circle,
|
|
||||||
transparent 60%,
|
|
||||||
var(--sidebar-bg-color) 100%
|
|
||||||
),
|
|
||||||
var(--image-source);
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-sidebar-promo-text {
|
|
||||||
padding: 0 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link-button {
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
import { DefaultSidebar, Sidebar, THEME } from "@excalidraw/excalidraw";
|
|
||||||
import {
|
|
||||||
messageCircleIcon,
|
|
||||||
presentationIcon,
|
|
||||||
} from "@excalidraw/excalidraw/components/icons";
|
|
||||||
import { LinkButton } from "@excalidraw/excalidraw/components/LinkButton";
|
|
||||||
import { useUIAppState } from "@excalidraw/excalidraw/context/ui-appState";
|
|
||||||
|
|
||||||
import "./AppSidebar.scss";
|
|
||||||
|
|
||||||
export const AppSidebar = () => {
|
|
||||||
const { theme, openSidebar } = useUIAppState();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<DefaultSidebar>
|
|
||||||
<DefaultSidebar.TabTriggers>
|
|
||||||
<Sidebar.TabTrigger
|
|
||||||
tab="comments"
|
|
||||||
style={{ opacity: openSidebar?.tab === "comments" ? 1 : 0.4 }}
|
|
||||||
>
|
|
||||||
{messageCircleIcon}
|
|
||||||
</Sidebar.TabTrigger>
|
|
||||||
<Sidebar.TabTrigger
|
|
||||||
tab="presentation"
|
|
||||||
style={{ opacity: openSidebar?.tab === "presentation" ? 1 : 0.4 }}
|
|
||||||
>
|
|
||||||
{presentationIcon}
|
|
||||||
</Sidebar.TabTrigger>
|
|
||||||
</DefaultSidebar.TabTriggers>
|
|
||||||
<Sidebar.Tab tab="comments">
|
|
||||||
<div className="app-sidebar-promo-container">
|
|
||||||
<div
|
|
||||||
className="app-sidebar-promo-image"
|
|
||||||
style={{
|
|
||||||
["--image-source" as any]: `url(/oss_promo_comments_${
|
|
||||||
theme === THEME.DARK ? "dark" : "light"
|
|
||||||
}.jpg)`,
|
|
||||||
opacity: 0.7,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<div className="app-sidebar-promo-text">
|
|
||||||
Make comments with Excalidraw+
|
|
||||||
</div>
|
|
||||||
<LinkButton
|
|
||||||
href={`${
|
|
||||||
import.meta.env.VITE_APP_PLUS_LP
|
|
||||||
}/plus?utm_source=excalidraw&utm_medium=app&utm_content=comments_promo#excalidraw-redirect`}
|
|
||||||
>
|
|
||||||
Sign up now
|
|
||||||
</LinkButton>
|
|
||||||
</div>
|
|
||||||
</Sidebar.Tab>
|
|
||||||
<Sidebar.Tab tab="presentation" className="px-3">
|
|
||||||
<div className="app-sidebar-promo-container">
|
|
||||||
<div
|
|
||||||
className="app-sidebar-promo-image"
|
|
||||||
style={{
|
|
||||||
["--image-source" as any]: `url(/oss_promo_presentations_${
|
|
||||||
theme === THEME.DARK ? "dark" : "light"
|
|
||||||
}.svg)`,
|
|
||||||
backgroundSize: "60%",
|
|
||||||
opacity: 0.4,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<div className="app-sidebar-promo-text">
|
|
||||||
Create presentations with Excalidraw+
|
|
||||||
</div>
|
|
||||||
<LinkButton
|
|
||||||
href={`${
|
|
||||||
import.meta.env.VITE_APP_PLUS_LP
|
|
||||||
}/plus?utm_source=excalidraw&utm_medium=app&utm_content=presentations_promo#excalidraw-redirect`}
|
|
||||||
>
|
|
||||||
Sign up now
|
|
||||||
</LinkButton>
|
|
||||||
</div>
|
|
||||||
</Sidebar.Tab>
|
|
||||||
</DefaultSidebar>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@@ -8,16 +8,9 @@ import {
|
|||||||
getNormalizedCanvasDimensions,
|
getNormalizedCanvasDimensions,
|
||||||
} from "@excalidraw/excalidraw/renderer/helpers";
|
} from "@excalidraw/excalidraw/renderer/helpers";
|
||||||
import { type AppState } from "@excalidraw/excalidraw/types";
|
import { type AppState } from "@excalidraw/excalidraw/types";
|
||||||
import { arrayToMap, throttleRAF } from "@excalidraw/common";
|
import { throttleRAF } from "@excalidraw/common";
|
||||||
import { useCallback } from "react";
|
import { useCallback } from "react";
|
||||||
|
|
||||||
import {
|
|
||||||
getGlobalFixedPointForBindableElement,
|
|
||||||
isArrowElement,
|
|
||||||
isBindableElement,
|
|
||||||
isFixedPointBinding,
|
|
||||||
} from "@excalidraw/element";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
isLineSegment,
|
isLineSegment,
|
||||||
type GlobalPoint,
|
type GlobalPoint,
|
||||||
@@ -28,15 +21,8 @@ import { isCurve } from "@excalidraw/math/curve";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import type { Curve } from "@excalidraw/math";
|
import type { Curve } from "@excalidraw/math";
|
||||||
import type { DebugElement } from "@excalidraw/common";
|
|
||||||
import type {
|
import type { DebugElement } from "@excalidraw/utils/visualdebug";
|
||||||
ElementsMap,
|
|
||||||
ExcalidrawArrowElement,
|
|
||||||
ExcalidrawBindableElement,
|
|
||||||
FixedPointBinding,
|
|
||||||
OrderedExcalidrawElement,
|
|
||||||
PointBinding,
|
|
||||||
} from "@excalidraw/element/types";
|
|
||||||
|
|
||||||
import { STORAGE_KEYS } from "../app_constants";
|
import { STORAGE_KEYS } from "../app_constants";
|
||||||
|
|
||||||
@@ -89,180 +75,6 @@ const renderOrigin = (context: CanvasRenderingContext2D, zoom: number) => {
|
|||||||
context.save();
|
context.save();
|
||||||
};
|
};
|
||||||
|
|
||||||
const _renderBinding = (
|
|
||||||
context: CanvasRenderingContext2D,
|
|
||||||
binding: FixedPointBinding | PointBinding,
|
|
||||||
elementsMap: ElementsMap,
|
|
||||||
zoom: number,
|
|
||||||
width: number,
|
|
||||||
height: number,
|
|
||||||
color: string,
|
|
||||||
) => {
|
|
||||||
if (isFixedPointBinding(binding)) {
|
|
||||||
if (!binding.fixedPoint) {
|
|
||||||
console.warn("Binding must have a fixedPoint");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const bindable = elementsMap.get(
|
|
||||||
binding.elementId,
|
|
||||||
) as ExcalidrawBindableElement;
|
|
||||||
const [x, y] = getGlobalFixedPointForBindableElement(
|
|
||||||
binding.fixedPoint,
|
|
||||||
bindable,
|
|
||||||
elementsMap,
|
|
||||||
);
|
|
||||||
|
|
||||||
context.save();
|
|
||||||
context.strokeStyle = color;
|
|
||||||
context.lineWidth = 1;
|
|
||||||
context.beginPath();
|
|
||||||
context.moveTo(x * zoom, y * zoom);
|
|
||||||
context.bezierCurveTo(
|
|
||||||
x * zoom - width,
|
|
||||||
y * zoom - height,
|
|
||||||
x * zoom - width,
|
|
||||||
y * zoom + height,
|
|
||||||
x * zoom,
|
|
||||||
y * zoom,
|
|
||||||
);
|
|
||||||
context.stroke();
|
|
||||||
context.restore();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const _renderBindableBinding = (
|
|
||||||
binding: FixedPointBinding | PointBinding,
|
|
||||||
context: CanvasRenderingContext2D,
|
|
||||||
elementsMap: ElementsMap,
|
|
||||||
zoom: number,
|
|
||||||
width: number,
|
|
||||||
height: number,
|
|
||||||
color: string,
|
|
||||||
) => {
|
|
||||||
if (isFixedPointBinding(binding)) {
|
|
||||||
const bindable = elementsMap.get(
|
|
||||||
binding.elementId,
|
|
||||||
) as ExcalidrawBindableElement;
|
|
||||||
if (!binding.fixedPoint) {
|
|
||||||
console.warn("Binding must have a fixedPoint");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const [x, y] = getGlobalFixedPointForBindableElement(
|
|
||||||
binding.fixedPoint,
|
|
||||||
bindable,
|
|
||||||
elementsMap,
|
|
||||||
);
|
|
||||||
|
|
||||||
context.save();
|
|
||||||
context.strokeStyle = color;
|
|
||||||
context.lineWidth = 1;
|
|
||||||
context.beginPath();
|
|
||||||
context.moveTo(x * zoom, y * zoom);
|
|
||||||
context.bezierCurveTo(
|
|
||||||
x * zoom + width,
|
|
||||||
y * zoom + height,
|
|
||||||
x * zoom + width,
|
|
||||||
y * zoom - height,
|
|
||||||
x * zoom,
|
|
||||||
y * zoom,
|
|
||||||
);
|
|
||||||
context.stroke();
|
|
||||||
context.restore();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const renderBindings = (
|
|
||||||
context: CanvasRenderingContext2D,
|
|
||||||
elements: readonly OrderedExcalidrawElement[],
|
|
||||||
zoom: number,
|
|
||||||
) => {
|
|
||||||
const elementsMap = arrayToMap(elements);
|
|
||||||
const dim = 16;
|
|
||||||
elements.forEach((element) => {
|
|
||||||
if (element.isDeleted) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isArrowElement(element)) {
|
|
||||||
if (element.startBinding) {
|
|
||||||
if (
|
|
||||||
!elementsMap
|
|
||||||
.get(element.startBinding.elementId)
|
|
||||||
?.boundElements?.find((e) => e.id === element.id)
|
|
||||||
) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_renderBinding(
|
|
||||||
context,
|
|
||||||
element.startBinding as FixedPointBinding,
|
|
||||||
elementsMap,
|
|
||||||
zoom,
|
|
||||||
dim,
|
|
||||||
dim,
|
|
||||||
"red",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (element.endBinding) {
|
|
||||||
if (
|
|
||||||
!elementsMap
|
|
||||||
.get(element.endBinding.elementId)
|
|
||||||
?.boundElements?.find((e) => e.id === element.id)
|
|
||||||
) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_renderBinding(
|
|
||||||
context,
|
|
||||||
element.endBinding,
|
|
||||||
elementsMap,
|
|
||||||
zoom,
|
|
||||||
dim,
|
|
||||||
dim,
|
|
||||||
"red",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isBindableElement(element) && element.boundElements?.length) {
|
|
||||||
element.boundElements.forEach((boundElement) => {
|
|
||||||
if (boundElement.type !== "arrow") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const arrow = elementsMap.get(
|
|
||||||
boundElement.id,
|
|
||||||
) as ExcalidrawArrowElement;
|
|
||||||
|
|
||||||
if (arrow && arrow.startBinding?.elementId === element.id) {
|
|
||||||
_renderBindableBinding(
|
|
||||||
arrow.startBinding,
|
|
||||||
context,
|
|
||||||
elementsMap,
|
|
||||||
zoom,
|
|
||||||
dim,
|
|
||||||
dim,
|
|
||||||
"green",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (arrow && arrow.endBinding?.elementId === element.id) {
|
|
||||||
_renderBindableBinding(
|
|
||||||
arrow.endBinding,
|
|
||||||
context,
|
|
||||||
elementsMap,
|
|
||||||
zoom,
|
|
||||||
dim,
|
|
||||||
dim,
|
|
||||||
"green",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const render = (
|
const render = (
|
||||||
frame: DebugElement[],
|
frame: DebugElement[],
|
||||||
context: CanvasRenderingContext2D,
|
context: CanvasRenderingContext2D,
|
||||||
@@ -295,8 +107,8 @@ const render = (
|
|||||||
const _debugRenderer = (
|
const _debugRenderer = (
|
||||||
canvas: HTMLCanvasElement,
|
canvas: HTMLCanvasElement,
|
||||||
appState: AppState,
|
appState: AppState,
|
||||||
elements: readonly OrderedExcalidrawElement[],
|
|
||||||
scale: number,
|
scale: number,
|
||||||
|
refresh: () => void,
|
||||||
) => {
|
) => {
|
||||||
const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(
|
const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(
|
||||||
canvas,
|
canvas,
|
||||||
@@ -319,7 +131,6 @@ const _debugRenderer = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
renderOrigin(context, appState.zoom.value);
|
renderOrigin(context, appState.zoom.value);
|
||||||
renderBindings(context, elements, appState.zoom.value);
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
window.visualDebug?.currentFrame &&
|
window.visualDebug?.currentFrame &&
|
||||||
@@ -371,10 +182,10 @@ export const debugRenderer = throttleRAF(
|
|||||||
(
|
(
|
||||||
canvas: HTMLCanvasElement,
|
canvas: HTMLCanvasElement,
|
||||||
appState: AppState,
|
appState: AppState,
|
||||||
elements: readonly OrderedExcalidrawElement[],
|
|
||||||
scale: number,
|
scale: number,
|
||||||
|
refresh: () => void,
|
||||||
) => {
|
) => {
|
||||||
_debugRenderer(canvas, appState, elements, scale);
|
_debugRenderer(canvas, appState, scale, refresh);
|
||||||
},
|
},
|
||||||
{ trailing: true },
|
{ trailing: true },
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import { isExcalidrawPlusSignedUser } from "../app_constants";
|
||||||
|
|
||||||
|
export const ExcalidrawPlusAppLink = () => {
|
||||||
|
if (!isExcalidrawPlusSignedUser) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<a
|
||||||
|
href={`${
|
||||||
|
import.meta.env.VITE_APP_PLUS_APP
|
||||||
|
}?utm_source=excalidraw&utm_medium=app&utm_content=signedInUserRedirectButton#excalidraw-redirect`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
className="plus-button"
|
||||||
|
>
|
||||||
|
Go to Excalidraw+
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
export const ExcalidrawPlusPromoBanner = ({
|
|
||||||
isSignedIn,
|
|
||||||
}: {
|
|
||||||
isSignedIn: boolean;
|
|
||||||
}) => {
|
|
||||||
return (
|
|
||||||
<a
|
|
||||||
href={
|
|
||||||
isSignedIn
|
|
||||||
? import.meta.env.VITE_APP_PLUS_APP
|
|
||||||
: `${
|
|
||||||
import.meta.env.VITE_APP_PLUS_LP
|
|
||||||
}/plus?utm_source=excalidraw&utm_medium=app&utm_content=guestBanner#excalidraw-redirect`
|
|
||||||
}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
className="plus-banner"
|
|
||||||
>
|
|
||||||
Excalidraw+
|
|
||||||
</a>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
import { STROKE_OPTIONS, isFreeDrawElement } from "@excalidraw/element";
|
||||||
|
import { useState, useEffect } from "react";
|
||||||
|
|
||||||
|
import { useUIAppState } from "@excalidraw/excalidraw/context/ui-appState";
|
||||||
|
import { useExcalidrawElements } from "@excalidraw/excalidraw/components/App";
|
||||||
|
|
||||||
|
import { round } from "../../packages/math/src";
|
||||||
|
|
||||||
|
export const FreedrawDebugSliders = () => {
|
||||||
|
const [streamline, setStreamline] = useState<number>(
|
||||||
|
STROKE_OPTIONS.default.streamline,
|
||||||
|
);
|
||||||
|
const [simplify, setSimplify] = useState<number>(
|
||||||
|
STROKE_OPTIONS.default.simplify,
|
||||||
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!window.h) {
|
||||||
|
window.h = {} as any;
|
||||||
|
}
|
||||||
|
if (!window.h.debugFreedraw) {
|
||||||
|
window.h.debugFreedraw = {
|
||||||
|
enabled: true,
|
||||||
|
...STROKE_OPTIONS.default,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
setStreamline(window.h.debugFreedraw.streamline);
|
||||||
|
setSimplify(window.h.debugFreedraw.simplify);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleStreamlineChange = (value: number) => {
|
||||||
|
setStreamline(value);
|
||||||
|
if (window.h && window.h.debugFreedraw) {
|
||||||
|
window.h.debugFreedraw.streamline = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSimplifyChange = (value: number) => {
|
||||||
|
setSimplify(value);
|
||||||
|
if (window.h && window.h.debugFreedraw) {
|
||||||
|
window.h.debugFreedraw.simplify = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const [enabled, setEnabled] = useState<boolean>(
|
||||||
|
window.h?.debugFreedraw?.enabled ?? true,
|
||||||
|
);
|
||||||
|
|
||||||
|
// counter incrasing each 50ms
|
||||||
|
const [, setCounter] = useState<number>(0);
|
||||||
|
useEffect(() => {
|
||||||
|
const interval = setInterval(() => {
|
||||||
|
setCounter((prev) => prev + 1);
|
||||||
|
}, 50);
|
||||||
|
|
||||||
|
return () => clearInterval(interval);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
const elements = useExcalidrawElements();
|
||||||
|
const appState = useUIAppState();
|
||||||
|
|
||||||
|
const newFreedrawElement =
|
||||||
|
appState.newElement && isFreeDrawElement(appState.newElement)
|
||||||
|
? appState.newElement
|
||||||
|
: null;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
bottom: "70px",
|
||||||
|
left: "50%",
|
||||||
|
transform: "translateX(-50%)",
|
||||||
|
zIndex: 9999,
|
||||||
|
padding: "10px",
|
||||||
|
borderRadius: "8px",
|
||||||
|
border: "1px solid #ccc",
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
gap: "8px",
|
||||||
|
fontSize: "12px",
|
||||||
|
fontFamily: "monospace",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{newFreedrawElement && (
|
||||||
|
<div>
|
||||||
|
pressures:{" "}
|
||||||
|
{newFreedrawElement.simulatePressure
|
||||||
|
? "simulated"
|
||||||
|
: JSON.stringify(
|
||||||
|
newFreedrawElement.pressures
|
||||||
|
.slice(-4)
|
||||||
|
.map((x) => round(x, 2))
|
||||||
|
.join(" ") || [],
|
||||||
|
)}{" "}
|
||||||
|
({round(window.__lastPressure__ || 0, 2) || "?"})
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
{" "}
|
||||||
|
enabled
|
||||||
|
<br />
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
checked={enabled}
|
||||||
|
onChange={(e) => {
|
||||||
|
if (window.h.debugFreedraw) {
|
||||||
|
window.h.debugFreedraw.enabled = e.target.checked;
|
||||||
|
setEnabled(e.target.checked);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
Streamline: {streamline.toFixed(2)}
|
||||||
|
<br />
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
min="0"
|
||||||
|
max="1"
|
||||||
|
step="0.01"
|
||||||
|
value={streamline}
|
||||||
|
onChange={(e) => handleStreamlineChange(parseFloat(e.target.value))}
|
||||||
|
style={{ width: "150px" }}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
Simplify: {simplify.toFixed(2)}
|
||||||
|
<br />
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
min="0"
|
||||||
|
max="1"
|
||||||
|
step="0.01"
|
||||||
|
value={simplify}
|
||||||
|
onChange={(e) => handleSimplifyChange(parseFloat(e.target.value))}
|
||||||
|
style={{ width: "150px" }}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
+11
-16
@@ -1,5 +1,3 @@
|
|||||||
@import "../packages/excalidraw/css/variables.module.scss";
|
|
||||||
|
|
||||||
.excalidraw {
|
.excalidraw {
|
||||||
--color-primary-contrast-offset: #625ee0; // to offset Chubb illusion
|
--color-primary-contrast-offset: #625ee0; // to offset Chubb illusion
|
||||||
|
|
||||||
@@ -7,6 +5,12 @@
|
|||||||
--color-primary-contrast-offset: #726dff; // to offset Chubb illusion
|
--color-primary-contrast-offset: #726dff; // to offset Chubb illusion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.top-right-ui {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
.footer-center {
|
.footer-center {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
@@ -86,31 +90,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.plus-banner {
|
.plus-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border: 1px solid var(--color-primary);
|
border: 1px solid var(--color-primary);
|
||||||
padding: 0.5rem 0.875rem;
|
padding: 0.5rem 0.75rem;
|
||||||
border-radius: var(--border-radius-lg);
|
border-radius: var(--border-radius-lg);
|
||||||
background-color: var(--island-bg-color);
|
background-color: var(--island-bg-color);
|
||||||
|
color: var(--color-primary) !important;
|
||||||
text-decoration: none !important;
|
text-decoration: none !important;
|
||||||
|
|
||||||
font-family: var(--ui-font);
|
font-size: 0.75rem;
|
||||||
font-size: 0.8333rem;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
height: var(--lg-button-size);
|
height: var(--lg-button-size);
|
||||||
|
|
||||||
border: none;
|
|
||||||
box-shadow: 0 0 0 1px var(--color-surface-lowest);
|
|
||||||
background-color: var(--color-surface-low);
|
|
||||||
color: var(--button-color, var(--color-on-surface)) !important;
|
|
||||||
|
|
||||||
&:active {
|
|
||||||
box-shadow: 0 0 0 1px var(--color-brand-active);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--color-primary);
|
background-color: var(--color-primary);
|
||||||
color: white !important;
|
color: white !important;
|
||||||
@@ -122,7 +117,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.theme--dark {
|
.theme--dark {
|
||||||
.plus-banner {
|
.plus-button {
|
||||||
&:hover {
|
&:hover {
|
||||||
color: black !important;
|
color: black !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": "18.0.0 - 22.x.x"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@excalidraw/random-username": "1.0.0",
|
"@excalidraw/random-username": "1.0.0",
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
import { defaultLang } from "@excalidraw/excalidraw/i18n";
|
|
||||||
import { UI } from "@excalidraw/excalidraw/tests/helpers/ui";
|
|
||||||
import {
|
|
||||||
screen,
|
|
||||||
fireEvent,
|
|
||||||
waitFor,
|
|
||||||
render,
|
|
||||||
} from "@excalidraw/excalidraw/tests/test-utils";
|
|
||||||
|
|
||||||
import ExcalidrawApp from "../App";
|
|
||||||
|
|
||||||
describe("Test LanguageList", () => {
|
|
||||||
it("rerenders UI on language change", async () => {
|
|
||||||
await render(<ExcalidrawApp />);
|
|
||||||
|
|
||||||
// select rectangle tool to show properties menu
|
|
||||||
UI.clickTool("rectangle");
|
|
||||||
// english lang should display `thin` label
|
|
||||||
expect(screen.queryByTitle(/thin/i)).not.toBeNull();
|
|
||||||
fireEvent.click(document.querySelector(".dropdown-menu-button")!);
|
|
||||||
|
|
||||||
fireEvent.change(document.querySelector(".dropdown-select__language")!, {
|
|
||||||
target: { value: "de-DE" },
|
|
||||||
});
|
|
||||||
// switching to german, `thin` label should no longer exist
|
|
||||||
await waitFor(() => expect(screen.queryByTitle(/thin/i)).toBeNull());
|
|
||||||
// reset language
|
|
||||||
fireEvent.change(document.querySelector(".dropdown-select__language")!, {
|
|
||||||
target: { value: defaultLang.code },
|
|
||||||
});
|
|
||||||
// switching back to English
|
|
||||||
await waitFor(() => expect(screen.queryByTitle(/thin/i)).not.toBeNull());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -17,15 +17,30 @@ describe("Test MobileMenu", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await render(<ExcalidrawApp />);
|
await render(<ExcalidrawApp />);
|
||||||
h.app.refreshEditorInterface();
|
// @ts-ignore
|
||||||
|
h.app.refreshViewportBreakpoints();
|
||||||
|
// @ts-ignore
|
||||||
|
h.app.refreshEditorBreakpoints();
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(() => {
|
afterAll(() => {
|
||||||
restoreOriginalGetBoundingClientRect();
|
restoreOriginalGetBoundingClientRect();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should set editor interface correctly", () => {
|
it("should set device correctly", () => {
|
||||||
expect(h.app.editorInterface.formFactor).toBe("phone");
|
expect(h.app.device).toMatchInlineSnapshot(`
|
||||||
|
{
|
||||||
|
"editor": {
|
||||||
|
"canFitSidebar": false,
|
||||||
|
"isMobile": true,
|
||||||
|
},
|
||||||
|
"isTouchScreen": false,
|
||||||
|
"viewport": {
|
||||||
|
"isLandscape": true,
|
||||||
|
"isMobile": true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should initialize with welcome screen and hide once user interacts", async () => {
|
it("should initialize with welcome screen and hide once user interacts", async () => {
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@
|
|||||||
"vitest-canvas-mock": "0.3.3"
|
"vitest-canvas-mock": "0.3.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": "18.0.0 - 22.x.x"
|
||||||
},
|
},
|
||||||
"homepage": ".",
|
"homepage": ".",
|
||||||
"prettier": "@excalidraw/prettier-config",
|
"prettier": "@excalidraw/prettier-config",
|
||||||
|
|||||||
@@ -6,6 +6,32 @@ import type { AppProps, AppState } from "@excalidraw/excalidraw/types";
|
|||||||
|
|
||||||
import { COLOR_PALETTE } from "./colors";
|
import { COLOR_PALETTE } from "./colors";
|
||||||
|
|
||||||
|
export const isDarwin = /Mac|iPod|iPhone|iPad/.test(navigator.platform);
|
||||||
|
export const isWindows = /^Win/.test(navigator.platform);
|
||||||
|
export const isAndroid = /\b(android)\b/i.test(navigator.userAgent);
|
||||||
|
export const isFirefox =
|
||||||
|
typeof window !== "undefined" &&
|
||||||
|
"netscape" in window &&
|
||||||
|
navigator.userAgent.indexOf("rv:") > 1 &&
|
||||||
|
navigator.userAgent.indexOf("Gecko") > 1;
|
||||||
|
export const isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
|
||||||
|
export const isSafari =
|
||||||
|
!isChrome && navigator.userAgent.indexOf("Safari") !== -1;
|
||||||
|
export const isIOS =
|
||||||
|
/iPad|iPhone/i.test(navigator.platform) ||
|
||||||
|
// iPadOS 13+
|
||||||
|
(navigator.userAgent.includes("Mac") && "ontouchend" in document);
|
||||||
|
// keeping function so it can be mocked in test
|
||||||
|
export const isBrave = () =>
|
||||||
|
(navigator as any).brave?.isBrave?.name === "isBrave";
|
||||||
|
|
||||||
|
export const isMobile =
|
||||||
|
isIOS ||
|
||||||
|
/android|webos|ipod|blackberry|iemobile|opera mini/i.test(
|
||||||
|
navigator.userAgent,
|
||||||
|
) ||
|
||||||
|
/android|ios|ipod|blackberry|windows phone/i.test(navigator.platform);
|
||||||
|
|
||||||
export const supportsResizeObserver =
|
export const supportsResizeObserver =
|
||||||
typeof window !== "undefined" && "ResizeObserver" in window;
|
typeof window !== "undefined" && "ResizeObserver" in window;
|
||||||
|
|
||||||
@@ -323,6 +349,26 @@ export const DEFAULT_UI_OPTIONS: AppProps["UIOptions"] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// breakpoints
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// mobile: up to 699px
|
||||||
|
export const MQ_MAX_MOBILE = 599;
|
||||||
|
|
||||||
|
export const MQ_MAX_WIDTH_LANDSCAPE = 1000;
|
||||||
|
export const MQ_MAX_HEIGHT_LANDSCAPE = 500;
|
||||||
|
|
||||||
|
// tablets
|
||||||
|
export const MQ_MIN_TABLET = MQ_MAX_MOBILE + 1; // lower bound (excludes phones)
|
||||||
|
export const MQ_MAX_TABLET = 1400; // upper bound (excludes laptops/desktops)
|
||||||
|
|
||||||
|
// desktop/laptop
|
||||||
|
export const MQ_MIN_WIDTH_DESKTOP = 1440;
|
||||||
|
|
||||||
|
// sidebar
|
||||||
|
export const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
export const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
|
export const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
|
||||||
|
|
||||||
export const EXPORT_SCALES = [1, 2, 3];
|
export const EXPORT_SCALES = [1, 2, 3];
|
||||||
@@ -396,8 +442,9 @@ export const ROUGHNESS = {
|
|||||||
|
|
||||||
export const STROKE_WIDTH = {
|
export const STROKE_WIDTH = {
|
||||||
thin: 1,
|
thin: 1,
|
||||||
bold: 2,
|
medium: 2,
|
||||||
extraBold: 4,
|
bold: 4,
|
||||||
|
extraBold: 8,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export const DEFAULT_ELEMENT_PROPS: {
|
export const DEFAULT_ELEMENT_PROPS: {
|
||||||
@@ -413,7 +460,7 @@ export const DEFAULT_ELEMENT_PROPS: {
|
|||||||
strokeColor: COLOR_PALETTE.black,
|
strokeColor: COLOR_PALETTE.black,
|
||||||
backgroundColor: COLOR_PALETTE.transparent,
|
backgroundColor: COLOR_PALETTE.transparent,
|
||||||
fillStyle: "solid",
|
fillStyle: "solid",
|
||||||
strokeWidth: 2,
|
strokeWidth: STROKE_WIDTH.medium,
|
||||||
strokeStyle: "solid",
|
strokeStyle: "solid",
|
||||||
roughness: ROUGHNESS.artist,
|
roughness: ROUGHNESS.artist,
|
||||||
opacity: 100,
|
opacity: 100,
|
||||||
|
|||||||
@@ -1,223 +0,0 @@
|
|||||||
export type StylesPanelMode = "compact" | "full" | "mobile";
|
|
||||||
|
|
||||||
export type EditorInterface = Readonly<{
|
|
||||||
formFactor: "phone" | "tablet" | "desktop";
|
|
||||||
desktopUIMode: "compact" | "full";
|
|
||||||
userAgent: Readonly<{
|
|
||||||
isMobileDevice: boolean;
|
|
||||||
platform: "ios" | "android" | "other" | "unknown";
|
|
||||||
}>;
|
|
||||||
isTouchScreen: boolean;
|
|
||||||
canFitSidebar: boolean;
|
|
||||||
isLandscape: boolean;
|
|
||||||
}>;
|
|
||||||
|
|
||||||
// storage key
|
|
||||||
const DESKTOP_UI_MODE_STORAGE_KEY = "excalidraw.desktopUIMode";
|
|
||||||
|
|
||||||
// breakpoints
|
|
||||||
// mobile: up to 699px
|
|
||||||
export const MQ_MAX_MOBILE = 599;
|
|
||||||
|
|
||||||
export const MQ_MAX_WIDTH_LANDSCAPE = 1000;
|
|
||||||
export const MQ_MAX_HEIGHT_LANDSCAPE = 500;
|
|
||||||
|
|
||||||
// tablets
|
|
||||||
export const MQ_MIN_TABLET = MQ_MAX_MOBILE + 1; // lower bound (excludes phones)
|
|
||||||
export const MQ_MAX_TABLET = 1400; // upper bound (excludes laptops/desktops)
|
|
||||||
|
|
||||||
// desktop/laptop
|
|
||||||
export const MQ_MIN_WIDTH_DESKTOP = 1440;
|
|
||||||
|
|
||||||
// sidebar
|
|
||||||
export const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// user agent detections
|
|
||||||
export const isDarwin = /Mac|iPod|iPhone|iPad/.test(navigator.platform);
|
|
||||||
export const isWindows = /^Win/.test(navigator.platform);
|
|
||||||
export const isAndroid = /\b(android)\b/i.test(navigator.userAgent);
|
|
||||||
export const isFirefox =
|
|
||||||
typeof window !== "undefined" &&
|
|
||||||
"netscape" in window &&
|
|
||||||
navigator.userAgent.indexOf("rv:") > 1 &&
|
|
||||||
navigator.userAgent.indexOf("Gecko") > 1;
|
|
||||||
export const isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
|
|
||||||
export const isSafari =
|
|
||||||
!isChrome && navigator.userAgent.indexOf("Safari") !== -1;
|
|
||||||
export const isIOS =
|
|
||||||
/iPad|iPhone/i.test(navigator.platform) ||
|
|
||||||
// iPadOS 13+
|
|
||||||
(navigator.userAgent.includes("Mac") && "ontouchend" in document);
|
|
||||||
// keeping function so it can be mocked in test
|
|
||||||
export const isBrave = () =>
|
|
||||||
(navigator as any).brave?.isBrave?.name === "isBrave";
|
|
||||||
|
|
||||||
// export const isMobile =
|
|
||||||
// isIOS ||
|
|
||||||
// /android|webos|ipod|blackberry|iemobile|opera mini/i.test(
|
|
||||||
// navigator.userAgent,
|
|
||||||
// ) ||
|
|
||||||
// /android|ios|ipod|blackberry|windows phone/i.test(navigator.platform);
|
|
||||||
|
|
||||||
// utilities
|
|
||||||
export const isMobileBreakpoint = (width: number, height: number) => {
|
|
||||||
return (
|
|
||||||
width <= MQ_MAX_MOBILE ||
|
|
||||||
(height < MQ_MAX_HEIGHT_LANDSCAPE && width < MQ_MAX_WIDTH_LANDSCAPE)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isTabletBreakpoint = (
|
|
||||||
editorWidth: number,
|
|
||||||
editorHeight: number,
|
|
||||||
) => {
|
|
||||||
const minSide = Math.min(editorWidth, editorHeight);
|
|
||||||
const maxSide = Math.max(editorWidth, editorHeight);
|
|
||||||
|
|
||||||
return minSide >= MQ_MIN_TABLET && maxSide <= MQ_MAX_TABLET;
|
|
||||||
};
|
|
||||||
|
|
||||||
const isMobileOrTablet = (): boolean => {
|
|
||||||
const ua = navigator.userAgent || "";
|
|
||||||
const platform = navigator.platform || "";
|
|
||||||
const uaData = (navigator as any).userAgentData as
|
|
||||||
| { mobile?: boolean; platform?: string }
|
|
||||||
| undefined;
|
|
||||||
|
|
||||||
// --- 1) chromium: prefer ua client hints -------------------------------
|
|
||||||
if (uaData) {
|
|
||||||
const plat = (uaData.platform || "").toLowerCase();
|
|
||||||
const isDesktopOS =
|
|
||||||
plat === "windows" ||
|
|
||||||
plat === "macos" ||
|
|
||||||
plat === "linux" ||
|
|
||||||
plat === "chrome os";
|
|
||||||
if (uaData.mobile === true) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (uaData.mobile === false && plat === "android") {
|
|
||||||
const looksTouchTablet =
|
|
||||||
matchMedia?.("(hover: none)").matches &&
|
|
||||||
matchMedia?.("(pointer: coarse)").matches;
|
|
||||||
return looksTouchTablet;
|
|
||||||
}
|
|
||||||
if (isDesktopOS) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- 2) ios (includes ipad) --------------------------------------------
|
|
||||||
if (isIOS) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- 3) android legacy ua fallback -------------------------------------
|
|
||||||
if (isAndroid) {
|
|
||||||
const isAndroidPhone = /Mobile/i.test(ua);
|
|
||||||
const isAndroidTablet = !isAndroidPhone;
|
|
||||||
if (isAndroidPhone || isAndroidTablet) {
|
|
||||||
const looksTouchTablet =
|
|
||||||
matchMedia?.("(hover: none)").matches &&
|
|
||||||
matchMedia?.("(pointer: coarse)").matches;
|
|
||||||
return looksTouchTablet;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- 4) last resort desktop exclusion ----------------------------------
|
|
||||||
const looksDesktopPlatform =
|
|
||||||
/Win|Linux|CrOS|Mac/.test(platform) ||
|
|
||||||
/Windows NT|X11|CrOS|Macintosh/.test(ua);
|
|
||||||
if (looksDesktopPlatform) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getFormFactor = (
|
|
||||||
editorWidth: number,
|
|
||||||
editorHeight: number,
|
|
||||||
): EditorInterface["formFactor"] => {
|
|
||||||
if (isMobileBreakpoint(editorWidth, editorHeight)) {
|
|
||||||
return "phone";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isTabletBreakpoint(editorWidth, editorHeight)) {
|
|
||||||
return "tablet";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "desktop";
|
|
||||||
};
|
|
||||||
|
|
||||||
export const deriveStylesPanelMode = (
|
|
||||||
editorInterface: EditorInterface,
|
|
||||||
): StylesPanelMode => {
|
|
||||||
if (editorInterface.formFactor === "phone") {
|
|
||||||
return "mobile";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (editorInterface.formFactor === "tablet") {
|
|
||||||
return "compact";
|
|
||||||
}
|
|
||||||
|
|
||||||
return editorInterface.desktopUIMode;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const createUserAgentDescriptor = (
|
|
||||||
userAgentString: string,
|
|
||||||
): EditorInterface["userAgent"] => {
|
|
||||||
const normalizedUA = userAgentString ?? "";
|
|
||||||
let platform: EditorInterface["userAgent"]["platform"] = "unknown";
|
|
||||||
|
|
||||||
if (isIOS) {
|
|
||||||
platform = "ios";
|
|
||||||
} else if (isAndroid) {
|
|
||||||
platform = "android";
|
|
||||||
} else if (normalizedUA) {
|
|
||||||
platform = "other";
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
isMobileDevice: isMobileOrTablet(),
|
|
||||||
platform,
|
|
||||||
} as const;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const loadDesktopUIModePreference = () => {
|
|
||||||
if (typeof window === "undefined") {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const stored = window.localStorage.getItem(DESKTOP_UI_MODE_STORAGE_KEY);
|
|
||||||
if (stored === "compact" || stored === "full") {
|
|
||||||
return stored as EditorInterface["desktopUIMode"];
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
// ignore storage access issues (e.g., Safari private mode)
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
};
|
|
||||||
|
|
||||||
const persistDesktopUIMode = (mode: EditorInterface["desktopUIMode"]) => {
|
|
||||||
if (typeof window === "undefined") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
window.localStorage.setItem(DESKTOP_UI_MODE_STORAGE_KEY, mode);
|
|
||||||
} catch (error) {
|
|
||||||
// ignore storage access issues (e.g., Safari private mode)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const setDesktopUIMode = (mode: EditorInterface["desktopUIMode"]) => {
|
|
||||||
if (mode !== "compact" && mode !== "full") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
persistDesktopUIMode(mode);
|
|
||||||
|
|
||||||
return mode;
|
|
||||||
};
|
|
||||||
@@ -10,5 +10,3 @@ export * from "./random";
|
|||||||
export * from "./url";
|
export * from "./url";
|
||||||
export * from "./utils";
|
export * from "./utils";
|
||||||
export * from "./emitter";
|
export * from "./emitter";
|
||||||
export * from "./visualdebug";
|
|
||||||
export * from "./editorInterface";
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { isDarwin } from "./editorInterface";
|
import { isDarwin } from "./constants";
|
||||||
|
|
||||||
import type { ValueOf } from "./utility-types";
|
import type { ValueOf } from "./utility-types";
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import {
|
|||||||
ENV,
|
ENV,
|
||||||
FONT_FAMILY,
|
FONT_FAMILY,
|
||||||
getFontFamilyFallbacks,
|
getFontFamilyFallbacks,
|
||||||
|
isAndroid,
|
||||||
|
isIOS,
|
||||||
WINDOWS_EMOJI_FALLBACK_FONT,
|
WINDOWS_EMOJI_FALLBACK_FONT,
|
||||||
} from "./constants";
|
} from "./constants";
|
||||||
|
|
||||||
@@ -1270,3 +1272,59 @@ export const reduceToCommonValue = <T, R = T>(
|
|||||||
|
|
||||||
return commonValue;
|
return commonValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const isMobileOrTablet = (): boolean => {
|
||||||
|
const ua = navigator.userAgent || "";
|
||||||
|
const platform = navigator.platform || "";
|
||||||
|
const uaData = (navigator as any).userAgentData as
|
||||||
|
| { mobile?: boolean; platform?: string }
|
||||||
|
| undefined;
|
||||||
|
|
||||||
|
// --- 1) chromium: prefer ua client hints -------------------------------
|
||||||
|
if (uaData) {
|
||||||
|
const plat = (uaData.platform || "").toLowerCase();
|
||||||
|
const isDesktopOS =
|
||||||
|
plat === "windows" ||
|
||||||
|
plat === "macos" ||
|
||||||
|
plat === "linux" ||
|
||||||
|
plat === "chrome os";
|
||||||
|
if (uaData.mobile === true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (uaData.mobile === false && plat === "android") {
|
||||||
|
const looksTouchTablet =
|
||||||
|
matchMedia?.("(hover: none)").matches &&
|
||||||
|
matchMedia?.("(pointer: coarse)").matches;
|
||||||
|
return looksTouchTablet;
|
||||||
|
}
|
||||||
|
if (isDesktopOS) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- 2) ios (includes ipad) --------------------------------------------
|
||||||
|
if (isIOS) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- 3) android legacy ua fallback -------------------------------------
|
||||||
|
if (isAndroid) {
|
||||||
|
const isAndroidPhone = /Mobile/i.test(ua);
|
||||||
|
const isAndroidTablet = !isAndroidPhone;
|
||||||
|
if (isAndroidPhone || isAndroidTablet) {
|
||||||
|
const looksTouchTablet =
|
||||||
|
matchMedia?.("(hover: none)").matches &&
|
||||||
|
matchMedia?.("(pointer: coarse)").matches;
|
||||||
|
return looksTouchTablet;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- 4) last resort desktop exclusion ----------------------------------
|
||||||
|
const looksDesktopPlatform =
|
||||||
|
/Win|Linux|CrOS|Mac/.test(platform) ||
|
||||||
|
/Windows NT|X11|CrOS|Macintosh/.test(ua);
|
||||||
|
if (looksDesktopPlatform) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
invariant,
|
invariant,
|
||||||
rescalePoints,
|
rescalePoints,
|
||||||
sizeOf,
|
sizeOf,
|
||||||
|
STROKE_WIDTH,
|
||||||
} from "@excalidraw/common";
|
} from "@excalidraw/common";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -832,9 +833,15 @@ export const getArrowheadPoints = (
|
|||||||
// This value is selected by minimizing a minimum size with the last segment of the arrowhead
|
// This value is selected by minimizing a minimum size with the last segment of the arrowhead
|
||||||
const lengthMultiplier =
|
const lengthMultiplier =
|
||||||
arrowhead === "diamond" || arrowhead === "diamond_outline" ? 0.25 : 0.5;
|
arrowhead === "diamond" || arrowhead === "diamond_outline" ? 0.25 : 0.5;
|
||||||
const minSize = Math.min(size, length * lengthMultiplier);
|
// make arrowheads bigger for thick strokes
|
||||||
const xs = x2 - nx * minSize;
|
const strokeWidthMultiplier =
|
||||||
const ys = y2 - ny * minSize;
|
element.strokeWidth >= STROKE_WIDTH.extraBold ? 1.5 : 1;
|
||||||
|
|
||||||
|
const adjustedSize =
|
||||||
|
Math.min(size, length * lengthMultiplier) * strokeWidthMultiplier;
|
||||||
|
|
||||||
|
const xs = x2 - nx * adjustedSize;
|
||||||
|
const ys = y2 - ny * adjustedSize;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
arrowhead === "dot" ||
|
arrowhead === "dot" ||
|
||||||
@@ -883,7 +890,7 @@ export const getArrowheadPoints = (
|
|||||||
const [px, py] = element.points.length > 1 ? element.points[1] : [0, 0];
|
const [px, py] = element.points.length > 1 ? element.points[1] : [0, 0];
|
||||||
|
|
||||||
[ox, oy] = pointRotateRads(
|
[ox, oy] = pointRotateRads(
|
||||||
pointFrom(x2 + minSize * 2, y2),
|
pointFrom(x2 + adjustedSize * 2, y2),
|
||||||
pointFrom(x2, y2),
|
pointFrom(x2, y2),
|
||||||
Math.atan2(py - y2, px - x2) as Radians,
|
Math.atan2(py - y2, px - x2) as Radians,
|
||||||
);
|
);
|
||||||
@@ -894,7 +901,7 @@ export const getArrowheadPoints = (
|
|||||||
: [0, 0];
|
: [0, 0];
|
||||||
|
|
||||||
[ox, oy] = pointRotateRads(
|
[ox, oy] = pointRotateRads(
|
||||||
pointFrom(x2 - minSize * 2, y2),
|
pointFrom(x2 - adjustedSize * 2, y2),
|
||||||
pointFrom(x2, y2),
|
pointFrom(x2, y2),
|
||||||
Math.atan2(y2 - py, x2 - px) as Radians,
|
Math.atan2(y2 - py, x2 - px) as Radians,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,373 @@
|
|||||||
|
import { LaserPointer, type Point } from "@excalidraw/laser-pointer";
|
||||||
|
|
||||||
|
import {
|
||||||
|
clamp,
|
||||||
|
lineSegment,
|
||||||
|
pointFrom,
|
||||||
|
pointRotateRads,
|
||||||
|
round,
|
||||||
|
type LocalPoint,
|
||||||
|
} from "@excalidraw/math";
|
||||||
|
|
||||||
|
import getStroke from "perfect-freehand";
|
||||||
|
|
||||||
|
import { invariant } from "@excalidraw/common";
|
||||||
|
|
||||||
|
import type { GlobalPoint, Radians } from "@excalidraw/math";
|
||||||
|
|
||||||
|
import { getElementBounds } from "./bounds";
|
||||||
|
|
||||||
|
import type { StrokeOptions } from "perfect-freehand";
|
||||||
|
|
||||||
|
import type {
|
||||||
|
ElementsMap,
|
||||||
|
ExcalidrawFreeDrawElement,
|
||||||
|
PointerType,
|
||||||
|
} from "./types";
|
||||||
|
|
||||||
|
export const STROKE_OPTIONS: Record<
|
||||||
|
PointerType | "default",
|
||||||
|
{ streamline: number; simplify: number }
|
||||||
|
> = {
|
||||||
|
default: {
|
||||||
|
streamline: 0.35,
|
||||||
|
simplify: 0.1,
|
||||||
|
},
|
||||||
|
mouse: {
|
||||||
|
streamline: 0.6,
|
||||||
|
simplify: 0.1,
|
||||||
|
},
|
||||||
|
pen: {
|
||||||
|
// for optimal performance, we use a lower streamline and simplify
|
||||||
|
streamline: 0.2,
|
||||||
|
simplify: 0.1,
|
||||||
|
},
|
||||||
|
touch: {
|
||||||
|
streamline: 0.65,
|
||||||
|
simplify: 0.1,
|
||||||
|
},
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export const getFreedrawConfig = (eventType: string | null | undefined) => {
|
||||||
|
return (
|
||||||
|
STROKE_OPTIONS[(eventType as PointerType | null) || "default"] ||
|
||||||
|
STROKE_OPTIONS.default
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates simulated pressure based on velocity between consecutive points.
|
||||||
|
* Fast movement (large distances) -> lower pressure
|
||||||
|
* Slow movement (small distances) -> higher pressure
|
||||||
|
*/
|
||||||
|
const calculateVelocityBasedPressure = (
|
||||||
|
points: readonly LocalPoint[],
|
||||||
|
index: number,
|
||||||
|
fixedStrokeWidth: boolean | undefined,
|
||||||
|
maxDistance = 8, // Maximum expected distance for normalization
|
||||||
|
): number => {
|
||||||
|
if (fixedStrokeWidth) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// First point gets highest pressure
|
||||||
|
// This avoid "a dot followed by a line" effect, •== when first stroke is "slow"
|
||||||
|
if (index === 0) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const [x1, y1] = points[index - 1];
|
||||||
|
const [x2, y2] = points[index];
|
||||||
|
|
||||||
|
// Calculate distance between consecutive points
|
||||||
|
const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
|
||||||
|
|
||||||
|
// Normalize distance and invert for pressure (0 = fast/low pressure, 1 = slow/high pressure)
|
||||||
|
const normalizedDistance = Math.min(distance / maxDistance, 1);
|
||||||
|
const basePressure = Math.max(0.1, 1 - normalizedDistance * 0.7); // Range: 0.1 to 1.0
|
||||||
|
|
||||||
|
const constantPressure = 0.5;
|
||||||
|
const pressure = constantPressure + (basePressure - constantPressure);
|
||||||
|
|
||||||
|
return Math.max(0.1, Math.min(1.0, pressure));
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getFreedrawStroke = (element: ExcalidrawFreeDrawElement) => {
|
||||||
|
// Compose points as [x, y, pressure]
|
||||||
|
let points: [number, number, number][];
|
||||||
|
if (element.freedrawOptions?.fixedStrokeWidth) {
|
||||||
|
points = element.points.map(
|
||||||
|
([x, y]: LocalPoint): [number, number, number] => [x, y, 1],
|
||||||
|
);
|
||||||
|
} else if (element.simulatePressure) {
|
||||||
|
// Simulate pressure based on velocity between consecutive points
|
||||||
|
points = element.points.map(([x, y]: LocalPoint, i) => [
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
calculateVelocityBasedPressure(
|
||||||
|
element.points,
|
||||||
|
i,
|
||||||
|
element.freedrawOptions?.fixedStrokeWidth,
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
points = element.points.map(([x, y]: LocalPoint, i) => {
|
||||||
|
const rawPressure = element.pressures?.[i] ?? 0.5;
|
||||||
|
|
||||||
|
const amplifiedPressure = Math.pow(rawPressure, 0.6);
|
||||||
|
const adjustedPressure = amplifiedPressure;
|
||||||
|
|
||||||
|
return [x, y, clamp(adjustedPressure, 0.1, 1.0)];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const streamline =
|
||||||
|
element.freedrawOptions?.streamline ?? STROKE_OPTIONS.default.streamline;
|
||||||
|
const simplify =
|
||||||
|
element.freedrawOptions?.simplify ?? STROKE_OPTIONS.default.simplify;
|
||||||
|
|
||||||
|
const laser = new LaserPointer({
|
||||||
|
size: element.strokeWidth,
|
||||||
|
streamline,
|
||||||
|
simplify,
|
||||||
|
sizeMapping: ({ pressure: t }) => {
|
||||||
|
if (element.freedrawOptions?.fixedStrokeWidth) {
|
||||||
|
return 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.simulatePressure) {
|
||||||
|
return 0.2 + t * 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0.2 + t * 0.8;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const pt of points) {
|
||||||
|
laser.addPoint(pt);
|
||||||
|
}
|
||||||
|
laser.close();
|
||||||
|
|
||||||
|
return laser.getStrokeOutline();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates an SVG path for a freedraw element using LaserPointer logic.
|
||||||
|
* Uses actual pressure data if available, otherwise simulates pressure based on velocity.
|
||||||
|
* No streamline, smoothing, or simulation is performed.
|
||||||
|
*/
|
||||||
|
export const getFreeDrawSvgPath = (
|
||||||
|
element: ExcalidrawFreeDrawElement,
|
||||||
|
): string => {
|
||||||
|
// legacy, for backwards compatibility
|
||||||
|
if (element.freedrawOptions === null) {
|
||||||
|
return _legacy_getFreeDrawSvgPath(element);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _transition_getFreeDrawSvgPath(element);
|
||||||
|
|
||||||
|
// return getSvgPathFromStroke(getFreedrawStroke(element));
|
||||||
|
};
|
||||||
|
|
||||||
|
const roundPoint = (A: Point): string => {
|
||||||
|
return `${round(A[0], 4, "round")},${round(A[1], 4, "round")} `;
|
||||||
|
};
|
||||||
|
|
||||||
|
const average = (A: Point, B: Point): string => {
|
||||||
|
return `${round((A[0] + B[0]) / 2, 4, "round")},${round(
|
||||||
|
(A[1] + B[1]) / 2,
|
||||||
|
4,
|
||||||
|
"round",
|
||||||
|
)} `;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getSvgPathFromStroke = (points: Point[]): string => {
|
||||||
|
const len = points.length;
|
||||||
|
|
||||||
|
if (len < 2) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
let a = points[0];
|
||||||
|
let b = points[1];
|
||||||
|
|
||||||
|
if (len === 2) {
|
||||||
|
return `M${roundPoint(a)}L${roundPoint(b)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = "";
|
||||||
|
|
||||||
|
for (let i = 2, max = len - 1; i < max; i++) {
|
||||||
|
a = points[i];
|
||||||
|
b = points[i + 1];
|
||||||
|
result += average(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
return `M${roundPoint(points[0])}Q${roundPoint(points[1])}${average(
|
||||||
|
points[1],
|
||||||
|
points[2],
|
||||||
|
)}${points.length > 3 ? "T" : ""}${result}L${roundPoint(points[len - 1])}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
function _transition_getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement) {
|
||||||
|
const inputPoints = element.simulatePressure
|
||||||
|
? element.points
|
||||||
|
: element.points.length
|
||||||
|
? element.points.map(([x, y], i) => [x, y, element.pressures[i]])
|
||||||
|
: [[0, 0, 0.5]];
|
||||||
|
|
||||||
|
// Consider changing the options for simulated pressure vs real pressure
|
||||||
|
const options: StrokeOptions = {
|
||||||
|
simulatePressure: element.simulatePressure,
|
||||||
|
size: element.strokeWidth,
|
||||||
|
thinning: 0.6,
|
||||||
|
smoothing: 0.5,
|
||||||
|
streamline: 0.5,
|
||||||
|
easing: (t) => {
|
||||||
|
if (element.freedrawOptions?.fixedStrokeWidth) {
|
||||||
|
return 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.sin((t * Math.PI) / 2) * 0.65;
|
||||||
|
}, // https://easings.net/#easeOutSine
|
||||||
|
last: !!element.lastCommittedPoint, // LastCommittedPoint is added on pointerup
|
||||||
|
};
|
||||||
|
|
||||||
|
return _legacy_getSvgPathFromStroke(
|
||||||
|
getStroke(inputPoints as number[][], options),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _legacy_getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement) {
|
||||||
|
// If input points are empty (should they ever be?) return a dot
|
||||||
|
const inputPoints = element.simulatePressure
|
||||||
|
? element.points
|
||||||
|
: element.points.length
|
||||||
|
? element.points.map(([x, y], i) => [x, y, element.pressures[i]])
|
||||||
|
: [[0, 0, 0.5]];
|
||||||
|
|
||||||
|
// Consider changing the options for simulated pressure vs real pressure
|
||||||
|
const options: StrokeOptions = {
|
||||||
|
simulatePressure: element.simulatePressure,
|
||||||
|
size: element.strokeWidth * 4.25,
|
||||||
|
thinning: 0.6,
|
||||||
|
smoothing: 0.5,
|
||||||
|
streamline: 0.5,
|
||||||
|
easing: (t) => Math.sin((t * Math.PI) / 2), // https://easings.net/#easeOutSine
|
||||||
|
last: !!element.lastCommittedPoint, // LastCommittedPoint is added on pointerup
|
||||||
|
};
|
||||||
|
|
||||||
|
return _legacy_getSvgPathFromStroke(
|
||||||
|
getStroke(inputPoints as number[][], options),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const med = (A: number[], B: number[]) => {
|
||||||
|
return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Trim SVG path data so number are each two decimal points. This
|
||||||
|
// improves SVG exports, and prevents rendering errors on points
|
||||||
|
// with long decimals.
|
||||||
|
const TO_FIXED_PRECISION = /(\s?[A-Z]?,?-?[0-9]*\.[0-9]{0,2})(([0-9]|e|-)*)/g;
|
||||||
|
|
||||||
|
const _legacy_getSvgPathFromStroke = (points: number[][]): string => {
|
||||||
|
if (!points.length) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
const max = points.length - 1;
|
||||||
|
|
||||||
|
return points
|
||||||
|
.reduce(
|
||||||
|
(acc, point, i, arr) => {
|
||||||
|
if (i === max) {
|
||||||
|
acc.push(point, med(point, arr[0]), "L", arr[0], "Z");
|
||||||
|
} else {
|
||||||
|
acc.push(point, med(point, arr[i + 1]));
|
||||||
|
}
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
["M", points[0], "Q"],
|
||||||
|
)
|
||||||
|
.join(" ")
|
||||||
|
.replace(TO_FIXED_PRECISION, "$1");
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getFreedrawOutlineAsSegments(
|
||||||
|
element: ExcalidrawFreeDrawElement,
|
||||||
|
points: [number, number][],
|
||||||
|
elementsMap: ElementsMap,
|
||||||
|
) {
|
||||||
|
const bounds = getElementBounds(
|
||||||
|
{
|
||||||
|
...element,
|
||||||
|
angle: 0 as Radians,
|
||||||
|
},
|
||||||
|
elementsMap,
|
||||||
|
);
|
||||||
|
const center = pointFrom<GlobalPoint>(
|
||||||
|
(bounds[0] + bounds[2]) / 2,
|
||||||
|
(bounds[1] + bounds[3]) / 2,
|
||||||
|
);
|
||||||
|
|
||||||
|
invariant(points.length >= 2, "Freepath outline must have at least 2 points");
|
||||||
|
|
||||||
|
return points.slice(2).reduce(
|
||||||
|
(acc, curr) => {
|
||||||
|
acc.push(
|
||||||
|
lineSegment<GlobalPoint>(
|
||||||
|
acc[acc.length - 1][1],
|
||||||
|
pointRotateRads(
|
||||||
|
pointFrom<GlobalPoint>(curr[0] + element.x, curr[1] + element.y),
|
||||||
|
center,
|
||||||
|
element.angle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
[
|
||||||
|
lineSegment<GlobalPoint>(
|
||||||
|
pointRotateRads(
|
||||||
|
pointFrom<GlobalPoint>(
|
||||||
|
points[0][0] + element.x,
|
||||||
|
points[0][1] + element.y,
|
||||||
|
),
|
||||||
|
center,
|
||||||
|
element.angle,
|
||||||
|
),
|
||||||
|
pointRotateRads(
|
||||||
|
pointFrom<GlobalPoint>(
|
||||||
|
points[1][0] + element.x,
|
||||||
|
points[1][1] + element.y,
|
||||||
|
),
|
||||||
|
center,
|
||||||
|
element.angle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getFreedrawOutlinePoints(element: ExcalidrawFreeDrawElement) {
|
||||||
|
// If input points are empty (should they ever be?) return a dot
|
||||||
|
const inputPoints = element.simulatePressure
|
||||||
|
? element.points
|
||||||
|
: element.points.length
|
||||||
|
? element.points.map(([x, y], i) => [x, y, element.pressures[i]])
|
||||||
|
: [[0, 0, 0.5]];
|
||||||
|
|
||||||
|
// Consider changing the options for simulated pressure vs real pressure
|
||||||
|
const options: StrokeOptions = {
|
||||||
|
simulatePressure: element.simulatePressure,
|
||||||
|
size: element.strokeWidth * 4.25,
|
||||||
|
thinning: 0.6,
|
||||||
|
smoothing: 0.5,
|
||||||
|
streamline: 0.5,
|
||||||
|
easing: (t) => Math.sin((t * Math.PI) / 2), // https://easings.net/#easeOutSine
|
||||||
|
last: !!element.lastCommittedPoint, // LastCommittedPoint is added on pointerup
|
||||||
|
};
|
||||||
|
|
||||||
|
return getStroke(inputPoints as number[][], options) as [number, number][];
|
||||||
|
}
|
||||||
@@ -94,6 +94,7 @@ export * from "./embeddable";
|
|||||||
export * from "./flowchart";
|
export * from "./flowchart";
|
||||||
export * from "./fractionalIndex";
|
export * from "./fractionalIndex";
|
||||||
export * from "./frame";
|
export * from "./frame";
|
||||||
|
export * from "./freedraw";
|
||||||
export * from "./groups";
|
export * from "./groups";
|
||||||
export * from "./heading";
|
export * from "./heading";
|
||||||
export * from "./image";
|
export * from "./image";
|
||||||
|
|||||||
@@ -445,6 +445,7 @@ export const newFreeDrawElement = (
|
|||||||
points?: ExcalidrawFreeDrawElement["points"];
|
points?: ExcalidrawFreeDrawElement["points"];
|
||||||
simulatePressure: boolean;
|
simulatePressure: boolean;
|
||||||
pressures?: ExcalidrawFreeDrawElement["pressures"];
|
pressures?: ExcalidrawFreeDrawElement["pressures"];
|
||||||
|
strokeOptions?: ExcalidrawFreeDrawElement["freedrawOptions"];
|
||||||
} & ElementConstructorOpts,
|
} & ElementConstructorOpts,
|
||||||
): NonDeleted<ExcalidrawFreeDrawElement> => {
|
): NonDeleted<ExcalidrawFreeDrawElement> => {
|
||||||
return {
|
return {
|
||||||
@@ -453,6 +454,11 @@ export const newFreeDrawElement = (
|
|||||||
pressures: opts.pressures || [],
|
pressures: opts.pressures || [],
|
||||||
simulatePressure: opts.simulatePressure,
|
simulatePressure: opts.simulatePressure,
|
||||||
lastCommittedPoint: null,
|
lastCommittedPoint: null,
|
||||||
|
freedrawOptions: opts.strokeOptions || {
|
||||||
|
fixedStrokeWidth: true,
|
||||||
|
streamline: 0.25,
|
||||||
|
simplify: 0.1,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,6 @@
|
|||||||
import rough from "roughjs/bin/rough";
|
import rough from "roughjs/bin/rough";
|
||||||
import { getStroke } from "perfect-freehand";
|
|
||||||
|
|
||||||
import {
|
import { isRightAngleRads } from "@excalidraw/math";
|
||||||
type GlobalPoint,
|
|
||||||
isRightAngleRads,
|
|
||||||
lineSegment,
|
|
||||||
pointFrom,
|
|
||||||
pointRotateRads,
|
|
||||||
type Radians,
|
|
||||||
} from "@excalidraw/math";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
BOUND_TEXT_PADDING,
|
BOUND_TEXT_PADDING,
|
||||||
@@ -21,7 +13,6 @@ import {
|
|||||||
getFontString,
|
getFontString,
|
||||||
isRTL,
|
isRTL,
|
||||||
getVerticalOffset,
|
getVerticalOffset,
|
||||||
invariant,
|
|
||||||
} from "@excalidraw/common";
|
} from "@excalidraw/common";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
@@ -40,7 +31,7 @@ import type {
|
|||||||
InteractiveCanvasRenderConfig,
|
InteractiveCanvasRenderConfig,
|
||||||
} from "@excalidraw/excalidraw/scene/types";
|
} from "@excalidraw/excalidraw/scene/types";
|
||||||
|
|
||||||
import { getElementAbsoluteCoords, getElementBounds } from "./bounds";
|
import { getElementAbsoluteCoords } from "./bounds";
|
||||||
import { getUncroppedImageElement } from "./cropElement";
|
import { getUncroppedImageElement } from "./cropElement";
|
||||||
import { LinearElementEditor } from "./linearElementEditor";
|
import { LinearElementEditor } from "./linearElementEditor";
|
||||||
import {
|
import {
|
||||||
@@ -66,6 +57,8 @@ import { getCornerRadius } from "./utils";
|
|||||||
|
|
||||||
import { ShapeCache } from "./shape";
|
import { ShapeCache } from "./shape";
|
||||||
|
|
||||||
|
import { getFreeDrawSvgPath } from "./freedraw";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
ExcalidrawElement,
|
ExcalidrawElement,
|
||||||
ExcalidrawTextElement,
|
ExcalidrawTextElement,
|
||||||
@@ -78,7 +71,6 @@ import type {
|
|||||||
ElementsMap,
|
ElementsMap,
|
||||||
} from "./types";
|
} from "./types";
|
||||||
|
|
||||||
import type { StrokeOptions } from "perfect-freehand";
|
|
||||||
import type { RoughCanvas } from "roughjs/bin/canvas";
|
import type { RoughCanvas } from "roughjs/bin/canvas";
|
||||||
|
|
||||||
// using a stronger invert (100% vs our regular 93%) and saturate
|
// using a stronger invert (100% vs our regular 93%) and saturate
|
||||||
@@ -1045,117 +1037,3 @@ export function generateFreeDrawShape(element: ExcalidrawFreeDrawElement) {
|
|||||||
export function getFreeDrawPath2D(element: ExcalidrawFreeDrawElement) {
|
export function getFreeDrawPath2D(element: ExcalidrawFreeDrawElement) {
|
||||||
return pathsCache.get(element);
|
return pathsCache.get(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement) {
|
|
||||||
return getSvgPathFromStroke(getFreedrawOutlinePoints(element));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getFreedrawOutlineAsSegments(
|
|
||||||
element: ExcalidrawFreeDrawElement,
|
|
||||||
points: [number, number][],
|
|
||||||
elementsMap: ElementsMap,
|
|
||||||
) {
|
|
||||||
const bounds = getElementBounds(
|
|
||||||
{
|
|
||||||
...element,
|
|
||||||
angle: 0 as Radians,
|
|
||||||
},
|
|
||||||
elementsMap,
|
|
||||||
);
|
|
||||||
const center = pointFrom<GlobalPoint>(
|
|
||||||
(bounds[0] + bounds[2]) / 2,
|
|
||||||
(bounds[1] + bounds[3]) / 2,
|
|
||||||
);
|
|
||||||
|
|
||||||
invariant(points.length >= 2, "Freepath outline must have at least 2 points");
|
|
||||||
|
|
||||||
return points.slice(2).reduce(
|
|
||||||
(acc, curr) => {
|
|
||||||
acc.push(
|
|
||||||
lineSegment<GlobalPoint>(
|
|
||||||
acc[acc.length - 1][1],
|
|
||||||
pointRotateRads(
|
|
||||||
pointFrom<GlobalPoint>(curr[0] + element.x, curr[1] + element.y),
|
|
||||||
center,
|
|
||||||
element.angle,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
[
|
|
||||||
lineSegment<GlobalPoint>(
|
|
||||||
pointRotateRads(
|
|
||||||
pointFrom<GlobalPoint>(
|
|
||||||
points[0][0] + element.x,
|
|
||||||
points[0][1] + element.y,
|
|
||||||
),
|
|
||||||
center,
|
|
||||||
element.angle,
|
|
||||||
),
|
|
||||||
pointRotateRads(
|
|
||||||
pointFrom<GlobalPoint>(
|
|
||||||
points[1][0] + element.x,
|
|
||||||
points[1][1] + element.y,
|
|
||||||
),
|
|
||||||
center,
|
|
||||||
element.angle,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getFreedrawOutlinePoints(element: ExcalidrawFreeDrawElement) {
|
|
||||||
// If input points are empty (should they ever be?) return a dot
|
|
||||||
const inputPoints = element.simulatePressure
|
|
||||||
? element.points
|
|
||||||
: element.points.length
|
|
||||||
? element.points.map(([x, y], i) => [x, y, element.pressures[i]])
|
|
||||||
: [[0, 0, 0.5]];
|
|
||||||
|
|
||||||
// Consider changing the options for simulated pressure vs real pressure
|
|
||||||
const options: StrokeOptions = {
|
|
||||||
simulatePressure: element.simulatePressure,
|
|
||||||
size: element.strokeWidth * 4.25,
|
|
||||||
thinning: 0.6,
|
|
||||||
smoothing: 0.5,
|
|
||||||
streamline: 0.5,
|
|
||||||
easing: (t) => Math.sin((t * Math.PI) / 2), // https://easings.net/#easeOutSine
|
|
||||||
last: !!element.lastCommittedPoint, // LastCommittedPoint is added on pointerup
|
|
||||||
};
|
|
||||||
|
|
||||||
return getStroke(inputPoints as number[][], options) as [number, number][];
|
|
||||||
}
|
|
||||||
|
|
||||||
function med(A: number[], B: number[]) {
|
|
||||||
return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trim SVG path data so number are each two decimal points. This
|
|
||||||
// improves SVG exports, and prevents rendering errors on points
|
|
||||||
// with long decimals.
|
|
||||||
const TO_FIXED_PRECISION = /(\s?[A-Z]?,?-?[0-9]*\.[0-9]{0,2})(([0-9]|e|-)*)/g;
|
|
||||||
|
|
||||||
function getSvgPathFromStroke(points: number[][]): string {
|
|
||||||
if (!points.length) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
const max = points.length - 1;
|
|
||||||
|
|
||||||
return points
|
|
||||||
.reduce(
|
|
||||||
(acc, point, i, arr) => {
|
|
||||||
if (i === max) {
|
|
||||||
acc.push(point, med(point, arr[0]), "L", arr[0], "Z");
|
|
||||||
} else {
|
|
||||||
acc.push(point, med(point, arr[i + 1]));
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
["M", points[0], "Q"],
|
|
||||||
)
|
|
||||||
.join(" ")
|
|
||||||
.replace(TO_FIXED_PRECISION, "$1");
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -5,20 +5,17 @@ import {
|
|||||||
type Radians,
|
type Radians,
|
||||||
} from "@excalidraw/math";
|
} from "@excalidraw/math";
|
||||||
|
|
||||||
import {
|
import { SIDE_RESIZING_THRESHOLD } from "@excalidraw/common";
|
||||||
SIDE_RESIZING_THRESHOLD,
|
|
||||||
type EditorInterface,
|
|
||||||
} from "@excalidraw/common";
|
|
||||||
|
|
||||||
import type { GlobalPoint, LineSegment, LocalPoint } from "@excalidraw/math";
|
import type { GlobalPoint, LineSegment, LocalPoint } from "@excalidraw/math";
|
||||||
|
|
||||||
import type { AppState, Zoom } from "@excalidraw/excalidraw/types";
|
import type { AppState, Device, Zoom } from "@excalidraw/excalidraw/types";
|
||||||
|
|
||||||
import { getElementAbsoluteCoords } from "./bounds";
|
import { getElementAbsoluteCoords } from "./bounds";
|
||||||
import {
|
import {
|
||||||
getTransformHandlesFromCoords,
|
getTransformHandlesFromCoords,
|
||||||
getTransformHandles,
|
getTransformHandles,
|
||||||
getOmitSidesForEditorInterface,
|
getOmitSidesForDevice,
|
||||||
canResizeFromSides,
|
canResizeFromSides,
|
||||||
} from "./transformHandles";
|
} from "./transformHandles";
|
||||||
import { isImageElement, isLinearElement } from "./typeChecks";
|
import { isImageElement, isLinearElement } from "./typeChecks";
|
||||||
@@ -54,7 +51,7 @@ export const resizeTest = <Point extends GlobalPoint | LocalPoint>(
|
|||||||
y: number,
|
y: number,
|
||||||
zoom: Zoom,
|
zoom: Zoom,
|
||||||
pointerType: PointerType,
|
pointerType: PointerType,
|
||||||
editorInterface: EditorInterface,
|
device: Device,
|
||||||
): MaybeTransformHandleType => {
|
): MaybeTransformHandleType => {
|
||||||
if (!appState.selectedElementIds[element.id]) {
|
if (!appState.selectedElementIds[element.id]) {
|
||||||
return false;
|
return false;
|
||||||
@@ -66,7 +63,7 @@ export const resizeTest = <Point extends GlobalPoint | LocalPoint>(
|
|||||||
zoom,
|
zoom,
|
||||||
elementsMap,
|
elementsMap,
|
||||||
pointerType,
|
pointerType,
|
||||||
getOmitSidesForEditorInterface(editorInterface),
|
getOmitSidesForDevice(device),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -89,7 +86,7 @@ export const resizeTest = <Point extends GlobalPoint | LocalPoint>(
|
|||||||
return filter[0] as TransformHandleType;
|
return filter[0] as TransformHandleType;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canResizeFromSides(editorInterface)) {
|
if (canResizeFromSides(device)) {
|
||||||
const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(
|
const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(
|
||||||
element,
|
element,
|
||||||
elementsMap,
|
elementsMap,
|
||||||
@@ -135,7 +132,7 @@ export const getElementWithTransformHandleType = (
|
|||||||
zoom: Zoom,
|
zoom: Zoom,
|
||||||
pointerType: PointerType,
|
pointerType: PointerType,
|
||||||
elementsMap: ElementsMap,
|
elementsMap: ElementsMap,
|
||||||
editorInterface: EditorInterface,
|
device: Device,
|
||||||
) => {
|
) => {
|
||||||
return elements.reduce((result, element) => {
|
return elements.reduce((result, element) => {
|
||||||
if (result) {
|
if (result) {
|
||||||
@@ -149,7 +146,7 @@ export const getElementWithTransformHandleType = (
|
|||||||
scenePointerY,
|
scenePointerY,
|
||||||
zoom,
|
zoom,
|
||||||
pointerType,
|
pointerType,
|
||||||
editorInterface,
|
device,
|
||||||
);
|
);
|
||||||
return transformHandleType ? { element, transformHandleType } : null;
|
return transformHandleType ? { element, transformHandleType } : null;
|
||||||
}, null as { element: NonDeletedExcalidrawElement; transformHandleType: MaybeTransformHandleType } | null);
|
}, null as { element: NonDeletedExcalidrawElement; transformHandleType: MaybeTransformHandleType } | null);
|
||||||
@@ -163,14 +160,14 @@ export const getTransformHandleTypeFromCoords = <
|
|||||||
scenePointerY: number,
|
scenePointerY: number,
|
||||||
zoom: Zoom,
|
zoom: Zoom,
|
||||||
pointerType: PointerType,
|
pointerType: PointerType,
|
||||||
editorInterface: EditorInterface,
|
device: Device,
|
||||||
): MaybeTransformHandleType => {
|
): MaybeTransformHandleType => {
|
||||||
const transformHandles = getTransformHandlesFromCoords(
|
const transformHandles = getTransformHandlesFromCoords(
|
||||||
[x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2],
|
[x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2],
|
||||||
0 as Radians,
|
0 as Radians,
|
||||||
zoom,
|
zoom,
|
||||||
pointerType,
|
pointerType,
|
||||||
getOmitSidesForEditorInterface(editorInterface),
|
getOmitSidesForDevice(device),
|
||||||
);
|
);
|
||||||
|
|
||||||
const found = Object.keys(transformHandles).find((key) => {
|
const found = Object.keys(transformHandles).find((key) => {
|
||||||
@@ -186,7 +183,7 @@ export const getTransformHandleTypeFromCoords = <
|
|||||||
return found as MaybeTransformHandleType;
|
return found as MaybeTransformHandleType;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canResizeFromSides(editorInterface)) {
|
if (canResizeFromSides(device)) {
|
||||||
const cx = (x1 + x2) / 2;
|
const cx = (x1 + x2) / 2;
|
||||||
const cy = (y1 + y2) / 2;
|
const cy = (y1 + y2) / 2;
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import {
|
|||||||
assertNever,
|
assertNever,
|
||||||
COLOR_PALETTE,
|
COLOR_PALETTE,
|
||||||
LINE_POLYGON_POINT_MERGE_DISTANCE,
|
LINE_POLYGON_POINT_MERGE_DISTANCE,
|
||||||
|
STROKE_WIDTH,
|
||||||
} from "@excalidraw/common";
|
} from "@excalidraw/common";
|
||||||
|
|
||||||
import { RoughGenerator } from "roughjs/bin/generator";
|
import { RoughGenerator } from "roughjs/bin/generator";
|
||||||
@@ -202,7 +203,7 @@ export const generateRoughOptions = (
|
|||||||
// hachureGap because if not specified, roughjs uses strokeWidth to
|
// hachureGap because if not specified, roughjs uses strokeWidth to
|
||||||
// calculate them (and we don't want the fills to be modified)
|
// calculate them (and we don't want the fills to be modified)
|
||||||
fillWeight: element.strokeWidth / 2,
|
fillWeight: element.strokeWidth / 2,
|
||||||
hachureGap: element.strokeWidth * 4,
|
hachureGap: Math.min(element.strokeWidth, STROKE_WIDTH.bold) * 4,
|
||||||
roughness: adjustRoughness(element),
|
roughness: adjustRoughness(element),
|
||||||
stroke: element.strokeColor,
|
stroke: element.strokeColor,
|
||||||
preserveVertices:
|
preserveVertices:
|
||||||
@@ -806,15 +807,21 @@ const generateElementShape = (
|
|||||||
generateFreeDrawShape(element);
|
generateFreeDrawShape(element);
|
||||||
|
|
||||||
if (isPathALoop(element.points)) {
|
if (isPathALoop(element.points)) {
|
||||||
// generate rough polygon to fill freedraw shape
|
const points =
|
||||||
const simplifiedPoints = simplify(
|
element.freedrawOptions === null
|
||||||
element.points as Mutable<LocalPoint[]>,
|
? simplify(element.points as LocalPoint[], 0.75)
|
||||||
0.75,
|
: simplify(element.points as LocalPoint[], 1.5);
|
||||||
);
|
|
||||||
shape = generator.curve(simplifiedPoints as [number, number][], {
|
shape =
|
||||||
...generateRoughOptions(element),
|
element.freedrawOptions === null
|
||||||
stroke: "none",
|
? generator.curve(points, {
|
||||||
});
|
...generateRoughOptions(element),
|
||||||
|
stroke: "none",
|
||||||
|
})
|
||||||
|
: generator.polygon(points, {
|
||||||
|
...generateRoughOptions(element),
|
||||||
|
stroke: "none",
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
shape = null;
|
shape = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import {
|
import {
|
||||||
DEFAULT_TRANSFORM_HANDLE_SPACING,
|
DEFAULT_TRANSFORM_HANDLE_SPACING,
|
||||||
type EditorInterface,
|
isAndroid,
|
||||||
|
isIOS,
|
||||||
|
isMobileOrTablet,
|
||||||
} from "@excalidraw/common";
|
} from "@excalidraw/common";
|
||||||
|
|
||||||
import { pointFrom, pointRotateRads } from "@excalidraw/math";
|
import { pointFrom, pointRotateRads } from "@excalidraw/math";
|
||||||
@@ -8,6 +10,7 @@ import { pointFrom, pointRotateRads } from "@excalidraw/math";
|
|||||||
import type { Radians } from "@excalidraw/math";
|
import type { Radians } from "@excalidraw/math";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
|
Device,
|
||||||
InteractiveCanvasAppState,
|
InteractiveCanvasAppState,
|
||||||
Zoom,
|
Zoom,
|
||||||
} from "@excalidraw/excalidraw/types";
|
} from "@excalidraw/excalidraw/types";
|
||||||
@@ -109,21 +112,20 @@ const generateTransformHandle = (
|
|||||||
return [xx - width / 2, yy - height / 2, width, height];
|
return [xx - width / 2, yy - height / 2, width, height];
|
||||||
};
|
};
|
||||||
|
|
||||||
export const canResizeFromSides = (editorInterface: EditorInterface) => {
|
export const canResizeFromSides = (device: Device) => {
|
||||||
if (
|
if (device.viewport.isMobile) {
|
||||||
editorInterface.formFactor === "phone" &&
|
return false;
|
||||||
editorInterface.userAgent.isMobileDevice
|
}
|
||||||
) {
|
|
||||||
|
if (device.isTouchScreen && (isAndroid || isIOS)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getOmitSidesForEditorInterface = (
|
export const getOmitSidesForDevice = (device: Device) => {
|
||||||
editorInterface: EditorInterface,
|
if (canResizeFromSides(device)) {
|
||||||
) => {
|
|
||||||
if (canResizeFromSides(editorInterface)) {
|
|
||||||
return DEFAULT_OMIT_SIDES;
|
return DEFAULT_OMIT_SIDES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,7 +330,6 @@ export const getTransformHandles = (
|
|||||||
export const hasBoundingBox = (
|
export const hasBoundingBox = (
|
||||||
elements: readonly NonDeletedExcalidrawElement[],
|
elements: readonly NonDeletedExcalidrawElement[],
|
||||||
appState: InteractiveCanvasAppState,
|
appState: InteractiveCanvasAppState,
|
||||||
editorInterface: EditorInterface,
|
|
||||||
) => {
|
) => {
|
||||||
if (appState.selectedLinearElement?.isEditing) {
|
if (appState.selectedLinearElement?.isEditing) {
|
||||||
return false;
|
return false;
|
||||||
@@ -347,5 +348,5 @@ export const hasBoundingBox = (
|
|||||||
|
|
||||||
// on mobile/tablet we currently don't show bbox because of resize issues
|
// on mobile/tablet we currently don't show bbox because of resize issues
|
||||||
// (also prob best for simplicity's sake)
|
// (also prob best for simplicity's sake)
|
||||||
return element.points.length > 2 && !editorInterface.userAgent.isMobileDevice;
|
return element.points.length > 2 && !isMobileOrTablet();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -380,6 +380,11 @@ export type ExcalidrawFreeDrawElement = _ExcalidrawElementBase &
|
|||||||
pressures: readonly number[];
|
pressures: readonly number[];
|
||||||
simulatePressure: boolean;
|
simulatePressure: boolean;
|
||||||
lastCommittedPoint: LocalPoint | null;
|
lastCommittedPoint: LocalPoint | null;
|
||||||
|
freedrawOptions: {
|
||||||
|
streamline?: number;
|
||||||
|
simplify?: number;
|
||||||
|
fixedStrokeWidth?: boolean;
|
||||||
|
} | null;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
export type FileId = string & { _brand: "FileId" };
|
export type FileId = string & { _brand: "FileId" };
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ import {
|
|||||||
ZoomResetIcon,
|
ZoomResetIcon,
|
||||||
} from "../components/icons";
|
} from "../components/icons";
|
||||||
import { setCursor } from "../cursor";
|
import { setCursor } from "../cursor";
|
||||||
import { constrainScrollState } from "../scene/scrollConstraints";
|
|
||||||
|
|
||||||
import { t } from "../i18n";
|
import { t } from "../i18n";
|
||||||
import { getNormalizedZoom } from "../scene";
|
import { getNormalizedZoom } from "../scene";
|
||||||
@@ -84,6 +83,7 @@ export const actionChangeViewBackgroundColor = register({
|
|||||||
elements={elements}
|
elements={elements}
|
||||||
appState={appState}
|
appState={appState}
|
||||||
updateData={updateData}
|
updateData={updateData}
|
||||||
|
compactMode={appState.stylesPanelMode === "compact"}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -141,7 +141,7 @@ export const actionZoomIn = register({
|
|||||||
trackEvent: { category: "canvas" },
|
trackEvent: { category: "canvas" },
|
||||||
perform: (_elements, appState, _, app) => {
|
perform: (_elements, appState, _, app) => {
|
||||||
return {
|
return {
|
||||||
appState: constrainScrollState({
|
appState: {
|
||||||
...appState,
|
...appState,
|
||||||
...getStateForZoom(
|
...getStateForZoom(
|
||||||
{
|
{
|
||||||
@@ -152,7 +152,7 @@ export const actionZoomIn = register({
|
|||||||
appState,
|
appState,
|
||||||
),
|
),
|
||||||
userToFollow: null,
|
userToFollow: null,
|
||||||
}),
|
},
|
||||||
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@@ -182,7 +182,7 @@ export const actionZoomOut = register({
|
|||||||
trackEvent: { category: "canvas" },
|
trackEvent: { category: "canvas" },
|
||||||
perform: (_elements, appState, _, app) => {
|
perform: (_elements, appState, _, app) => {
|
||||||
return {
|
return {
|
||||||
appState: constrainScrollState({
|
appState: {
|
||||||
...appState,
|
...appState,
|
||||||
...getStateForZoom(
|
...getStateForZoom(
|
||||||
{
|
{
|
||||||
@@ -193,7 +193,7 @@ export const actionZoomOut = register({
|
|||||||
appState,
|
appState,
|
||||||
),
|
),
|
||||||
userToFollow: null,
|
userToFollow: null,
|
||||||
}),
|
},
|
||||||
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
captureUpdate: CaptureUpdateAction.EVENTUALLY,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ import { getSelectedElements, isSomeElementSelected } from "../scene";
|
|||||||
import { TrashIcon } from "../components/icons";
|
import { TrashIcon } from "../components/icons";
|
||||||
import { ToolButton } from "../components/ToolButton";
|
import { ToolButton } from "../components/ToolButton";
|
||||||
|
|
||||||
import { useStylesPanelMode } from "..";
|
|
||||||
|
|
||||||
import { register } from "./register";
|
import { register } from "./register";
|
||||||
|
|
||||||
import type { AppClassProperties, AppState } from "../types";
|
import type { AppClassProperties, AppState } from "../types";
|
||||||
@@ -322,25 +320,22 @@ export const actionDeleteSelected = register({
|
|||||||
keyTest: (event, appState, elements) =>
|
keyTest: (event, appState, elements) =>
|
||||||
(event.key === KEYS.BACKSPACE || event.key === KEYS.DELETE) &&
|
(event.key === KEYS.BACKSPACE || event.key === KEYS.DELETE) &&
|
||||||
!event[KEYS.CTRL_OR_CMD],
|
!event[KEYS.CTRL_OR_CMD],
|
||||||
PanelComponent: ({ elements, appState, updateData, app }) => {
|
PanelComponent: ({ elements, appState, updateData }) => (
|
||||||
const isMobile = useStylesPanelMode() === "mobile";
|
<ToolButton
|
||||||
|
type="button"
|
||||||
return (
|
icon={TrashIcon}
|
||||||
<ToolButton
|
title={t("labels.delete")}
|
||||||
type="button"
|
aria-label={t("labels.delete")}
|
||||||
icon={TrashIcon}
|
onClick={() => updateData(null)}
|
||||||
title={t("labels.delete")}
|
disabled={
|
||||||
aria-label={t("labels.delete")}
|
!isSomeElementSelected(getNonDeletedElements(elements), appState)
|
||||||
onClick={() => updateData(null)}
|
}
|
||||||
disabled={
|
style={{
|
||||||
!isSomeElementSelected(getNonDeletedElements(elements), appState)
|
...(appState.stylesPanelMode === "mobile" &&
|
||||||
}
|
appState.openPopup !== "compactOtherProperties"
|
||||||
style={{
|
? MOBILE_ACTION_BUTTON_BG
|
||||||
...(isMobile && appState.openPopup !== "compactOtherProperties"
|
: {}),
|
||||||
? MOBILE_ACTION_BUTTON_BG
|
}}
|
||||||
: {}),
|
/>
|
||||||
}}
|
),
|
||||||
/>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ import { t } from "../i18n";
|
|||||||
import { isSomeElementSelected } from "../scene";
|
import { isSomeElementSelected } from "../scene";
|
||||||
import { getShortcutKey } from "../shortcut";
|
import { getShortcutKey } from "../shortcut";
|
||||||
|
|
||||||
import { useStylesPanelMode } from "..";
|
|
||||||
|
|
||||||
import { register } from "./register";
|
import { register } from "./register";
|
||||||
|
|
||||||
export const actionDuplicateSelection = register({
|
export const actionDuplicateSelection = register({
|
||||||
@@ -109,27 +107,24 @@ export const actionDuplicateSelection = register({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.D,
|
keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.D,
|
||||||
PanelComponent: ({ elements, appState, updateData, app }) => {
|
PanelComponent: ({ elements, appState, updateData }) => (
|
||||||
const isMobile = useStylesPanelMode() === "mobile";
|
<ToolButton
|
||||||
|
type="button"
|
||||||
return (
|
icon={DuplicateIcon}
|
||||||
<ToolButton
|
title={`${t("labels.duplicateSelection")} — ${getShortcutKey(
|
||||||
type="button"
|
"CtrlOrCmd+D",
|
||||||
icon={DuplicateIcon}
|
)}`}
|
||||||
title={`${t("labels.duplicateSelection")} — ${getShortcutKey(
|
aria-label={t("labels.duplicateSelection")}
|
||||||
"CtrlOrCmd+D",
|
onClick={() => updateData(null)}
|
||||||
)}`}
|
disabled={
|
||||||
aria-label={t("labels.duplicateSelection")}
|
!isSomeElementSelected(getNonDeletedElements(elements), appState)
|
||||||
onClick={() => updateData(null)}
|
}
|
||||||
disabled={
|
style={{
|
||||||
!isSomeElementSelected(getNonDeletedElements(elements), appState)
|
...(appState.stylesPanelMode === "mobile" &&
|
||||||
}
|
appState.openPopup !== "compactOtherProperties"
|
||||||
style={{
|
? MOBILE_ACTION_BUTTON_BG
|
||||||
...(isMobile && appState.openPopup !== "compactOtherProperties"
|
: {}),
|
||||||
? MOBILE_ACTION_BUTTON_BG
|
}}
|
||||||
: {}),
|
/>
|
||||||
}}
|
),
|
||||||
/>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { CaptureUpdateAction } from "@excalidraw/element";
|
|||||||
|
|
||||||
import type { Theme } from "@excalidraw/element/types";
|
import type { Theme } from "@excalidraw/element/types";
|
||||||
|
|
||||||
import { useEditorInterface } from "../components/App";
|
import { useDevice } from "../components/App";
|
||||||
import { CheckboxItem } from "../components/CheckboxItem";
|
import { CheckboxItem } from "../components/CheckboxItem";
|
||||||
import { DarkModeToggle } from "../components/DarkModeToggle";
|
import { DarkModeToggle } from "../components/DarkModeToggle";
|
||||||
import { ProjectName } from "../components/ProjectName";
|
import { ProjectName } from "../components/ProjectName";
|
||||||
@@ -242,7 +242,7 @@ export const actionSaveFileToDisk = register({
|
|||||||
icon={saveAs}
|
icon={saveAs}
|
||||||
title={t("buttons.saveAs")}
|
title={t("buttons.saveAs")}
|
||||||
aria-label={t("buttons.saveAs")}
|
aria-label={t("buttons.saveAs")}
|
||||||
showAriaLabel={useEditorInterface().formFactor === "phone"}
|
showAriaLabel={useDevice().editor.isMobile}
|
||||||
hidden={!nativeFileSystemSupported}
|
hidden={!nativeFileSystemSupported}
|
||||||
onClick={() => updateData(null)}
|
onClick={() => updateData(null)}
|
||||||
data-testid="save-as-button"
|
data-testid="save-as-button"
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ import { HistoryChangedEvent } from "../history";
|
|||||||
import { useEmitter } from "../hooks/useEmitter";
|
import { useEmitter } from "../hooks/useEmitter";
|
||||||
import { t } from "../i18n";
|
import { t } from "../i18n";
|
||||||
|
|
||||||
import { useStylesPanelMode } from "..";
|
|
||||||
|
|
||||||
import type { History } from "../history";
|
import type { History } from "../history";
|
||||||
import type { AppClassProperties, AppState } from "../types";
|
import type { AppClassProperties, AppState } from "../types";
|
||||||
import type { Action, ActionResult } from "./types";
|
import type { Action, ActionResult } from "./types";
|
||||||
@@ -75,7 +73,7 @@ export const createUndoAction: ActionCreator = (history) => ({
|
|||||||
),
|
),
|
||||||
keyTest: (event) =>
|
keyTest: (event) =>
|
||||||
event[KEYS.CTRL_OR_CMD] && matchKey(event, KEYS.Z) && !event.shiftKey,
|
event[KEYS.CTRL_OR_CMD] && matchKey(event, KEYS.Z) && !event.shiftKey,
|
||||||
PanelComponent: ({ appState, updateData, data, app }) => {
|
PanelComponent: ({ appState, updateData, data }) => {
|
||||||
const { isUndoStackEmpty } = useEmitter<HistoryChangedEvent>(
|
const { isUndoStackEmpty } = useEmitter<HistoryChangedEvent>(
|
||||||
history.onHistoryChangedEmitter,
|
history.onHistoryChangedEmitter,
|
||||||
new HistoryChangedEvent(
|
new HistoryChangedEvent(
|
||||||
@@ -83,7 +81,6 @@ export const createUndoAction: ActionCreator = (history) => ({
|
|||||||
history.isRedoStackEmpty,
|
history.isRedoStackEmpty,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
const isMobile = useStylesPanelMode() === "mobile";
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ToolButton
|
<ToolButton
|
||||||
@@ -95,7 +92,9 @@ export const createUndoAction: ActionCreator = (history) => ({
|
|||||||
disabled={isUndoStackEmpty}
|
disabled={isUndoStackEmpty}
|
||||||
data-testid="button-undo"
|
data-testid="button-undo"
|
||||||
style={{
|
style={{
|
||||||
...(isMobile ? MOBILE_ACTION_BUTTON_BG : {}),
|
...(appState.stylesPanelMode === "mobile"
|
||||||
|
? MOBILE_ACTION_BUTTON_BG
|
||||||
|
: {}),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -115,7 +114,7 @@ export const createRedoAction: ActionCreator = (history) => ({
|
|||||||
keyTest: (event) =>
|
keyTest: (event) =>
|
||||||
(event[KEYS.CTRL_OR_CMD] && event.shiftKey && matchKey(event, KEYS.Z)) ||
|
(event[KEYS.CTRL_OR_CMD] && event.shiftKey && matchKey(event, KEYS.Z)) ||
|
||||||
(isWindows && event.ctrlKey && !event.shiftKey && matchKey(event, KEYS.Y)),
|
(isWindows && event.ctrlKey && !event.shiftKey && matchKey(event, KEYS.Y)),
|
||||||
PanelComponent: ({ appState, updateData, data, app }) => {
|
PanelComponent: ({ appState, updateData, data }) => {
|
||||||
const { isRedoStackEmpty } = useEmitter(
|
const { isRedoStackEmpty } = useEmitter(
|
||||||
history.onHistoryChangedEmitter,
|
history.onHistoryChangedEmitter,
|
||||||
new HistoryChangedEvent(
|
new HistoryChangedEvent(
|
||||||
@@ -123,7 +122,6 @@ export const createRedoAction: ActionCreator = (history) => ({
|
|||||||
history.isRedoStackEmpty,
|
history.isRedoStackEmpty,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
const isMobile = useStylesPanelMode() === "mobile";
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ToolButton
|
<ToolButton
|
||||||
@@ -135,7 +133,9 @@ export const createRedoAction: ActionCreator = (history) => ({
|
|||||||
disabled={isRedoStackEmpty}
|
disabled={isRedoStackEmpty}
|
||||||
data-testid="button-redo"
|
data-testid="button-redo"
|
||||||
style={{
|
style={{
|
||||||
...(isMobile ? MOBILE_ACTION_BUTTON_BG : {}),
|
...(appState.stylesPanelMode === "mobile"
|
||||||
|
? MOBILE_ACTION_BUTTON_BG
|
||||||
|
: {}),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -145,26 +145,27 @@ describe("element locking", () => {
|
|||||||
queryByTestId(document.body, `strokeWidth-thin`),
|
queryByTestId(document.body, `strokeWidth-thin`),
|
||||||
).not.toBeChecked();
|
).not.toBeChecked();
|
||||||
expect(
|
expect(
|
||||||
queryByTestId(document.body, `strokeWidth-bold`),
|
queryByTestId(document.body, `strokeWidth-medium`),
|
||||||
).not.toBeChecked();
|
).not.toBeChecked();
|
||||||
expect(
|
expect(
|
||||||
queryByTestId(document.body, `strokeWidth-extraBold`),
|
queryByTestId(document.body, `strokeWidth-bold`),
|
||||||
).not.toBeChecked();
|
).not.toBeChecked();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should show properties of different element types when selected", () => {
|
it("should show properties of different element types when selected", () => {
|
||||||
const rect = API.createElement({
|
const rect = API.createElement({
|
||||||
type: "rectangle",
|
type: "rectangle",
|
||||||
strokeWidth: STROKE_WIDTH.bold,
|
strokeWidth: STROKE_WIDTH.medium,
|
||||||
});
|
});
|
||||||
const text = API.createElement({
|
const text = API.createElement({
|
||||||
type: "text",
|
type: "text",
|
||||||
fontFamily: FONT_FAMILY["Comic Shanns"],
|
fontFamily: FONT_FAMILY["Comic Shanns"],
|
||||||
|
strokeWidth: undefined,
|
||||||
});
|
});
|
||||||
API.setElements([rect, text]);
|
API.setElements([rect, text]);
|
||||||
API.setSelectedElements([rect, text]);
|
API.setSelectedElements([rect, text]);
|
||||||
|
|
||||||
expect(queryByTestId(document.body, `strokeWidth-bold`)).toBeChecked();
|
expect(queryByTestId(document.body, `strokeWidth-medium`)).toBeChecked();
|
||||||
expect(queryByTestId(document.body, `font-family-code`)).toHaveClass(
|
expect(queryByTestId(document.body, `font-family-code`)).toHaveClass(
|
||||||
"active",
|
"active",
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import {
|
|||||||
isArrowElement,
|
isArrowElement,
|
||||||
isBoundToContainer,
|
isBoundToContainer,
|
||||||
isElbowArrow,
|
isElbowArrow,
|
||||||
|
isFreeDrawElement,
|
||||||
isLinearElement,
|
isLinearElement,
|
||||||
isLineElement,
|
isLineElement,
|
||||||
isTextElement,
|
isTextElement,
|
||||||
@@ -57,8 +58,6 @@ import {
|
|||||||
toggleLinePolygonState,
|
toggleLinePolygonState,
|
||||||
} from "@excalidraw/element";
|
} from "@excalidraw/element";
|
||||||
|
|
||||||
import { deriveStylesPanelMode } from "@excalidraw/common";
|
|
||||||
|
|
||||||
import type { LocalPoint } from "@excalidraw/math";
|
import type { LocalPoint } from "@excalidraw/math";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
@@ -82,6 +81,9 @@ import { RadioSelection } from "../components/RadioSelection";
|
|||||||
import { ColorPicker } from "../components/ColorPicker/ColorPicker";
|
import { ColorPicker } from "../components/ColorPicker/ColorPicker";
|
||||||
import { FontPicker } from "../components/FontPicker/FontPicker";
|
import { FontPicker } from "../components/FontPicker/FontPicker";
|
||||||
import { IconPicker } from "../components/IconPicker";
|
import { IconPicker } from "../components/IconPicker";
|
||||||
|
// TODO barnabasmolnar/editor-redesign
|
||||||
|
// TextAlignTopIcon, TextAlignBottomIcon,TextAlignMiddleIcon,
|
||||||
|
// ArrowHead icons
|
||||||
import { Range } from "../components/Range";
|
import { Range } from "../components/Range";
|
||||||
import {
|
import {
|
||||||
ArrowheadArrowIcon,
|
ArrowheadArrowIcon,
|
||||||
@@ -124,6 +126,9 @@ import {
|
|||||||
ArrowheadCrowfootIcon,
|
ArrowheadCrowfootIcon,
|
||||||
ArrowheadCrowfootOneIcon,
|
ArrowheadCrowfootOneIcon,
|
||||||
ArrowheadCrowfootOneOrManyIcon,
|
ArrowheadCrowfootOneOrManyIcon,
|
||||||
|
strokeWidthFixedIcon,
|
||||||
|
strokeWidthVariableIcon,
|
||||||
|
StrokeWidthMediumIcon,
|
||||||
} from "../components/icons";
|
} from "../components/icons";
|
||||||
|
|
||||||
import { Fonts } from "../fonts";
|
import { Fonts } from "../fonts";
|
||||||
@@ -148,15 +153,6 @@ import type { AppClassProperties, AppState, Primitive } from "../types";
|
|||||||
|
|
||||||
const FONT_SIZE_RELATIVE_INCREASE_STEP = 0.1;
|
const FONT_SIZE_RELATIVE_INCREASE_STEP = 0.1;
|
||||||
|
|
||||||
const getStylesPanelInfo = (app: AppClassProperties) => {
|
|
||||||
const stylesPanelMode = deriveStylesPanelMode(app.editorInterface);
|
|
||||||
return {
|
|
||||||
stylesPanelMode,
|
|
||||||
isCompact: stylesPanelMode !== "full",
|
|
||||||
isMobile: stylesPanelMode === "mobile",
|
|
||||||
} as const;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const changeProperty = (
|
export const changeProperty = (
|
||||||
elements: readonly ExcalidrawElement[],
|
elements: readonly ExcalidrawElement[],
|
||||||
appState: AppState,
|
appState: AppState,
|
||||||
@@ -335,35 +331,35 @@ export const actionChangeStrokeColor = register({
|
|||||||
: CaptureUpdateAction.EVENTUALLY,
|
: CaptureUpdateAction.EVENTUALLY,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
PanelComponent: ({ elements, appState, updateData, app, data }) => (
|
||||||
const { stylesPanelMode } = getStylesPanelInfo(app);
|
<>
|
||||||
|
{appState.stylesPanelMode === "full" && (
|
||||||
return (
|
<h3 aria-hidden="true">{t("labels.stroke")}</h3>
|
||||||
<>
|
)}
|
||||||
{stylesPanelMode === "full" && (
|
<ColorPicker
|
||||||
<h3 aria-hidden="true">{t("labels.stroke")}</h3>
|
topPicks={DEFAULT_ELEMENT_STROKE_PICKS}
|
||||||
|
palette={DEFAULT_ELEMENT_STROKE_COLOR_PALETTE}
|
||||||
|
type="elementStroke"
|
||||||
|
label={t("labels.stroke")}
|
||||||
|
color={getFormValue(
|
||||||
|
elements,
|
||||||
|
app,
|
||||||
|
(element) => element.strokeColor,
|
||||||
|
true,
|
||||||
|
(hasSelection) =>
|
||||||
|
!hasSelection ? appState.currentItemStrokeColor : null,
|
||||||
)}
|
)}
|
||||||
<ColorPicker
|
onChange={(color) => updateData({ currentItemStrokeColor: color })}
|
||||||
topPicks={DEFAULT_ELEMENT_STROKE_PICKS}
|
elements={elements}
|
||||||
palette={DEFAULT_ELEMENT_STROKE_COLOR_PALETTE}
|
appState={appState}
|
||||||
type="elementStroke"
|
updateData={updateData}
|
||||||
label={t("labels.stroke")}
|
compactMode={
|
||||||
color={getFormValue(
|
appState.stylesPanelMode === "compact" ||
|
||||||
elements,
|
appState.stylesPanelMode === "mobile"
|
||||||
app,
|
}
|
||||||
(element) => element.strokeColor,
|
/>
|
||||||
true,
|
</>
|
||||||
(hasSelection) =>
|
),
|
||||||
!hasSelection ? appState.currentItemStrokeColor : null,
|
|
||||||
)}
|
|
||||||
onChange={(color) => updateData({ currentItemStrokeColor: color })}
|
|
||||||
elements={elements}
|
|
||||||
appState={appState}
|
|
||||||
updateData={updateData}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export const actionChangeBackgroundColor = register({
|
export const actionChangeBackgroundColor = register({
|
||||||
@@ -418,37 +414,35 @@ export const actionChangeBackgroundColor = register({
|
|||||||
captureUpdate: CaptureUpdateAction.IMMEDIATELY,
|
captureUpdate: CaptureUpdateAction.IMMEDIATELY,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
PanelComponent: ({ elements, appState, updateData, app, data }) => (
|
||||||
const { stylesPanelMode } = getStylesPanelInfo(app);
|
<>
|
||||||
|
{appState.stylesPanelMode === "full" && (
|
||||||
return (
|
<h3 aria-hidden="true">{t("labels.background")}</h3>
|
||||||
<>
|
)}
|
||||||
{stylesPanelMode === "full" && (
|
<ColorPicker
|
||||||
<h3 aria-hidden="true">{t("labels.background")}</h3>
|
topPicks={DEFAULT_ELEMENT_BACKGROUND_PICKS}
|
||||||
|
palette={DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE}
|
||||||
|
type="elementBackground"
|
||||||
|
label={t("labels.background")}
|
||||||
|
color={getFormValue(
|
||||||
|
elements,
|
||||||
|
app,
|
||||||
|
(element) => element.backgroundColor,
|
||||||
|
true,
|
||||||
|
(hasSelection) =>
|
||||||
|
!hasSelection ? appState.currentItemBackgroundColor : null,
|
||||||
)}
|
)}
|
||||||
<ColorPicker
|
onChange={(color) => updateData({ currentItemBackgroundColor: color })}
|
||||||
topPicks={DEFAULT_ELEMENT_BACKGROUND_PICKS}
|
elements={elements}
|
||||||
palette={DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE}
|
appState={appState}
|
||||||
type="elementBackground"
|
updateData={updateData}
|
||||||
label={t("labels.background")}
|
compactMode={
|
||||||
color={getFormValue(
|
appState.stylesPanelMode === "compact" ||
|
||||||
elements,
|
appState.stylesPanelMode === "mobile"
|
||||||
app,
|
}
|
||||||
(element) => element.backgroundColor,
|
/>
|
||||||
true,
|
</>
|
||||||
(hasSelection) =>
|
),
|
||||||
!hasSelection ? appState.currentItemBackgroundColor : null,
|
|
||||||
)}
|
|
||||||
onChange={(color) =>
|
|
||||||
updateData({ currentItemBackgroundColor: color })
|
|
||||||
}
|
|
||||||
elements={elements}
|
|
||||||
appState={appState}
|
|
||||||
updateData={updateData}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export const actionChangeFillStyle = register({
|
export const actionChangeFillStyle = register({
|
||||||
@@ -459,9 +453,7 @@ export const actionChangeFillStyle = register({
|
|||||||
trackEvent(
|
trackEvent(
|
||||||
"element",
|
"element",
|
||||||
"changeFillStyle",
|
"changeFillStyle",
|
||||||
`${value} (${
|
`${value} (${app.device.editor.isMobile ? "mobile" : "desktop"})`,
|
||||||
app.editorInterface.formFactor === "phone" ? "mobile" : "desktop"
|
|
||||||
})`,
|
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
elements: changeProperty(elements, appState, (el) =>
|
elements: changeProperty(elements, appState, (el) =>
|
||||||
@@ -533,6 +525,33 @@ export const actionChangeFillStyle = register({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const WIDTHS = [
|
||||||
|
{
|
||||||
|
value: STROKE_WIDTH.thin,
|
||||||
|
text: t("labels.thin"),
|
||||||
|
icon: StrokeWidthBaseIcon,
|
||||||
|
testId: "strokeWidth-thin",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: STROKE_WIDTH.medium,
|
||||||
|
text: t("labels.medium"),
|
||||||
|
icon: StrokeWidthMediumIcon,
|
||||||
|
testId: "strokeWidth-medium",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: STROKE_WIDTH.bold,
|
||||||
|
text: t("labels.bold"),
|
||||||
|
icon: StrokeWidthBoldIcon,
|
||||||
|
testId: "strokeWidth-bold",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: STROKE_WIDTH.extraBold,
|
||||||
|
text: t("labels.extraBold"),
|
||||||
|
icon: StrokeWidthExtraBoldIcon,
|
||||||
|
testId: "strokeWidth-extraBold",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
export const actionChangeStrokeWidth = register({
|
export const actionChangeStrokeWidth = register({
|
||||||
name: "changeStrokeWidth",
|
name: "changeStrokeWidth",
|
||||||
label: "labels.strokeWidth",
|
label: "labels.strokeWidth",
|
||||||
@@ -554,26 +573,7 @@ export const actionChangeStrokeWidth = register({
|
|||||||
<div className="buttonList">
|
<div className="buttonList">
|
||||||
<RadioSelection
|
<RadioSelection
|
||||||
group="stroke-width"
|
group="stroke-width"
|
||||||
options={[
|
options={WIDTHS}
|
||||||
{
|
|
||||||
value: STROKE_WIDTH.thin,
|
|
||||||
text: t("labels.thin"),
|
|
||||||
icon: StrokeWidthBaseIcon,
|
|
||||||
testId: "strokeWidth-thin",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: STROKE_WIDTH.bold,
|
|
||||||
text: t("labels.bold"),
|
|
||||||
icon: StrokeWidthBoldIcon,
|
|
||||||
testId: "strokeWidth-bold",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: STROKE_WIDTH.extraBold,
|
|
||||||
text: t("labels.extraBold"),
|
|
||||||
icon: StrokeWidthExtraBoldIcon,
|
|
||||||
testId: "strokeWidth-extraBold",
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
value={getFormValue(
|
value={getFormValue(
|
||||||
elements,
|
elements,
|
||||||
app,
|
app,
|
||||||
@@ -696,6 +696,70 @@ export const actionChangeStrokeStyle = register({
|
|||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const actionChangePressureSensitivity = register({
|
||||||
|
name: "changeStrokeType",
|
||||||
|
label: "labels.strokeType",
|
||||||
|
trackEvent: false,
|
||||||
|
perform: (elements, appState, value) => {
|
||||||
|
const updatedElements = changeProperty(elements, appState, (el) => {
|
||||||
|
if (isFreeDrawElement(el)) {
|
||||||
|
return newElementWith(el, {
|
||||||
|
freedrawOptions: {
|
||||||
|
...el.freedrawOptions,
|
||||||
|
fixedStrokeWidth: value,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return el;
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
elements: updatedElements,
|
||||||
|
appState: { ...appState, currentItemFixedStrokeWidth: value },
|
||||||
|
captureUpdate: CaptureUpdateAction.IMMEDIATELY,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
PanelComponent: ({ app, appState, updateData }) => {
|
||||||
|
const selectedElements = app.scene.getSelectedElements(app.state);
|
||||||
|
const freedraws = selectedElements.filter(isFreeDrawElement);
|
||||||
|
|
||||||
|
const currentValue =
|
||||||
|
freedraws.length > 0
|
||||||
|
? reduceToCommonValue(
|
||||||
|
freedraws,
|
||||||
|
(element) => element.freedrawOptions?.fixedStrokeWidth,
|
||||||
|
) ?? null
|
||||||
|
: appState.currentItemFixedStrokeWidth;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<fieldset>
|
||||||
|
<legend>{t("labels.strokeType")}</legend>
|
||||||
|
<div className="buttonList">
|
||||||
|
<RadioSelection
|
||||||
|
group="pressure-sensitivity"
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
value: true,
|
||||||
|
text: t("labels.strokeWidthFixed"),
|
||||||
|
icon: strokeWidthFixedIcon,
|
||||||
|
testId: "pressure-fixed",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: false,
|
||||||
|
text: t("labels.strokeWidthVariable"),
|
||||||
|
icon: strokeWidthVariableIcon,
|
||||||
|
testId: "pressure-variable",
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
value={currentValue}
|
||||||
|
onChange={(value) => updateData(value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
export const actionChangeOpacity = register({
|
export const actionChangeOpacity = register({
|
||||||
name: "changeOpacity",
|
name: "changeOpacity",
|
||||||
label: "labels.opacity",
|
label: "labels.opacity",
|
||||||
@@ -727,81 +791,78 @@ export const actionChangeFontSize = register({
|
|||||||
perform: (elements, appState, value, app) => {
|
perform: (elements, appState, value, app) => {
|
||||||
return changeFontSize(elements, appState, app, () => value, value);
|
return changeFontSize(elements, appState, app, () => value, value);
|
||||||
},
|
},
|
||||||
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
PanelComponent: ({ elements, appState, updateData, app, data }) => (
|
||||||
const { isCompact } = getStylesPanelInfo(app);
|
<fieldset>
|
||||||
|
<legend>{t("labels.fontSize")}</legend>
|
||||||
return (
|
<div className="buttonList">
|
||||||
<fieldset>
|
<RadioSelection
|
||||||
<legend>{t("labels.fontSize")}</legend>
|
group="font-size"
|
||||||
<div className="buttonList">
|
options={[
|
||||||
<RadioSelection
|
{
|
||||||
group="font-size"
|
value: 16,
|
||||||
options={[
|
text: t("labels.small"),
|
||||||
{
|
icon: FontSizeSmallIcon,
|
||||||
value: 16,
|
testId: "fontSize-small",
|
||||||
text: t("labels.small"),
|
},
|
||||||
icon: FontSizeSmallIcon,
|
{
|
||||||
testId: "fontSize-small",
|
value: 20,
|
||||||
},
|
text: t("labels.medium"),
|
||||||
{
|
icon: FontSizeMediumIcon,
|
||||||
value: 20,
|
testId: "fontSize-medium",
|
||||||
text: t("labels.medium"),
|
},
|
||||||
icon: FontSizeMediumIcon,
|
{
|
||||||
testId: "fontSize-medium",
|
value: 28,
|
||||||
},
|
text: t("labels.large"),
|
||||||
{
|
icon: FontSizeLargeIcon,
|
||||||
value: 28,
|
testId: "fontSize-large",
|
||||||
text: t("labels.large"),
|
},
|
||||||
icon: FontSizeLargeIcon,
|
{
|
||||||
testId: "fontSize-large",
|
value: 36,
|
||||||
},
|
text: t("labels.veryLarge"),
|
||||||
{
|
icon: FontSizeExtraLargeIcon,
|
||||||
value: 36,
|
testId: "fontSize-veryLarge",
|
||||||
text: t("labels.veryLarge"),
|
},
|
||||||
icon: FontSizeExtraLargeIcon,
|
]}
|
||||||
testId: "fontSize-veryLarge",
|
value={getFormValue(
|
||||||
},
|
elements,
|
||||||
]}
|
app,
|
||||||
value={getFormValue(
|
(element) => {
|
||||||
elements,
|
if (isTextElement(element)) {
|
||||||
app,
|
return element.fontSize;
|
||||||
(element) => {
|
}
|
||||||
if (isTextElement(element)) {
|
const boundTextElement = getBoundTextElement(
|
||||||
return element.fontSize;
|
element,
|
||||||
}
|
app.scene.getNonDeletedElementsMap(),
|
||||||
const boundTextElement = getBoundTextElement(
|
|
||||||
element,
|
|
||||||
app.scene.getNonDeletedElementsMap(),
|
|
||||||
);
|
|
||||||
if (boundTextElement) {
|
|
||||||
return boundTextElement.fontSize;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
(element) =>
|
|
||||||
isTextElement(element) ||
|
|
||||||
getBoundTextElement(
|
|
||||||
element,
|
|
||||||
app.scene.getNonDeletedElementsMap(),
|
|
||||||
) !== null,
|
|
||||||
(hasSelection) =>
|
|
||||||
hasSelection
|
|
||||||
? null
|
|
||||||
: appState.currentItemFontSize || DEFAULT_FONT_SIZE,
|
|
||||||
)}
|
|
||||||
onChange={(value) => {
|
|
||||||
withCaretPositionPreservation(
|
|
||||||
() => updateData(value),
|
|
||||||
isCompact,
|
|
||||||
!!appState.editingTextElement,
|
|
||||||
data?.onPreventClose,
|
|
||||||
);
|
);
|
||||||
}}
|
if (boundTextElement) {
|
||||||
/>
|
return boundTextElement.fontSize;
|
||||||
</div>
|
}
|
||||||
</fieldset>
|
return null;
|
||||||
);
|
},
|
||||||
},
|
(element) =>
|
||||||
|
isTextElement(element) ||
|
||||||
|
getBoundTextElement(
|
||||||
|
element,
|
||||||
|
app.scene.getNonDeletedElementsMap(),
|
||||||
|
) !== null,
|
||||||
|
(hasSelection) =>
|
||||||
|
hasSelection
|
||||||
|
? null
|
||||||
|
: appState.currentItemFontSize || DEFAULT_FONT_SIZE,
|
||||||
|
)}
|
||||||
|
onChange={(value) => {
|
||||||
|
withCaretPositionPreservation(
|
||||||
|
() => updateData(value),
|
||||||
|
appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile",
|
||||||
|
!!appState.editingTextElement,
|
||||||
|
data?.onPreventClose,
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const actionDecreaseFontSize = register({
|
export const actionDecreaseFontSize = register({
|
||||||
@@ -1063,7 +1124,6 @@ export const actionChangeFontFamily = register({
|
|||||||
// relying on state batching as multiple `FontPicker` handlers could be called in rapid succession and we want to combine them
|
// relying on state batching as multiple `FontPicker` handlers could be called in rapid succession and we want to combine them
|
||||||
const [batchedData, setBatchedData] = useState<ChangeFontFamilyData>({});
|
const [batchedData, setBatchedData] = useState<ChangeFontFamilyData>({});
|
||||||
const isUnmounted = useRef(true);
|
const isUnmounted = useRef(true);
|
||||||
const { stylesPanelMode, isCompact } = getStylesPanelInfo(app);
|
|
||||||
|
|
||||||
const selectedFontFamily = useMemo(() => {
|
const selectedFontFamily = useMemo(() => {
|
||||||
const getFontFamily = (
|
const getFontFamily = (
|
||||||
@@ -1136,14 +1196,14 @@ export const actionChangeFontFamily = register({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{stylesPanelMode === "full" && (
|
{appState.stylesPanelMode === "full" && (
|
||||||
<legend>{t("labels.fontFamily")}</legend>
|
<legend>{t("labels.fontFamily")}</legend>
|
||||||
)}
|
)}
|
||||||
<FontPicker
|
<FontPicker
|
||||||
isOpened={appState.openPopup === "fontFamily"}
|
isOpened={appState.openPopup === "fontFamily"}
|
||||||
selectedFontFamily={selectedFontFamily}
|
selectedFontFamily={selectedFontFamily}
|
||||||
hoveredFontFamily={appState.currentHoveredFontFamily}
|
hoveredFontFamily={appState.currentHoveredFontFamily}
|
||||||
compactMode={stylesPanelMode !== "full"}
|
compactMode={appState.stylesPanelMode !== "full"}
|
||||||
onSelect={(fontFamily) => {
|
onSelect={(fontFamily) => {
|
||||||
withCaretPositionPreservation(
|
withCaretPositionPreservation(
|
||||||
() => {
|
() => {
|
||||||
@@ -1155,7 +1215,8 @@ export const actionChangeFontFamily = register({
|
|||||||
// defensive clear so immediate close won't abuse the cached elements
|
// defensive clear so immediate close won't abuse the cached elements
|
||||||
cachedElementsRef.current.clear();
|
cachedElementsRef.current.clear();
|
||||||
},
|
},
|
||||||
isCompact,
|
appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile",
|
||||||
!!appState.editingTextElement,
|
!!appState.editingTextElement,
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
@@ -1230,7 +1291,11 @@ export const actionChangeFontFamily = register({
|
|||||||
cachedElementsRef.current.clear();
|
cachedElementsRef.current.clear();
|
||||||
|
|
||||||
// Refocus text editor when font picker closes if we were editing text
|
// Refocus text editor when font picker closes if we were editing text
|
||||||
if (isCompact && appState.editingTextElement) {
|
if (
|
||||||
|
(appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile") &&
|
||||||
|
appState.editingTextElement
|
||||||
|
) {
|
||||||
restoreCaretPosition(null); // Just refocus without saved position
|
restoreCaretPosition(null); // Just refocus without saved position
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1277,7 +1342,6 @@ export const actionChangeTextAlign = register({
|
|||||||
},
|
},
|
||||||
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
||||||
const elementsMap = app.scene.getNonDeletedElementsMap();
|
const elementsMap = app.scene.getNonDeletedElementsMap();
|
||||||
const { isCompact } = getStylesPanelInfo(app);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<fieldset>
|
<fieldset>
|
||||||
@@ -1330,7 +1394,8 @@ export const actionChangeTextAlign = register({
|
|||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
withCaretPositionPreservation(
|
withCaretPositionPreservation(
|
||||||
() => updateData(value),
|
() => updateData(value),
|
||||||
isCompact,
|
appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile",
|
||||||
!!appState.editingTextElement,
|
!!appState.editingTextElement,
|
||||||
data?.onPreventClose,
|
data?.onPreventClose,
|
||||||
);
|
);
|
||||||
@@ -1377,7 +1442,6 @@ export const actionChangeVerticalAlign = register({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
PanelComponent: ({ elements, appState, updateData, app, data }) => {
|
||||||
const { isCompact } = getStylesPanelInfo(app);
|
|
||||||
return (
|
return (
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div className="buttonList">
|
<div className="buttonList">
|
||||||
@@ -1430,7 +1494,8 @@ export const actionChangeVerticalAlign = register({
|
|||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
withCaretPositionPreservation(
|
withCaretPositionPreservation(
|
||||||
() => updateData(value),
|
() => updateData(value),
|
||||||
isCompact,
|
appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile",
|
||||||
!!appState.editingTextElement,
|
!!appState.editingTextElement,
|
||||||
data?.onPreventClose,
|
data?.onPreventClose,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -25,11 +25,8 @@ export const actionToggleZenMode = register({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
checked: (appState) => appState.zenModeEnabled,
|
checked: (appState) => appState.zenModeEnabled,
|
||||||
predicate: (elements, appState, appProps, app) => {
|
predicate: (elements, appState, appProps) => {
|
||||||
return (
|
return typeof appProps.zenModeEnabled === "undefined";
|
||||||
app.editorInterface.formFactor !== "phone" &&
|
|
||||||
typeof appProps.zenModeEnabled === "undefined"
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
keyTest: (event) =>
|
keyTest: (event) =>
|
||||||
!event[KEYS.CTRL_OR_CMD] && event.altKey && event.code === CODES.Z,
|
!event[KEYS.CTRL_OR_CMD] && event.altKey && event.code === CODES.Z,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export {
|
|||||||
actionChangeStrokeWidth,
|
actionChangeStrokeWidth,
|
||||||
actionChangeFillStyle,
|
actionChangeFillStyle,
|
||||||
actionChangeSloppiness,
|
actionChangeSloppiness,
|
||||||
|
actionChangePressureSensitivity,
|
||||||
actionChangeOpacity,
|
actionChangeOpacity,
|
||||||
actionChangeFontSize,
|
actionChangeFontSize,
|
||||||
actionChangeFontFamily,
|
actionChangeFontFamily,
|
||||||
|
|||||||
@@ -37,9 +37,7 @@ const trackAction = (
|
|||||||
trackEvent(
|
trackEvent(
|
||||||
action.trackEvent.category,
|
action.trackEvent.category,
|
||||||
action.trackEvent.action || action.name,
|
action.trackEvent.action || action.name,
|
||||||
`${source} (${
|
`${source} (${app.device.editor.isMobile ? "mobile" : "desktop"})`,
|
||||||
app.editorInterface.formFactor === "phone" ? "mobile" : "desktop"
|
|
||||||
})`,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ export type ActionName =
|
|||||||
| "changeStrokeStyle"
|
| "changeStrokeStyle"
|
||||||
| "changeArrowhead"
|
| "changeArrowhead"
|
||||||
| "changeArrowType"
|
| "changeArrowType"
|
||||||
|
| "changeStrokeType"
|
||||||
| "changeArrowProperties"
|
| "changeArrowProperties"
|
||||||
| "changeOpacity"
|
| "changeOpacity"
|
||||||
| "changeFontSize"
|
| "changeFontSize"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const defaultExportScale = EXPORT_SCALES.includes(devicePixelRatio)
|
|||||||
|
|
||||||
export const getDefaultAppState = (): Omit<
|
export const getDefaultAppState = (): Omit<
|
||||||
AppState,
|
AppState,
|
||||||
"offsetTop" | "offsetLeft" | "width" | "height" | "scrollConstraints"
|
"offsetTop" | "offsetLeft" | "width" | "height"
|
||||||
> => {
|
> => {
|
||||||
return {
|
return {
|
||||||
showWelcomeScreen: false,
|
showWelcomeScreen: false,
|
||||||
@@ -34,6 +34,7 @@ export const getDefaultAppState = (): Omit<
|
|||||||
currentItemFontFamily: DEFAULT_FONT_FAMILY,
|
currentItemFontFamily: DEFAULT_FONT_FAMILY,
|
||||||
currentItemFontSize: DEFAULT_FONT_SIZE,
|
currentItemFontSize: DEFAULT_FONT_SIZE,
|
||||||
currentItemOpacity: DEFAULT_ELEMENT_PROPS.opacity,
|
currentItemOpacity: DEFAULT_ELEMENT_PROPS.opacity,
|
||||||
|
currentItemFixedStrokeWidth: true,
|
||||||
currentItemRoughness: DEFAULT_ELEMENT_PROPS.roughness,
|
currentItemRoughness: DEFAULT_ELEMENT_PROPS.roughness,
|
||||||
currentItemStartArrowhead: null,
|
currentItemStartArrowhead: null,
|
||||||
currentItemStrokeColor: DEFAULT_ELEMENT_PROPS.strokeColor,
|
currentItemStrokeColor: DEFAULT_ELEMENT_PROPS.strokeColor,
|
||||||
@@ -127,6 +128,7 @@ export const getDefaultAppState = (): Omit<
|
|||||||
searchMatches: null,
|
searchMatches: null,
|
||||||
lockedMultiSelections: {},
|
lockedMultiSelections: {},
|
||||||
activeLockedId: null,
|
activeLockedId: null,
|
||||||
|
stylesPanelMode: "full",
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -166,6 +168,11 @@ const APP_STATE_STORAGE_CONF = (<
|
|||||||
server: false,
|
server: false,
|
||||||
},
|
},
|
||||||
currentItemOpacity: { browser: true, export: false, server: false },
|
currentItemOpacity: { browser: true, export: false, server: false },
|
||||||
|
currentItemFixedStrokeWidth: {
|
||||||
|
browser: true,
|
||||||
|
export: false,
|
||||||
|
server: false,
|
||||||
|
},
|
||||||
currentItemRoughness: { browser: true, export: false, server: false },
|
currentItemRoughness: { browser: true, export: false, server: false },
|
||||||
currentItemStartArrowhead: { browser: true, export: false, server: false },
|
currentItemStartArrowhead: { browser: true, export: false, server: false },
|
||||||
currentItemStrokeColor: { browser: true, export: false, server: false },
|
currentItemStrokeColor: { browser: true, export: false, server: false },
|
||||||
@@ -247,12 +254,12 @@ const APP_STATE_STORAGE_CONF = (<
|
|||||||
objectsSnapModeEnabled: { browser: true, export: false, server: false },
|
objectsSnapModeEnabled: { browser: true, export: false, server: false },
|
||||||
userToFollow: { browser: false, export: false, server: false },
|
userToFollow: { browser: false, export: false, server: false },
|
||||||
followedBy: { browser: false, export: false, server: false },
|
followedBy: { browser: false, export: false, server: false },
|
||||||
scrollConstraints: { browser: false, export: false, server: false },
|
|
||||||
isCropping: { browser: false, export: false, server: false },
|
isCropping: { browser: false, export: false, server: false },
|
||||||
croppingElementId: { browser: false, export: false, server: false },
|
croppingElementId: { browser: false, export: false, server: false },
|
||||||
searchMatches: { browser: false, export: false, server: false },
|
searchMatches: { browser: false, export: false, server: false },
|
||||||
lockedMultiSelections: { browser: true, export: true, server: true },
|
lockedMultiSelections: { browser: true, export: true, server: true },
|
||||||
activeLockedId: { browser: false, export: false, server: false },
|
activeLockedId: { browser: false, export: false, server: false },
|
||||||
|
stylesPanelMode: { browser: false, export: false, server: false },
|
||||||
});
|
});
|
||||||
|
|
||||||
const _clearAppStateForStorage = <
|
const _clearAppStateForStorage = <
|
||||||
|
|||||||
@@ -49,17 +49,11 @@ import { getFormValue } from "../actions/actionProperties";
|
|||||||
|
|
||||||
import { useTextEditorFocus } from "../hooks/useTextEditorFocus";
|
import { useTextEditorFocus } from "../hooks/useTextEditorFocus";
|
||||||
|
|
||||||
import { actionToggleViewMode } from "../actions/actionToggleViewMode";
|
|
||||||
|
|
||||||
import { getToolbarTools } from "./shapes";
|
import { getToolbarTools } from "./shapes";
|
||||||
|
|
||||||
import "./Actions.scss";
|
import "./Actions.scss";
|
||||||
|
|
||||||
import {
|
import { useDevice, useExcalidrawContainer } from "./App";
|
||||||
useEditorInterface,
|
|
||||||
useStylesPanelMode,
|
|
||||||
useExcalidrawContainer,
|
|
||||||
} from "./App";
|
|
||||||
import Stack from "./Stack";
|
import Stack from "./Stack";
|
||||||
import { ToolButton } from "./ToolButton";
|
import { ToolButton } from "./ToolButton";
|
||||||
import { ToolPopover } from "./ToolPopover";
|
import { ToolPopover } from "./ToolPopover";
|
||||||
@@ -81,7 +75,6 @@ import {
|
|||||||
adjustmentsIcon,
|
adjustmentsIcon,
|
||||||
DotsHorizontalIcon,
|
DotsHorizontalIcon,
|
||||||
SelectionIcon,
|
SelectionIcon,
|
||||||
pencilIcon,
|
|
||||||
} from "./icons";
|
} from "./icons";
|
||||||
|
|
||||||
import { Island } from "./Island";
|
import { Island } from "./Island";
|
||||||
@@ -158,7 +151,7 @@ export const SelectedShapeActions = ({
|
|||||||
const isEditingTextOrNewElement = Boolean(
|
const isEditingTextOrNewElement = Boolean(
|
||||||
appState.editingTextElement || appState.newElement,
|
appState.editingTextElement || appState.newElement,
|
||||||
);
|
);
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const isRTL = document.documentElement.getAttribute("dir") === "rtl";
|
const isRTL = document.documentElement.getAttribute("dir") === "rtl";
|
||||||
|
|
||||||
const showFillIcons =
|
const showFillIcons =
|
||||||
@@ -202,8 +195,12 @@ export const SelectedShapeActions = ({
|
|||||||
renderAction("changeStrokeWidth")}
|
renderAction("changeStrokeWidth")}
|
||||||
|
|
||||||
{(appState.activeTool.type === "freedraw" ||
|
{(appState.activeTool.type === "freedraw" ||
|
||||||
targetElements.some((element) => element.type === "freedraw")) &&
|
targetElements.some((element) => element.type === "freedraw")) && (
|
||||||
renderAction("changeStrokeShape")}
|
<>
|
||||||
|
{renderAction("changeStrokeShape")}
|
||||||
|
{renderAction("changeStrokeType")}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
{(hasStrokeStyle(appState.activeTool.type) ||
|
{(hasStrokeStyle(appState.activeTool.type) ||
|
||||||
targetElements.some((element) => hasStrokeStyle(element.type))) && (
|
targetElements.some((element) => hasStrokeStyle(element.type))) && (
|
||||||
@@ -299,10 +296,8 @@ export const SelectedShapeActions = ({
|
|||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{t("labels.actions")}</legend>
|
<legend>{t("labels.actions")}</legend>
|
||||||
<div className="buttonList">
|
<div className="buttonList">
|
||||||
{editorInterface.formFactor !== "phone" &&
|
{!device.editor.isMobile && renderAction("duplicateSelection")}
|
||||||
renderAction("duplicateSelection")}
|
{!device.editor.isMobile && renderAction("deleteSelectedElements")}
|
||||||
{editorInterface.formFactor !== "phone" &&
|
|
||||||
renderAction("deleteSelectedElements")}
|
|
||||||
{renderAction("group")}
|
{renderAction("group")}
|
||||||
{renderAction("ungroup")}
|
{renderAction("ungroup")}
|
||||||
{showLinkIcon && renderAction("hyperlink")}
|
{showLinkIcon && renderAction("hyperlink")}
|
||||||
@@ -1050,9 +1045,6 @@ export const ShapesSwitcher = ({
|
|||||||
UIOptions: AppProps["UIOptions"];
|
UIOptions: AppProps["UIOptions"];
|
||||||
}) => {
|
}) => {
|
||||||
const [isExtraToolsMenuOpen, setIsExtraToolsMenuOpen] = useState(false);
|
const [isExtraToolsMenuOpen, setIsExtraToolsMenuOpen] = useState(false);
|
||||||
const stylesPanelMode = useStylesPanelMode();
|
|
||||||
const isFullStylesPanel = stylesPanelMode === "full";
|
|
||||||
const isCompactStylesPanel = stylesPanelMode === "compact";
|
|
||||||
|
|
||||||
const SELECTION_TOOLS = [
|
const SELECTION_TOOLS = [
|
||||||
{
|
{
|
||||||
@@ -1070,7 +1062,7 @@ export const ShapesSwitcher = ({
|
|||||||
const frameToolSelected = activeTool.type === "frame";
|
const frameToolSelected = activeTool.type === "frame";
|
||||||
const laserToolSelected = activeTool.type === "laser";
|
const laserToolSelected = activeTool.type === "laser";
|
||||||
const lassoToolSelected =
|
const lassoToolSelected =
|
||||||
isFullStylesPanel &&
|
app.state.stylesPanelMode === "full" &&
|
||||||
activeTool.type === "lasso" &&
|
activeTool.type === "lasso" &&
|
||||||
app.state.preferredSelectionTool.type !== "lasso";
|
app.state.preferredSelectionTool.type !== "lasso";
|
||||||
|
|
||||||
@@ -1103,7 +1095,7 @@ export const ShapesSwitcher = ({
|
|||||||
// use a ToolPopover for selection/lasso toggle as well
|
// use a ToolPopover for selection/lasso toggle as well
|
||||||
if (
|
if (
|
||||||
(value === "selection" || value === "lasso") &&
|
(value === "selection" || value === "lasso") &&
|
||||||
isCompactStylesPanel
|
app.state.stylesPanelMode === "compact"
|
||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
<ToolPopover
|
<ToolPopover
|
||||||
@@ -1237,7 +1229,7 @@ export const ShapesSwitcher = ({
|
|||||||
>
|
>
|
||||||
{t("toolBar.laser")}
|
{t("toolBar.laser")}
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
{isFullStylesPanel && (
|
{app.state.stylesPanelMode === "full" && (
|
||||||
<DropdownMenu.Item
|
<DropdownMenu.Item
|
||||||
onSelect={() => app.setActiveTool({ type: "lasso" })}
|
onSelect={() => app.setActiveTool({ type: "lasso" })}
|
||||||
icon={LassoIcon}
|
icon={LassoIcon}
|
||||||
@@ -1307,7 +1299,7 @@ export const UndoRedoActions = ({
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
export const ExitZenModeButton = ({
|
export const ExitZenModeAction = ({
|
||||||
actionManager,
|
actionManager,
|
||||||
showExitZenModeBtn,
|
showExitZenModeBtn,
|
||||||
}: {
|
}: {
|
||||||
@@ -1324,17 +1316,3 @@ export const ExitZenModeButton = ({
|
|||||||
{t("buttons.exitZenMode")}
|
{t("buttons.exitZenMode")}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
|
||||||
export const ExitViewModeButton = ({
|
|
||||||
actionManager,
|
|
||||||
}: {
|
|
||||||
actionManager: ActionManager;
|
|
||||||
}) => (
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="disable-view-mode"
|
|
||||||
onClick={() => actionManager.executeAction(actionToggleViewMode)}
|
|
||||||
>
|
|
||||||
{pencilIcon}
|
|
||||||
</button>
|
|
||||||
);
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ import { KEYS } from "@excalidraw/common";
|
|||||||
import { getShortcutKey } from "../..//shortcut";
|
import { getShortcutKey } from "../..//shortcut";
|
||||||
import { useAtom } from "../../editor-jotai";
|
import { useAtom } from "../../editor-jotai";
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
import { useEditorInterface } from "../App";
|
import { useDevice } from "../App";
|
||||||
import { activeEyeDropperAtom } from "../EyeDropper";
|
import { activeEyeDropperAtom } from "../EyeDropper";
|
||||||
import { eyeDropperIcon } from "../icons";
|
import { eyeDropperIcon } from "../icons";
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ export const ColorInput = ({
|
|||||||
colorPickerType,
|
colorPickerType,
|
||||||
placeholder,
|
placeholder,
|
||||||
}: ColorInputProps) => {
|
}: ColorInputProps) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const [innerValue, setInnerValue] = useState(color);
|
const [innerValue, setInnerValue] = useState(color);
|
||||||
const [activeSection, setActiveColorPickerSection] = useAtom(
|
const [activeSection, setActiveColorPickerSection] = useAtom(
|
||||||
activeColorPickerSectionAtom,
|
activeColorPickerSectionAtom,
|
||||||
@@ -99,7 +99,7 @@ export const ColorInput = ({
|
|||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
/>
|
/>
|
||||||
{/* TODO reenable on mobile with a better UX */}
|
{/* TODO reenable on mobile with a better UX */}
|
||||||
{editorInterface.formFactor !== "phone" && (
|
{!device.editor.isMobile && (
|
||||||
<>
|
<>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import type { ExcalidrawElement } from "@excalidraw/element/types";
|
|||||||
|
|
||||||
import { useAtom } from "../../editor-jotai";
|
import { useAtom } from "../../editor-jotai";
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
import { useExcalidrawContainer, useStylesPanelMode } from "../App";
|
import { useExcalidrawContainer } from "../App";
|
||||||
import { ButtonSeparator } from "../ButtonSeparator";
|
import { ButtonSeparator } from "../ButtonSeparator";
|
||||||
import { activeEyeDropperAtom } from "../EyeDropper";
|
import { activeEyeDropperAtom } from "../EyeDropper";
|
||||||
import { PropertiesPopover } from "../PropertiesPopover";
|
import { PropertiesPopover } from "../PropertiesPopover";
|
||||||
@@ -73,6 +73,7 @@ interface ColorPickerProps {
|
|||||||
palette?: ColorPaletteCustom | null;
|
palette?: ColorPaletteCustom | null;
|
||||||
topPicks?: ColorTuple;
|
topPicks?: ColorTuple;
|
||||||
updateData: (formData?: any) => void;
|
updateData: (formData?: any) => void;
|
||||||
|
compactMode?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ColorPickerPopupContent = ({
|
const ColorPickerPopupContent = ({
|
||||||
@@ -99,9 +100,6 @@ const ColorPickerPopupContent = ({
|
|||||||
getOpenPopup: () => AppState["openPopup"];
|
getOpenPopup: () => AppState["openPopup"];
|
||||||
}) => {
|
}) => {
|
||||||
const { container } = useExcalidrawContainer();
|
const { container } = useExcalidrawContainer();
|
||||||
const stylesPanelMode = useStylesPanelMode();
|
|
||||||
const isCompactMode = stylesPanelMode !== "full";
|
|
||||||
const isMobileMode = stylesPanelMode === "mobile";
|
|
||||||
const [, setActiveColorPickerSection] = useAtom(activeColorPickerSectionAtom);
|
const [, setActiveColorPickerSection] = useAtom(activeColorPickerSectionAtom);
|
||||||
|
|
||||||
const [eyeDropperState, setEyeDropperState] = useAtom(activeEyeDropperAtom);
|
const [eyeDropperState, setEyeDropperState] = useAtom(activeEyeDropperAtom);
|
||||||
@@ -218,8 +216,11 @@ const ColorPickerPopupContent = ({
|
|||||||
type={type}
|
type={type}
|
||||||
elements={elements}
|
elements={elements}
|
||||||
updateData={updateData}
|
updateData={updateData}
|
||||||
showTitle={isCompactMode}
|
showTitle={
|
||||||
showHotKey={!isMobileMode}
|
appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile"
|
||||||
|
}
|
||||||
|
showHotKey={appState.stylesPanelMode !== "mobile"}
|
||||||
>
|
>
|
||||||
{colorInputJSX}
|
{colorInputJSX}
|
||||||
</Picker>
|
</Picker>
|
||||||
@@ -234,6 +235,7 @@ const ColorPickerTrigger = ({
|
|||||||
label,
|
label,
|
||||||
color,
|
color,
|
||||||
type,
|
type,
|
||||||
|
stylesPanelMode,
|
||||||
mode = "background",
|
mode = "background",
|
||||||
onToggle,
|
onToggle,
|
||||||
editingTextElement,
|
editingTextElement,
|
||||||
@@ -241,13 +243,11 @@ const ColorPickerTrigger = ({
|
|||||||
color: string | null;
|
color: string | null;
|
||||||
label: string;
|
label: string;
|
||||||
type: ColorPickerType;
|
type: ColorPickerType;
|
||||||
|
stylesPanelMode?: AppState["stylesPanelMode"];
|
||||||
mode?: "background" | "stroke";
|
mode?: "background" | "stroke";
|
||||||
onToggle: () => void;
|
onToggle: () => void;
|
||||||
editingTextElement?: boolean;
|
editingTextElement?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const stylesPanelMode = useStylesPanelMode();
|
|
||||||
const isCompactMode = stylesPanelMode !== "full";
|
|
||||||
const isMobileMode = stylesPanelMode === "mobile";
|
|
||||||
const handleClick = (e: React.MouseEvent) => {
|
const handleClick = (e: React.MouseEvent) => {
|
||||||
// use pointerdown so we run before outside-close logic
|
// use pointerdown so we run before outside-close logic
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -268,8 +268,9 @@ const ColorPickerTrigger = ({
|
|||||||
"is-transparent": !color || color === "transparent",
|
"is-transparent": !color || color === "transparent",
|
||||||
"has-outline":
|
"has-outline":
|
||||||
!color || !isColorDark(color, COLOR_OUTLINE_CONTRAST_THRESHOLD),
|
!color || !isColorDark(color, COLOR_OUTLINE_CONTRAST_THRESHOLD),
|
||||||
"compact-sizing": isCompactMode,
|
"compact-sizing":
|
||||||
"mobile-border": isMobileMode,
|
stylesPanelMode === "compact" || stylesPanelMode === "mobile",
|
||||||
|
"mobile-border": stylesPanelMode === "mobile",
|
||||||
})}
|
})}
|
||||||
aria-label={label}
|
aria-label={label}
|
||||||
style={color ? { "--swatch-color": color } : undefined}
|
style={color ? { "--swatch-color": color } : undefined}
|
||||||
@@ -282,20 +283,22 @@ const ColorPickerTrigger = ({
|
|||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
>
|
>
|
||||||
<div className="color-picker__button-outline">{!color && slashIcon}</div>
|
<div className="color-picker__button-outline">{!color && slashIcon}</div>
|
||||||
{isCompactMode && color && mode === "stroke" && (
|
{(stylesPanelMode === "compact" || stylesPanelMode === "mobile") &&
|
||||||
<div className="color-picker__button-background">
|
color &&
|
||||||
<span
|
mode === "stroke" && (
|
||||||
style={{
|
<div className="color-picker__button-background">
|
||||||
color:
|
<span
|
||||||
color && isColorDark(color, COLOR_OUTLINE_CONTRAST_THRESHOLD)
|
style={{
|
||||||
? "#fff"
|
color:
|
||||||
: "#111",
|
color && isColorDark(color, COLOR_OUTLINE_CONTRAST_THRESHOLD)
|
||||||
}}
|
? "#fff"
|
||||||
>
|
: "#111",
|
||||||
{strokeIcon}
|
}}
|
||||||
</span>
|
>
|
||||||
</div>
|
{strokeIcon}
|
||||||
)}
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</Popover.Trigger>
|
</Popover.Trigger>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -315,8 +318,10 @@ export const ColorPicker = ({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
openRef.current = appState.openPopup;
|
openRef.current = appState.openPopup;
|
||||||
}, [appState.openPopup]);
|
}, [appState.openPopup]);
|
||||||
const stylesPanelMode = useStylesPanelMode();
|
const compactMode =
|
||||||
const isCompactMode = stylesPanelMode !== "full";
|
type !== "canvasBackground" &&
|
||||||
|
(appState.stylesPanelMode === "compact" ||
|
||||||
|
appState.stylesPanelMode === "mobile");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@@ -324,10 +329,10 @@ export const ColorPicker = ({
|
|||||||
role="dialog"
|
role="dialog"
|
||||||
aria-modal="true"
|
aria-modal="true"
|
||||||
className={clsx("color-picker-container", {
|
className={clsx("color-picker-container", {
|
||||||
"color-picker-container--no-top-picks": isCompactMode,
|
"color-picker-container--no-top-picks": compactMode,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{!isCompactMode && (
|
{!compactMode && (
|
||||||
<TopPicks
|
<TopPicks
|
||||||
activeColor={color}
|
activeColor={color}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
@@ -335,7 +340,7 @@ export const ColorPicker = ({
|
|||||||
topPicks={topPicks}
|
topPicks={topPicks}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{!isCompactMode && <ButtonSeparator />}
|
{!compactMode && <ButtonSeparator />}
|
||||||
<Popover.Root
|
<Popover.Root
|
||||||
open={appState.openPopup === type}
|
open={appState.openPopup === type}
|
||||||
onOpenChange={(open) => {
|
onOpenChange={(open) => {
|
||||||
@@ -349,6 +354,7 @@ export const ColorPicker = ({
|
|||||||
color={color}
|
color={color}
|
||||||
label={label}
|
label={label}
|
||||||
type={type}
|
type={type}
|
||||||
|
stylesPanelMode={appState.stylesPanelMode}
|
||||||
mode={type === "elementStroke" ? "stroke" : "background"}
|
mode={type === "elementStroke" ? "stroke" : "background"}
|
||||||
editingTextElement={!!appState.editingTextElement}
|
editingTextElement={!!appState.editingTextElement}
|
||||||
onToggle={() => {
|
onToggle={() => {
|
||||||
|
|||||||
@@ -903,7 +903,7 @@ function CommandPaletteInner({
|
|||||||
ref={inputRef}
|
ref={inputRef}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{app.editorInterface.formFactor !== "phone" && (
|
{!app.device.viewport.isMobile && (
|
||||||
<div className="shortcuts-wrapper">
|
<div className="shortcuts-wrapper">
|
||||||
<CommandShortcutHint shortcut="↑↓">
|
<CommandShortcutHint shortcut="↑↓">
|
||||||
{t("commandPalette.shortcuts.select")}
|
{t("commandPalette.shortcuts.select")}
|
||||||
@@ -937,7 +937,7 @@ function CommandPaletteInner({
|
|||||||
onClick={(event) => executeCommand(lastUsed, event)}
|
onClick={(event) => executeCommand(lastUsed, event)}
|
||||||
disabled={!isCommandAvailable(lastUsed)}
|
disabled={!isCommandAvailable(lastUsed)}
|
||||||
onMouseMove={() => setCurrentCommand(lastUsed)}
|
onMouseMove={() => setCurrentCommand(lastUsed)}
|
||||||
showShortcut={app.editorInterface.formFactor !== "phone"}
|
showShortcut={!app.device.viewport.isMobile}
|
||||||
appState={uiAppState}
|
appState={uiAppState}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -955,7 +955,7 @@ function CommandPaletteInner({
|
|||||||
isSelected={command.label === currentCommand?.label}
|
isSelected={command.label === currentCommand?.label}
|
||||||
onClick={(event) => executeCommand(command, event)}
|
onClick={(event) => executeCommand(command, event)}
|
||||||
onMouseMove={() => setCurrentCommand(command)}
|
onMouseMove={() => setCurrentCommand(command)}
|
||||||
showShortcut={app.editorInterface.formFactor !== "phone"}
|
showShortcut={!app.device.viewport.isMobile}
|
||||||
appState={uiAppState}
|
appState={uiAppState}
|
||||||
size={category === "Library" ? "large" : "small"}
|
size={category === "Library" ? "large" : "small"}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { t } from "../i18n";
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
useExcalidrawContainer,
|
useExcalidrawContainer,
|
||||||
useEditorInterface,
|
useDevice,
|
||||||
useExcalidrawSetAppState,
|
useExcalidrawSetAppState,
|
||||||
} from "./App";
|
} from "./App";
|
||||||
import { Island } from "./Island";
|
import { Island } from "./Island";
|
||||||
@@ -51,7 +51,7 @@ export const Dialog = (props: DialogProps) => {
|
|||||||
const [islandNode, setIslandNode] = useCallbackRefState<HTMLDivElement>();
|
const [islandNode, setIslandNode] = useCallbackRefState<HTMLDivElement>();
|
||||||
const [lastActiveElement] = useState(document.activeElement);
|
const [lastActiveElement] = useState(document.activeElement);
|
||||||
const { id } = useExcalidrawContainer();
|
const { id } = useExcalidrawContainer();
|
||||||
const isFullscreen = useEditorInterface().formFactor === "phone";
|
const isFullscreen = useDevice().viewport.isMobile;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!islandNode) {
|
if (!islandNode) {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export type ButtonColor =
|
|||||||
export type ButtonSize = "medium" | "large";
|
export type ButtonSize = "medium" | "large";
|
||||||
|
|
||||||
export type FilledButtonProps = {
|
export type FilledButtonProps = {
|
||||||
label?: string;
|
label: string;
|
||||||
|
|
||||||
children?: React.ReactNode;
|
children?: React.ReactNode;
|
||||||
onClick?: (event: React.MouseEvent) => void;
|
onClick?: (event: React.MouseEvent) => void;
|
||||||
|
|||||||
@@ -20,12 +20,7 @@ import type { ValueOf } from "@excalidraw/common/utility-types";
|
|||||||
|
|
||||||
import { Fonts } from "../../fonts";
|
import { Fonts } from "../../fonts";
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
import {
|
import { useApp, useAppProps, useExcalidrawContainer } from "../App";
|
||||||
useApp,
|
|
||||||
useAppProps,
|
|
||||||
useExcalidrawContainer,
|
|
||||||
useStylesPanelMode,
|
|
||||||
} from "../App";
|
|
||||||
import { PropertiesPopover } from "../PropertiesPopover";
|
import { PropertiesPopover } from "../PropertiesPopover";
|
||||||
import { QuickSearch } from "../QuickSearch";
|
import { QuickSearch } from "../QuickSearch";
|
||||||
import { ScrollableList } from "../ScrollableList";
|
import { ScrollableList } from "../ScrollableList";
|
||||||
@@ -98,7 +93,6 @@ export const FontPickerList = React.memo(
|
|||||||
const app = useApp();
|
const app = useApp();
|
||||||
const { fonts } = app;
|
const { fonts } = app;
|
||||||
const { showDeprecatedFonts } = useAppProps();
|
const { showDeprecatedFonts } = useAppProps();
|
||||||
const stylesPanelMode = useStylesPanelMode();
|
|
||||||
|
|
||||||
const [searchTerm, setSearchTerm] = useState("");
|
const [searchTerm, setSearchTerm] = useState("");
|
||||||
const inputRef = useRef<HTMLInputElement>(null);
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
@@ -344,7 +338,7 @@ export const FontPickerList = React.memo(
|
|||||||
onKeyDown={onKeyDown}
|
onKeyDown={onKeyDown}
|
||||||
preventAutoFocusOnTouch={!!app.state.editingTextElement}
|
preventAutoFocusOnTouch={!!app.state.editingTextElement}
|
||||||
>
|
>
|
||||||
{stylesPanelMode === "full" && (
|
{app.state.stylesPanelMode === "full" && (
|
||||||
<QuickSearch
|
<QuickSearch
|
||||||
ref={inputRef}
|
ref={inputRef}
|
||||||
placeholder={t("quickSearch.placeholder")}
|
placeholder={t("quickSearch.placeholder")}
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ import {
|
|||||||
|
|
||||||
import { isNodeInFlowchart } from "@excalidraw/element";
|
import { isNodeInFlowchart } from "@excalidraw/element";
|
||||||
|
|
||||||
import type { EditorInterface } from "@excalidraw/common";
|
|
||||||
|
|
||||||
import { t } from "../i18n";
|
import { t } from "../i18n";
|
||||||
import { getShortcutKey } from "../shortcut";
|
import { getShortcutKey } from "../shortcut";
|
||||||
import { isEraserActive } from "../appState";
|
import { isEraserActive } from "../appState";
|
||||||
@@ -20,12 +18,12 @@ import { isGridModeEnabled } from "../snapping";
|
|||||||
|
|
||||||
import "./HintViewer.scss";
|
import "./HintViewer.scss";
|
||||||
|
|
||||||
import type { AppClassProperties, UIAppState } from "../types";
|
import type { AppClassProperties, Device, UIAppState } from "../types";
|
||||||
|
|
||||||
interface HintViewerProps {
|
interface HintViewerProps {
|
||||||
appState: UIAppState;
|
appState: UIAppState;
|
||||||
isMobile: boolean;
|
isMobile: boolean;
|
||||||
editorInterface: EditorInterface;
|
device: Device;
|
||||||
app: AppClassProperties;
|
app: AppClassProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +35,7 @@ const getTaggedShortcutKey = (key: string | string[]) =>
|
|||||||
const getHints = ({
|
const getHints = ({
|
||||||
appState,
|
appState,
|
||||||
isMobile,
|
isMobile,
|
||||||
editorInterface,
|
device,
|
||||||
app,
|
app,
|
||||||
}: HintViewerProps): null | string | string[] => {
|
}: HintViewerProps): null | string | string[] => {
|
||||||
const { activeTool, isResizing, isRotating, lastPointerDownWith } = appState;
|
const { activeTool, isResizing, isRotating, lastPointerDownWith } = appState;
|
||||||
@@ -53,7 +51,7 @@ const getHints = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (appState.openSidebar && !editorInterface.canFitSidebar) {
|
if (appState.openSidebar && !device.editor.canFitSidebar) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,13 +225,13 @@ const getHints = ({
|
|||||||
export const HintViewer = ({
|
export const HintViewer = ({
|
||||||
appState,
|
appState,
|
||||||
isMobile,
|
isMobile,
|
||||||
editorInterface,
|
device,
|
||||||
app,
|
app,
|
||||||
}: HintViewerProps) => {
|
}: HintViewerProps) => {
|
||||||
const hints = getHints({
|
const hints = getHints({
|
||||||
appState,
|
appState,
|
||||||
isMobile,
|
isMobile,
|
||||||
editorInterface,
|
device,
|
||||||
app,
|
app,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { atom, useAtom } from "../editor-jotai";
|
|||||||
import { getLanguage, t } from "../i18n";
|
import { getLanguage, t } from "../i18n";
|
||||||
|
|
||||||
import Collapsible from "./Stats/Collapsible";
|
import Collapsible from "./Stats/Collapsible";
|
||||||
import { useEditorInterface, useExcalidrawContainer } from "./App";
|
import { useDevice, useExcalidrawContainer } from "./App";
|
||||||
|
|
||||||
import "./IconPicker.scss";
|
import "./IconPicker.scss";
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ function Picker<T>({
|
|||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
numberOfOptionsToAlwaysShow?: number;
|
numberOfOptionsToAlwaysShow?: number;
|
||||||
}) {
|
}) {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const { container } = useExcalidrawContainer();
|
const { container } = useExcalidrawContainer();
|
||||||
|
|
||||||
const handleKeyDown = (event: React.KeyboardEvent) => {
|
const handleKeyDown = (event: React.KeyboardEvent) => {
|
||||||
@@ -153,7 +153,7 @@ function Picker<T>({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const isMobile = editorInterface.formFactor === "phone";
|
const isMobile = device.editor.isMobile;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Popover.Content
|
<Popover.Content
|
||||||
|
|||||||
@@ -120,53 +120,4 @@
|
|||||||
margin-bottom: auto;
|
margin-bottom: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.disable-view-mode {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
cursor: pointer;
|
|
||||||
align-items: center;
|
|
||||||
border: 1px solid var(--color-primary);
|
|
||||||
padding: 0.5rem;
|
|
||||||
border-radius: var(--border-radius-lg);
|
|
||||||
background-color: var(--island-bg-color);
|
|
||||||
text-decoration: none !important;
|
|
||||||
|
|
||||||
font-family: var(--ui-font);
|
|
||||||
font-size: 0.8333rem;
|
|
||||||
box-sizing: border-box;
|
|
||||||
|
|
||||||
width: var(--mobile-action-button-size, var(--default-button-size));
|
|
||||||
height: var(--mobile-action-button-size, var(--default-button-size));
|
|
||||||
|
|
||||||
border: none;
|
|
||||||
box-shadow: 0 0 0 1px var(--color-surface-lowest);
|
|
||||||
background-color: var(--color-surface-low);
|
|
||||||
color: var(--button-color, var(--color-on-surface)) !important;
|
|
||||||
|
|
||||||
&:active {
|
|
||||||
box-shadow: 0 0 0 1px var(--color-brand-active);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: var(--color-primary);
|
|
||||||
color: white !important;
|
|
||||||
}
|
|
||||||
&:active {
|
|
||||||
background-color: var(--color-primary-darker);
|
|
||||||
}
|
|
||||||
|
|
||||||
svg {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme--dark {
|
|
||||||
.plus-banner {
|
|
||||||
&:hover {
|
|
||||||
color: black !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import React from "react";
|
|||||||
import {
|
import {
|
||||||
CLASSES,
|
CLASSES,
|
||||||
DEFAULT_SIDEBAR,
|
DEFAULT_SIDEBAR,
|
||||||
|
MQ_MIN_WIDTH_DESKTOP,
|
||||||
TOOL_TYPE,
|
TOOL_TYPE,
|
||||||
arrayToMap,
|
arrayToMap,
|
||||||
capitalizeString,
|
capitalizeString,
|
||||||
@@ -45,9 +46,9 @@ import Footer from "./footer/Footer";
|
|||||||
import { isSidebarDockedAtom } from "./Sidebar/Sidebar";
|
import { isSidebarDockedAtom } from "./Sidebar/Sidebar";
|
||||||
import MainMenu from "./main-menu/MainMenu";
|
import MainMenu from "./main-menu/MainMenu";
|
||||||
import { ActiveConfirmDialog } from "./ActiveConfirmDialog";
|
import { ActiveConfirmDialog } from "./ActiveConfirmDialog";
|
||||||
import { useEditorInterface, useStylesPanelMode } from "./App";
|
import { useDevice } from "./App";
|
||||||
import { OverwriteConfirmDialog } from "./OverwriteConfirm/OverwriteConfirm";
|
import { OverwriteConfirmDialog } from "./OverwriteConfirm/OverwriteConfirm";
|
||||||
import { sidebarRightIcon } from "./icons";
|
import { LibraryIcon } from "./icons";
|
||||||
import { DefaultSidebar } from "./DefaultSidebar";
|
import { DefaultSidebar } from "./DefaultSidebar";
|
||||||
import { TTDDialog } from "./TTDDialog/TTDDialog";
|
import { TTDDialog } from "./TTDDialog/TTDDialog";
|
||||||
import { Stats } from "./Stats";
|
import { Stats } from "./Stats";
|
||||||
@@ -160,28 +161,27 @@ const LayerUI = ({
|
|||||||
isCollaborating,
|
isCollaborating,
|
||||||
generateLinkForSelection,
|
generateLinkForSelection,
|
||||||
}: LayerUIProps) => {
|
}: LayerUIProps) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const stylesPanelMode = useStylesPanelMode();
|
|
||||||
const isCompactStylesPanel = stylesPanelMode === "compact";
|
|
||||||
const tunnels = useInitializeTunnels();
|
const tunnels = useInitializeTunnels();
|
||||||
|
|
||||||
const spacing = isCompactStylesPanel
|
const spacing =
|
||||||
? {
|
appState.stylesPanelMode === "compact"
|
||||||
menuTopGap: 4,
|
? {
|
||||||
toolbarColGap: 4,
|
menuTopGap: 4,
|
||||||
toolbarRowGap: 1,
|
toolbarColGap: 4,
|
||||||
toolbarInnerRowGap: 0.5,
|
toolbarRowGap: 1,
|
||||||
islandPadding: 1,
|
toolbarInnerRowGap: 0.5,
|
||||||
collabMarginLeft: 8,
|
islandPadding: 1,
|
||||||
}
|
collabMarginLeft: 8,
|
||||||
: {
|
}
|
||||||
menuTopGap: 6,
|
: {
|
||||||
toolbarColGap: 4,
|
menuTopGap: 6,
|
||||||
toolbarRowGap: 1,
|
toolbarColGap: 4,
|
||||||
toolbarInnerRowGap: 1,
|
toolbarRowGap: 1,
|
||||||
islandPadding: 1,
|
toolbarInnerRowGap: 1,
|
||||||
collabMarginLeft: 8,
|
islandPadding: 1,
|
||||||
};
|
collabMarginLeft: 8,
|
||||||
|
};
|
||||||
|
|
||||||
const TunnelsJotaiProvider = tunnels.tunnelsJotai.Provider;
|
const TunnelsJotaiProvider = tunnels.tunnelsJotai.Provider;
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ const LayerUI = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const renderSelectedShapeActions = () => {
|
const renderSelectedShapeActions = () => {
|
||||||
const isCompactMode = isCompactStylesPanel;
|
const isCompactMode = appState.stylesPanelMode === "compact";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Section
|
<Section
|
||||||
@@ -308,7 +308,7 @@ const LayerUI = ({
|
|||||||
<div
|
<div
|
||||||
className={clsx("selected-shape-actions-container", {
|
className={clsx("selected-shape-actions-container", {
|
||||||
"selected-shape-actions-container--compact":
|
"selected-shape-actions-container--compact":
|
||||||
isCompactStylesPanel,
|
appState.stylesPanelMode === "compact",
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{shouldRenderSelectedShapeActions && renderSelectedShapeActions()}
|
{shouldRenderSelectedShapeActions && renderSelectedShapeActions()}
|
||||||
@@ -333,13 +333,14 @@ const LayerUI = ({
|
|||||||
padding={spacing.islandPadding}
|
padding={spacing.islandPadding}
|
||||||
className={clsx("App-toolbar", {
|
className={clsx("App-toolbar", {
|
||||||
"zen-mode": appState.zenModeEnabled,
|
"zen-mode": appState.zenModeEnabled,
|
||||||
"App-toolbar--compact": isCompactStylesPanel,
|
"App-toolbar--compact":
|
||||||
|
appState.stylesPanelMode === "compact",
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<HintViewer
|
<HintViewer
|
||||||
appState={appState}
|
appState={appState}
|
||||||
isMobile={editorInterface.formFactor === "phone"}
|
isMobile={device.editor.isMobile}
|
||||||
editorInterface={editorInterface}
|
device={device}
|
||||||
app={app}
|
app={app}
|
||||||
/>
|
/>
|
||||||
{heading}
|
{heading}
|
||||||
@@ -405,7 +406,8 @@ const LayerUI = ({
|
|||||||
"layer-ui__wrapper__top-right zen-mode-transition",
|
"layer-ui__wrapper__top-right zen-mode-transition",
|
||||||
{
|
{
|
||||||
"transition-right": appState.zenModeEnabled,
|
"transition-right": appState.zenModeEnabled,
|
||||||
"layer-ui__wrapper__top-right--compact": isCompactStylesPanel,
|
"layer-ui__wrapper__top-right--compact":
|
||||||
|
appState.stylesPanelMode === "compact",
|
||||||
},
|
},
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@@ -415,10 +417,7 @@ const LayerUI = ({
|
|||||||
userToFollow={appState.userToFollow?.socketId || null}
|
userToFollow={appState.userToFollow?.socketId || null}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{renderTopRightUI?.(
|
{renderTopRightUI?.(device.editor.isMobile, appState)}
|
||||||
editorInterface.formFactor === "phone",
|
|
||||||
appState,
|
|
||||||
)}
|
|
||||||
{!appState.viewModeEnabled &&
|
{!appState.viewModeEnabled &&
|
||||||
appState.openDialog?.name !== "elementLinkSelector" &&
|
appState.openDialog?.name !== "elementLinkSelector" &&
|
||||||
// hide button when sidebar docked
|
// hide button when sidebar docked
|
||||||
@@ -449,9 +448,7 @@ const LayerUI = ({
|
|||||||
trackEvent(
|
trackEvent(
|
||||||
"sidebar",
|
"sidebar",
|
||||||
`toggleDock (${docked ? "dock" : "undock"})`,
|
`toggleDock (${docked ? "dock" : "undock"})`,
|
||||||
`(${
|
`(${device.editor.isMobile ? "mobile" : "desktop"})`,
|
||||||
editorInterface.formFactor === "phone" ? "mobile" : "desktop"
|
|
||||||
})`,
|
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
@@ -472,21 +469,23 @@ const LayerUI = ({
|
|||||||
<DefaultMainMenu UIOptions={UIOptions} />
|
<DefaultMainMenu UIOptions={UIOptions} />
|
||||||
<DefaultSidebar.Trigger
|
<DefaultSidebar.Trigger
|
||||||
__fallback
|
__fallback
|
||||||
icon={sidebarRightIcon}
|
icon={LibraryIcon}
|
||||||
title={capitalizeString(t("toolBar.library"))}
|
title={capitalizeString(t("toolBar.library"))}
|
||||||
onToggle={(open) => {
|
onToggle={(open) => {
|
||||||
if (open) {
|
if (open) {
|
||||||
trackEvent(
|
trackEvent(
|
||||||
"sidebar",
|
"sidebar",
|
||||||
`${DEFAULT_SIDEBAR.name} (open)`,
|
`${DEFAULT_SIDEBAR.name} (open)`,
|
||||||
`button (${
|
`button (${device.editor.isMobile ? "mobile" : "desktop"})`,
|
||||||
editorInterface.formFactor === "phone" ? "mobile" : "desktop"
|
|
||||||
})`,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
tab={DEFAULT_SIDEBAR.defaultTab}
|
tab={DEFAULT_SIDEBAR.defaultTab}
|
||||||
/>
|
>
|
||||||
|
{appState.stylesPanelMode === "full" &&
|
||||||
|
appState.width >= MQ_MIN_WIDTH_DESKTOP &&
|
||||||
|
t("toolBar.library")}
|
||||||
|
</DefaultSidebar.Trigger>
|
||||||
<DefaultOverwriteConfirmDialog />
|
<DefaultOverwriteConfirmDialog />
|
||||||
{appState.openDialog?.name === "ttd" && <TTDDialog __fallback />}
|
{appState.openDialog?.name === "ttd" && <TTDDialog __fallback />}
|
||||||
{/* ------------------------------------------------------------------ */}
|
{/* ------------------------------------------------------------------ */}
|
||||||
@@ -497,7 +496,7 @@ const LayerUI = ({
|
|||||||
{appState.errorMessage}
|
{appState.errorMessage}
|
||||||
</ErrorDialog>
|
</ErrorDialog>
|
||||||
)}
|
)}
|
||||||
{eyeDropperState && editorInterface.formFactor !== "phone" && (
|
{eyeDropperState && !device.editor.isMobile && (
|
||||||
<EyeDropper
|
<EyeDropper
|
||||||
colorPickerType={eyeDropperState.colorPickerType}
|
colorPickerType={eyeDropperState.colorPickerType}
|
||||||
onCancel={() => {
|
onCancel={() => {
|
||||||
@@ -576,7 +575,7 @@ const LayerUI = ({
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{editorInterface.formFactor === "phone" && (
|
{device.editor.isMobile && (
|
||||||
<MobileMenu
|
<MobileMenu
|
||||||
app={app}
|
app={app}
|
||||||
appState={appState}
|
appState={appState}
|
||||||
@@ -594,14 +593,14 @@ const LayerUI = ({
|
|||||||
UIOptions={UIOptions}
|
UIOptions={UIOptions}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{editorInterface.formFactor !== "phone" && (
|
{!device.editor.isMobile && (
|
||||||
<>
|
<>
|
||||||
<div
|
<div
|
||||||
className="layer-ui__wrapper"
|
className="layer-ui__wrapper"
|
||||||
style={
|
style={
|
||||||
appState.openSidebar &&
|
appState.openSidebar &&
|
||||||
isSidebarDocked &&
|
isSidebarDocked &&
|
||||||
editorInterface.canFitSidebar
|
device.editor.canFitSidebar
|
||||||
? { width: `calc(100% - var(--right-sidebar-width))` }
|
? { width: `calc(100% - var(--right-sidebar-width))` }
|
||||||
: {}
|
: {}
|
||||||
}
|
}
|
||||||
@@ -614,7 +613,7 @@ const LayerUI = ({
|
|||||||
showExitZenModeBtn={showExitZenModeBtn}
|
showExitZenModeBtn={showExitZenModeBtn}
|
||||||
renderWelcomeScreen={renderWelcomeScreen}
|
renderWelcomeScreen={renderWelcomeScreen}
|
||||||
/>
|
/>
|
||||||
{appState.scrolledOutside && !appState.scrollConstraints && (
|
{appState.scrolledOutside && (
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="scroll-back-to-content"
|
className="scroll-back-to-content"
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import "./LibraryMenuItems.scss";
|
|||||||
|
|
||||||
import { TextField } from "./TextField";
|
import { TextField } from "./TextField";
|
||||||
|
|
||||||
import { useEditorInterface } from "./App";
|
import { useDevice } from "./App";
|
||||||
|
|
||||||
import { Button } from "./Button";
|
import { Button } from "./Button";
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ export default function LibraryMenuItems({
|
|||||||
selectedItems: LibraryItem["id"][];
|
selectedItems: LibraryItem["id"][];
|
||||||
onSelectItems: (id: LibraryItem["id"][]) => void;
|
onSelectItems: (id: LibraryItem["id"][]) => void;
|
||||||
}) {
|
}) {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const libraryContainerRef = useRef<HTMLDivElement>(null);
|
const libraryContainerRef = useRef<HTMLDivElement>(null);
|
||||||
const scrollPosition = useScrollPosition<HTMLDivElement>(libraryContainerRef);
|
const scrollPosition = useScrollPosition<HTMLDivElement>(libraryContainerRef);
|
||||||
|
|
||||||
@@ -392,7 +392,7 @@ export default function LibraryMenuItems({
|
|||||||
ref={searchInputRef}
|
ref={searchInputRef}
|
||||||
type="search"
|
type="search"
|
||||||
className={clsx("library-menu-items-container__search", {
|
className={clsx("library-menu-items-container__search", {
|
||||||
hideCancelButton: editorInterface.formFactor !== "phone",
|
hideCancelButton: !device.editor.isMobile,
|
||||||
})}
|
})}
|
||||||
placeholder={t("library.search.inputPlaceholder")}
|
placeholder={t("library.search.inputPlaceholder")}
|
||||||
value={searchInputValue}
|
value={searchInputValue}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { memo, useRef, useState } from "react";
|
|||||||
|
|
||||||
import { useLibraryItemSvg } from "../hooks/useLibraryItemSvg";
|
import { useLibraryItemSvg } from "../hooks/useLibraryItemSvg";
|
||||||
|
|
||||||
import { useEditorInterface } from "./App";
|
import { useDevice } from "./App";
|
||||||
import { CheckboxItem } from "./CheckboxItem";
|
import { CheckboxItem } from "./CheckboxItem";
|
||||||
import { PlusIcon } from "./icons";
|
import { PlusIcon } from "./icons";
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ export const LibraryUnit = memo(
|
|||||||
const svg = useLibraryItemSvg(id, elements, svgCache, ref);
|
const svg = useLibraryItemSvg(id, elements, svgCache, ref);
|
||||||
|
|
||||||
const [isHovered, setIsHovered] = useState(false);
|
const [isHovered, setIsHovered] = useState(false);
|
||||||
const isMobile = useEditorInterface().formFactor === "phone";
|
const isMobile = useDevice().editor.isMobile;
|
||||||
const adder = isPending && (
|
const adder = isPending && (
|
||||||
<div className="library-unit__adder">{PlusIcon}</div>
|
<div className="library-unit__adder">{PlusIcon}</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import { FilledButton } from "./FilledButton";
|
|
||||||
|
|
||||||
export const LinkButton = ({
|
|
||||||
children,
|
|
||||||
href,
|
|
||||||
}: {
|
|
||||||
href: string;
|
|
||||||
children: React.ReactNode;
|
|
||||||
}) => {
|
|
||||||
return (
|
|
||||||
<a href={href} target="_blank" rel="noopener" className="link-button">
|
|
||||||
<FilledButton>{children}</FilledButton>
|
|
||||||
</a>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@@ -7,14 +7,12 @@ import { t } from "../i18n";
|
|||||||
import { calculateScrollCenter } from "../scene";
|
import { calculateScrollCenter } from "../scene";
|
||||||
import { SCROLLBAR_WIDTH, SCROLLBAR_MARGIN } from "../scene/scrollbars";
|
import { SCROLLBAR_WIDTH, SCROLLBAR_MARGIN } from "../scene/scrollbars";
|
||||||
|
|
||||||
import { ExitViewModeButton, MobileShapeActions } from "./Actions";
|
import { MobileShapeActions } from "./Actions";
|
||||||
import { MobileToolBar } from "./MobileToolBar";
|
import { MobileToolBar } from "./MobileToolBar";
|
||||||
import { FixedSideContainer } from "./FixedSideContainer";
|
import { FixedSideContainer } from "./FixedSideContainer";
|
||||||
|
|
||||||
import { Island } from "./Island";
|
import { Island } from "./Island";
|
||||||
|
|
||||||
import { PenModeButton } from "./PenModeButton";
|
|
||||||
|
|
||||||
import type { ActionManager } from "../actions/manager";
|
import type { ActionManager } from "../actions/manager";
|
||||||
import type {
|
import type {
|
||||||
AppClassProperties,
|
AppClassProperties,
|
||||||
@@ -60,7 +58,6 @@ export const MobileMenu = ({
|
|||||||
renderWelcomeScreen,
|
renderWelcomeScreen,
|
||||||
UIOptions,
|
UIOptions,
|
||||||
app,
|
app,
|
||||||
onPenModeToggle,
|
|
||||||
}: MobileMenuProps) => {
|
}: MobileMenuProps) => {
|
||||||
const {
|
const {
|
||||||
WelcomeScreenCenterTunnel,
|
WelcomeScreenCenterTunnel,
|
||||||
@@ -68,29 +65,8 @@ export const MobileMenu = ({
|
|||||||
DefaultSidebarTriggerTunnel,
|
DefaultSidebarTriggerTunnel,
|
||||||
} = useTunnels();
|
} = useTunnels();
|
||||||
const renderAppTopBar = () => {
|
const renderAppTopBar = () => {
|
||||||
if (appState.openDialog?.name === "elementLinkSelector") {
|
const topRightUI = renderTopRightUI?.(true, appState) ?? (
|
||||||
return null;
|
<DefaultSidebarTriggerTunnel.Out />
|
||||||
}
|
|
||||||
|
|
||||||
const topRightUI = (
|
|
||||||
<div className="excalidraw-ui-top-right">
|
|
||||||
{renderTopRightUI?.(true, appState) ??
|
|
||||||
(!appState.viewModeEnabled && (
|
|
||||||
<>
|
|
||||||
<PenModeButton
|
|
||||||
checked={appState.penMode}
|
|
||||||
onChange={() => onPenModeToggle(null)}
|
|
||||||
title={t("toolBar.penMode")}
|
|
||||||
isMobile
|
|
||||||
penDetected={appState.penDetected}
|
|
||||||
/>
|
|
||||||
<DefaultSidebarTriggerTunnel.Out />
|
|
||||||
</>
|
|
||||||
))}
|
|
||||||
{appState.viewModeEnabled && (
|
|
||||||
<ExitViewModeButton actionManager={actionManager} />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const topLeftUI = (
|
const topLeftUI = (
|
||||||
@@ -100,6 +76,13 @@ export const MobileMenu = ({
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
appState.viewModeEnabled ||
|
||||||
|
appState.openDialog?.name === "elementLinkSelector"
|
||||||
|
) {
|
||||||
|
return <div className="App-toolbar-content">{topLeftUI}</div>;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className="App-toolbar-content"
|
className="App-toolbar-content"
|
||||||
@@ -134,44 +117,41 @@ export const MobileMenu = ({
|
|||||||
{renderWelcomeScreen && <WelcomeScreenCenterTunnel.Out />}
|
{renderWelcomeScreen && <WelcomeScreenCenterTunnel.Out />}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!appState.viewModeEnabled && (
|
<div
|
||||||
<div
|
className="App-bottom-bar"
|
||||||
className="App-bottom-bar"
|
style={{
|
||||||
style={{
|
marginBottom: SCROLLBAR_WIDTH + SCROLLBAR_MARGIN,
|
||||||
marginBottom: SCROLLBAR_WIDTH + SCROLLBAR_MARGIN,
|
}}
|
||||||
}}
|
>
|
||||||
>
|
<MobileShapeActions
|
||||||
<MobileShapeActions
|
appState={appState}
|
||||||
appState={appState}
|
elementsMap={app.scene.getNonDeletedElementsMap()}
|
||||||
elementsMap={app.scene.getNonDeletedElementsMap()}
|
renderAction={actionManager.renderAction}
|
||||||
renderAction={actionManager.renderAction}
|
app={app}
|
||||||
app={app}
|
setAppState={setAppState}
|
||||||
setAppState={setAppState}
|
/>
|
||||||
/>
|
|
||||||
|
|
||||||
<Island className="App-toolbar">
|
<Island className="App-toolbar">
|
||||||
{!appState.viewModeEnabled &&
|
{!appState.viewModeEnabled &&
|
||||||
appState.openDialog?.name !== "elementLinkSelector" &&
|
appState.openDialog?.name !== "elementLinkSelector" &&
|
||||||
renderToolbar()}
|
renderToolbar()}
|
||||||
{appState.scrolledOutside &&
|
{appState.scrolledOutside &&
|
||||||
!appState.openMenu &&
|
!appState.openMenu &&
|
||||||
!appState.openSidebar &&
|
!appState.openSidebar && (
|
||||||
!appState.scrollConstraints && (
|
<button
|
||||||
<button
|
type="button"
|
||||||
type="button"
|
className="scroll-back-to-content"
|
||||||
className="scroll-back-to-content"
|
onClick={() => {
|
||||||
onClick={() => {
|
setAppState((appState) => ({
|
||||||
setAppState((appState) => ({
|
...calculateScrollCenter(elements, appState),
|
||||||
...calculateScrollCenter(elements, appState),
|
}));
|
||||||
}));
|
}}
|
||||||
}}
|
>
|
||||||
>
|
{t("buttons.scrollBackToContent")}
|
||||||
{t("buttons.scrollBackToContent")}
|
</button>
|
||||||
</button>
|
)}
|
||||||
)}
|
</Island>
|
||||||
</Island>
|
</div>
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<FixedSideContainer side="top" className="App-top-bar">
|
<FixedSideContainer side="top" className="App-top-bar">
|
||||||
{renderAppTopBar()}
|
{renderAppTopBar()}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useState, useEffect } from "react";
|
import { useState, useEffect, useRef } from "react";
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
|
|
||||||
import { KEYS, capitalizeString } from "@excalidraw/common";
|
import { KEYS, capitalizeString } from "@excalidraw/common";
|
||||||
@@ -101,6 +101,8 @@ export const MobileToolBar = ({
|
|||||||
"arrow" | "line"
|
"arrow" | "line"
|
||||||
>("arrow");
|
>("arrow");
|
||||||
|
|
||||||
|
const toolbarRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
// keep lastActiveGenericShape in sync with active tool if user switches via other UI
|
// keep lastActiveGenericShape in sync with active tool if user switches via other UI
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (
|
if (
|
||||||
@@ -141,8 +143,8 @@ export const MobileToolBar = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const [toolbarWidth, setToolbarWidth] = useState(0);
|
const toolbarWidth =
|
||||||
|
toolbarRef.current?.getBoundingClientRect()?.width ?? 0 - 8;
|
||||||
const WIDTH = 36;
|
const WIDTH = 36;
|
||||||
const GAP = 4;
|
const GAP = 4;
|
||||||
|
|
||||||
@@ -162,9 +164,6 @@ export const MobileToolBar = ({
|
|||||||
"laser",
|
"laser",
|
||||||
"magicframe",
|
"magicframe",
|
||||||
].filter((tool) => {
|
].filter((tool) => {
|
||||||
if (showTextToolOutside && tool === "text") {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (showImageToolOutside && tool === "image") {
|
if (showImageToolOutside && tool === "image") {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -175,30 +174,21 @@ export const MobileToolBar = ({
|
|||||||
});
|
});
|
||||||
const extraToolSelected = extraTools.includes(activeTool.type);
|
const extraToolSelected = extraTools.includes(activeTool.type);
|
||||||
const extraIcon = extraToolSelected
|
const extraIcon = extraToolSelected
|
||||||
? activeTool.type === "text"
|
? activeTool.type === "frame"
|
||||||
? TextIcon
|
|
||||||
: activeTool.type === "image"
|
|
||||||
? ImageIcon
|
|
||||||
: activeTool.type === "frame"
|
|
||||||
? frameToolIcon
|
? frameToolIcon
|
||||||
: activeTool.type === "embeddable"
|
: activeTool.type === "embeddable"
|
||||||
? EmbedIcon
|
? EmbedIcon
|
||||||
: activeTool.type === "laser"
|
: activeTool.type === "laser"
|
||||||
? laserPointerToolIcon
|
? laserPointerToolIcon
|
||||||
|
: activeTool.type === "text"
|
||||||
|
? TextIcon
|
||||||
: activeTool.type === "magicframe"
|
: activeTool.type === "magicframe"
|
||||||
? MagicIcon
|
? MagicIcon
|
||||||
: extraToolsIcon
|
: extraToolsIcon
|
||||||
: extraToolsIcon;
|
: extraToolsIcon;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div className="mobile-toolbar" ref={toolbarRef}>
|
||||||
className="mobile-toolbar"
|
|
||||||
ref={(div) => {
|
|
||||||
if (div) {
|
|
||||||
setToolbarWidth(div.getBoundingClientRect().width);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{/* Hand Tool */}
|
{/* Hand Tool */}
|
||||||
<HandButton
|
<HandButton
|
||||||
checked={isHandToolActive(app.state)}
|
checked={isHandToolActive(app.state)}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import React, { type ReactNode } from "react";
|
|||||||
|
|
||||||
import { isInteractive } from "@excalidraw/common";
|
import { isInteractive } from "@excalidraw/common";
|
||||||
|
|
||||||
import { useEditorInterface } from "./App";
|
import { useDevice } from "./App";
|
||||||
import { Island } from "./Island";
|
import { Island } from "./Island";
|
||||||
|
|
||||||
interface PropertiesPopoverProps {
|
interface PropertiesPopoverProps {
|
||||||
@@ -39,9 +39,9 @@ export const PropertiesPopover = React.forwardRef<
|
|||||||
},
|
},
|
||||||
ref,
|
ref,
|
||||||
) => {
|
) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const isMobilePortrait =
|
const isMobilePortrait =
|
||||||
editorInterface.formFactor === "phone" && !editorInterface.isLandscape;
|
device.editor.isMobile && !device.viewport.isLandscape;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Popover.Portal container={container}>
|
<Popover.Portal container={container}>
|
||||||
@@ -56,8 +56,7 @@ export const PropertiesPopover = React.forwardRef<
|
|||||||
collisionBoundary={container ?? undefined}
|
collisionBoundary={container ?? undefined}
|
||||||
style={{
|
style={{
|
||||||
zIndex: "var(--zIndex-ui-styles-popup)",
|
zIndex: "var(--zIndex-ui-styles-popup)",
|
||||||
marginLeft:
|
marginLeft: device.editor.isMobile ? "0.5rem" : undefined,
|
||||||
editorInterface.formFactor === "phone" ? "0.5rem" : undefined,
|
|
||||||
}}
|
}}
|
||||||
onPointerLeave={onPointerLeave}
|
onPointerLeave={onPointerLeave}
|
||||||
onKeyDown={onKeyDown}
|
onKeyDown={onKeyDown}
|
||||||
@@ -65,7 +64,7 @@ export const PropertiesPopover = React.forwardRef<
|
|||||||
onPointerDownOutside={onPointerDownOutside}
|
onPointerDownOutside={onPointerDownOutside}
|
||||||
onOpenAutoFocus={(e) => {
|
onOpenAutoFocus={(e) => {
|
||||||
// prevent auto-focus on touch devices to avoid keyboard popup
|
// prevent auto-focus on touch devices to avoid keyboard popup
|
||||||
if (preventAutoFocusOnTouch && editorInterface.isTouchScreen) {
|
if (preventAutoFocusOnTouch && device.isTouchScreen) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import {
|
|||||||
import { useUIAppState } from "../../context/ui-appState";
|
import { useUIAppState } from "../../context/ui-appState";
|
||||||
import { atom, useSetAtom } from "../../editor-jotai";
|
import { atom, useSetAtom } from "../../editor-jotai";
|
||||||
import { useOutsideClick } from "../../hooks/useOutsideClick";
|
import { useOutsideClick } from "../../hooks/useOutsideClick";
|
||||||
import { useEditorInterface, useExcalidrawSetAppState } from "../App";
|
import { useDevice, useExcalidrawSetAppState } from "../App";
|
||||||
import { Island } from "../Island";
|
import { Island } from "../Island";
|
||||||
|
|
||||||
import { SidebarHeader } from "./SidebarHeader";
|
import { SidebarHeader } from "./SidebarHeader";
|
||||||
@@ -96,7 +96,7 @@ export const SidebarInner = forwardRef(
|
|||||||
return islandRef.current!;
|
return islandRef.current!;
|
||||||
});
|
});
|
||||||
|
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
|
|
||||||
const closeLibrary = useCallback(() => {
|
const closeLibrary = useCallback(() => {
|
||||||
const isDialogOpen = !!document.querySelector(".Dialog");
|
const isDialogOpen = !!document.querySelector(".Dialog");
|
||||||
@@ -117,11 +117,11 @@ export const SidebarInner = forwardRef(
|
|||||||
if ((event.target as Element).closest(".sidebar-trigger")) {
|
if ((event.target as Element).closest(".sidebar-trigger")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!docked || !editorInterface.canFitSidebar) {
|
if (!docked || !device.editor.canFitSidebar) {
|
||||||
closeLibrary();
|
closeLibrary();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[closeLibrary, docked, editorInterface.canFitSidebar],
|
[closeLibrary, docked, device.editor.canFitSidebar],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ export const SidebarInner = forwardRef(
|
|||||||
const handleKeyDown = (event: KeyboardEvent) => {
|
const handleKeyDown = (event: KeyboardEvent) => {
|
||||||
if (
|
if (
|
||||||
event.key === KEYS.ESCAPE &&
|
event.key === KEYS.ESCAPE &&
|
||||||
(!docked || !editorInterface.canFitSidebar)
|
(!docked || !device.editor.canFitSidebar)
|
||||||
) {
|
) {
|
||||||
closeLibrary();
|
closeLibrary();
|
||||||
}
|
}
|
||||||
@@ -138,7 +138,7 @@ export const SidebarInner = forwardRef(
|
|||||||
return () => {
|
return () => {
|
||||||
document.removeEventListener(EVENT.KEYDOWN, handleKeyDown);
|
document.removeEventListener(EVENT.KEYDOWN, handleKeyDown);
|
||||||
};
|
};
|
||||||
}, [closeLibrary, docked, editorInterface.canFitSidebar]);
|
}, [closeLibrary, docked, device.editor.canFitSidebar]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Island
|
<Island
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import clsx from "clsx";
|
|||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
|
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
import { useEditorInterface } from "../App";
|
import { useDevice } from "../App";
|
||||||
import { Button } from "../Button";
|
import { Button } from "../Button";
|
||||||
import { Tooltip } from "../Tooltip";
|
import { Tooltip } from "../Tooltip";
|
||||||
import { CloseIcon, PinIcon } from "../icons";
|
import { CloseIcon, PinIcon } from "../icons";
|
||||||
@@ -16,11 +16,11 @@ export const SidebarHeader = ({
|
|||||||
children?: React.ReactNode;
|
children?: React.ReactNode;
|
||||||
className?: string;
|
className?: string;
|
||||||
}) => {
|
}) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const props = useContext(SidebarPropsContext);
|
const props = useContext(SidebarPropsContext);
|
||||||
|
|
||||||
const renderDockButton = !!(
|
const renderDockButton = !!(
|
||||||
editorInterface.canFitSidebar && props.shouldRenderDockButton
|
device.editor.canFitSidebar && props.shouldRenderDockButton
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -4,17 +4,7 @@ import {
|
|||||||
CURSOR_TYPE,
|
CURSOR_TYPE,
|
||||||
isShallowEqual,
|
isShallowEqual,
|
||||||
sceneCoordsToViewportCoords,
|
sceneCoordsToViewportCoords,
|
||||||
type EditorInterface,
|
|
||||||
} from "@excalidraw/common";
|
} from "@excalidraw/common";
|
||||||
import { AnimationController } from "@excalidraw/excalidraw/renderer/animation";
|
|
||||||
|
|
||||||
import type {
|
|
||||||
InteractiveCanvasRenderConfig,
|
|
||||||
InteractiveSceneRenderAnimationState,
|
|
||||||
InteractiveSceneRenderConfig,
|
|
||||||
RenderableElementsMap,
|
|
||||||
RenderInteractiveSceneCallback,
|
|
||||||
} from "@excalidraw/excalidraw/scene/types";
|
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
NonDeletedExcalidrawElement,
|
NonDeletedExcalidrawElement,
|
||||||
@@ -22,13 +12,15 @@ import type {
|
|||||||
} from "@excalidraw/element/types";
|
} from "@excalidraw/element/types";
|
||||||
|
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
|
import { isRenderThrottlingEnabled } from "../../reactUtils";
|
||||||
import { renderInteractiveScene } from "../../renderer/interactiveScene";
|
import { renderInteractiveScene } from "../../renderer/interactiveScene";
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
AppClassProperties,
|
InteractiveCanvasRenderConfig,
|
||||||
AppState,
|
RenderableElementsMap,
|
||||||
InteractiveCanvasAppState,
|
RenderInteractiveSceneCallback,
|
||||||
} from "../../types";
|
} from "../../scene/types";
|
||||||
|
import type { AppState, Device, InteractiveCanvasAppState } from "../../types";
|
||||||
import type { DOMAttributes } from "react";
|
import type { DOMAttributes } from "react";
|
||||||
|
|
||||||
type InteractiveCanvasProps = {
|
type InteractiveCanvasProps = {
|
||||||
@@ -43,8 +35,7 @@ type InteractiveCanvasProps = {
|
|||||||
scale: number;
|
scale: number;
|
||||||
appState: InteractiveCanvasAppState;
|
appState: InteractiveCanvasAppState;
|
||||||
renderScrollbars: boolean;
|
renderScrollbars: boolean;
|
||||||
editorInterface: EditorInterface;
|
device: Device;
|
||||||
app: AppClassProperties;
|
|
||||||
renderInteractiveSceneCallback: (
|
renderInteractiveSceneCallback: (
|
||||||
data: RenderInteractiveSceneCallback,
|
data: RenderInteractiveSceneCallback,
|
||||||
) => void;
|
) => void;
|
||||||
@@ -79,11 +70,8 @@ type InteractiveCanvasProps = {
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const INTERACTIVE_SCENE_ANIMATION_KEY = "animateInteractiveScene";
|
|
||||||
|
|
||||||
const InteractiveCanvas = (props: InteractiveCanvasProps) => {
|
const InteractiveCanvas = (props: InteractiveCanvasProps) => {
|
||||||
const isComponentMounted = useRef(false);
|
const isComponentMounted = useRef(false);
|
||||||
const rendererParams = useRef(null as InteractiveSceneRenderConfig | null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isComponentMounted.current) {
|
if (!isComponentMounted.current) {
|
||||||
@@ -140,58 +128,29 @@ const InteractiveCanvas = (props: InteractiveCanvasProps) => {
|
|||||||
)) ||
|
)) ||
|
||||||
"#6965db";
|
"#6965db";
|
||||||
|
|
||||||
rendererParams.current = {
|
renderInteractiveScene(
|
||||||
app: props.app,
|
{
|
||||||
canvas: props.canvas,
|
canvas: props.canvas,
|
||||||
elementsMap: props.elementsMap,
|
elementsMap: props.elementsMap,
|
||||||
visibleElements: props.visibleElements,
|
visibleElements: props.visibleElements,
|
||||||
selectedElements: props.selectedElements,
|
selectedElements: props.selectedElements,
|
||||||
allElementsMap: props.allElementsMap,
|
allElementsMap: props.allElementsMap,
|
||||||
scale: window.devicePixelRatio,
|
scale: window.devicePixelRatio,
|
||||||
appState: props.appState,
|
appState: props.appState,
|
||||||
renderConfig: {
|
renderConfig: {
|
||||||
remotePointerViewportCoords,
|
remotePointerViewportCoords,
|
||||||
remotePointerButton,
|
remotePointerButton,
|
||||||
remoteSelectedElementIds,
|
remoteSelectedElementIds,
|
||||||
remotePointerUsernames,
|
remotePointerUsernames,
|
||||||
remotePointerUserStates,
|
remotePointerUserStates,
|
||||||
selectionColor,
|
selectionColor,
|
||||||
renderScrollbars: props.renderScrollbars,
|
renderScrollbars: props.renderScrollbars,
|
||||||
},
|
|
||||||
editorInterface: props.editorInterface,
|
|
||||||
callback: props.renderInteractiveSceneCallback,
|
|
||||||
animationState: {
|
|
||||||
bindingHighlight: undefined,
|
|
||||||
},
|
|
||||||
deltaTime: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!AnimationController.running(INTERACTIVE_SCENE_ANIMATION_KEY)) {
|
|
||||||
AnimationController.start<InteractiveSceneRenderAnimationState>(
|
|
||||||
INTERACTIVE_SCENE_ANIMATION_KEY,
|
|
||||||
({ deltaTime, state }) => {
|
|
||||||
const nextAnimationState = renderInteractiveScene({
|
|
||||||
...rendererParams.current!,
|
|
||||||
deltaTime,
|
|
||||||
animationState: state,
|
|
||||||
}).animationState;
|
|
||||||
|
|
||||||
if (nextAnimationState) {
|
|
||||||
for (const key in nextAnimationState) {
|
|
||||||
if (
|
|
||||||
nextAnimationState[
|
|
||||||
key as keyof InteractiveSceneRenderAnimationState
|
|
||||||
] !== undefined
|
|
||||||
) {
|
|
||||||
return nextAnimationState;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
},
|
},
|
||||||
);
|
device: props.device,
|
||||||
}
|
callback: props.renderInteractiveSceneCallback,
|
||||||
|
},
|
||||||
|
isRenderThrottlingEnabled(),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -35,16 +35,10 @@ const DropdownMenu = ({
|
|||||||
: MenuContentComp;
|
: MenuContentComp;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<>
|
||||||
className="dropdown-menu-container"
|
|
||||||
style={{
|
|
||||||
// remove this div from box layout
|
|
||||||
display: "contents",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{MenuTriggerComp}
|
{MenuTriggerComp}
|
||||||
{open && MenuContentCompWithPlacement}
|
{open && MenuContentCompWithPlacement}
|
||||||
</div>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { EVENT, KEYS } from "@excalidraw/common";
|
|||||||
|
|
||||||
import { useOutsideClick } from "../../hooks/useOutsideClick";
|
import { useOutsideClick } from "../../hooks/useOutsideClick";
|
||||||
import { useStable } from "../../hooks/useStable";
|
import { useStable } from "../../hooks/useStable";
|
||||||
import { useEditorInterface } from "../App";
|
import { useDevice } from "../App";
|
||||||
import { Island } from "../Island";
|
import { Island } from "../Island";
|
||||||
import Stack from "../Stack";
|
import Stack from "../Stack";
|
||||||
|
|
||||||
@@ -29,20 +29,13 @@ const MenuContent = ({
|
|||||||
style?: React.CSSProperties;
|
style?: React.CSSProperties;
|
||||||
placement?: "top" | "bottom";
|
placement?: "top" | "bottom";
|
||||||
}) => {
|
}) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const menuRef = useRef<HTMLDivElement>(null);
|
const menuRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
const callbacksRef = useStable({ onClickOutside });
|
const callbacksRef = useStable({ onClickOutside });
|
||||||
|
|
||||||
useOutsideClick(menuRef, (event) => {
|
useOutsideClick(menuRef, () => {
|
||||||
// prevents closing if clicking on the trigger button
|
callbacksRef.onClickOutside?.();
|
||||||
if (
|
|
||||||
!menuRef.current
|
|
||||||
?.closest(".dropdown-menu-container")
|
|
||||||
?.contains(event.target)
|
|
||||||
) {
|
|
||||||
callbacksRef.onClickOutside?.();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -66,7 +59,7 @@ const MenuContent = ({
|
|||||||
}, [callbacksRef]);
|
}, [callbacksRef]);
|
||||||
|
|
||||||
const classNames = clsx(`dropdown-menu ${className}`, {
|
const classNames = clsx(`dropdown-menu ${className}`, {
|
||||||
"dropdown-menu--mobile": editorInterface.formFactor === "phone",
|
"dropdown-menu--mobile": device.editor.isMobile,
|
||||||
"dropdown-menu--placement-top": placement === "top",
|
"dropdown-menu--placement-top": placement === "top",
|
||||||
}).trim();
|
}).trim();
|
||||||
|
|
||||||
@@ -80,8 +73,13 @@ const MenuContent = ({
|
|||||||
>
|
>
|
||||||
{/* the zIndex ensures this menu has higher stacking order,
|
{/* the zIndex ensures this menu has higher stacking order,
|
||||||
see https://github.com/excalidraw/excalidraw/pull/1445 */}
|
see https://github.com/excalidraw/excalidraw/pull/1445 */}
|
||||||
{editorInterface.formFactor === "phone" ? (
|
{device.editor.isMobile ? (
|
||||||
<Stack.Col className="dropdown-menu-container">{children}</Stack.Col>
|
<Stack.Col
|
||||||
|
className="dropdown-menu-container"
|
||||||
|
style={{ ["--gap" as any]: 1.25 }}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</Stack.Col>
|
||||||
) : (
|
) : (
|
||||||
<Island
|
<Island
|
||||||
className="dropdown-menu-container"
|
className="dropdown-menu-container"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useEditorInterface } from "../App";
|
import { useDevice } from "../App";
|
||||||
|
|
||||||
import { Ellipsify } from "../Ellipsify";
|
import { Ellipsify } from "../Ellipsify";
|
||||||
|
|
||||||
@@ -15,14 +15,14 @@ const MenuItemContent = ({
|
|||||||
textStyle?: React.CSSProperties;
|
textStyle?: React.CSSProperties;
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}) => {
|
}) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{icon && <div className="dropdown-menu-item__icon">{icon}</div>}
|
{icon && <div className="dropdown-menu-item__icon">{icon}</div>}
|
||||||
<div style={textStyle} className="dropdown-menu-item__text">
|
<div style={textStyle} className="dropdown-menu-item__text">
|
||||||
<Ellipsify>{children}</Ellipsify>
|
<Ellipsify>{children}</Ellipsify>
|
||||||
</div>
|
</div>
|
||||||
{shortcut && editorInterface.formFactor !== "phone" && (
|
{shortcut && !device.editor.isMobile && (
|
||||||
<div className="dropdown-menu-item__shortcut">{shortcut}</div>
|
<div className="dropdown-menu-item__shortcut">{shortcut}</div>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useEditorInterface } from "../App";
|
import { useDevice } from "../App";
|
||||||
import { RadioGroup } from "../RadioGroup";
|
import { RadioGroup } from "../RadioGroup";
|
||||||
|
|
||||||
type Props<T> = {
|
type Props<T> = {
|
||||||
@@ -22,7 +22,7 @@ const DropdownMenuItemContentRadio = <T,>({
|
|||||||
children,
|
children,
|
||||||
name,
|
name,
|
||||||
}: Props<T>) => {
|
}: Props<T>) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -37,7 +37,7 @@ const DropdownMenuItemContentRadio = <T,>({
|
|||||||
choices={choices}
|
choices={choices}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{shortcut && editorInterface.formFactor !== "phone" && (
|
{shortcut && !device.editor.isMobile && (
|
||||||
<div className="dropdown-menu-item__shortcut dropdown-menu-item__shortcut--orphaned">
|
<div className="dropdown-menu-item__shortcut dropdown-menu-item__shortcut--orphaned">
|
||||||
{shortcut}
|
{shortcut}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
|
|
||||||
import { useEditorInterface } from "../App";
|
import { useDevice } from "../App";
|
||||||
|
|
||||||
const MenuTrigger = ({
|
const MenuTrigger = ({
|
||||||
className = "",
|
className = "",
|
||||||
@@ -14,16 +14,17 @@ const MenuTrigger = ({
|
|||||||
onToggle: () => void;
|
onToggle: () => void;
|
||||||
title?: string;
|
title?: string;
|
||||||
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect">) => {
|
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect">) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const classNames = clsx(
|
const classNames = clsx(
|
||||||
`dropdown-menu-button ${className}`,
|
`dropdown-menu-button ${className}`,
|
||||||
"zen-mode-transition",
|
"zen-mode-transition",
|
||||||
{
|
{
|
||||||
"dropdown-menu-button--mobile": editorInterface.formFactor === "phone",
|
"dropdown-menu-button--mobile": device.editor.isMobile,
|
||||||
},
|
},
|
||||||
).trim();
|
).trim();
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
|
data-prevent-outside-click
|
||||||
className={classNames}
|
className={classNames}
|
||||||
onClick={onToggle}
|
onClick={onToggle}
|
||||||
type="button"
|
type="button"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import clsx from "clsx";
|
|||||||
|
|
||||||
import { actionShortcuts } from "../../actions";
|
import { actionShortcuts } from "../../actions";
|
||||||
import { useTunnels } from "../../context/tunnels";
|
import { useTunnels } from "../../context/tunnels";
|
||||||
import { ExitZenModeButton, UndoRedoActions, ZoomActions } from "../Actions";
|
import { ExitZenModeAction, UndoRedoActions, ZoomActions } from "../Actions";
|
||||||
import { HelpButton } from "../HelpButton";
|
import { HelpButton } from "../HelpButton";
|
||||||
import { Section } from "../Section";
|
import { Section } from "../Section";
|
||||||
import Stack from "../Stack";
|
import Stack from "../Stack";
|
||||||
@@ -66,7 +66,7 @@ const Footer = ({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ExitZenModeButton
|
<ExitZenModeAction
|
||||||
actionManager={actionManager}
|
actionManager={actionManager}
|
||||||
showExitZenModeBtn={showExitZenModeBtn}
|
showExitZenModeBtn={showExitZenModeBtn}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import { getTooltipDiv, updateTooltipPosition } from "../../components/Tooltip";
|
|||||||
|
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
|
|
||||||
import { useAppProps, useEditorInterface, useExcalidrawAppState } from "../App";
|
import { useAppProps, useDevice, useExcalidrawAppState } from "../App";
|
||||||
import { ToolButton } from "../ToolButton";
|
import { ToolButton } from "../ToolButton";
|
||||||
import { FreedrawIcon, TrashIcon, elementLinkIcon } from "../icons";
|
import { FreedrawIcon, TrashIcon, elementLinkIcon } from "../icons";
|
||||||
import { getSelectedElements } from "../../scene";
|
import { getSelectedElements } from "../../scene";
|
||||||
@@ -88,7 +88,7 @@ export const Hyperlink = ({
|
|||||||
const elementsMap = scene.getNonDeletedElementsMap();
|
const elementsMap = scene.getNonDeletedElementsMap();
|
||||||
const appState = useExcalidrawAppState();
|
const appState = useExcalidrawAppState();
|
||||||
const appProps = useAppProps();
|
const appProps = useAppProps();
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
|
|
||||||
const linkVal = element.link || "";
|
const linkVal = element.link || "";
|
||||||
|
|
||||||
@@ -189,11 +189,11 @@ export const Hyperlink = ({
|
|||||||
if (
|
if (
|
||||||
isEditing &&
|
isEditing &&
|
||||||
inputRef?.current &&
|
inputRef?.current &&
|
||||||
!(editorInterface.formFactor === "phone" || editorInterface.isTouchScreen)
|
!(device.viewport.isMobile || device.isTouchScreen)
|
||||||
) {
|
) {
|
||||||
inputRef.current.select();
|
inputRef.current.select();
|
||||||
}
|
}
|
||||||
}, [isEditing, editorInterface.formFactor, editorInterface.isTouchScreen]);
|
}, [isEditing, device.viewport.isMobile, device.isTouchScreen]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let timeoutId: number | null = null;
|
let timeoutId: number | null = null;
|
||||||
|
|||||||
@@ -1160,7 +1160,7 @@ export const StrokeWidthBaseIcon = createIcon(
|
|||||||
modifiedTablerIconProps,
|
modifiedTablerIconProps,
|
||||||
);
|
);
|
||||||
|
|
||||||
export const StrokeWidthBoldIcon = createIcon(
|
export const StrokeWidthMediumIcon = createIcon(
|
||||||
<path
|
<path
|
||||||
d="M5 10h10"
|
d="M5 10h10"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
@@ -1171,7 +1171,7 @@ export const StrokeWidthBoldIcon = createIcon(
|
|||||||
modifiedTablerIconProps,
|
modifiedTablerIconProps,
|
||||||
);
|
);
|
||||||
|
|
||||||
export const StrokeWidthExtraBoldIcon = createIcon(
|
export const StrokeWidthBoldIcon = createIcon(
|
||||||
<path
|
<path
|
||||||
d="M5 10h10"
|
d="M5 10h10"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
@@ -1182,6 +1182,17 @@ export const StrokeWidthExtraBoldIcon = createIcon(
|
|||||||
modifiedTablerIconProps,
|
modifiedTablerIconProps,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const StrokeWidthExtraBoldIcon = createIcon(
|
||||||
|
<path
|
||||||
|
d="M5 10h10"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeWidth="5"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>,
|
||||||
|
modifiedTablerIconProps,
|
||||||
|
);
|
||||||
|
|
||||||
export const StrokeStyleSolidIcon = React.memo(({ theme }: { theme: Theme }) =>
|
export const StrokeStyleSolidIcon = React.memo(({ theme }: { theme: Theme }) =>
|
||||||
createIcon(
|
createIcon(
|
||||||
<path
|
<path
|
||||||
@@ -2294,6 +2305,40 @@ export const elementLinkIcon = createIcon(
|
|||||||
tablerIconProps,
|
tablerIconProps,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const strokeWidthFixedIcon = createIcon(
|
||||||
|
<g>
|
||||||
|
<path
|
||||||
|
d="M4 12 C 5 8, 6 8, 8 12"
|
||||||
|
fill="none"
|
||||||
|
strokeWidth="1"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M8 12 C 9 16, 10 16, 12 12"
|
||||||
|
fill="none"
|
||||||
|
strokeWidth="1"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M12 12 C 14 8, 15 8, 16 12"
|
||||||
|
fill="none"
|
||||||
|
strokeWidth="1"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M16 12 C 17 16, 18 16, 19 12"
|
||||||
|
fill="none"
|
||||||
|
strokeWidth="1"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
</g>,
|
||||||
|
tablerIconProps,
|
||||||
|
);
|
||||||
|
|
||||||
export const resizeIcon = createIcon(
|
export const resizeIcon = createIcon(
|
||||||
<g strokeWidth={1.5}>
|
<g strokeWidth={1.5}>
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||||
@@ -2303,6 +2348,40 @@ export const resizeIcon = createIcon(
|
|||||||
tablerIconProps,
|
tablerIconProps,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const strokeWidthVariableIcon = createIcon(
|
||||||
|
<g>
|
||||||
|
<path
|
||||||
|
d="M4 12 C 5 8, 6 8, 8 12"
|
||||||
|
fill="none"
|
||||||
|
stroke-width="1.5"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M8 12 C 9 16, 10 16, 12 12"
|
||||||
|
fill="none"
|
||||||
|
stroke-width="2"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M12 12 C 14 8, 15 8, 16 12"
|
||||||
|
fill="none"
|
||||||
|
stroke-width="2.75"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M16 12 C 17 16, 18 16, 19 12"
|
||||||
|
fill="none"
|
||||||
|
stroke-width="3.25"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
</g>,
|
||||||
|
tablerIconProps,
|
||||||
|
);
|
||||||
|
|
||||||
export const adjustmentsIcon = createIcon(
|
export const adjustmentsIcon = createIcon(
|
||||||
<g strokeWidth={1.5}>
|
<g strokeWidth={1.5}>
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||||
@@ -2326,50 +2405,3 @@ export const strokeIcon = createIcon(
|
|||||||
</g>,
|
</g>,
|
||||||
tablerIconProps,
|
tablerIconProps,
|
||||||
);
|
);
|
||||||
|
|
||||||
export const pencilIcon = createIcon(
|
|
||||||
<g strokeWidth={1.25}>
|
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
||||||
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
|
|
||||||
<path d="M13.5 6.5l4 4" />
|
|
||||||
</g>,
|
|
||||||
tablerIconProps,
|
|
||||||
);
|
|
||||||
|
|
||||||
export const chevronLeftIcon = createIcon(
|
|
||||||
<g strokeWidth={1}>
|
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
||||||
<path d="M11 7l-5 5l5 5" />
|
|
||||||
<path d="M17 7l-5 5l5 5" />
|
|
||||||
</g>,
|
|
||||||
tablerIconProps,
|
|
||||||
);
|
|
||||||
|
|
||||||
export const sidebarRightIcon = createIcon(
|
|
||||||
<g strokeWidth="1.75">
|
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
||||||
<path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z" />
|
|
||||||
<path d="M15 4l0 16" />
|
|
||||||
</g>,
|
|
||||||
tablerIconProps,
|
|
||||||
);
|
|
||||||
|
|
||||||
export const messageCircleIcon = createIcon(
|
|
||||||
<g strokeWidth="1.25">
|
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
||||||
<path d="M3 20l1.3 -3.9c-2.324 -3.437 -1.426 -7.872 2.1 -10.374c3.526 -2.501 8.59 -2.296 11.845 .48c3.255 2.777 3.695 7.266 1.029 10.501c-2.666 3.235 -7.615 4.215 -11.574 2.293l-4.7 1" />
|
|
||||||
</g>,
|
|
||||||
tablerIconProps,
|
|
||||||
);
|
|
||||||
|
|
||||||
export const presentationIcon = createIcon(
|
|
||||||
<g strokeWidth="1.25">
|
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
||||||
<path d="M3 4l18 0" />
|
|
||||||
<path d="M4 4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-10" />
|
|
||||||
<path d="M12 16l0 4" />
|
|
||||||
<path d="M9 20l6 0" />
|
|
||||||
<path d="M8 12l3 -3l2 2l3 -3" />
|
|
||||||
</g>,
|
|
||||||
tablerIconProps,
|
|
||||||
);
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
|
|
||||||
import { MQ_MIN_WIDTH_DESKTOP, type EditorInterface } from "@excalidraw/common";
|
import { isMobileOrTablet, MQ_MIN_WIDTH_DESKTOP } from "@excalidraw/common";
|
||||||
|
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
import { Button } from "../Button";
|
import { Button } from "../Button";
|
||||||
@@ -12,18 +12,15 @@ import "./LiveCollaborationTrigger.scss";
|
|||||||
const LiveCollaborationTrigger = ({
|
const LiveCollaborationTrigger = ({
|
||||||
isCollaborating,
|
isCollaborating,
|
||||||
onSelect,
|
onSelect,
|
||||||
editorInterface,
|
|
||||||
...rest
|
...rest
|
||||||
}: {
|
}: {
|
||||||
isCollaborating: boolean;
|
isCollaborating: boolean;
|
||||||
onSelect: () => void;
|
onSelect: () => void;
|
||||||
editorInterface?: EditorInterface;
|
|
||||||
} & React.ButtonHTMLAttributes<HTMLButtonElement>) => {
|
} & React.ButtonHTMLAttributes<HTMLButtonElement>) => {
|
||||||
const appState = useUIAppState();
|
const appState = useUIAppState();
|
||||||
|
|
||||||
const showIconOnly =
|
const showIconOnly =
|
||||||
editorInterface?.formFactor !== "desktop" ||
|
isMobileOrTablet() || appState.width < MQ_MIN_WIDTH_DESKTOP;
|
||||||
appState.width < MQ_MIN_WIDTH_DESKTOP;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { composeEventHandlers } from "@excalidraw/common";
|
|||||||
import { useTunnels } from "../../context/tunnels";
|
import { useTunnels } from "../../context/tunnels";
|
||||||
import { useUIAppState } from "../../context/ui-appState";
|
import { useUIAppState } from "../../context/ui-appState";
|
||||||
import { t } from "../../i18n";
|
import { t } from "../../i18n";
|
||||||
import { useEditorInterface, useExcalidrawSetAppState } from "../App";
|
import { useDevice, useExcalidrawSetAppState } from "../App";
|
||||||
import { UserList } from "../UserList";
|
import { UserList } from "../UserList";
|
||||||
import DropdownMenu from "../dropdownMenu/DropdownMenu";
|
import DropdownMenu from "../dropdownMenu/DropdownMenu";
|
||||||
import { withInternalFallback } from "../hoc/withInternalFallback";
|
import { withInternalFallback } from "../hoc/withInternalFallback";
|
||||||
@@ -27,7 +27,7 @@ const MainMenu = Object.assign(
|
|||||||
onSelect?: (event: Event) => void;
|
onSelect?: (event: Event) => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { MainMenuTunnel } = useTunnels();
|
const { MainMenuTunnel } = useTunnels();
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const appState = useUIAppState();
|
const appState = useUIAppState();
|
||||||
const setAppState = useExcalidrawSetAppState();
|
const setAppState = useExcalidrawSetAppState();
|
||||||
|
|
||||||
@@ -53,24 +53,19 @@ const MainMenu = Object.assign(
|
|||||||
setAppState({ openMenu: null });
|
setAppState({ openMenu: null });
|
||||||
})}
|
})}
|
||||||
placement="bottom"
|
placement="bottom"
|
||||||
className={
|
className={device.editor.isMobile ? "main-menu-dropdown" : ""}
|
||||||
editorInterface.formFactor === "phone"
|
|
||||||
? "main-menu-dropdown"
|
|
||||||
: ""
|
|
||||||
}
|
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
{editorInterface.formFactor === "phone" &&
|
{device.editor.isMobile && appState.collaborators.size > 0 && (
|
||||||
appState.collaborators.size > 0 && (
|
<fieldset className="UserList-Wrapper">
|
||||||
<fieldset className="UserList-Wrapper">
|
<legend>{t("labels.collaborators")}</legend>
|
||||||
<legend>{t("labels.collaborators")}</legend>
|
<UserList
|
||||||
<UserList
|
mobile={true}
|
||||||
mobile={true}
|
collaborators={appState.collaborators}
|
||||||
collaborators={appState.collaborators}
|
userToFollow={appState.userToFollow?.socketId || null}
|
||||||
userToFollow={appState.userToFollow?.socketId || null}
|
/>
|
||||||
/>
|
</fieldset>
|
||||||
</fieldset>
|
)}
|
||||||
)}
|
|
||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</MainMenuTunnel.In>
|
</MainMenuTunnel.In>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { getShortcutFromShortcutName } from "../../actions/shortcuts";
|
|||||||
import { useTunnels } from "../../context/tunnels";
|
import { useTunnels } from "../../context/tunnels";
|
||||||
import { useUIAppState } from "../../context/ui-appState";
|
import { useUIAppState } from "../../context/ui-appState";
|
||||||
import { t, useI18n } from "../../i18n";
|
import { t, useI18n } from "../../i18n";
|
||||||
import { useEditorInterface, useExcalidrawActionManager } from "../App";
|
import { useDevice, useExcalidrawActionManager } from "../App";
|
||||||
import { ExcalidrawLogo } from "../ExcalidrawLogo";
|
import { ExcalidrawLogo } from "../ExcalidrawLogo";
|
||||||
import { HelpIcon, LoadIcon, usersIcon } from "../icons";
|
import { HelpIcon, LoadIcon, usersIcon } from "../icons";
|
||||||
|
|
||||||
@@ -18,12 +18,12 @@ const WelcomeScreenMenuItemContent = ({
|
|||||||
shortcut?: string | null;
|
shortcut?: string | null;
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}) => {
|
}) => {
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="welcome-screen-menu-item__icon">{icon}</div>
|
<div className="welcome-screen-menu-item__icon">{icon}</div>
|
||||||
<div className="welcome-screen-menu-item__text">{children}</div>
|
<div className="welcome-screen-menu-item__text">{children}</div>
|
||||||
{shortcut && editorInterface.formFactor !== "phone" && (
|
{shortcut && !device.editor.isMobile && (
|
||||||
<div className="welcome-screen-menu-item__shortcut">{shortcut}</div>
|
<div className="welcome-screen-menu-item__shortcut">{shortcut}</div>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
--zIndex-hyperlinkContainer: 7;
|
--zIndex-hyperlinkContainer: 7;
|
||||||
|
|
||||||
--zIndex-ui-bottom: 60;
|
--zIndex-ui-bottom: 60;
|
||||||
|
--zIndex-ui-library: 80;
|
||||||
--zIndex-ui-context-menu: 90;
|
--zIndex-ui-context-menu: 90;
|
||||||
--zIndex-ui-styles-popup: 100;
|
--zIndex-ui-styles-popup: 100;
|
||||||
--zIndex-ui-top: 100;
|
--zIndex-ui-top: 100;
|
||||||
--zIndex-ui-library: 120;
|
|
||||||
|
|
||||||
--zIndex-modal: 1000;
|
--zIndex-modal: 1000;
|
||||||
--zIndex-popup: 1001;
|
--zIndex-popup: 1001;
|
||||||
@@ -50,11 +50,6 @@ body.excalidraw-cursor-resize * {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
button {
|
|
||||||
// browser default. Looks kinda good on low-dpi.
|
|
||||||
font-size: 0.8333rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
button,
|
||||||
label {
|
label {
|
||||||
@include buttonNoHighlight;
|
@include buttonNoHighlight;
|
||||||
@@ -298,8 +293,7 @@ body.excalidraw-cursor-resize * {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.excalidraw-ui-top-left,
|
.excalidraw-ui-top-left {
|
||||||
.excalidraw-ui-top-right {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
@@ -713,11 +707,6 @@ body.excalidraw-cursor-resize * {
|
|||||||
margin-top: 0rem;
|
margin-top: 0rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.link-button {
|
|
||||||
display: flex;
|
|
||||||
text-decoration: none !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ErrorSplash.excalidraw {
|
.ErrorSplash.excalidraw {
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ import type { ImportedDataState, LegacyAppState } from "./types";
|
|||||||
|
|
||||||
type RestoredAppState = Omit<
|
type RestoredAppState = Omit<
|
||||||
AppState,
|
AppState,
|
||||||
"offsetTop" | "offsetLeft" | "width" | "height" | "scrollConstraints"
|
"offsetTop" | "offsetLeft" | "width" | "height"
|
||||||
>;
|
>;
|
||||||
|
|
||||||
export const AllowedExcalidrawActiveTools: Record<
|
export const AllowedExcalidrawActiveTools: Record<
|
||||||
@@ -304,6 +304,8 @@ export const restoreElement = (
|
|||||||
lastCommittedPoint: null,
|
lastCommittedPoint: null,
|
||||||
simulatePressure: element.simulatePressure,
|
simulatePressure: element.simulatePressure,
|
||||||
pressures: element.pressures,
|
pressures: element.pressures,
|
||||||
|
// legacy, for backwards compatibility
|
||||||
|
freedrawOptions: element.freedrawOptions ?? null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
case "image":
|
case "image":
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useState, useLayoutEffect } from "react";
|
|||||||
|
|
||||||
import { THEME } from "@excalidraw/common";
|
import { THEME } from "@excalidraw/common";
|
||||||
|
|
||||||
import { useEditorInterface, useExcalidrawContainer } from "../components/App";
|
import { useDevice, useExcalidrawContainer } from "../components/App";
|
||||||
import { useUIAppState } from "../context/ui-appState";
|
import { useUIAppState } from "../context/ui-appState";
|
||||||
|
|
||||||
export const useCreatePortalContainer = (opts?: {
|
export const useCreatePortalContainer = (opts?: {
|
||||||
@@ -11,7 +11,7 @@ export const useCreatePortalContainer = (opts?: {
|
|||||||
}) => {
|
}) => {
|
||||||
const [div, setDiv] = useState<HTMLDivElement | null>(null);
|
const [div, setDiv] = useState<HTMLDivElement | null>(null);
|
||||||
|
|
||||||
const editorInterface = useEditorInterface();
|
const device = useDevice();
|
||||||
const { theme } = useUIAppState();
|
const { theme } = useUIAppState();
|
||||||
|
|
||||||
const { container: excalidrawContainer } = useExcalidrawContainer();
|
const { container: excalidrawContainer } = useExcalidrawContainer();
|
||||||
@@ -20,13 +20,10 @@ export const useCreatePortalContainer = (opts?: {
|
|||||||
if (div) {
|
if (div) {
|
||||||
div.className = "";
|
div.className = "";
|
||||||
div.classList.add("excalidraw", ...(opts?.className?.split(/\s+/) || []));
|
div.classList.add("excalidraw", ...(opts?.className?.split(/\s+/) || []));
|
||||||
div.classList.toggle(
|
div.classList.toggle("excalidraw--mobile", device.editor.isMobile);
|
||||||
"excalidraw--mobile",
|
|
||||||
editorInterface.formFactor === "phone",
|
|
||||||
);
|
|
||||||
div.classList.toggle("theme--dark", theme === THEME.DARK);
|
div.classList.toggle("theme--dark", theme === THEME.DARK);
|
||||||
}
|
}
|
||||||
}, [div, theme, editorInterface.formFactor, opts?.className]);
|
}, [div, theme, device.editor.isMobile, opts?.className]);
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
const container = opts?.parentSelector
|
const container = opts?.parentSelector
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { EVENT } from "@excalidraw/common";
|
|||||||
export function useOutsideClick<T extends HTMLElement>(
|
export function useOutsideClick<T extends HTMLElement>(
|
||||||
ref: React.RefObject<T | null>,
|
ref: React.RefObject<T | null>,
|
||||||
/** if performance is of concern, memoize the callback */
|
/** if performance is of concern, memoize the callback */
|
||||||
callback: (event: Event & { target: T }) => void,
|
callback: (event: Event) => void,
|
||||||
/**
|
/**
|
||||||
* Optional callback which is called on every click.
|
* Optional callback which is called on every click.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ const canvas = exportToCanvas(
|
|||||||
offsetLeft: 0,
|
offsetLeft: 0,
|
||||||
width: 0,
|
width: 0,
|
||||||
height: 0,
|
height: 0,
|
||||||
scrollConstraints: null,
|
|
||||||
},
|
},
|
||||||
{}, // files
|
{}, // files
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ const ExcalidrawBase = (props: ExcalidrawProps) => {
|
|||||||
onScrollChange,
|
onScrollChange,
|
||||||
onDuplicate,
|
onDuplicate,
|
||||||
children,
|
children,
|
||||||
scrollConstraints,
|
|
||||||
validateEmbeddable,
|
validateEmbeddable,
|
||||||
renderEmbeddable,
|
renderEmbeddable,
|
||||||
aiEnabled,
|
aiEnabled,
|
||||||
@@ -125,10 +124,7 @@ const ExcalidrawBase = (props: ExcalidrawProps) => {
|
|||||||
renderTopLeftUI={renderTopLeftUI}
|
renderTopLeftUI={renderTopLeftUI}
|
||||||
renderTopRightUI={renderTopRightUI}
|
renderTopRightUI={renderTopRightUI}
|
||||||
langCode={langCode}
|
langCode={langCode}
|
||||||
viewModeEnabled={
|
viewModeEnabled={viewModeEnabled}
|
||||||
viewModeEnabled ??
|
|
||||||
(scrollConstraints != null ? !!scrollConstraints : undefined)
|
|
||||||
}
|
|
||||||
zenModeEnabled={zenModeEnabled}
|
zenModeEnabled={zenModeEnabled}
|
||||||
gridModeEnabled={gridModeEnabled}
|
gridModeEnabled={gridModeEnabled}
|
||||||
libraryReturnUrl={libraryReturnUrl}
|
libraryReturnUrl={libraryReturnUrl}
|
||||||
@@ -147,7 +143,6 @@ const ExcalidrawBase = (props: ExcalidrawProps) => {
|
|||||||
onPointerDown={onPointerDown}
|
onPointerDown={onPointerDown}
|
||||||
onPointerUp={onPointerUp}
|
onPointerUp={onPointerUp}
|
||||||
onScrollChange={onScrollChange}
|
onScrollChange={onScrollChange}
|
||||||
scrollConstraints={scrollConstraints}
|
|
||||||
onDuplicate={onDuplicate}
|
onDuplicate={onDuplicate}
|
||||||
validateEmbeddable={validateEmbeddable}
|
validateEmbeddable={validateEmbeddable}
|
||||||
renderEmbeddable={renderEmbeddable}
|
renderEmbeddable={renderEmbeddable}
|
||||||
@@ -256,7 +251,7 @@ export {
|
|||||||
loadSceneOrLibraryFromBlob,
|
loadSceneOrLibraryFromBlob,
|
||||||
loadLibraryFromBlob,
|
loadLibraryFromBlob,
|
||||||
} from "./data/blob";
|
} from "./data/blob";
|
||||||
export { getFreeDrawSvgPath } from "@excalidraw/element";
|
export { getFreeDrawSvgPath } from "@excalidraw/element/freedraw";
|
||||||
export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
|
export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
|
||||||
export { isLinearElement } from "@excalidraw/element";
|
export { isLinearElement } from "@excalidraw/element";
|
||||||
|
|
||||||
@@ -268,9 +263,6 @@ export {
|
|||||||
DEFAULT_LASER_COLOR,
|
DEFAULT_LASER_COLOR,
|
||||||
UserIdleState,
|
UserIdleState,
|
||||||
normalizeLink,
|
normalizeLink,
|
||||||
sceneCoordsToViewportCoords,
|
|
||||||
viewportCoordsToSceneCoords,
|
|
||||||
getFormFactor,
|
|
||||||
} from "@excalidraw/common";
|
} from "@excalidraw/common";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
@@ -283,12 +275,17 @@ export { CaptureUpdateAction } from "@excalidraw/element";
|
|||||||
|
|
||||||
export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library";
|
export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library";
|
||||||
|
|
||||||
|
export {
|
||||||
|
sceneCoordsToViewportCoords,
|
||||||
|
viewportCoordsToSceneCoords,
|
||||||
|
} from "@excalidraw/common";
|
||||||
|
|
||||||
export { Sidebar } from "./components/Sidebar/Sidebar";
|
export { Sidebar } from "./components/Sidebar/Sidebar";
|
||||||
export { Button } from "./components/Button";
|
export { Button } from "./components/Button";
|
||||||
export { Footer };
|
export { Footer };
|
||||||
export { MainMenu };
|
export { MainMenu };
|
||||||
export { Ellipsify } from "./components/Ellipsify";
|
export { Ellipsify } from "./components/Ellipsify";
|
||||||
export { useEditorInterface, useStylesPanelMode } from "./components/App";
|
export { useDevice } from "./components/App";
|
||||||
export { WelcomeScreen };
|
export { WelcomeScreen };
|
||||||
export { LiveCollaborationTrigger };
|
export { LiveCollaborationTrigger };
|
||||||
export { Stats } from "./components/Stats";
|
export { Stats } from "./components/Stats";
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "نسخ إلى الحافظة بصيغة PNG",
|
"copyAsPng": "نسخ إلى الحافظة بصيغة PNG",
|
||||||
"copyAsSvg": "نسخ إلى الحافظة بصيغة SVG",
|
"copyAsSvg": "نسخ إلى الحافظة بصيغة SVG",
|
||||||
"copyText": "نسخ إلى الحافظة كنص",
|
"copyText": "نسخ إلى الحافظة كنص",
|
||||||
"copySource": "نسخ المصدر إلى الحافظة",
|
"copySource": "",
|
||||||
"convertToCode": "تحويل إلى كود",
|
"convertToCode": "",
|
||||||
"bringForward": "جلب للأمام",
|
"bringForward": "جلب للأمام",
|
||||||
"sendToBack": "أرسل للخلف",
|
"sendToBack": "أرسل للخلف",
|
||||||
"bringToFront": "أحضر للأمام",
|
"bringToFront": "أحضر للأمام",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "نسخ الأنماط",
|
"copyStyles": "نسخ الأنماط",
|
||||||
"pasteStyles": "لصق الأنماط",
|
"pasteStyles": "لصق الأنماط",
|
||||||
"stroke": "الخط",
|
"stroke": "الخط",
|
||||||
"changeStroke": "تغيير لون القلم",
|
|
||||||
"background": "الخلفية",
|
"background": "الخلفية",
|
||||||
"changeBackground": "تغيير لون الخلفية",
|
|
||||||
"fill": "التعبئة",
|
"fill": "التعبئة",
|
||||||
"strokeWidth": "سُمك الخط",
|
"strokeWidth": "سُمك الخط",
|
||||||
"strokeStyle": "نمط الخط",
|
"strokeStyle": "نمط الخط",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "لا شيء",
|
"arrowhead_none": "لا شيء",
|
||||||
"arrowhead_arrow": "سهم",
|
"arrowhead_arrow": "سهم",
|
||||||
"arrowhead_bar": "شريط",
|
"arrowhead_bar": "شريط",
|
||||||
"arrowhead_circle": "دائرة",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "دائرة (مخططة)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "مثلث",
|
"arrowhead_triangle": "مثلث",
|
||||||
"arrowhead_triangle_outline": "مثلث (مخطط)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "ألماسة",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "ألماسة (مخططة)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "Crow's foot (many)",
|
|
||||||
"arrowhead_crowfoot_one": "Crow's foot (one)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Crow's foot (one or many)",
|
|
||||||
"more_options": "خيارات إضافية",
|
|
||||||
"arrowtypes": "نوع السهم",
|
|
||||||
"arrowtype_sharp": "سهم حاد",
|
|
||||||
"arrowtype_round": "سهم منحني",
|
|
||||||
"arrowtype_elbowed": "سهم زاوي",
|
|
||||||
"fontSize": "حجم الخط",
|
"fontSize": "حجم الخط",
|
||||||
"fontFamily": "نوع الخط",
|
"fontFamily": "نوع الخط",
|
||||||
"addWatermark": "إضافة \"مصنوعة بواسطة Excalidraw\"",
|
"addWatermark": "إضافة \"مصنوعة بواسطة Excalidraw\"",
|
||||||
@@ -63,7 +53,7 @@
|
|||||||
"small": "صغير",
|
"small": "صغير",
|
||||||
"medium": "متوسط",
|
"medium": "متوسط",
|
||||||
"large": "كبير",
|
"large": "كبير",
|
||||||
"veryLarge": "كبير جدًا",
|
"veryLarge": "كبير جدا",
|
||||||
"solid": "كامل",
|
"solid": "كامل",
|
||||||
"hachure": "خطوط",
|
"hachure": "خطوط",
|
||||||
"zigzag": "متعرج",
|
"zigzag": "متعرج",
|
||||||
@@ -77,12 +67,11 @@
|
|||||||
"architect": "معماري",
|
"architect": "معماري",
|
||||||
"artist": "رسام",
|
"artist": "رسام",
|
||||||
"cartoonist": "كرتوني",
|
"cartoonist": "كرتوني",
|
||||||
"fileTitle": "اسم الملف",
|
"fileTitle": "إسم الملف",
|
||||||
"colorPicker": "منتقي اللون",
|
"colorPicker": "منتقي اللون",
|
||||||
"canvasColors": "تستخدم على القماش",
|
"canvasColors": "تستخدم على القماش",
|
||||||
"canvasBackground": "خلفية اللوحة",
|
"canvasBackground": "خلفية اللوحة",
|
||||||
"drawingCanvas": "لوحة الرسم",
|
"drawingCanvas": "لوحة الرسم",
|
||||||
"clearCanvas": "مسح اللوحة",
|
|
||||||
"layers": "الطبقات",
|
"layers": "الطبقات",
|
||||||
"actions": "الإجراءات",
|
"actions": "الإجراءات",
|
||||||
"language": "اللغة",
|
"language": "اللغة",
|
||||||
@@ -95,31 +84,28 @@
|
|||||||
"group": "تحديد مجموعة",
|
"group": "تحديد مجموعة",
|
||||||
"ungroup": "إلغاء تحديد مجموعة",
|
"ungroup": "إلغاء تحديد مجموعة",
|
||||||
"collaborators": "المتعاونون",
|
"collaborators": "المتعاونون",
|
||||||
"toggleGrid": "تبديل الشبكة",
|
"showGrid": "إظهار الشبكة",
|
||||||
"addToLibrary": "أضف إلى المكتبة",
|
"addToLibrary": "أضف إلى المكتبة",
|
||||||
"removeFromLibrary": "حذف من المكتبة",
|
"removeFromLibrary": "حذف من المكتبة",
|
||||||
"libraryLoadingMessage": "جارٍ تحميل المكتبة...",
|
"libraryLoadingMessage": "جارٍ تحميل المكتبة…",
|
||||||
"libraries": "تصفح المكتبات",
|
"libraries": "تصفح المكتبات",
|
||||||
"loadingScene": "جارٍ تحميل المشهد…",
|
"loadingScene": "جاري تحميل المشهد…",
|
||||||
"loadScene": "تحميل المشهد من ملف",
|
|
||||||
"align": "محاذاة",
|
"align": "محاذاة",
|
||||||
"alignTop": "محاذاة إلى الأعلى",
|
"alignTop": "محاذاة إلى اﻷعلى",
|
||||||
"alignBottom": "محاذاة إلى الأسفل",
|
"alignBottom": "محاذاة إلى اﻷسفل",
|
||||||
"alignLeft": "محاذاة إلى اليسار",
|
"alignLeft": "محاذاة إلى اليسار",
|
||||||
"alignRight": "محاذاة إلى اليمين",
|
"alignRight": "محاذاة إلى اليمين",
|
||||||
"centerVertically": "توسيط عمودي",
|
"centerVertically": "توسيط عمودي",
|
||||||
"centerHorizontally": "توسيط أفقي",
|
"centerHorizontally": "توسيط أفقي",
|
||||||
"distributeHorizontally": "التوزيع الأفقي",
|
"distributeHorizontally": "التوزيع الأفقي",
|
||||||
"distributeVertically": "التوزيع عموديًا",
|
"distributeVertically": "التوزيع عمودياً",
|
||||||
"flipHorizontal": "قلب أفقي",
|
"flipHorizontal": "قلب عامودي",
|
||||||
"flipVertical": "قلب عمودي",
|
"flipVertical": "قلب أفقي",
|
||||||
"viewMode": "نمط العرض",
|
"viewMode": "نمط العرض",
|
||||||
"share": "مشاركة",
|
"share": "مشاركة",
|
||||||
"showStroke": "إظهار منتقي لون الخط",
|
"showStroke": "إظهار منتقي لون الخط",
|
||||||
"showBackground": "إظهار منتقي لون الخلفية",
|
"showBackground": "إظهار منتقي لون الخلفية",
|
||||||
"showFonts": "إظهار منتقي الخط",
|
"toggleTheme": "غير النمط",
|
||||||
"toggleTheme": "تبديل الوضع الفاتح/الداكن",
|
|
||||||
"theme": "السمة",
|
|
||||||
"personalLib": "المكتبة الشخصية",
|
"personalLib": "المكتبة الشخصية",
|
||||||
"excalidrawLib": "مكتبتنا",
|
"excalidrawLib": "مكتبتنا",
|
||||||
"decreaseFontSize": "تصغير حجم الخط",
|
"decreaseFontSize": "تصغير حجم الخط",
|
||||||
@@ -129,21 +115,16 @@
|
|||||||
"createContainerFromText": "نص مغلف في حاوية",
|
"createContainerFromText": "نص مغلف في حاوية",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "تعديل الرابط",
|
"edit": "تعديل الرابط",
|
||||||
"editEmbed": "تعديل الرابط القابل للتضمين",
|
"editEmbed": "تحرير الرابط وإدراجه",
|
||||||
"create": "إضافة رابط",
|
"create": "إنشاء رابط",
|
||||||
|
"createEmbed": "إنشاء رابط و إدراجه",
|
||||||
"label": "رابط",
|
"label": "رابط",
|
||||||
"labelEmbed": "رابط وإدراج",
|
"labelEmbed": "رابط و إدراج",
|
||||||
"empty": "لم يتم تعيين رابط",
|
"empty": "لم يتم تعيين رابط"
|
||||||
"hint": "اكتب أو الصق الرابط هنا",
|
|
||||||
"goToElement": "الانتقال إلى العنصر المستهدف"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "تحرير السطر",
|
"edit": "تحرير السطر",
|
||||||
"editArrow": "تحرير السهم"
|
"exit": "الخروج من المُحرر"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "قفل",
|
"lock": "قفل",
|
||||||
@@ -156,47 +137,13 @@
|
|||||||
"selectAllElementsInFrame": "تحديد جميع العناصر في الإطار",
|
"selectAllElementsInFrame": "تحديد جميع العناصر في الإطار",
|
||||||
"removeAllElementsFromFrame": "إزالة جميع العناصر من الإطار",
|
"removeAllElementsFromFrame": "إزالة جميع العناصر من الإطار",
|
||||||
"eyeDropper": "اختيار اللون من القماش",
|
"eyeDropper": "اختيار اللون من القماش",
|
||||||
"textToDiagram": "نص إلى رسم بياني",
|
"textToDiagram": "",
|
||||||
"prompt": "تعليمات",
|
"prompt": ""
|
||||||
"followUs": "تابعنا",
|
|
||||||
"discordChat": "دردشة ديسكورد",
|
|
||||||
"zoomToFitViewport": "التكبير لتناسب العرض",
|
|
||||||
"zoomToFitSelection": "تكبير للعنصر المحدد",
|
|
||||||
"zoomToFit": "تكبير لتلائم جميع العناصر",
|
|
||||||
"installPWA": "تثبيت Excalidraw محليًا (PWA)",
|
|
||||||
"autoResize": "تمكين تغيير حجم النص تلقائيًا",
|
|
||||||
"imageCropping": "قص الصورة",
|
|
||||||
"unCroppedDimension": "الأبعاد غير المقصوصة",
|
|
||||||
"copyElementLink": "نسخ رابط الكائن",
|
|
||||||
"linkToElement": "رابط إلى الكائن",
|
|
||||||
"wrapSelectionInFrame": "تغليف التحديد في إطار",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "رابط إلى الكائن",
|
|
||||||
"desc": "انقر على شكل على اللوحة أو الصق رابطًا.",
|
|
||||||
"notFound": "لم يتم العثور على الكائن المرتبط على اللوحة."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "لا توجد عناصر أضيفت بعد...",
|
"noItems": "لا توجد عناصر أضيفت بعد...",
|
||||||
"hint_emptyLibrary": "حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",
|
"hint_emptyLibrary": "حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",
|
||||||
"hint_emptyPrivateLibrary": "حدد عنصر على القماش لإضافته هنا.",
|
"hint_emptyPrivateLibrary": "حدد عنصر على القماش لإضافته هنا."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "البحث على اللوحة",
|
|
||||||
"noMatch": "لم يتم العثور على تطابقات...",
|
|
||||||
"singleResult": "نتيجة",
|
|
||||||
"multipleResults": "نتائج",
|
|
||||||
"placeholder": "ابحث عن نص على اللوحة...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "إعادة تعيين اللوحة",
|
"clearReset": "إعادة تعيين اللوحة",
|
||||||
@@ -204,17 +151,16 @@
|
|||||||
"exportImage": "تصدير الصورة...",
|
"exportImage": "تصدير الصورة...",
|
||||||
"export": "حفظ إلى...",
|
"export": "حفظ إلى...",
|
||||||
"copyToClipboard": "نسخ إلى الحافظة",
|
"copyToClipboard": "نسخ إلى الحافظة",
|
||||||
"copyLink": "نسخ الرابط",
|
|
||||||
"save": "احفظ للملف الحالي",
|
"save": "احفظ للملف الحالي",
|
||||||
"saveAs": "حفظ كـ",
|
"saveAs": "حفظ كـ",
|
||||||
"load": "فتح",
|
"load": "فتح",
|
||||||
"getShareableLink": "احصل على رابط المشاركة",
|
"getShareableLink": "احصل على رابط المشاركة",
|
||||||
"close": "إغلاق",
|
"close": "غلق",
|
||||||
"selectLanguage": "اختر اللغة",
|
"selectLanguage": "اختر اللغة",
|
||||||
"scrollBackToContent": "الرجوع إلى المحتوى",
|
"scrollBackToContent": "الرجوع إلى المحتوى",
|
||||||
"zoomIn": "تكبير",
|
"zoomIn": "تكبير",
|
||||||
"zoomOut": "تصغير",
|
"zoomOut": "تصغير",
|
||||||
"resetZoom": "إعادة تعيين التكبير",
|
"resetZoom": "إعادة تعيين الشاشة",
|
||||||
"menu": "القائمة",
|
"menu": "القائمة",
|
||||||
"done": "تم",
|
"done": "تم",
|
||||||
"edit": "تعديل",
|
"edit": "تعديل",
|
||||||
@@ -225,56 +171,53 @@
|
|||||||
"fullScreen": "شاشة كاملة",
|
"fullScreen": "شاشة كاملة",
|
||||||
"darkMode": "الوضع المظلم",
|
"darkMode": "الوضع المظلم",
|
||||||
"lightMode": "الوضع المضيء",
|
"lightMode": "الوضع المضيء",
|
||||||
"systemMode": "وضع النظام",
|
|
||||||
"zenMode": "وضع التأمل",
|
"zenMode": "وضع التأمل",
|
||||||
"objectsSnapMode": "التقاط إلى العناصر",
|
"objectsSnapMode": "التقط إلى العناصر",
|
||||||
"exitZenMode": "إلغاء وضع التأمل",
|
"exitZenMode": "إلغاء الوضع الليلى",
|
||||||
"cancel": "إلغاء",
|
"cancel": "إلغاء",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "مسح",
|
"clear": "مسح",
|
||||||
"remove": "إزالة",
|
"remove": "إزالة",
|
||||||
"embed": "تبديل الإدراج",
|
"embed": "تبديل الإدراج",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "انشر",
|
||||||
"submit": "إرسال",
|
"submit": "أرسل",
|
||||||
"confirm": "تأكيد",
|
"confirm": "تأكيد",
|
||||||
"embeddableInteractionButton": "اضغط للتفاعل"
|
"embeddableInteractionButton": "اضغط للتفاعل"
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",
|
"clearReset": "هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",
|
||||||
"couldNotCreateShareableLink": "تعذر إنشاء رابط المشاركة.",
|
"couldNotCreateShareableLink": "تعذر إنشاء رابطة المشاركة.",
|
||||||
"couldNotCreateShareableLinkTooBig": "تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",
|
"couldNotCreateShareableLinkTooBig": "تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",
|
||||||
"couldNotLoadInvalidFile": "تعذر التحميل، الملف غير صالح",
|
"couldNotLoadInvalidFile": "تعذر التحميل، الملف غير صالح",
|
||||||
"importBackendFailed": "فشل الاستيراد من الخادم.",
|
"importBackendFailed": "فشل الاستيراد من الخادوم.",
|
||||||
"cannotExportEmptyCanvas": "لا يمكن تصدير لوحة فارغة.",
|
"cannotExportEmptyCanvas": "لا يمكن تصدير لوحة فارغة.",
|
||||||
"couldNotCopyToClipboard": "تعذر النسخ إلى الحافظة.",
|
"couldNotCopyToClipboard": "تعذر النسخ إلى الحافظة.",
|
||||||
"decryptFailed": "تعذر فك تشفير البيانات.",
|
"decryptFailed": "تعذر فك تشفير البيانات.",
|
||||||
"uploadedSecurly": "تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",
|
"uploadedSecurly": "تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",
|
||||||
"loadSceneOverridePrompt": "تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",
|
"loadSceneOverridePrompt": "تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",
|
||||||
"collabStopOverridePrompt": "إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليًا. هل أنت متأكد؟\n\n(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليًا، أغلق علامة تبويب المتصفح بدلاً من ذلك.)",
|
"collabStopOverridePrompt": "إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟\n\n(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)",
|
||||||
"errorAddingToLibrary": "تعذر إضافة العنصر إلى المكتبة",
|
"errorAddingToLibrary": "تعذر إضافة العنصر للمكتبة",
|
||||||
"errorRemovingFromLibrary": "تعذر إزالة العنصر من المكتبة",
|
"errorRemovingFromLibrary": "تعذر إزالة العنصر من المكتبة",
|
||||||
"confirmAddLibrary": "هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟",
|
"confirmAddLibrary": "هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟",
|
||||||
"imageDoesNotContainScene": "يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟",
|
"imageDoesNotContainScene": "يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟",
|
||||||
"cannotRestoreFromImage": "تعذر استعادة المشهد من ملف الصورة",
|
"cannotRestoreFromImage": "تعذر استعادة المشهد من ملف الصورة",
|
||||||
"invalidSceneUrl": "تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.",
|
"invalidSceneUrl": "تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.",
|
||||||
"resetLibrary": "هذا سيؤدي إلى مسح مكتبتك. هل أنت متأكد؟",
|
"resetLibrary": "هذا سوف يمسح مكتبتك. هل أنت متأكد؟",
|
||||||
"removeItemsFromsLibrary": "حذف {{count}} عنصر (عناصر) من المكتبة؟",
|
"removeItemsFromsLibrary": "حذف {{count}} عنصر (عناصر) من المكتبة؟",
|
||||||
"invalidEncryptionKey": "مفتاح التشفير يجب أن يكون من 22 حرفًا. التعاون المباشر معطل.",
|
"invalidEncryptionKey": "مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.",
|
||||||
"collabOfflineWarning": "لا يوجد اتصال بالإنترنت.\nلن يتم حفظ التغييرات التي قمت بها!",
|
"collabOfflineWarning": "لا يوجد اتصال بالانترنت.\nلن يتم حفظ التغييرات التي قمت بها!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "نوع الملف غير مدعوم.",
|
"unsupportedFileType": "نوع الملف غير مدعوم.",
|
||||||
"imageInsertError": "تعذر إدراج الصورة. حاول مرة أخرى لاحقًا...",
|
"imageInsertError": "تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...",
|
||||||
"fileTooBig": "الملف كبير جدًا. الحد الأقصى المسموح به للحجم هو {{maxSize}}.",
|
"fileTooBig": "الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.",
|
||||||
"svgImageInsertError": "تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.",
|
"svgImageInsertError": "تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.",
|
||||||
"failedToFetchImage": "فشل تحميل الصورة.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "SVG غير صالح.",
|
||||||
"cannotResolveCollabServer": "تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.",
|
"cannotResolveCollabServer": "تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.",
|
||||||
"importLibraryError": "تعذر تحميل المكتبة",
|
"importLibraryError": "تعذر تحميل المكتبة",
|
||||||
"saveLibraryError": "تعذر حفظ المكتبة. الرجاء حفظ المكتبة الخاصة بك في ملف محلي للتأكد من أنك لا تفقد التغييرات.",
|
"collabSaveFailed": "تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.",
|
||||||
"collabSaveFailed": "تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يُفضل حفظ ملفك محليًا كي لا تفقد عملك.",
|
"collabSaveFailed_sizeExceeded": "تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.",
|
||||||
"collabSaveFailed_sizeExceeded": "تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يُفضل حفظ الملف محليًا كي لا تفقد عملك.",
|
"imageToolNotSupported": "",
|
||||||
"imageToolNotSupported": "تم تعطيل الصور.",
|
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.",
|
"line1": "يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.",
|
||||||
"line2": "قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.",
|
"line2": "قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.",
|
||||||
@@ -283,16 +226,15 @@
|
|||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.",
|
"embeddable": "لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.",
|
||||||
"iframe": "لا يمكن إضافة عناصر IFrame إلى المكتبة.",
|
"iframe": "",
|
||||||
"image": "سيتم دعم إضافة صور إلى المكتبة قريبًا!"
|
"image": "سوف يتم دعم إضافة صور إلى المكتبة قريباً!"
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "تعذر اللصق (تعذر القراءة من حافظة النظام).",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "تعذر اللصق.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": "تعذر النسخ إلى الحافظة."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "تحديد",
|
"selection": "تحديد",
|
||||||
"lasso": "",
|
|
||||||
"image": "إدراج صورة",
|
"image": "إدراج صورة",
|
||||||
"rectangle": "مستطيل",
|
"rectangle": "مستطيل",
|
||||||
"diamond": "مضلع",
|
"diamond": "مضلع",
|
||||||
@@ -303,33 +245,17 @@
|
|||||||
"text": "نص",
|
"text": "نص",
|
||||||
"library": "مكتبة",
|
"library": "مكتبة",
|
||||||
"lock": "الحفاظ على أداة التحديد نشطة بعد الرسم",
|
"lock": "الحفاظ على أداة التحديد نشطة بعد الرسم",
|
||||||
"penMode": "وضع القلم - منع اللمس",
|
"penMode": "وضع القلم - امنع اللمس",
|
||||||
"link": "إضافة/تحديث الرابط للشكل المحدد",
|
"link": "إضافة/تحديث الرابط للشكل المحدد",
|
||||||
"eraser": "ممحاة",
|
"eraser": "ممحاة",
|
||||||
"frame": "أداة الإطار",
|
"frame": "أداة الإطار",
|
||||||
"magicframe": "Wireframe إلى كود",
|
"magicframe": "",
|
||||||
"embeddable": "تضمين ويب",
|
"embeddable": "تضمين ويب",
|
||||||
"laser": "مؤشر ليزر",
|
"laser": "مؤشر ليزر",
|
||||||
"hand": "يد (أداة الإزاحة)",
|
"hand": "يد (أداة الإزاحة)",
|
||||||
"extraTools": "المزيد من الأدوات",
|
"extraTools": "المزيد من أﻷدوات",
|
||||||
"mermaidToExcalidraw": "من Mermaid إلى Excalidraw",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "مستطيل",
|
|
||||||
"diamond": "مضلع",
|
|
||||||
"ellipse": "دائرة",
|
|
||||||
"arrow": "سهم",
|
|
||||||
"line": "خط",
|
|
||||||
"freedraw": "رسم حر",
|
|
||||||
"text": "نص",
|
|
||||||
"image": "صورة",
|
|
||||||
"group": "مجموعة",
|
|
||||||
"frame": "إطار",
|
|
||||||
"magicframe": "Wireframe إلى كود",
|
|
||||||
"embeddable": "تضمين ويب",
|
|
||||||
"selection": "تحديد",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "إجراءات اللوحة",
|
"canvasActions": "إجراءات اللوحة",
|
||||||
@@ -337,115 +263,103 @@
|
|||||||
"shapes": "الأشكال"
|
"shapes": "الأشكال"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "انقر لبدء نقاط متعددة، اسحب لخط واحد",
|
"linearElement": "انقر لبدء نقاط متعددة، اسحب لخط واحد",
|
||||||
"arrowTool": "",
|
"freeDraw": "انقر واسحب، افرج عند الانتهاء",
|
||||||
"freeDraw": "انقر واسحب، أفرج عند الانتهاء",
|
|
||||||
"text": "نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار",
|
"text": "نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار",
|
||||||
"embeddable": "اضغط مع السحب لإنشاء موقع ويب مضمّن",
|
"embeddable": "اضغط مع السحب لإنشاء موقع ويب مضمّن",
|
||||||
"text_selected": "",
|
"text_selected": "انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص",
|
||||||
"text_editing": "",
|
"text_editing": "اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء",
|
||||||
"lockAngle": "",
|
"lockAngle": "يمكنك تقييد الزاوية بالضغط على SHIFT",
|
||||||
"resize": "",
|
"resize": "يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،\nاضغط على ALT لتغيير الحجم من المركز",
|
||||||
"resizeImage": "",
|
"resizeImage": "يمكنك تغيير الحجم بحرية بالضغط بأستمرار على SHIFT،\nاضغط بأستمرار على ALT أيضا لتغيير الحجم من المركز",
|
||||||
"rotate": "",
|
"rotate": "يمكنك تقييد الزوايا من خلال الضغط على SHIFT أثناء الدوران",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "اضغط على مفتاح (Ctrl أو Cmd) و انقر بشكل مزدوج، أو اضغط على مفتاحي (Ctrl أو Cmd) و (Enter) لتعديل النقاط",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "اضغط على حذف لإزالة النقطة (النِّقَاط)، Ctrl/Cmd+D للتكرار، أو اسحب للانتقال",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "اختر نقطة لتعديلها (اضغط على SHIFT لتحديد عدة نِقَاط),\nأو اضغط على ALT و انقر بالفأرة لإضافة نِقَاط جديدة",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "انقر لوضع الصورة، أو انقر واسحب لتعيين حجمها يدوياً",
|
||||||
"publishLibrary": "نشر مكتبتك",
|
"publishLibrary": "نشر مكتبتك",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "اضغط على إدخال لإضافة نص",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "اضغط على Ctrl\\Cmd للاختيار العميق، ولمنع السحب",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "اضغط على Alt لاستعادة العناصر المعلَّمة للحذف",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم \"dom.events.asyncClipboard.clipboardItem\" إلى \"true\". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة \"about:config\".",
|
"firefox_clipboard_write": "يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم \"dom.events.asyncClipboard.clipboardItem\" إلى \"true\". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": "اضغط على Ctrl أو Cmd لتعطيل الالتقاط"
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "تعذر عرض المعاينة",
|
"cannotShowPreview": "تعذر عرض المعاينة",
|
||||||
"canvasTooBig": "قد تكون اللوحة كبيرة جدًا.",
|
"canvasTooBig": "قد تكون اللوحة كبيرة جداً.",
|
||||||
"canvasTooBigTip": "نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً."
|
"canvasTooBigTip": "نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً."
|
||||||
},
|
},
|
||||||
"errorSplash": {
|
"errorSplash": {
|
||||||
"headingMain": "حدث خطأ. حاول <button>تحديث الصفحة</button>.",
|
"headingMain": "حدث خطأ. حاول <button>تحديث الصفحة</button>.",
|
||||||
"clearCanvasMessage": "إذا لم تعمل إعادة التحميل، حاول مرة أخرى ",
|
"clearCanvasMessage": "إذا لم تعمل إعادة التحميل، حاول مرة أخرى ",
|
||||||
"clearCanvasCaveat": "هذا سيؤدي إلى فقدان العمل",
|
"clearCanvasCaveat": " هذا سيؤدي إلى فقدان العمل ",
|
||||||
"trackedToSentry": "تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.",
|
"trackedToSentry": "تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.",
|
||||||
"openIssueMessage": "حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة، نرجو المتابعة على <button>نظام تتبع الأخطاء</button>. نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.",
|
"openIssueMessage": "حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة نرجو المتابعة على <button>نظام تتبع الأخطاء</button>. نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.",
|
||||||
"sceneContent": "محتوى المشهد:"
|
"sceneContent": "محتوى المشهد:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "أو"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "ادعُ الأشخاص للتعاون في الرسم الخاص بك.",
|
"desc_intro": "يمكنك دعوة الآخرين لمشاركتك نفس الجلسة التي تعمل عليها.",
|
||||||
"desc_privacy": "لا تقلق، الجلسة مشفرة من النهاية إلى النهاية وخصوصية تمامًا. حتى خادمنا لا يستطيع رؤية ما ترسمه.",
|
"desc_privacy": "لا تقلق، الجلسة تستخدم التشفير من النهاية إلى النهاية، لذلك فإن أي شيء ترسمه سيبقى خاصاً. لن يتمكن حتى الخادوم الخاص بنا من رؤية ما توصلت إليه.",
|
||||||
"button_startSession": "بدء الجلسة",
|
"button_startSession": "بدء الجلسة",
|
||||||
"button_stopSession": "إيقاف الجلسة",
|
"button_stopSession": "إيقاف الجلسة",
|
||||||
"desc_inProgressIntro": "تجري الآن جلسة تعاون مباشرة.",
|
"desc_inProgressIntro": "تجري الآن المشاركة الحية.",
|
||||||
"desc_shareLink": "شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:",
|
"desc_shareLink": "شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:",
|
||||||
"desc_exitSession": "إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد محليًا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، وسيظلون قادرين على التعاون في إصدارهم.",
|
"desc_exitSession": "إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد، محليا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، و سيظلون قادرين على التعاون في إصدارهم.",
|
||||||
"shareTitle": "الانضمام إلى جلسة تعاون مباشرة على Excalidraw"
|
"shareTitle": "الانضمام إلى جلسة تعاون حية على Excalidraw"
|
||||||
},
|
},
|
||||||
"errorDialog": {
|
"errorDialog": {
|
||||||
"title": "خطأ"
|
"title": "خطأ"
|
||||||
},
|
},
|
||||||
"exportDialog": {
|
"exportDialog": {
|
||||||
"disk_title": "حفظ الملف على الجهاز",
|
"disk_title": "حفظ الملف للجهاز",
|
||||||
"disk_details": "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقًا.",
|
"disk_details": "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً.",
|
||||||
"disk_button": "حفظ إلى ملف",
|
"disk_button": "إحفظ لملف",
|
||||||
"link_title": "رابط قابل للمشاركة",
|
"link_title": "رابط قابل للمشاركة",
|
||||||
"link_details": "تصدير الملف للمشاهدة فقط.",
|
"link_details": "صدر الملف للمشاهدة فقط.",
|
||||||
"link_button": "تصدير كرابط",
|
"link_button": "التصدير كرابط",
|
||||||
"excalidrawplus_description": "حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.",
|
"excalidrawplus_description": "حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.",
|
||||||
"excalidrawplus_button": "تصدير",
|
"excalidrawplus_button": "تصدير",
|
||||||
"excalidrawplus_exportError": "تعذر التص несп في الوقت الحالي إلى +Excalidraw..."
|
"excalidrawplus_exportError": "تعذر التصدير إلى +Excalidraw في الوقت الحالي..."
|
||||||
},
|
},
|
||||||
"helpDialog": {
|
"helpDialog": {
|
||||||
"blog": "اقرأ مدونتنا",
|
"blog": "اقرأ مدونتنا",
|
||||||
"click": "انقر",
|
"click": "انقر",
|
||||||
"deepSelect": "تحديد عميق",
|
"deepSelect": "تحديد عميق",
|
||||||
"deepBoxSelect": "تحديد عميق داخل المربع، ومنع السحب",
|
"deepBoxSelect": "تحديد عميق داخل المربع، ومنع السحب",
|
||||||
"createFlowchart": "إنشاء مخطط تدفق من عنصر عام",
|
"curvedArrow": "سهم مائل",
|
||||||
"navigateFlowchart": "التنقل في مخطط تدفق",
|
"curvedLine": "خط مائل",
|
||||||
"curvedArrow": "سهم منحني",
|
|
||||||
"curvedLine": "خط منحني",
|
|
||||||
"documentation": "دليل الاستخدام",
|
"documentation": "دليل الاستخدام",
|
||||||
"doubleClick": "انقر مرتين",
|
"doubleClick": "انقر مرتين",
|
||||||
"drag": "اسحب",
|
"drag": "اسحب",
|
||||||
"editor": "المحرر",
|
"editor": "المحرر",
|
||||||
"editLineArrowPoints": "تحرير نقاط السطر/السهم",
|
"editLineArrowPoints": "تحرير سطر/نقاط سهم",
|
||||||
"editText": "تعديل النص / إضافة تسمية",
|
"editText": "تعديل النص / إضافة تسمية",
|
||||||
"github": "عثرت على مشكلة؟ أرسل",
|
"github": "عثرت على مشكلة؟ إرسال",
|
||||||
"howto": "اتبع التعليمات",
|
"howto": "اتبع التعليمات",
|
||||||
"or": "أو",
|
"or": "أو",
|
||||||
"preventBinding": "منع ارتباط السهم",
|
"preventBinding": "منع ارتبط السهم",
|
||||||
"tools": "الأدوات",
|
"tools": "الأدوات",
|
||||||
"shortcuts": "اختصارات لوحة المفاتيح",
|
"shortcuts": "اختصارات لوحة المفاتيح",
|
||||||
"textFinish": "إنهاء التعديل (محرر النص)",
|
"textFinish": "إنهاء التعديل (محرر النص)",
|
||||||
"textNewLine": "إضافة سطر جديد (محرر النص)",
|
"textNewLine": "أضف سطر جديد (محرر نص)",
|
||||||
"title": "المساعدة",
|
"title": "المساعدة",
|
||||||
"view": "عرض",
|
"view": "عرض",
|
||||||
"zoomToFit": "تكبير للملائمة",
|
"zoomToFit": "تكبير للملائمة",
|
||||||
"zoomToSelection": "تكبير للعنصر المحدد",
|
"zoomToSelection": "تكبير للعنصر المحدد",
|
||||||
"toggleElementLock": "قفل/فتح المحدد",
|
"toggleElementLock": "إغلاق/فتح المحدد",
|
||||||
"movePageUpDown": "نقل الصفحة أعلى/أسفل",
|
"movePageUpDown": "نقل الصفحة أعلى/أسفل",
|
||||||
"movePageLeftRight": "نقل الصفحة يسار/يمين",
|
"movePageLeftRight": "نقل الصفحة يسار/يمين"
|
||||||
"cropStart": "بدء قص الصورة",
|
|
||||||
"cropFinish": "إنهاء قص الصورة"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "مسح اللوحة"
|
"title": "مسح اللوحة"
|
||||||
},
|
},
|
||||||
"publishDialog": {
|
"publishDialog": {
|
||||||
"title": "نشر المكتبة",
|
"title": "نشر المكتبة",
|
||||||
"itemName": "اسم العنصر",
|
"itemName": "إسم العنصر",
|
||||||
"authorName": "اسم المؤلف",
|
"authorName": "إسم المؤلف",
|
||||||
"githubUsername": "اسم المستخدم في GitHub",
|
"githubUsername": "اسم المستخدم في جيت هب",
|
||||||
"twitterUsername": "اسم المستخدم في تويتر",
|
"twitterUsername": "اسم المستخدم في تويتر",
|
||||||
"libraryName": "اسم المكتبة",
|
"libraryName": "اسم المكتبة",
|
||||||
"libraryDesc": "وصف المكتبة",
|
"libraryDesc": "وصف المكتبة",
|
||||||
@@ -454,24 +368,24 @@
|
|||||||
"authorName": "اسمك أو اسم المستخدم",
|
"authorName": "اسمك أو اسم المستخدم",
|
||||||
"libraryName": "اسم مكتبتك",
|
"libraryName": "اسم مكتبتك",
|
||||||
"libraryDesc": "وصف مكتبتك لمساعدة الناس على فهم استخدامها",
|
"libraryDesc": "وصف مكتبتك لمساعدة الناس على فهم استخدامها",
|
||||||
"githubHandle": "معرف GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة",
|
"githubHandle": "معالج GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة",
|
||||||
"twitterHandle": "اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر",
|
"twitterHandle": "اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر",
|
||||||
"website": "رابط إلى موقعك الشخصي أو مكان آخر (اختياري)"
|
"website": "رابط إلى موقعك الشخصي أو في مكان آخر (اختياري)"
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"required": "مطلوب",
|
"required": "مطلوب",
|
||||||
"website": "أدخل عنوان URL صالح"
|
"website": "أدخل عنوان URL صالح"
|
||||||
},
|
},
|
||||||
"noteDescription": "تقديم مكتبتك لتضمينها في مستودع المكتبة العامة <link></link> ليستخدمها الآخرون في رسوماتهم.",
|
"noteDescription": "تقديم مكتبتك لتضمينها في مستودع المكتبة العامة <link></link> لأشخاص آخرين لاستخدامها في رسومهم.",
|
||||||
"noteGuidelines": "تحتاج المكتبة إلى الموافقة أولاً. يرجى قراءة <link>المعايير</link> قبل تقديمها. ستحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكنه ليس مطلوبًا بشكل صارم.",
|
"noteGuidelines": "تحتاج المكتبة إلى الموافقة أولا. يرجى قراءة <link>المعايير</link> قبل تقديمها. سوف تحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكن ليس مطلوبا بشكل صارم.",
|
||||||
"noteLicense": "تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت <link>ترخيص MIT</link>، مما يعني أن لأي شخص الحق في استخدامها دون قيود.",
|
"noteLicense": "تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت <link>MIT ترخيص</link>، ما يعني أن لأي أحد الحق في استخدامها دون قيود.",
|
||||||
"noteItems": "يجب أن يكون لكل عنصر مكتبة اسم خاص به ليكون قابلًا للتصفية. سيتم تضمين عناصر المكتبة التالية:",
|
"noteItems": "يجب أن يكون لكل عنصر مكتبة اسمه الخاص حتى يكون قابلاً للتصفية. سيتم تضمين عناصر المكتبة التالية:",
|
||||||
"atleastOneLibItem": "يرجى تحديد عنصر مكتبة واحد على الأقل للبدء",
|
"atleastOneLibItem": "يرجى تحديد عنصر مكتبة واحد على الأقل للبدء",
|
||||||
"republishWarning": "ملاحظة: بعض العناصر المحددة معينة على أنها نُشرت أو قُدمت من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها."
|
"republishWarning": "ملاحظة: بعض العناصر المحددة معينة على أنه نشرها أو تقديمها من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها."
|
||||||
},
|
},
|
||||||
"publishSuccessDialog": {
|
"publishSuccessDialog": {
|
||||||
"title": "تم إرسال المكتبة",
|
"title": "تم إرسال المكتبة",
|
||||||
"content": "شكرًا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة"
|
"content": "شكرا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة"
|
||||||
},
|
},
|
||||||
"confirmDialog": {
|
"confirmDialog": {
|
||||||
"resetLibrary": "إعادة ضبط المكتبة",
|
"resetLibrary": "إعادة ضبط المكتبة",
|
||||||
@@ -480,15 +394,15 @@
|
|||||||
"imageExportDialog": {
|
"imageExportDialog": {
|
||||||
"header": "تصدير الصورة",
|
"header": "تصدير الصورة",
|
||||||
"label": {
|
"label": {
|
||||||
"withBackground": "مع الخلفية",
|
"withBackground": "الخلفية",
|
||||||
"onlySelected": "المحدد فقط",
|
"onlySelected": "المحدد فقط",
|
||||||
"darkMode": "الوضع الداكن",
|
"darkMode": "الوضع الداكن",
|
||||||
"embedScene": "تضمين المشهد",
|
"embedScene": "تضمين المشهد",
|
||||||
"scale": "المقياس",
|
"scale": "الحجم",
|
||||||
"padding": "الهوامش"
|
"padding": "الهوامش"
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدر بحيث يمكن استعادة المشهد منه.\nسيزيد هذا من حجم الملف المصدر."
|
"embedScene": "سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدّر بحيث يمكن استعادة المشهد منه.\nسيزيد حجم الملف المصدر."
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "تصدير بصيغة PNG",
|
"exportToPng": "تصدير بصيغة PNG",
|
||||||
@@ -502,20 +416,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encrypted": {
|
"encrypted": {
|
||||||
"tooltip": "رسوماتك مشفرة من النهاية إلى النهاية، لذا لا يمكن لخوادم Excalidraw رؤيتها أبدًا.",
|
"tooltip": "رسوماتك مشفرة من النهاية إلى النهاية حتى أن خوادم Excalidraw لن تراها أبدا.",
|
||||||
"link": "مشاركة المدونة حول التشفير من النهاية إلى النهاية في Excalidraw"
|
"link": "مشاركة المدونة في التشفير من النهاية إلى النهاية في Excalidraw"
|
||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "الزاوية",
|
"angle": "الزاوية",
|
||||||
"shapes": "الأشكال",
|
"element": "عنصر",
|
||||||
|
"elements": "العناصر",
|
||||||
"height": "الارتفاع",
|
"height": "الارتفاع",
|
||||||
"scene": "المشهد",
|
"scene": "المشهد",
|
||||||
"selected": "المحدد",
|
"selected": "المحدد",
|
||||||
"storage": "التخزين",
|
"storage": "التخزين",
|
||||||
"fullTitle": "خصائص اللوحة والأشكال",
|
"title": "إحصائيات للمهووسين",
|
||||||
"title": "الخصائص",
|
|
||||||
"generalStats": "عام",
|
|
||||||
"elementProperties": "خصائص الشكل",
|
|
||||||
"total": "المجموع",
|
"total": "المجموع",
|
||||||
"version": "الإصدار",
|
"version": "الإصدار",
|
||||||
"versionCopy": "انقر للنسخ",
|
"versionCopy": "انقر للنسخ",
|
||||||
@@ -523,19 +435,17 @@
|
|||||||
"width": "العرض"
|
"width": "العرض"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"addedToLibrary": "تمت الإضافة إلى المكتبة!",
|
"addedToLibrary": "تمت الاضافة الى المكتبة!",
|
||||||
"copyStyles": "تم نسخ الأنماط.",
|
"copyStyles": "نسخت الانماط.",
|
||||||
"copyToClipboard": "تم النسخ إلى الحافظة.",
|
"copyToClipboard": "نسخ إلى الحافظة.",
|
||||||
"copyToClipboardAsPng": "تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "تم نسخ {{exportSelection}} إلى الحافظة بصيغة SVG\n({{exportColorScheme}})",
|
|
||||||
"fileSaved": "تم حفظ الملف.",
|
"fileSaved": "تم حفظ الملف.",
|
||||||
"fileSavedToFilename": "تم الحفظ باسم {filename}",
|
"fileSavedToFilename": "حفظ باسم {filename}",
|
||||||
"canvas": "لوحة الرسم",
|
"canvas": "لوحة الرسم",
|
||||||
"selection": "العنصر المحدد",
|
"selection": "العنصر المحدد",
|
||||||
"pasteAsSingleElement": "استخدم {{shortcut}} للصق كعنصر واحد،\nأو لصق في محرر نص موجود",
|
"pasteAsSingleElement": "استخدم {{shortcut}} للصق كعنصر واحد،\nأو لصق في محرر نص موجود",
|
||||||
"unableToEmbed": "تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغًا على GitHub لطلب إدراج عنوان URL في القائمة البيضاء",
|
"unableToEmbed": "تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغاً على GitHub لطلب عنوان Url القائمة البيضاء",
|
||||||
"unrecognizedLinkFormat": "الرابط الذي أدرجته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص 'المضمن' المُزوَد من موقع المصدر",
|
"unrecognizedLinkFormat": "الرابط الذي ضمنته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص 'المضمن' المُزوَد من موقع المصدر"
|
||||||
"elementLinkCopied": "تم نسخ الرابط إلى الحافظة"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "شفاف",
|
"transparent": "شفاف",
|
||||||
@@ -556,20 +466,19 @@
|
|||||||
},
|
},
|
||||||
"welcomeScreen": {
|
"welcomeScreen": {
|
||||||
"app": {
|
"app": {
|
||||||
"center_heading": "جميع بياناتك محفوظة محليًا في المتصفح الخاص بك.",
|
"center_heading": "جميع بياناتك محفوظة محليا في المتصفح الخاص بك.",
|
||||||
"center_heading_plus": "هل تريد الانتقال إلى Excalidraw+ بدلاً من ذلك؟",
|
"center_heading_plus": "هل تريد الذهاب إلى Excalidraw+ بدلاً من ذلك؟",
|
||||||
"menuHint": "التصدير، التفضيلات، اللغات..."
|
"menuHint": "التصدير والتفضيلات واللغات ..."
|
||||||
},
|
},
|
||||||
"defaults": {
|
"defaults": {
|
||||||
"menuHint": "التصدير، التفضيلات، وغيرها...",
|
"menuHint": "التصدير والتفضيلات وغيرها...",
|
||||||
"center_heading": "الرسم البياني التصويري، ببساطة.",
|
"center_heading": "الرسم البياني التصويري. بشكل مبسط.",
|
||||||
"toolbarHint": "اختر أداة وابدأ الرسم!",
|
"toolbarHint": "اختر أداة و ابدأ الرسم!",
|
||||||
"helpHint": "الاختصارات والمساعدة"
|
"helpHint": "الاختصارات و المساعدة"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
"mostUsedCustomColors": "الألوان المخصصة الأكثر استخداما",
|
||||||
"mostUsedCustomColors": "الألوان المخصصة الأكثر استخدامًا",
|
|
||||||
"colors": "الألوان",
|
"colors": "الألوان",
|
||||||
"shades": "الدرجات",
|
"shades": "الدرجات",
|
||||||
"hexCode": "رمز Hex",
|
"hexCode": "رمز Hex",
|
||||||
@@ -580,12 +489,12 @@
|
|||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "تصدير كصورة",
|
"title": "تصدير كصورة",
|
||||||
"button": "تصدير كصورة",
|
"button": "تصدير كصورة",
|
||||||
"description": "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقًا."
|
"description": "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "حفظ الملف على الجهاز",
|
"title": "حفظ الملف للجهاز",
|
||||||
"button": "حفظ الملف على الجهاز",
|
"button": "حفظ الملف للجهاز",
|
||||||
"description": "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقًا."
|
"description": "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "Excalidraw+",
|
||||||
@@ -602,63 +511,15 @@
|
|||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "تحميل من رابط",
|
"title": "تحميل من رابط",
|
||||||
"button": "استبدال محتواي",
|
"button": "استبدال محتواي",
|
||||||
"description": "سيتسبب تحميل رسمة خارجية <bold>باستبدال محتواك الموجود حاليًا</bold>.<br></br>بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه."
|
"description": "سيتسبب تحميل رسمة خارجية <bold>باستبدال محتواك الموجود حالياً</bold>.<br></br>بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "Mermaid إلى Excalidraw",
|
"title": "",
|
||||||
"button": "إدراج",
|
"button": "",
|
||||||
"description": "حاليًا، يتم دعم <flowchartLink>مخططات التدفق</flowchartLink>، <sequenceLink>التسلسلات</sequenceLink>، و<classLink>الفئات</classLink> فقط. سيتم عرض الأنواع الأخرى كصورة في Excalidraw.",
|
"description": "",
|
||||||
"syntax": "صيغة Mermaid",
|
"syntax": "",
|
||||||
"preview": "معاينة"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "بحث سريع"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "قديم"
|
|
||||||
},
|
|
||||||
"sceneFonts": "في هذا المشهد",
|
|
||||||
"availableFonts": "الخطوط المتوفرة",
|
|
||||||
"empty": "لم يتم العثور على خطوط"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "لم يتم العثور على مستخدمين",
|
|
||||||
"hint": {
|
|
||||||
"text": "انقر على المستخدم للمتابعة",
|
|
||||||
"followStatus": "أنت حاليًا تتابع هذا المستخدم",
|
|
||||||
"inCall": "المستخدم في مكالمة صوتية",
|
|
||||||
"micMuted": "ميكروفون المستخدم مكتم",
|
|
||||||
"isSpeaking": "المستخدم يتحدث"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "لوحة الأوامر",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "اختر",
|
|
||||||
"confirm": "تأكيد",
|
|
||||||
"close": "إغلاق"
|
|
||||||
},
|
|
||||||
"recents": "المستخدمة مؤخرًا",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "ابحث في القوائم، الأوامر، واكتشف الجواهر المخفية",
|
|
||||||
"noMatch": "لا توجد أوامر مطابقة..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "الأمر غير متوفر...",
|
|
||||||
"shortcutHint": "للحصول على لوحة الأوامر، استخدم {{shortcut}}"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "PNG olaraq panoya kopyala",
|
"copyAsPng": "PNG olaraq panoya kopyala",
|
||||||
"copyAsSvg": "SVG olaraq panoya kopyala",
|
"copyAsSvg": "SVG olaraq panoya kopyala",
|
||||||
"copyText": "Mətn olaraq panoya kopyala",
|
"copyText": "Mətn olaraq panoya kopyala",
|
||||||
"copySource": "Mənbəni kopyala",
|
"copySource": "",
|
||||||
"convertToCode": "Koda çevir",
|
"convertToCode": "",
|
||||||
"bringForward": "Önə daşı",
|
"bringForward": "Önə daşı",
|
||||||
"sendToBack": "Geriyə göndərin",
|
"sendToBack": "Geriyə göndərin",
|
||||||
"bringToFront": "Önə gətirin",
|
"bringToFront": "Önə gətirin",
|
||||||
@@ -21,13 +21,11 @@
|
|||||||
"copyStyles": "Stilləri kopyalayın",
|
"copyStyles": "Stilləri kopyalayın",
|
||||||
"pasteStyles": "Stilləri yapışdırın",
|
"pasteStyles": "Stilləri yapışdırın",
|
||||||
"stroke": "Strok rəngi",
|
"stroke": "Strok rəngi",
|
||||||
"changeStroke": "Ştrix rəngini dəyişdir",
|
|
||||||
"background": "Arxa fon",
|
"background": "Arxa fon",
|
||||||
"changeBackground": "Fon rəngini dəyişdir",
|
|
||||||
"fill": "Doldur",
|
"fill": "Doldur",
|
||||||
"strokeWidth": "Strok eni",
|
"strokeWidth": "Strok eni",
|
||||||
"strokeStyle": "Strok stili",
|
"strokeStyle": "Strok stili",
|
||||||
"strokeStyle_solid": "Qatı",
|
"strokeStyle_solid": "Solid",
|
||||||
"strokeStyle_dashed": "Kəsik",
|
"strokeStyle_dashed": "Kəsik",
|
||||||
"strokeStyle_dotted": "Nöqtəli",
|
"strokeStyle_dotted": "Nöqtəli",
|
||||||
"sloppiness": "Səliqəsizlik",
|
"sloppiness": "Səliqəsizlik",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Heç biri",
|
"arrowhead_none": "Heç biri",
|
||||||
"arrowhead_arrow": "Ox",
|
"arrowhead_arrow": "Ox",
|
||||||
"arrowhead_bar": "Çubuq",
|
"arrowhead_bar": "Çubuq",
|
||||||
"arrowhead_circle": "Dairə",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Çevrə (Kontur)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Üçbucaq",
|
"arrowhead_triangle": "Üçbucaq",
|
||||||
"arrowhead_triangle_outline": "Üçbucaq (kontur)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Almaz",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Almaz (kontur)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "",
|
|
||||||
"arrowtype_sharp": "",
|
|
||||||
"arrowtype_round": "",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "Şrift ölçüsü",
|
"fontSize": "Şrift ölçüsü",
|
||||||
"fontFamily": "Şrift qrupu",
|
"fontFamily": "Şrift qrupu",
|
||||||
"addWatermark": "\"Made with Excalidraw\" əlavə et",
|
"addWatermark": "\"Made with Excalidraw\" əlavə et",
|
||||||
@@ -64,7 +54,7 @@
|
|||||||
"medium": "Orta",
|
"medium": "Orta",
|
||||||
"large": "Böyük",
|
"large": "Böyük",
|
||||||
"veryLarge": "Çox böyük",
|
"veryLarge": "Çox böyük",
|
||||||
"solid": "Qatı",
|
"solid": "Solid",
|
||||||
"hachure": "Ştrix",
|
"hachure": "Ştrix",
|
||||||
"zigzag": "Ziqzaq",
|
"zigzag": "Ziqzaq",
|
||||||
"crossHatch": "Çarpaz dəlik",
|
"crossHatch": "Çarpaz dəlik",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Kanvas üzərində istifadə olunur",
|
"canvasColors": "Kanvas üzərində istifadə olunur",
|
||||||
"canvasBackground": "Kanvas arxa fonu",
|
"canvasBackground": "Kanvas arxa fonu",
|
||||||
"drawingCanvas": "Kanvas çəkmək",
|
"drawingCanvas": "Kanvas çəkmək",
|
||||||
"clearCanvas": "Lövhəni təmizlə",
|
|
||||||
"layers": "Qatlar",
|
"layers": "Qatlar",
|
||||||
"actions": "Hərəkətlər",
|
"actions": "Hərəkətlər",
|
||||||
"language": "Dil",
|
"language": "Dil",
|
||||||
@@ -94,56 +83,48 @@
|
|||||||
"madeWithExcalidraw": "Excalidraw ilə hazırlanmışdır",
|
"madeWithExcalidraw": "Excalidraw ilə hazırlanmışdır",
|
||||||
"group": "Qrup şəklində seçim",
|
"group": "Qrup şəklində seçim",
|
||||||
"ungroup": "Qrupsuz seçim",
|
"ungroup": "Qrupsuz seçim",
|
||||||
"collaborators": "Əməkdaşlar",
|
"collaborators": "",
|
||||||
"toggleGrid": "Toru dəyiş",
|
"showGrid": "",
|
||||||
"addToLibrary": "Kitabxanaya əlavə et",
|
"addToLibrary": "",
|
||||||
"removeFromLibrary": "Kitabxanadan sil",
|
"removeFromLibrary": "",
|
||||||
"libraryLoadingMessage": "Kitabxana yüklənir...",
|
"libraryLoadingMessage": "",
|
||||||
"libraries": "Kitabxanalara bax",
|
"libraries": "",
|
||||||
"loadingScene": "Səhnə yüklənir...",
|
"loadingScene": "",
|
||||||
"loadScene": "Səhnəni fayldan yüklə",
|
"align": "",
|
||||||
"align": "Hizala",
|
"alignTop": "",
|
||||||
"alignTop": "Yuxarı hizala",
|
"alignBottom": "",
|
||||||
"alignBottom": "Aşağı hizala",
|
"alignLeft": "",
|
||||||
"alignLeft": "Sola hizala",
|
"alignRight": "",
|
||||||
"alignRight": "Sağa hizala",
|
"centerVertically": "",
|
||||||
"centerVertically": "Şaquli ortala",
|
"centerHorizontally": "",
|
||||||
"centerHorizontally": "Üfüqi ortala",
|
"distributeHorizontally": "",
|
||||||
"distributeHorizontally": "Üfüqi payla",
|
"distributeVertically": "",
|
||||||
"distributeVertically": "Şaquli payla",
|
"flipHorizontal": "",
|
||||||
"flipHorizontal": "Üfüqi çevir",
|
"flipVertical": "",
|
||||||
"flipVertical": "Şaquli çevir",
|
"viewMode": "",
|
||||||
"viewMode": "Görünüş Rejimi",
|
"share": "",
|
||||||
"share": "Paylaş",
|
"showStroke": "",
|
||||||
"showStroke": "Çevrə rəng seçimini göstər",
|
"showBackground": "",
|
||||||
"showBackground": "Fon rəng seçimini göstər",
|
"toggleTheme": "",
|
||||||
"showFonts": "",
|
"personalLib": "",
|
||||||
"toggleTheme": "Gecə/Güzdüz rejiminə dəyiş",
|
"excalidrawLib": "",
|
||||||
"theme": "Fon",
|
"decreaseFontSize": "",
|
||||||
"personalLib": "Şəxsi kitabxana",
|
"increaseFontSize": "",
|
||||||
"excalidrawLib": "Excalidraw kitabxanası",
|
"unbindText": "",
|
||||||
"decreaseFontSize": "Şrift ölçüsünü azalt",
|
"bindText": "",
|
||||||
"increaseFontSize": "Şrift ölçüsünü artır",
|
"createContainerFromText": "",
|
||||||
"unbindText": "Mətni çıxar",
|
|
||||||
"bindText": "Mətni konteynerə qoş",
|
|
||||||
"createContainerFromText": "Mətni konteynerə bük",
|
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Keçidi düzəliş et",
|
"edit": "",
|
||||||
"editEmbed": "",
|
"editEmbed": "",
|
||||||
"create": "",
|
"create": "",
|
||||||
"label": "Keçid",
|
"createEmbed": "",
|
||||||
|
"label": "",
|
||||||
"labelEmbed": "",
|
"labelEmbed": "",
|
||||||
"empty": "",
|
"empty": ""
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "",
|
"edit": "",
|
||||||
"editArrow": ""
|
"exit": ""
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "",
|
"lock": "",
|
||||||
@@ -157,46 +138,12 @@
|
|||||||
"removeAllElementsFromFrame": "",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "",
|
"textToDiagram": "",
|
||||||
"prompt": "",
|
"prompt": ""
|
||||||
"followUs": "",
|
|
||||||
"discordChat": "",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "",
|
"noItems": "",
|
||||||
"hint_emptyLibrary": "",
|
"hint_emptyLibrary": "",
|
||||||
"hint_emptyPrivateLibrary": "",
|
"hint_emptyPrivateLibrary": ""
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "",
|
"clearReset": "",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "",
|
"exportImage": "",
|
||||||
"export": "",
|
"export": "",
|
||||||
"copyToClipboard": "",
|
"copyToClipboard": "",
|
||||||
"copyLink": "",
|
|
||||||
"save": "",
|
"save": "",
|
||||||
"saveAs": "",
|
"saveAs": "",
|
||||||
"load": "",
|
"load": "",
|
||||||
@@ -225,43 +171,40 @@
|
|||||||
"fullScreen": "",
|
"fullScreen": "",
|
||||||
"darkMode": "",
|
"darkMode": "",
|
||||||
"lightMode": "",
|
"lightMode": "",
|
||||||
"systemMode": "Sistem rejimi",
|
"zenMode": "",
|
||||||
"zenMode": "Zen rejimi",
|
"objectsSnapMode": "",
|
||||||
"objectsSnapMode": "Obyektlərə bərkidin",
|
"exitZenMode": "",
|
||||||
"exitZenMode": "Zen rejimindən çıxış",
|
"cancel": "",
|
||||||
"cancel": "Ləğv et",
|
"clear": "",
|
||||||
"saveLibNames": "",
|
"remove": "",
|
||||||
"clear": "Təmizlə",
|
"embed": "",
|
||||||
"remove": "Sil",
|
|
||||||
"embed": "Yerləşdirməni aktiv et",
|
|
||||||
"publishLibrary": "",
|
"publishLibrary": "",
|
||||||
"submit": "Göndər",
|
"submit": "",
|
||||||
"confirm": "Təsdiqlə",
|
"confirm": "",
|
||||||
"embeddableInteractionButton": "Əlaqə üçün kliklə"
|
"embeddableInteractionButton": ""
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "Bu, bütün lövhəni təmizləyəcək. Sən əminsiniz?",
|
"clearReset": "",
|
||||||
"couldNotCreateShareableLink": "Paylaşıla bilən keçid yaratmaq mümkün olmadı.",
|
"couldNotCreateShareableLink": "",
|
||||||
"couldNotCreateShareableLinkTooBig": "Paylaşıla bilən link yaratmaq mümkün olmadı. Səhnə çox böyükdür",
|
"couldNotCreateShareableLinkTooBig": "",
|
||||||
"couldNotLoadInvalidFile": "Faylı açmaq müknü olmadı",
|
"couldNotLoadInvalidFile": "",
|
||||||
"importBackendFailed": "İdxal zamanı xəta baş verdi.",
|
"importBackendFailed": "",
|
||||||
"cannotExportEmptyCanvas": "Boş lövhəni ixrac etmək mümkün deyil.",
|
"cannotExportEmptyCanvas": "",
|
||||||
"couldNotCopyToClipboard": "Kopyalana bilmədi.",
|
"couldNotCopyToClipboard": "",
|
||||||
"decryptFailed": "Məlumatın şifrəsini açmaq mümkün olmadı.",
|
"decryptFailed": "",
|
||||||
"uploadedSecurly": "Yükləmə end-to-end şifrələmə texnologiyası ilə qorunub, yəni Excalidraw serveri və üçüncü tərəflər məzmunu oxuya bilməz.",
|
"uploadedSecurly": "",
|
||||||
"loadSceneOverridePrompt": "Xarici rəsmin yüklənməsi mövcud məzmununuzu əvəz edəcək. Davam etmək istəyirsiniz?",
|
"loadSceneOverridePrompt": "",
|
||||||
"collabStopOverridePrompt": "Sessiyanın dayandırılması əvvəlki, yerli olaraq saxlanılan çertyojunuzun üzərinə yazılacaq. Əminsiniz?",
|
"collabStopOverridePrompt": "",
|
||||||
"errorAddingToLibrary": "Kitabxanaya əlavə etmək mümkün olmadı",
|
"errorAddingToLibrary": "",
|
||||||
"errorRemovingFromLibrary": "Kitabxanadan silmək mümkün olmadı",
|
"errorRemovingFromLibrary": "",
|
||||||
"confirmAddLibrary": "Bu, kitabxananıza {{numShapes}} forma əlavə edəcək. Əminsiniz?",
|
"confirmAddLibrary": "",
|
||||||
"imageDoesNotContainScene": "Bu təsvirdə heç bir səhnə məlumatı yoxdur. İxrac zamanı səhnə yerləşdirməni aktiv etmisiniz?",
|
"imageDoesNotContainScene": "",
|
||||||
"cannotRestoreFromImage": "Səhnəni bu şəkil faylından bərpa etmək mümkün olmadı",
|
"cannotRestoreFromImage": "",
|
||||||
"invalidSceneUrl": "",
|
"invalidSceneUrl": "",
|
||||||
"resetLibrary": "",
|
"resetLibrary": "",
|
||||||
"removeItemsFromsLibrary": "",
|
"removeItemsFromsLibrary": "",
|
||||||
"invalidEncryptionKey": "",
|
"invalidEncryptionKey": "",
|
||||||
"collabOfflineWarning": "",
|
"collabOfflineWarning": ""
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "",
|
"unsupportedFileType": "",
|
||||||
@@ -269,9 +212,9 @@
|
|||||||
"fileTooBig": "",
|
"fileTooBig": "",
|
||||||
"svgImageInsertError": "",
|
"svgImageInsertError": "",
|
||||||
"failedToFetchImage": "",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "",
|
||||||
"cannotResolveCollabServer": "",
|
"cannotResolveCollabServer": "",
|
||||||
"importLibraryError": "",
|
"importLibraryError": "",
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "",
|
"collabSaveFailed": "",
|
||||||
"collabSaveFailed_sizeExceeded": "",
|
"collabSaveFailed_sizeExceeded": "",
|
||||||
"imageToolNotSupported": "",
|
"imageToolNotSupported": "",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "",
|
"selection": "",
|
||||||
"lasso": "",
|
|
||||||
"image": "",
|
"image": "",
|
||||||
"rectangle": "",
|
"rectangle": "",
|
||||||
"diamond": "",
|
"diamond": "",
|
||||||
@@ -313,23 +255,7 @@
|
|||||||
"hand": "",
|
"hand": "",
|
||||||
"extraTools": "",
|
"extraTools": "",
|
||||||
"mermaidToExcalidraw": "",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": ""
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "",
|
"canvasActions": "",
|
||||||
@@ -337,10 +263,8 @@
|
|||||||
"shapes": ""
|
"shapes": ""
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
|
||||||
"canvasPanning": "",
|
"canvasPanning": "",
|
||||||
"linearElement": "",
|
"linearElement": "",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "",
|
"freeDraw": "",
|
||||||
"text": "",
|
"text": "",
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
@@ -352,18 +276,15 @@
|
|||||||
"resizeImage": "",
|
"resizeImage": "",
|
||||||
"rotate": "",
|
"rotate": "",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "",
|
||||||
"lineEditor_line_info": "",
|
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_pointSelected": "",
|
||||||
"lineEditor_nothingSelected": "",
|
"lineEditor_nothingSelected": "",
|
||||||
|
"placeImage": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "",
|
||||||
"createFlowchart": "",
|
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"eraserRevert": "",
|
"eraserRevert": "",
|
||||||
"firefox_clipboard_write": "",
|
"firefox_clipboard_write": "",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "",
|
"cannotShowPreview": "",
|
||||||
@@ -378,9 +299,6 @@
|
|||||||
"openIssueMessage": "",
|
"openIssueMessage": "",
|
||||||
"sceneContent": ""
|
"sceneContent": ""
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": ""
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "",
|
"desc_intro": "",
|
||||||
"desc_privacy": "",
|
"desc_privacy": "",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "",
|
"click": "",
|
||||||
"deepSelect": "",
|
"deepSelect": "",
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "",
|
"curvedArrow": "",
|
||||||
"curvedLine": "",
|
"curvedLine": "",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "",
|
"zoomToSelection": "",
|
||||||
"toggleElementLock": "",
|
"toggleElementLock": "",
|
||||||
"movePageUpDown": "",
|
"movePageUpDown": "",
|
||||||
"movePageLeftRight": "",
|
"movePageLeftRight": ""
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": ""
|
"title": ""
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "",
|
"angle": "",
|
||||||
"shapes": "",
|
"element": "",
|
||||||
|
"elements": "",
|
||||||
"height": "",
|
"height": "",
|
||||||
"scene": "",
|
"scene": "",
|
||||||
"selected": "",
|
"selected": "",
|
||||||
"storage": "",
|
"storage": "",
|
||||||
"fullTitle": "",
|
|
||||||
"title": "",
|
"title": "",
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "",
|
"total": "",
|
||||||
"version": "",
|
"version": "",
|
||||||
"versionCopy": "",
|
"versionCopy": "",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "",
|
"copyStyles": "",
|
||||||
"copyToClipboard": "",
|
"copyToClipboard": "",
|
||||||
"copyToClipboardAsPng": "",
|
"copyToClipboardAsPng": "",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "",
|
"fileSaved": "",
|
||||||
"fileSavedToFilename": "",
|
"fileSavedToFilename": "",
|
||||||
"canvas": "",
|
"canvas": "",
|
||||||
"selection": "",
|
"selection": "",
|
||||||
"pasteAsSingleElement": "",
|
"pasteAsSingleElement": "",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "",
|
"transparent": "",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "",
|
"mostUsedCustomColors": "",
|
||||||
"colors": "",
|
"colors": "",
|
||||||
"shades": "",
|
"shades": "",
|
||||||
@@ -612,53 +521,5 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "",
|
"syntax": "",
|
||||||
"preview": ""
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "",
|
|
||||||
"followStatus": "",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "",
|
|
||||||
"confirm": "",
|
|
||||||
"close": ""
|
|
||||||
},
|
|
||||||
"recents": "",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,9 +10,9 @@
|
|||||||
"copy": "Копирай",
|
"copy": "Копирай",
|
||||||
"copyAsPng": "Копиране в клипборда",
|
"copyAsPng": "Копиране в клипборда",
|
||||||
"copyAsSvg": "Копирано в клипборда като SVG",
|
"copyAsSvg": "Копирано в клипборда като SVG",
|
||||||
"copyText": "Копирай в клипборда като текст",
|
"copyText": "",
|
||||||
"copySource": "Копирай източника в клипборда",
|
"copySource": "",
|
||||||
"convertToCode": "Конвертирай в код",
|
"convertToCode": "",
|
||||||
"bringForward": "Преместване напред",
|
"bringForward": "Преместване напред",
|
||||||
"sendToBack": "Изнасяне назад",
|
"sendToBack": "Изнасяне назад",
|
||||||
"bringToFront": "Изнасяне отпред",
|
"bringToFront": "Изнасяне отпред",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Копирайте стилове",
|
"copyStyles": "Копирайте стилове",
|
||||||
"pasteStyles": "Постави стилове",
|
"pasteStyles": "Постави стилове",
|
||||||
"stroke": "Щрих",
|
"stroke": "Щрих",
|
||||||
"changeStroke": "Смени цвета на щрих",
|
|
||||||
"background": "Фон",
|
"background": "Фон",
|
||||||
"changeBackground": "Смени цвета на фон",
|
|
||||||
"fill": "Наситеност",
|
"fill": "Наситеност",
|
||||||
"strokeWidth": "Ширина на щриха",
|
"strokeWidth": "Ширина на щриха",
|
||||||
"strokeStyle": "Стил на линия",
|
"strokeStyle": "Стил на линия",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Без",
|
"arrowhead_none": "Без",
|
||||||
"arrowhead_arrow": "Стрелка",
|
"arrowhead_arrow": "Стрелка",
|
||||||
"arrowhead_bar": "Връх на стрелката",
|
"arrowhead_bar": "Връх на стрелката",
|
||||||
"arrowhead_circle": "Кръг",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Окръжност",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Триъгълник",
|
"arrowhead_triangle": "Триъгълник",
|
||||||
"arrowhead_triangle_outline": "Триъгълник (очертание)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Диамант",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Диамант (очертание)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "Вид стрелка",
|
|
||||||
"arrowtype_sharp": "Остра стрелка",
|
|
||||||
"arrowtype_round": "Извита стрелка",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "Размер на шрифта",
|
"fontSize": "Размер на шрифта",
|
||||||
"fontFamily": "Семейство шрифтове",
|
"fontFamily": "Семейство шрифтове",
|
||||||
"addWatermark": "Добави \"Направено с Excalidraw\"",
|
"addWatermark": "Добави \"Направено с Excalidraw\"",
|
||||||
@@ -82,11 +72,10 @@
|
|||||||
"canvasColors": "Използван на платно",
|
"canvasColors": "Използван на платно",
|
||||||
"canvasBackground": "Фон на платно",
|
"canvasBackground": "Фон на платно",
|
||||||
"drawingCanvas": "Платно за рисуване",
|
"drawingCanvas": "Платно за рисуване",
|
||||||
"clearCanvas": "Изчисти платното",
|
|
||||||
"layers": "Слоеве",
|
"layers": "Слоеве",
|
||||||
"actions": "Действия",
|
"actions": "Действия",
|
||||||
"language": "Език",
|
"language": "Език",
|
||||||
"liveCollaboration": "Сътрудничество на живо...",
|
"liveCollaboration": "",
|
||||||
"duplicateSelection": "Дублирай",
|
"duplicateSelection": "Дублирай",
|
||||||
"untitled": "Неозаглавено",
|
"untitled": "Неозаглавено",
|
||||||
"name": "Име",
|
"name": "Име",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Групирай селекцията",
|
"group": "Групирай селекцията",
|
||||||
"ungroup": "Спри групирането на селекцията",
|
"ungroup": "Спри групирането на селекцията",
|
||||||
"collaborators": "Сътрудници",
|
"collaborators": "Сътрудници",
|
||||||
"toggleGrid": "Превключване на мрежа",
|
"showGrid": "Показване на мрежа",
|
||||||
"addToLibrary": "Добавяне към библиотеката",
|
"addToLibrary": "Добавяне към библиотеката",
|
||||||
"removeFromLibrary": "Премахване от библиотеката",
|
"removeFromLibrary": "Премахване от библиотеката",
|
||||||
"libraryLoadingMessage": "Зареждане на библиотеката…",
|
"libraryLoadingMessage": "Зареждане на библиотеката…",
|
||||||
"libraries": "Разглеждане на библиотеките",
|
"libraries": "Разглеждане на библиотеките",
|
||||||
"loadingScene": "Зареждане на сцена…",
|
"loadingScene": "Зареждане на сцена…",
|
||||||
"loadScene": "Зареди сцена от файл",
|
|
||||||
"align": "Подравняване",
|
"align": "Подравняване",
|
||||||
"alignTop": "Подравняване отгоре",
|
"alignTop": "Подравняване отгоре",
|
||||||
"alignBottom": "Подравняване отдолу",
|
"alignBottom": "Подравняване отдолу",
|
||||||
@@ -115,11 +103,9 @@
|
|||||||
"flipVertical": "Вертикално обръщане",
|
"flipVertical": "Вертикално обръщане",
|
||||||
"viewMode": "Изглед",
|
"viewMode": "Изглед",
|
||||||
"share": "Сподели",
|
"share": "Сподели",
|
||||||
"showStroke": "Покажи избора на цвят за щрих",
|
"showStroke": "",
|
||||||
"showBackground": "Покажи избора на цвят за фон",
|
"showBackground": "",
|
||||||
"showFonts": "",
|
"toggleTheme": "Включи тема",
|
||||||
"toggleTheme": "Превключване на светла/тъмна тема",
|
|
||||||
"theme": "Тема",
|
|
||||||
"personalLib": "Лична Библиотека",
|
"personalLib": "Лична Библиотека",
|
||||||
"excalidrawLib": "Excalidraw Библиотека",
|
"excalidrawLib": "Excalidraw Библиотека",
|
||||||
"decreaseFontSize": "Намали размера на шрифта",
|
"decreaseFontSize": "Намали размера на шрифта",
|
||||||
@@ -130,20 +116,15 @@
|
|||||||
"link": {
|
"link": {
|
||||||
"edit": "Редактирай линк",
|
"edit": "Редактирай линк",
|
||||||
"editEmbed": "",
|
"editEmbed": "",
|
||||||
"create": "Добавяне на връзка",
|
"create": "",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "Линк",
|
"label": "Линк",
|
||||||
"labelEmbed": "",
|
"labelEmbed": "",
|
||||||
"empty": "Няма зададен линк",
|
"empty": ""
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Редактирай линия",
|
"edit": "",
|
||||||
"editArrow": "Редактирай стрелка"
|
"exit": ""
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Заключи",
|
"lock": "Заключи",
|
||||||
@@ -153,58 +134,23 @@
|
|||||||
},
|
},
|
||||||
"statusPublished": "Публикувани",
|
"statusPublished": "Публикувани",
|
||||||
"sidebarLock": "",
|
"sidebarLock": "",
|
||||||
"selectAllElementsInFrame": "Избери всички елементи в рамка",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "Премахни всички елементи от рамка",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "Избери цвят от платното",
|
"eyeDropper": "Избери цвят от платното",
|
||||||
"textToDiagram": "Текст към диаграма",
|
"textToDiagram": "",
|
||||||
"prompt": "",
|
"prompt": ""
|
||||||
"followUs": "Последвайте ни",
|
|
||||||
"discordChat": "Дискорд чат",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "Приближи селекцията",
|
|
||||||
"zoomToFit": "Приближи всички елементи",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Няма добавени неща все още...",
|
"noItems": "Няма добавени неща все още...",
|
||||||
"hint_emptyLibrary": "Избери предмет от платното, за да го добавиш тук или инсталирай библиотека от публичното хранилище по-долу.",
|
"hint_emptyLibrary": "",
|
||||||
"hint_emptyPrivateLibrary": "Избери предмет от платното, за да го добавиш тук.",
|
"hint_emptyPrivateLibrary": ""
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "резултат",
|
|
||||||
"multipleResults": "резултати",
|
|
||||||
"placeholder": "Търсене на текст по платното...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Нулиране на платно",
|
"clearReset": "Нулиране на платно",
|
||||||
"exportJSON": "Изнасяна към файл",
|
"exportJSON": "",
|
||||||
"exportImage": "Изнеси изображение...",
|
"exportImage": "",
|
||||||
"export": "Запази на...",
|
"export": "Запази на...",
|
||||||
"copyToClipboard": "Копиране в клипборда",
|
"copyToClipboard": "Копиране в клипборда",
|
||||||
"copyLink": "",
|
|
||||||
"save": "Запази към текущ файл",
|
"save": "Запази към текущ файл",
|
||||||
"saveAs": "Запиши като",
|
"saveAs": "Запиши като",
|
||||||
"load": "Отвори",
|
"load": "Отвори",
|
||||||
@@ -225,19 +171,17 @@
|
|||||||
"fullScreen": "На цял екран",
|
"fullScreen": "На цял екран",
|
||||||
"darkMode": "Тъмен режим",
|
"darkMode": "Тъмен режим",
|
||||||
"lightMode": "Светъл режим",
|
"lightMode": "Светъл режим",
|
||||||
"systemMode": "Системен режим",
|
|
||||||
"zenMode": "Режим Zen",
|
"zenMode": "Режим Zen",
|
||||||
"objectsSnapMode": "Прилепване към обекти",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "Спиране на режим Зен",
|
"exitZenMode": "Спиране на Zen режим",
|
||||||
"cancel": "Отмени",
|
"cancel": "Отмени",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Изчисти",
|
"clear": "Изчисти",
|
||||||
"remove": "Премахване",
|
"remove": "Премахване",
|
||||||
"embed": "Включи вмъкване",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Публикувай",
|
||||||
"submit": "Изпрати",
|
"submit": "Изпрати",
|
||||||
"confirm": "Потвърждаване",
|
"confirm": "Потвърждаване",
|
||||||
"embeddableInteractionButton": "Натисни, за да взаимодействаш"
|
"embeddableInteractionButton": ""
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "Това ще изчисти цялото платно. Сигурни ли сте?",
|
"clearReset": "Това ще изчисти цялото платно. Сигурни ли сте?",
|
||||||
@@ -254,32 +198,31 @@
|
|||||||
"errorAddingToLibrary": "Не можем да заредим от библиотеката",
|
"errorAddingToLibrary": "Не можем да заредим от библиотеката",
|
||||||
"errorRemovingFromLibrary": "Не можем да премахнем елемент от библиотеката",
|
"errorRemovingFromLibrary": "Не можем да премахнем елемент от библиотеката",
|
||||||
"confirmAddLibrary": "Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?",
|
"confirmAddLibrary": "Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?",
|
||||||
"imageDoesNotContainScene": "Това изображение не изглежда да съдържа каквито и да е данни за сцена. Искате ли да включите вмъкване на сцени при изнасяне?",
|
"imageDoesNotContainScene": "",
|
||||||
"cannotRestoreFromImage": "Не може да бъде възстановена сцена от този файл",
|
"cannotRestoreFromImage": "Не може да бъде възстановена сцена от този файл",
|
||||||
"invalidSceneUrl": "Неуспешно поставяне на сцена от предоставения линк. Той е или неправилно оформен, или не съдържа валидни Excalidraw JSON данни.",
|
"invalidSceneUrl": "",
|
||||||
"resetLibrary": "Това ще изчисти библиотеката ви. Сигурни ли сте?",
|
"resetLibrary": "",
|
||||||
"removeItemsFromsLibrary": "Изтрий {{count}} елемент(а) от библиотеката?",
|
"removeItemsFromsLibrary": "Изтрий {{count}} елемент(а) от библиотеката?",
|
||||||
"invalidEncryptionKey": "Ключът за енкрипция трябва да е от 22 знака. Сътрудничеството на живо е изключено.",
|
"invalidEncryptionKey": "",
|
||||||
"collabOfflineWarning": "Няма налична интернет връзка.\nВашите промени няма да бъдат запазени!",
|
"collabOfflineWarning": ""
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Този файлов формат не се поддържа.",
|
"unsupportedFileType": "Този файлов формат не се поддържа.",
|
||||||
"imageInsertError": "Неуспешно поставяне на изображение. Опитайте по-късно...",
|
"imageInsertError": "",
|
||||||
"fileTooBig": "Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.",
|
"fileTooBig": "Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.",
|
||||||
"svgImageInsertError": "Неуспешно поставяне на SVG изборажение. SVG данните изглеждат невалидни.",
|
"svgImageInsertError": "",
|
||||||
"failedToFetchImage": "Неуспешно получаване на изборажение.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "Невалиден SVG.",
|
||||||
"cannotResolveCollabServer": "",
|
"cannotResolveCollabServer": "",
|
||||||
"importLibraryError": "Не можем да заредим библиотеката",
|
"importLibraryError": "Не можем да заредим библиотеката",
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "",
|
"collabSaveFailed": "",
|
||||||
"collabSaveFailed_sizeExceeded": "",
|
"collabSaveFailed_sizeExceeded": "",
|
||||||
"imageToolNotSupported": "Изображенията са изключени.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "",
|
"line1": "",
|
||||||
"line2": "",
|
"line2": "",
|
||||||
"line3": "Силно препоръчваме да изключите тази настройка. Можете да следвате <link>тези стъпки</link> за това как да го направите.",
|
"line3": "Силно препоръчваме да изключите тази настройка. Можете да следвате <link>тези стъпки</link> за това как да го направите.",
|
||||||
"line4": "Ако изключването на тази настройка не оправи изобразяването на текстови елементи, моля отворете <issueLink>проблем</issueLink> на нашия GitHub или ни пишете на <discordLink>Дискорд</discordLink>"
|
"line4": ""
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Селекция",
|
"selection": "Селекция",
|
||||||
"lasso": "",
|
|
||||||
"image": "Вмъкване на изображение",
|
"image": "Вмъкване на изображение",
|
||||||
"rectangle": "Правоъгълник",
|
"rectangle": "Правоъгълник",
|
||||||
"diamond": "Диамант",
|
"diamond": "Диамант",
|
||||||
@@ -306,30 +248,14 @@
|
|||||||
"penMode": "",
|
"penMode": "",
|
||||||
"link": "",
|
"link": "",
|
||||||
"eraser": "Гума",
|
"eraser": "Гума",
|
||||||
"frame": "Инструмент за рамки",
|
"frame": "",
|
||||||
"magicframe": "",
|
"magicframe": "",
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
"laser": "Лазерна показалка",
|
"laser": "",
|
||||||
"hand": "",
|
"hand": "",
|
||||||
"extraTools": "Още инструменти",
|
"extraTools": "Още инструменти",
|
||||||
"mermaidToExcalidraw": "Mermaid към Excalidraw",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Правоъгълник",
|
|
||||||
"diamond": "Диамант",
|
|
||||||
"ellipse": "Елипса",
|
|
||||||
"arrow": "Стрелка",
|
|
||||||
"line": "Линия",
|
|
||||||
"freedraw": "Свободно рисуване",
|
|
||||||
"text": "Текст",
|
|
||||||
"image": "Изображение",
|
|
||||||
"group": "Група",
|
|
||||||
"frame": "Рамка",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Действия по платното",
|
"canvasActions": "Действия по платното",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Фигури"
|
"shapes": "Фигури"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
|
||||||
"canvasPanning": "",
|
"canvasPanning": "",
|
||||||
"linearElement": "Кликнете, за да стартирате няколко точки, плъзнете за една линия",
|
"linearElement": "Кликнете, за да стартирате няколко точки, плъзнете за една линия",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Натиснете и влачете, пуснете като сте готови",
|
"freeDraw": "Натиснете и влачете, пуснете като сте готови",
|
||||||
"text": "Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция",
|
"text": "Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция",
|
||||||
"embeddable": "Натисни-премести, за да създадеш вметка за уебсайт",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "",
|
||||||
"text_editing": "",
|
"text_editing": "",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Кликнете върху последната точка или натиснете Escape или Enter, за да завършите",
|
||||||
"lockAngle": "",
|
"lockAngle": "Можете да ограничите ъгъла, като задържите SHIFT",
|
||||||
"resize": "",
|
"resize": "Може да ограничите при преоразмеряване като задържите SHIFT,\nзадръжте ALT за преоразмерите през центъра",
|
||||||
"resizeImage": "",
|
"resizeImage": "",
|
||||||
"rotate": "",
|
"rotate": "Можете да ограничите ъглите, като държите SHIFT, докато се въртите",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите",
|
||||||
"lineEditor_pointSelected": "",
|
|
||||||
"lineEditor_nothingSelected": "",
|
"lineEditor_nothingSelected": "",
|
||||||
"publishLibrary": "Публикувайте собствена библиотека",
|
"placeImage": "",
|
||||||
"bindTextToElement": "",
|
"publishLibrary": "",
|
||||||
"createFlowchart": "",
|
"bindTextToElement": "Натиснете Enter, за да добавите",
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"eraserRevert": "",
|
"eraserRevert": "",
|
||||||
"firefox_clipboard_write": "",
|
"firefox_clipboard_write": "",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Невъзможност за показване на preview",
|
"cannotShowPreview": "Невъзможност за показване на preview",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата <button>тракер за грешки.</button> Моля, включете информация по-долу, като я копирате и добавите в GitHub.",
|
"openIssueMessage": "Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата <button>тракер за грешки.</button> Моля, включете информация по-долу, като я копирате и добавите в GitHub.",
|
||||||
"sceneContent": "Съдържание на сцената:"
|
"sceneContent": "Съдържание на сцената:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Или"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Поканете хора да работят съвместно на рисунката.",
|
"desc_intro": "Можете да поканите хора на текущата си сцена да си сътрудничат с вас.",
|
||||||
"desc_privacy": "",
|
"desc_privacy": "Не се притеснявайте, сесията използва криптиране от край до край, така че каквото нарисувате ще остане частно. Дори нашият сървър няма да може да види какво предлагате.",
|
||||||
"button_startSession": "Стартирайте сесията",
|
"button_startSession": "Стартирайте сесията",
|
||||||
"button_stopSession": "Стоп на сесията",
|
"button_stopSession": "Стоп на сесията",
|
||||||
"desc_inProgressIntro": "Сесията за сътрудничество на живо е в ход.",
|
"desc_inProgressIntro": "Сесията за сътрудничество на живо е в ход.",
|
||||||
@@ -395,10 +313,10 @@
|
|||||||
"title": "Грешка"
|
"title": "Грешка"
|
||||||
},
|
},
|
||||||
"exportDialog": {
|
"exportDialog": {
|
||||||
"disk_title": "Запази към диск",
|
"disk_title": "",
|
||||||
"disk_details": "",
|
"disk_details": "",
|
||||||
"disk_button": "Запази като файл",
|
"disk_button": "",
|
||||||
"link_title": "Връзка за споделяне",
|
"link_title": "",
|
||||||
"link_details": "",
|
"link_details": "",
|
||||||
"link_button": "",
|
"link_button": "",
|
||||||
"excalidrawplus_description": "",
|
"excalidrawplus_description": "",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "клик",
|
"click": "клик",
|
||||||
"deepSelect": "",
|
"deepSelect": "",
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "Извита стрелка",
|
"curvedArrow": "Извита стрелка",
|
||||||
"curvedLine": "Извита линия",
|
"curvedLine": "Извита линия",
|
||||||
"documentation": "Документация",
|
"documentation": "Документация",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Приближи селекцията",
|
"zoomToSelection": "Приближи селекцията",
|
||||||
"toggleElementLock": "Заключи/Отключи селекция",
|
"toggleElementLock": "Заключи/Отключи селекция",
|
||||||
"movePageUpDown": "Премести страница нагоре/надолу",
|
"movePageUpDown": "Премести страница нагоре/надолу",
|
||||||
"movePageLeftRight": "Премести страница наляво/надясно",
|
"movePageLeftRight": "Премести страница наляво/надясно"
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Изчисти платното"
|
"title": "Изчисти платното"
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Ъгъл",
|
"angle": "Ъгъл",
|
||||||
"shapes": "",
|
"element": "Елемент",
|
||||||
|
"elements": "Елементи",
|
||||||
"height": "Височина",
|
"height": "Височина",
|
||||||
"scene": "Сцена",
|
"scene": "Сцена",
|
||||||
"selected": "Селектирано",
|
"selected": "Селектирано",
|
||||||
"storage": "Съхранение на данни",
|
"storage": "Съхранение на данни",
|
||||||
"fullTitle": "",
|
"title": "Статистика за хакери",
|
||||||
"title": "",
|
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "Общо",
|
"total": "Общо",
|
||||||
"version": "Версия",
|
"version": "Версия",
|
||||||
"versionCopy": "Настисни за да копираш",
|
"versionCopy": "Настисни за да копираш",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Копирани стилове.",
|
"copyStyles": "Копирани стилове.",
|
||||||
"copyToClipboard": "Копирано в клипборда.",
|
"copyToClipboard": "Копирано в клипборда.",
|
||||||
"copyToClipboardAsPng": "Копира {{exportSelection}} в клипборда като PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "Копира {{exportSelection}} в клипборда като PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Файлът е запазен.",
|
"fileSaved": "Файлът е запазен.",
|
||||||
"fileSavedToFilename": "Запазен към {filename}",
|
"fileSavedToFilename": "Запазен към {filename}",
|
||||||
"canvas": "платно",
|
"canvas": "платно",
|
||||||
"selection": "селекция",
|
"selection": "селекция",
|
||||||
"pasteAsSingleElement": "",
|
"pasteAsSingleElement": "",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Прозрачен",
|
"transparent": "Прозрачен",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Най-често използвани цветове",
|
"mostUsedCustomColors": "Най-често използвани цветове",
|
||||||
"colors": "Цветове",
|
"colors": "Цветове",
|
||||||
"shades": "Нюанси",
|
"shades": "Нюанси",
|
||||||
@@ -608,57 +517,9 @@
|
|||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "",
|
"title": "",
|
||||||
"button": "Вмъкни",
|
"button": "",
|
||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "Mermaid Синтаксис",
|
"syntax": "",
|
||||||
"preview": "Преглед"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "Натиснете потребител, за да го следвате",
|
|
||||||
"followStatus": "В момента следвате този потребител",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "Микрофона на потребителят е заглушен",
|
|
||||||
"isSpeaking": "Потребителят говори"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Палитра команди",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Избери",
|
|
||||||
"confirm": "Потвърди",
|
|
||||||
"close": "Затвори"
|
|
||||||
},
|
|
||||||
"recents": "Наскоро използвани",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "পীএনজী ছবির মতন কপি করুন",
|
"copyAsPng": "পীএনজী ছবির মতন কপি করুন",
|
||||||
"copyAsSvg": "এসভীজী ছবির মতন কপি করুন",
|
"copyAsSvg": "এসভীজী ছবির মতন কপি করুন",
|
||||||
"copyText": "লিখিত তথ্যের মতন কপি করুন",
|
"copyText": "লিখিত তথ্যের মতন কপি করুন",
|
||||||
"copySource": "পিএনজি ছবি ক্লিপবোর্ডে কপি করুন",
|
"copySource": "",
|
||||||
"convertToCode": "কোডে রূপান্তর করুন",
|
"convertToCode": "",
|
||||||
"bringForward": "অধিকতর সামনে আনুন",
|
"bringForward": "অধিকতর সামনে আনুন",
|
||||||
"sendToBack": "অধিকতর পিছনে নিয়ে যান",
|
"sendToBack": "অধিকতর পিছনে নিয়ে যান",
|
||||||
"bringToFront": "সবার সামনে আনুন",
|
"bringToFront": "সবার সামনে আনুন",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "ডিজাইন কপি করুন",
|
"copyStyles": "ডিজাইন কপি করুন",
|
||||||
"pasteStyles": "ডিজাইন পেস্ট করুন",
|
"pasteStyles": "ডিজাইন পেস্ট করুন",
|
||||||
"stroke": "রেখাংশ",
|
"stroke": "রেখাংশ",
|
||||||
"changeStroke": "Hi",
|
|
||||||
"background": "পটভূমি",
|
"background": "পটভূমি",
|
||||||
"changeBackground": "পটভূমির রঙ পরিবর্তন করুন",
|
|
||||||
"fill": "রং",
|
"fill": "রং",
|
||||||
"strokeWidth": "রেখাংশের বেধ",
|
"strokeWidth": "রেখাংশের বেধ",
|
||||||
"strokeStyle": "রেখাংশের ডিজাইন",
|
"strokeStyle": "রেখাংশের ডিজাইন",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "কিছু না",
|
"arrowhead_none": "কিছু না",
|
||||||
"arrowhead_arrow": "তীর",
|
"arrowhead_arrow": "তীর",
|
||||||
"arrowhead_bar": "রেখাংশ",
|
"arrowhead_bar": "রেখাংশ",
|
||||||
"arrowhead_circle": "বৃত্ত",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "বৃত্তীয় (প্রান্তরেখা) প্রান্তরেখা",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "ত্রিভূজ",
|
"arrowhead_triangle": "ত্রিভূজ",
|
||||||
"arrowhead_triangle_outline": "ত্রিভুজ (প্রান্তরেখা) প্রান্তরেখা",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "হীরক",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "হীরক (প্রান্তরেখা)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "",
|
|
||||||
"arrowtype_sharp": "",
|
|
||||||
"arrowtype_round": "",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "লেখনীর মাত্রা",
|
"fontSize": "লেখনীর মাত্রা",
|
||||||
"fontFamily": "লেখনীর হরফ",
|
"fontFamily": "লেখনীর হরফ",
|
||||||
"addWatermark": "এক্সক্যালিড্র দ্বারা প্রস্তুত",
|
"addWatermark": "এক্সক্যালিড্র দ্বারা প্রস্তুত",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "ক্যানভাসের রং",
|
"canvasColors": "ক্যানভাসের রং",
|
||||||
"canvasBackground": "ক্যানভাসের পটভূমি",
|
"canvasBackground": "ক্যানভাসের পটভূমি",
|
||||||
"drawingCanvas": "ব্যবহৃত ক্যানভাস",
|
"drawingCanvas": "ব্যবহৃত ক্যানভাস",
|
||||||
"clearCanvas": "পরিষ্কার ক্যানভাস",
|
|
||||||
"layers": "মাত্রা",
|
"layers": "মাত্রা",
|
||||||
"actions": "ক্রিয়া",
|
"actions": "ক্রিয়া",
|
||||||
"language": "ভাষা",
|
"language": "ভাষা",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "দল গঠন করুন",
|
"group": "দল গঠন করুন",
|
||||||
"ungroup": "দল বিভেদ করুন",
|
"ungroup": "দল বিভেদ করুন",
|
||||||
"collaborators": "সহযোগী",
|
"collaborators": "সহযোগী",
|
||||||
"toggleGrid": "",
|
"showGrid": "গ্রিড দেখান",
|
||||||
"addToLibrary": "সংগ্রহে যোগ করুন",
|
"addToLibrary": "সংগ্রহে যোগ করুন",
|
||||||
"removeFromLibrary": "সংগ্রহ থেকে বের করুন",
|
"removeFromLibrary": "সংগ্রহ থেকে বের করুন",
|
||||||
"libraryLoadingMessage": "সংগ্রহ তৈরি হচ্ছে",
|
"libraryLoadingMessage": "সংগ্রহ তৈরি হচ্ছে",
|
||||||
"libraries": "সংগ্রহ দেখুন",
|
"libraries": "সংগ্রহ দেখুন",
|
||||||
"loadingScene": "দৃশ্য তৈরি হচ্ছে",
|
"loadingScene": "দৃশ্য তৈরি হচ্ছে",
|
||||||
"loadScene": "",
|
|
||||||
"align": "পংক্তিবিন্যাস",
|
"align": "পংক্তিবিন্যাস",
|
||||||
"alignTop": "উপর পংক্তি",
|
"alignTop": "উপর পংক্তি",
|
||||||
"alignBottom": "নিম্ন পংক্তি",
|
"alignBottom": "নিম্ন পংক্তি",
|
||||||
@@ -116,34 +104,27 @@
|
|||||||
"viewMode": "দৃশ্য",
|
"viewMode": "দৃশ্য",
|
||||||
"share": "ভাগ করুন",
|
"share": "ভাগ করুন",
|
||||||
"showStroke": "",
|
"showStroke": "",
|
||||||
"showBackground": "পটভূমির রঙ নির্বাচনকারী অপশন দেখান",
|
"showBackground": "",
|
||||||
"showFonts": "",
|
|
||||||
"toggleTheme": "",
|
"toggleTheme": "",
|
||||||
"theme": "",
|
"personalLib": "",
|
||||||
"personalLib": "ব্যক্তিগত লাইব্রেরি",
|
"excalidrawLib": "",
|
||||||
"excalidrawLib": "এক্সক্যালিড্র লাইব্রেরি",
|
|
||||||
"decreaseFontSize": "লেখনীর মাত্রা কমান",
|
"decreaseFontSize": "লেখনীর মাত্রা কমান",
|
||||||
"increaseFontSize": "লেখনীর মাত্রা বাড়ান",
|
"increaseFontSize": "লেখনীর মাত্রা বাড়ান",
|
||||||
"unbindText": "লেখার জোড় খুলুন",
|
"unbindText": "",
|
||||||
"bindText": "কন্টেইনারের সাথে লেখা জোড়া লাগান",
|
"bindText": "",
|
||||||
"createContainerFromText": "",
|
"createContainerFromText": "",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "লিঙ্ক সংশোধন",
|
"edit": "লিঙ্ক সংশোধন",
|
||||||
"editEmbed": "",
|
"editEmbed": "",
|
||||||
"create": "",
|
"create": "লিঙ্ক তৈরী",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "লিঙ্ক নামকরণ",
|
"label": "লিঙ্ক নামকরণ",
|
||||||
"labelEmbed": "লিংক ও এম্বেড",
|
"labelEmbed": "",
|
||||||
"empty": "কোন লিংক সেট করা নেই",
|
"empty": ""
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "লাইন সম্পাদনা করুন",
|
"edit": "",
|
||||||
"editArrow": ""
|
"exit": ""
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "আবদ্ধ করুন",
|
"lock": "আবদ্ধ করুন",
|
||||||
@@ -153,50 +134,16 @@
|
|||||||
},
|
},
|
||||||
"statusPublished": "প্রকাশিত",
|
"statusPublished": "প্রকাশিত",
|
||||||
"sidebarLock": "লক",
|
"sidebarLock": "লক",
|
||||||
"selectAllElementsInFrame": "ফ্রেমের ভিতরের সব উপকরণ বাছাই করুন",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "ফ্রেম থেকে সব উপকরণ মুছুন",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "ক্যানভাস থেকে রঙ বাছাই করুন",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "লেখা থেকে ডায়াগ্রাম",
|
"textToDiagram": "",
|
||||||
"prompt": "",
|
"prompt": ""
|
||||||
"followUs": "",
|
|
||||||
"discordChat": "",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "সংগ্রহে কিছু যোগ করা হয়নি",
|
"noItems": "সংগ্রহে কিছু যোগ করা হয়নি",
|
||||||
"hint_emptyLibrary": "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷",
|
"hint_emptyLibrary": "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷",
|
||||||
"hint_emptyPrivateLibrary": "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন",
|
"hint_emptyPrivateLibrary": "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন"
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "ক্যানভাস সাফ করুন",
|
"clearReset": "ক্যানভাস সাফ করুন",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "",
|
"exportImage": "",
|
||||||
"export": "",
|
"export": "",
|
||||||
"copyToClipboard": "ক্লিপবোর্ডে কপি করুন",
|
"copyToClipboard": "ক্লিপবোর্ডে কপি করুন",
|
||||||
"copyLink": "",
|
|
||||||
"save": "জমা করুন",
|
"save": "জমা করুন",
|
||||||
"saveAs": "অন্যভাবে জমা করুন",
|
"saveAs": "অন্যভাবে জমা করুন",
|
||||||
"load": "",
|
"load": "",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "পূর্ণস্ক্রীন",
|
"fullScreen": "পূর্ণস্ক্রীন",
|
||||||
"darkMode": "ডার্ক মোড",
|
"darkMode": "ডার্ক মোড",
|
||||||
"lightMode": "লাইট মোড",
|
"lightMode": "লাইট মোড",
|
||||||
"systemMode": "",
|
|
||||||
"zenMode": "জেন মোড",
|
"zenMode": "জেন মোড",
|
||||||
"objectsSnapMode": "",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "জেন মোড বন্ধ করুন",
|
"exitZenMode": "জেন মোড বন্ধ করুন",
|
||||||
"cancel": "বাতিল",
|
"cancel": "বাতিল",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "সাফ",
|
"clear": "সাফ",
|
||||||
"remove": "বিয়োগ",
|
"remove": "বিয়োগ",
|
||||||
"embed": "",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "সংগ্রহ প্রকাশ করুন",
|
||||||
"submit": "জমা করুন",
|
"submit": "জমা করুন",
|
||||||
"confirm": "নিশ্চিত করুন",
|
"confirm": "নিশ্চিত করুন",
|
||||||
"embeddableInteractionButton": ""
|
"embeddableInteractionButton": ""
|
||||||
@@ -260,8 +204,7 @@
|
|||||||
"resetLibrary": "এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?",
|
"resetLibrary": "এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?",
|
||||||
"removeItemsFromsLibrary": "সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?",
|
"removeItemsFromsLibrary": "সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?",
|
||||||
"invalidEncryptionKey": "অবৈধ এনক্রীপশন কী।",
|
"invalidEncryptionKey": "অবৈধ এনক্রীপশন কী।",
|
||||||
"collabOfflineWarning": "",
|
"collabOfflineWarning": ""
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "অসমর্থিত ফাইল।",
|
"unsupportedFileType": "অসমর্থিত ফাইল।",
|
||||||
@@ -269,9 +212,9 @@
|
|||||||
"fileTooBig": "ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷",
|
"fileTooBig": "ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷",
|
||||||
"svgImageInsertError": "এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷",
|
"svgImageInsertError": "এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷",
|
||||||
"failedToFetchImage": "",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷",
|
||||||
"cannotResolveCollabServer": "কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।",
|
"cannotResolveCollabServer": "কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।",
|
||||||
"importLibraryError": "সংগ্রহ লোড করা যায়নি",
|
"importLibraryError": "সংগ্রহ লোড করা যায়নি",
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "",
|
"collabSaveFailed": "",
|
||||||
"collabSaveFailed_sizeExceeded": "",
|
"collabSaveFailed_sizeExceeded": "",
|
||||||
"imageToolNotSupported": "",
|
"imageToolNotSupported": "",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "বাছাই",
|
"selection": "বাছাই",
|
||||||
"lasso": "",
|
|
||||||
"image": "চিত্র সন্নিবেশ",
|
"image": "চিত্র সন্নিবেশ",
|
||||||
"rectangle": "আয়তক্ষেত্র",
|
"rectangle": "আয়তক্ষেত্র",
|
||||||
"diamond": "রুহিতন",
|
"diamond": "রুহিতন",
|
||||||
@@ -304,7 +246,7 @@
|
|||||||
"library": "সংগ্রহ",
|
"library": "সংগ্রহ",
|
||||||
"lock": "আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন",
|
"lock": "আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন",
|
||||||
"penMode": "",
|
"penMode": "",
|
||||||
"link": "",
|
"link": "একটি নির্বাচিত আকৃতির জন্য লিঙ্ক যোগ বা আপডেট করুন",
|
||||||
"eraser": "ঝাড়ন",
|
"eraser": "ঝাড়ন",
|
||||||
"frame": "",
|
"frame": "",
|
||||||
"magicframe": "",
|
"magicframe": "",
|
||||||
@@ -313,23 +255,7 @@
|
|||||||
"hand": "",
|
"hand": "",
|
||||||
"extraTools": "",
|
"extraTools": "",
|
||||||
"mermaidToExcalidraw": "",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": ""
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "ক্যানভাস কার্যকলাপ",
|
"canvasActions": "ক্যানভাস কার্যকলাপ",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "আকার(গুলি)"
|
"shapes": "আকার(গুলি)"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
|
||||||
"canvasPanning": "",
|
"canvasPanning": "",
|
||||||
"linearElement": "একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন",
|
"linearElement": "একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন",
|
"freeDraw": "ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন",
|
||||||
"text": "বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন",
|
"text": "বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন",
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "লেখা সম্পাদনা করতে ডাবল-ক্লিক করুন বা এন্টার টিপুন",
|
||||||
"text_editing": "",
|
"text_editing": "লেখা সম্পাদনা শেষ করতে এসকেপ বা কন্ট্রোল/কম্যান্ড যোগে এন্টার টিপুন",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "শেষ বিন্দুতে ক্লিক করুন অথবা শেষ করতে এসকেপ বা এন্টার টিপুন",
|
||||||
"lockAngle": "",
|
"lockAngle": "ঘোরানোর সময় আপনি শিফ্ট ধরে রেখে কোণ সীমাবদ্ধ করতে পারেন",
|
||||||
"resize": "",
|
"resize": "আপনি আকার পরিবর্তন করার সময় শিফ্ট ধরে রেখে অনুপাতকে সীমাবদ্ধ করতে পারেন,\nকেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরে রাখুন",
|
||||||
"resizeImage": "",
|
"resizeImage": "আপনি শিফ্ট ধরে রেখে অবাধে আকার পরিবর্তন করতে পারেন, কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরুন",
|
||||||
"rotate": "",
|
"rotate": "আপনি ঘোরানোর সময় শিফ্ট ধরে রেখে কোণগুলিকে সীমাবদ্ধ করতে পারেন",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "বিন্দু(গুলি) মুছতে ডিলিট টিপুন, কন্ট্রোল/কম্যান্ড যোগে ডি টিপুন নকল করতে অথবা সরানোর জন্য টানুন",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "সম্পাদনা করার জন্য একটি বিন্দু নির্বাচন করুন (একাধিক নির্বাচন করতে শিফ্ট ধরে রাখুন),\nঅথবা অল্ট ধরে রাখুন এবং নতুন বিন্দু যোগ করতে ক্লিক করুন",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "ছবিটি স্থাপন করতে ক্লিক করুন, অথবা নিজে আকার সেট করতে ক্লিক করুন এবং টেনে আনুন",
|
||||||
"publishLibrary": "আপনার নিজস্ব সংগ্রহ প্রকাশ করুন",
|
"publishLibrary": "আপনার নিজস্ব সংগ্রহ প্রকাশ করুন",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "লেখা যোগ করতে এন্টার টিপুন",
|
||||||
"createFlowchart": "",
|
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"eraserRevert": "",
|
"eraserRevert": "মুছে ফেলার জন্য চিহ্নিত উপাদানগুলিকে ফিরিয়ে আনতে অল্ট ধরে রাখুন",
|
||||||
"firefox_clipboard_write": "",
|
"firefox_clipboard_write": "",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "প্রিভিউ দেখাতে অপারগ",
|
"cannotShowPreview": "প্রিভিউ দেখাতে অপারগ",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন <button>ত্রুটি ইতিবৃত্ত।</button> অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।",
|
"openIssueMessage": "আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন <button>ত্রুটি ইতিবৃত্ত।</button> অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।",
|
||||||
"sceneContent": "দৃশ্য বিষয়বস্তু:"
|
"sceneContent": "দৃশ্য বিষয়বস্তু:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": ""
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "",
|
"desc_intro": "আপনি আপনার সাথে সহযোগিতা করার জন্য আপনার বর্তমান দৃশ্যে লোকেদের আমন্ত্রণ জানাতে পারেন৷",
|
||||||
"desc_privacy": "",
|
"desc_privacy": "চিন্তা করবেন না, সেশনটি এন্ড-টু-এন্ড এনক্রিপশন ব্যবহার করে, তাই আপনি যা আঁকবেন তা গোপন থাকবে। এমনকি আমাদের সার্ভার আপনি যা নিয়ে এসেছেন তা দেখতে সক্ষম হবে না।",
|
||||||
"button_startSession": "সেশন শুরু করুন",
|
"button_startSession": "সেশন শুরু করুন",
|
||||||
"button_stopSession": "সেশন বন্ধ করুন",
|
"button_stopSession": "সেশন বন্ধ করুন",
|
||||||
"desc_inProgressIntro": "লাইভ-সহযোগীতার সেশন এখন চলছে।",
|
"desc_inProgressIntro": "লাইভ-সহযোগীতার সেশন এখন চলছে।",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "ক্লিক",
|
"click": "ক্লিক",
|
||||||
"deepSelect": "",
|
"deepSelect": "",
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "",
|
"curvedArrow": "",
|
||||||
"curvedLine": "",
|
"curvedLine": "",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "",
|
"zoomToSelection": "",
|
||||||
"toggleElementLock": "",
|
"toggleElementLock": "",
|
||||||
"movePageUpDown": "",
|
"movePageUpDown": "",
|
||||||
"movePageLeftRight": "",
|
"movePageLeftRight": ""
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": ""
|
"title": ""
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "কোণ",
|
"angle": "কোণ",
|
||||||
"shapes": "",
|
"element": "",
|
||||||
|
"elements": "",
|
||||||
"height": "",
|
"height": "",
|
||||||
"scene": "",
|
"scene": "",
|
||||||
"selected": "",
|
"selected": "",
|
||||||
"storage": "",
|
"storage": "",
|
||||||
"fullTitle": "",
|
|
||||||
"title": "",
|
"title": "",
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "",
|
"total": "",
|
||||||
"version": "",
|
"version": "",
|
||||||
"versionCopy": "",
|
"versionCopy": "",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "",
|
"copyStyles": "",
|
||||||
"copyToClipboard": "ক্লিপবোর্ডে কপি করা হয়েছে।",
|
"copyToClipboard": "ক্লিপবোর্ডে কপি করা হয়েছে।",
|
||||||
"copyToClipboardAsPng": "",
|
"copyToClipboardAsPng": "",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "",
|
"fileSaved": "",
|
||||||
"fileSavedToFilename": "",
|
"fileSavedToFilename": "",
|
||||||
"canvas": "",
|
"canvas": "",
|
||||||
"selection": "বাছাই",
|
"selection": "বাছাই",
|
||||||
"pasteAsSingleElement": "",
|
"pasteAsSingleElement": "",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "",
|
"transparent": "",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "",
|
"mostUsedCustomColors": "",
|
||||||
"colors": "",
|
"colors": "",
|
||||||
"shades": "",
|
"shades": "",
|
||||||
@@ -612,53 +521,5 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "",
|
"syntax": "",
|
||||||
"preview": ""
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "",
|
|
||||||
"followStatus": "",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "",
|
|
||||||
"confirm": "",
|
|
||||||
"close": ""
|
|
||||||
},
|
|
||||||
"recents": "",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,664 +0,0 @@
|
|||||||
{
|
|
||||||
"labels": {
|
|
||||||
"paste": "পেস্ট করুন",
|
|
||||||
"pasteAsPlaintext": "প্লেইনটেক্সট হিসাবে পেস্ট করুন",
|
|
||||||
"pasteCharts": "চার্ট পেস্ট করুন",
|
|
||||||
"selectAll": "সবটা সিলেক্ট করুন",
|
|
||||||
"multiSelect": "একাধিক সিলেক্ট করুন",
|
|
||||||
"moveCanvas": "ক্যানভাস সরান",
|
|
||||||
"cut": "কাট করুন",
|
|
||||||
"copy": "কপি করুন",
|
|
||||||
"copyAsPng": "পীএনজী ছবির মতন কপি করুন",
|
|
||||||
"copyAsSvg": "এসভীজী ছবির মতন কপি করুন",
|
|
||||||
"copyText": "লিখিত তথ্যের মতন কপি করুন",
|
|
||||||
"copySource": "পিএনজি ছবি ক্লিপবোর্ডে কপি করুন",
|
|
||||||
"convertToCode": "কোডে রূপান্তর করুন",
|
|
||||||
"bringForward": "অধিকতর সামনে আনুন",
|
|
||||||
"sendToBack": "অধিকতর পিছনে নিয়ে যান",
|
|
||||||
"bringToFront": "সবার সামনে আনুন",
|
|
||||||
"sendBackward": "সবার পিছনে নিয়ে যান",
|
|
||||||
"delete": "মুছা",
|
|
||||||
"copyStyles": "ডিজাইন কপি করুন",
|
|
||||||
"pasteStyles": "ডিজাইন পেস্ট করুন",
|
|
||||||
"stroke": "রেখাংশ",
|
|
||||||
"changeStroke": "Hi",
|
|
||||||
"background": "পটভূমি",
|
|
||||||
"changeBackground": "পটভূমির রঙ পরিবর্তন করুন",
|
|
||||||
"fill": "রং",
|
|
||||||
"strokeWidth": "রেখাংশের বেধ",
|
|
||||||
"strokeStyle": "রেখাংশের ডিজাইন",
|
|
||||||
"strokeStyle_solid": "পুরু",
|
|
||||||
"strokeStyle_dashed": "পাতলা",
|
|
||||||
"strokeStyle_dotted": "বিন্দুবিন্দু",
|
|
||||||
"sloppiness": "ভ্রান্তি",
|
|
||||||
"opacity": "দৃশ্যমানতা",
|
|
||||||
"textAlign": "লেখ অনুভূমি",
|
|
||||||
"edges": "কোণ",
|
|
||||||
"sharp": "তীক্ষ্ণ",
|
|
||||||
"round": "গোল",
|
|
||||||
"arrowheads": "তীরের শীর্ষভাগ",
|
|
||||||
"arrowhead_none": "কিছু না",
|
|
||||||
"arrowhead_arrow": "তীর",
|
|
||||||
"arrowhead_bar": "রেখাংশ",
|
|
||||||
"arrowhead_circle": "বৃত্ত",
|
|
||||||
"arrowhead_circle_outline": "বৃত্তীয় (প্রান্তরেখা) প্রান্তরেখা",
|
|
||||||
"arrowhead_triangle": "ত্রিভূজ",
|
|
||||||
"arrowhead_triangle_outline": "ত্রিভুজ (প্রান্তরেখা) প্রান্তরেখা",
|
|
||||||
"arrowhead_diamond": "হীরক",
|
|
||||||
"arrowhead_diamond_outline": "হীরক (প্রান্তরেখা)",
|
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "",
|
|
||||||
"arrowtype_sharp": "",
|
|
||||||
"arrowtype_round": "",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "লেখনীর মাত্রা",
|
|
||||||
"fontFamily": "লেখনীর হরফ",
|
|
||||||
"addWatermark": "এক্সক্যালিড্র দ্বারা প্রস্তুত",
|
|
||||||
"handDrawn": "হাতে আঁকা",
|
|
||||||
"normal": "স্বাভাবিক",
|
|
||||||
"code": "কোড",
|
|
||||||
"small": "ছোট",
|
|
||||||
"medium": "মাঝারি",
|
|
||||||
"large": "বড়",
|
|
||||||
"veryLarge": "অনেক বড়",
|
|
||||||
"solid": "দৃঢ়",
|
|
||||||
"hachure": "ভ্রুলেখা",
|
|
||||||
"zigzag": "আঁকাবাঁকা",
|
|
||||||
"crossHatch": "ক্রস হ্যাচ",
|
|
||||||
"thin": "পাতলা",
|
|
||||||
"bold": "পুরু",
|
|
||||||
"left": "বাম",
|
|
||||||
"center": "কেন্দ্র",
|
|
||||||
"right": "ডান",
|
|
||||||
"extraBold": "অতি পুরু",
|
|
||||||
"architect": "স্থপতি",
|
|
||||||
"artist": "শিল্পী",
|
|
||||||
"cartoonist": "চিত্রকার",
|
|
||||||
"fileTitle": "ফাইলের নাম",
|
|
||||||
"colorPicker": "রং পছন্দ করুন",
|
|
||||||
"canvasColors": "ক্যানভাসের রং",
|
|
||||||
"canvasBackground": "ক্যানভাসের পটভূমি",
|
|
||||||
"drawingCanvas": "ব্যবহৃত ক্যানভাস",
|
|
||||||
"clearCanvas": "পরিষ্কার ক্যানভাস",
|
|
||||||
"layers": "মাত্রা",
|
|
||||||
"actions": "ক্রিয়া",
|
|
||||||
"language": "ভাষা",
|
|
||||||
"liveCollaboration": "সরাসরি পারস্পরিক সহযোগিতা...",
|
|
||||||
"duplicateSelection": "সদৃশ সিলেক্ট",
|
|
||||||
"untitled": "অনামী",
|
|
||||||
"name": "নাম",
|
|
||||||
"yourName": "আপনার নাম",
|
|
||||||
"madeWithExcalidraw": "এক্সক্যালিড্র দ্বারা তৈরি",
|
|
||||||
"group": "দল গঠন করুন",
|
|
||||||
"ungroup": "দল বিভেদ করুন",
|
|
||||||
"collaborators": "সহযোগী",
|
|
||||||
"toggleGrid": "",
|
|
||||||
"addToLibrary": "সংগ্রহে যোগ করুন",
|
|
||||||
"removeFromLibrary": "সংগ্রহ থেকে বের করুন",
|
|
||||||
"libraryLoadingMessage": "সংগ্রহ তৈরি হচ্ছে",
|
|
||||||
"libraries": "সংগ্রহ দেখুন",
|
|
||||||
"loadingScene": "দৃশ্য তৈরি হচ্ছে",
|
|
||||||
"loadScene": "",
|
|
||||||
"align": "পংক্তিবিন্যাস",
|
|
||||||
"alignTop": "উপর পংক্তি",
|
|
||||||
"alignBottom": "নিম্ন পংক্তি",
|
|
||||||
"alignLeft": "বাম পংক্তি",
|
|
||||||
"alignRight": "ডান পংক্তি",
|
|
||||||
"centerVertically": "উলম্ব কেন্দ্রিত",
|
|
||||||
"centerHorizontally": "অনুভূমিক কেন্দ্রিত",
|
|
||||||
"distributeHorizontally": "অনুভূমিকভাবে বিতরণ করুন",
|
|
||||||
"distributeVertically": "উল্লম্বভাবে বিতরণ করুন",
|
|
||||||
"flipHorizontal": "অনুভূমিক আবর্তন",
|
|
||||||
"flipVertical": "উলম্ব আবর্তন",
|
|
||||||
"viewMode": "দৃশ্য",
|
|
||||||
"share": "ভাগ করুন",
|
|
||||||
"showStroke": "",
|
|
||||||
"showBackground": "পটভূমির রঙ নির্বাচনকারী অপশন দেখান",
|
|
||||||
"showFonts": "",
|
|
||||||
"toggleTheme": "",
|
|
||||||
"theme": "",
|
|
||||||
"personalLib": "ব্যক্তিগত লাইব্রেরি",
|
|
||||||
"excalidrawLib": "এক্সক্যালিড্র লাইব্রেরি",
|
|
||||||
"decreaseFontSize": "লেখনীর মাত্রা কমান",
|
|
||||||
"increaseFontSize": "লেখনীর মাত্রা বাড়ান",
|
|
||||||
"unbindText": "লেখার জোড় খুলুন",
|
|
||||||
"bindText": "কন্টেইনারের সাথে লেখা জোড়া লাগান",
|
|
||||||
"createContainerFromText": "",
|
|
||||||
"link": {
|
|
||||||
"edit": "লিঙ্ক সংশোধন",
|
|
||||||
"editEmbed": "",
|
|
||||||
"create": "",
|
|
||||||
"label": "লিঙ্ক নামকরণ",
|
|
||||||
"labelEmbed": "লিংক ও এম্বেড",
|
|
||||||
"empty": "কোন লিংক সেট করা নেই",
|
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
|
||||||
"lineEditor": {
|
|
||||||
"edit": "লাইন সম্পাদনা করুন",
|
|
||||||
"editArrow": ""
|
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
|
||||||
"elementLock": {
|
|
||||||
"lock": "আবদ্ধ করুন",
|
|
||||||
"unlock": "বিচ্ছিন্ন করুন",
|
|
||||||
"lockAll": "সব আবদ্ধ করুন",
|
|
||||||
"unlockAll": "সব বিচ্ছিন্ন করুন"
|
|
||||||
},
|
|
||||||
"statusPublished": "প্রকাশিত",
|
|
||||||
"sidebarLock": "লক",
|
|
||||||
"selectAllElementsInFrame": "ফ্রেমের ভিতরের সব উপকরণ বাছাই করুন",
|
|
||||||
"removeAllElementsFromFrame": "ফ্রেম থেকে সব উপকরণ মুছুন",
|
|
||||||
"eyeDropper": "ক্যানভাস থেকে রঙ বাছাই করুন",
|
|
||||||
"textToDiagram": "লেখা থেকে ডায়াগ্রাম",
|
|
||||||
"prompt": "",
|
|
||||||
"followUs": "",
|
|
||||||
"discordChat": "",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
|
||||||
"library": {
|
|
||||||
"noItems": "সংগ্রহে কিছু যোগ করা হয়নি",
|
|
||||||
"hint_emptyLibrary": "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷",
|
|
||||||
"hint_emptyPrivateLibrary": "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন",
|
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
|
||||||
"buttons": {
|
|
||||||
"clearReset": "ক্যানভাস সাফ করুন",
|
|
||||||
"exportJSON": "জেসন নিবদ্ধ করুন",
|
|
||||||
"exportImage": "",
|
|
||||||
"export": "",
|
|
||||||
"copyToClipboard": "ক্লিপবোর্ডে কপি করুন",
|
|
||||||
"copyLink": "",
|
|
||||||
"save": "জমা করুন",
|
|
||||||
"saveAs": "অন্যভাবে জমা করুন",
|
|
||||||
"load": "",
|
|
||||||
"getShareableLink": "ভাগযোগ্য লিঙ্ক পান",
|
|
||||||
"close": "বন্ধ করুন",
|
|
||||||
"selectLanguage": "ভাষা চিহ্নিত করুন",
|
|
||||||
"scrollBackToContent": "বিষয়বস্তুতে ফেরত যান",
|
|
||||||
"zoomIn": "বড় করুন",
|
|
||||||
"zoomOut": "ছোট করুন",
|
|
||||||
"resetZoom": "স্বাভাবিক করুন",
|
|
||||||
"menu": "তালিকা",
|
|
||||||
"done": "সম্পন্ন",
|
|
||||||
"edit": "সংশোধন করুন",
|
|
||||||
"undo": "ফেরত যান",
|
|
||||||
"redo": "পুনরায় করুন",
|
|
||||||
"resetLibrary": "সংগ্রহ সাফ করুন",
|
|
||||||
"createNewRoom": "নতুন রুম বানান",
|
|
||||||
"fullScreen": "পূর্ণস্ক্রীন",
|
|
||||||
"darkMode": "ডার্ক মোড",
|
|
||||||
"lightMode": "লাইট মোড",
|
|
||||||
"systemMode": "",
|
|
||||||
"zenMode": "জেন মোড",
|
|
||||||
"objectsSnapMode": "",
|
|
||||||
"exitZenMode": "জেন মোড বন্ধ করুন",
|
|
||||||
"cancel": "বাতিল",
|
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "সাফ",
|
|
||||||
"remove": "বিয়োগ",
|
|
||||||
"embed": "",
|
|
||||||
"publishLibrary": "",
|
|
||||||
"submit": "জমা করুন",
|
|
||||||
"confirm": "নিশ্চিত করুন",
|
|
||||||
"embeddableInteractionButton": ""
|
|
||||||
},
|
|
||||||
"alerts": {
|
|
||||||
"clearReset": "এটি পুরো ক্যানভাস সাফ করবে। আপনি কি নিশ্চিত?",
|
|
||||||
"couldNotCreateShareableLink": "ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি।",
|
|
||||||
"couldNotCreateShareableLinkTooBig": "ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি: দৃশ্যটি খুব বড়",
|
|
||||||
"couldNotLoadInvalidFile": "অবৈধ ফাইল লোড করা যায়নি",
|
|
||||||
"importBackendFailed": "ব্যাকেন্ড থেকে আপলোড ব্যর্থ হয়েছে।",
|
|
||||||
"cannotExportEmptyCanvas": "খালি ক্যানভাস নিবদ্ধ করা যাবে না।",
|
|
||||||
"couldNotCopyToClipboard": "ক্লিপবোর্ডে কপি করা যায়নি।",
|
|
||||||
"decryptFailed": "তথ্য ডিক্রিপ্ট করা যায়নি।",
|
|
||||||
"uploadedSecurly": "আপলোডটি এন্ড-টু-এন্ড এনক্রিপশনের মাধ্যমে সুরক্ষিত করা হয়েছে, যার অর্থ হল এক্সক্যালিড্র সার্ভার এবং তৃতীয় পক্ষের দ্বারা পড়তে পারা সম্ভব নয়।",
|
|
||||||
"loadSceneOverridePrompt": "বাহ্যিক অঙ্কন লোড করা আপনার বিদ্যমান দৃশ্য প্রতিস্থাপন করবে। আপনি কি অবিরত করতে চান?",
|
|
||||||
"collabStopOverridePrompt": "অধিবেশন বন্ধ করা আপনার পূর্ববর্তী, স্থানীয়ভাবে সঞ্চিত অঙ্কন ওভাররাইট করবে। আপনি কি নিশ্চিত?\n\n(যদি আপনি আপনার স্থানীয় অঙ্কন রাখতে চান, তাহলে শুধু ব্রাউজার ট্যাবটি বন্ধ করুন।)",
|
|
||||||
"errorAddingToLibrary": "বস্তুটি সংগ্রহে যোগ করা যায়নি",
|
|
||||||
"errorRemovingFromLibrary": "বস্তুটি সংগ্রহ থেকে বিয়োগ করা যায়নি",
|
|
||||||
"confirmAddLibrary": "এটি আপনার সংগ্রহে {{numShapes}} আকার(গুলি) যোগ করবে। আপনি কি নিশ্চিত?",
|
|
||||||
"imageDoesNotContainScene": "এই ছবিতে কোনো দৃশ্যের তথ্য আছে বলে মনে হয় না৷ আপনি কি নিবদ্ধ করার সময় দৃশ্য এমবেডিং করতে সক্ষম?",
|
|
||||||
"cannotRestoreFromImage": "এই ফাইল থেকে দৃশ্য পুনরুদ্ধার করা যায়নি",
|
|
||||||
"invalidSceneUrl": "সরবরাহ করা লিঙ্ক থেকে দৃশ্য লোড করা যায়নি৷ এটি হয় বিকৃত, অথবা বৈধ এক্সক্যালিড্র জেসন তথ্য নেই৷",
|
|
||||||
"resetLibrary": "এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?",
|
|
||||||
"removeItemsFromsLibrary": "সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?",
|
|
||||||
"invalidEncryptionKey": "অবৈধ এনক্রীপশন কী।",
|
|
||||||
"collabOfflineWarning": "",
|
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
|
||||||
"errors": {
|
|
||||||
"unsupportedFileType": "অসমর্থিত ফাইল।",
|
|
||||||
"imageInsertError": "ছবি সন্নিবেশ করা যায়নি। পরে আবার চেষ্টা করুন...",
|
|
||||||
"fileTooBig": "ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷",
|
|
||||||
"svgImageInsertError": "এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷",
|
|
||||||
"failedToFetchImage": "",
|
|
||||||
"cannotResolveCollabServer": "কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।",
|
|
||||||
"importLibraryError": "সংগ্রহ লোড করা যায়নি",
|
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "",
|
|
||||||
"collabSaveFailed_sizeExceeded": "",
|
|
||||||
"imageToolNotSupported": "",
|
|
||||||
"brave_measure_text_error": {
|
|
||||||
"line1": "",
|
|
||||||
"line2": "",
|
|
||||||
"line3": "",
|
|
||||||
"line4": ""
|
|
||||||
},
|
|
||||||
"libraryElementTypeError": {
|
|
||||||
"embeddable": "",
|
|
||||||
"iframe": "",
|
|
||||||
"image": ""
|
|
||||||
},
|
|
||||||
"asyncPasteFailedOnRead": "",
|
|
||||||
"asyncPasteFailedOnParse": "",
|
|
||||||
"copyToSystemClipboardFailed": ""
|
|
||||||
},
|
|
||||||
"toolBar": {
|
|
||||||
"selection": "বাছাই",
|
|
||||||
"lasso": "",
|
|
||||||
"image": "চিত্র সন্নিবেশ",
|
|
||||||
"rectangle": "আয়তক্ষেত্র",
|
|
||||||
"diamond": "রুহিতন",
|
|
||||||
"ellipse": "উপবৃত্ত",
|
|
||||||
"arrow": "তীর",
|
|
||||||
"line": "রেখা",
|
|
||||||
"freedraw": "কলম",
|
|
||||||
"text": "লেখা",
|
|
||||||
"library": "সংগ্রহ",
|
|
||||||
"lock": "আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন",
|
|
||||||
"penMode": "",
|
|
||||||
"link": "",
|
|
||||||
"eraser": "ঝাড়ন",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"laser": "",
|
|
||||||
"hand": "",
|
|
||||||
"extraTools": "",
|
|
||||||
"mermaidToExcalidraw": "",
|
|
||||||
"convertElementType": ""
|
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": ""
|
|
||||||
},
|
|
||||||
"headings": {
|
|
||||||
"canvasActions": "ক্যানভাস কার্যকলাপ",
|
|
||||||
"selectedShapeActions": "বাছাই করা আকার(গুলি)র কার্যকলাপ",
|
|
||||||
"shapes": "আকার(গুলি)"
|
|
||||||
},
|
|
||||||
"hints": {
|
|
||||||
"dismissSearch": "",
|
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন",
|
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন",
|
|
||||||
"text": "বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন",
|
|
||||||
"embeddable": "",
|
|
||||||
"text_selected": "",
|
|
||||||
"text_editing": "",
|
|
||||||
"linearElementMulti": "",
|
|
||||||
"lockAngle": "",
|
|
||||||
"resize": "",
|
|
||||||
"resizeImage": "",
|
|
||||||
"rotate": "",
|
|
||||||
"lineEditor_info": "",
|
|
||||||
"lineEditor_line_info": "",
|
|
||||||
"lineEditor_pointSelected": "",
|
|
||||||
"lineEditor_nothingSelected": "",
|
|
||||||
"publishLibrary": "আপনার নিজস্ব সংগ্রহ প্রকাশ করুন",
|
|
||||||
"bindTextToElement": "",
|
|
||||||
"createFlowchart": "",
|
|
||||||
"deepBoxSelect": "",
|
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "",
|
|
||||||
"disableSnapping": "",
|
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
|
||||||
"canvasError": {
|
|
||||||
"cannotShowPreview": "প্রিভিউ দেখাতে অপারগ",
|
|
||||||
"canvasTooBig": "ক্যানভাস অনেক বড়।",
|
|
||||||
"canvasTooBigTip": "বিশেষ্য: দূরতম উপাদানগুলোকে একটু কাছাকাছি নিয়ে যাওয়ার চেষ্টা করুন।"
|
|
||||||
},
|
|
||||||
"errorSplash": {
|
|
||||||
"headingMain": "একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন <button>পৃষ্ঠাটি পুনরায় লোড করার।</button>",
|
|
||||||
"clearCanvasMessage": "যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন <button>ক্যানভাস পরিষ্কার করার।</button>",
|
|
||||||
"clearCanvasCaveat": " এর ফলে কাজের ক্ষতি হবে ",
|
|
||||||
"trackedToSentry": "ত্রুটি {{eventId}} আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।",
|
|
||||||
"openIssueMessage": "আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন <button>ত্রুটি ইতিবৃত্ত।</button> অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।",
|
|
||||||
"sceneContent": "দৃশ্য বিষয়বস্তু:"
|
|
||||||
},
|
|
||||||
"shareDialog": {
|
|
||||||
"or": ""
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
|
||||||
"desc_intro": "",
|
|
||||||
"desc_privacy": "",
|
|
||||||
"button_startSession": "সেশন শুরু করুন",
|
|
||||||
"button_stopSession": "সেশন বন্ধ করুন",
|
|
||||||
"desc_inProgressIntro": "লাইভ-সহযোগীতার সেশন এখন চলছে।",
|
|
||||||
"desc_shareLink": "আপনি যার সাথে সহযোগিতা করতে চান তাদের সাথে এই লিঙ্কটি ভাগ করুন: ",
|
|
||||||
"desc_exitSession": "অধিবেশন বন্ধ করা আপনাকে রুম থেকে সংযোগ বিচ্ছিন্ন করবে, কিন্তু আপনি স্থানীয়ভাবে দৃশ্যের সাথে কাজ চালিয়ে যেতে সক্ষম হবেন। মনে রাখবেন যে এটি অন্য লোকেদের প্রভাবিত করবে না এবং তারা এখনও তাদের সংস্করণে সহযোগিতা করতে সক্ষম হবে।",
|
|
||||||
"shareTitle": "এক্সক্যালিড্র লাইভ সহযোগিতা সেশনে যোগ দিন"
|
|
||||||
},
|
|
||||||
"errorDialog": {
|
|
||||||
"title": "ত্রুটি"
|
|
||||||
},
|
|
||||||
"exportDialog": {
|
|
||||||
"disk_title": "",
|
|
||||||
"disk_details": "",
|
|
||||||
"disk_button": "",
|
|
||||||
"link_title": "",
|
|
||||||
"link_details": "",
|
|
||||||
"link_button": "",
|
|
||||||
"excalidrawplus_description": "",
|
|
||||||
"excalidrawplus_button": "নিবদ্ধ",
|
|
||||||
"excalidrawplus_exportError": ""
|
|
||||||
},
|
|
||||||
"helpDialog": {
|
|
||||||
"blog": "",
|
|
||||||
"click": "ক্লিক",
|
|
||||||
"deepSelect": "",
|
|
||||||
"deepBoxSelect": "",
|
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "",
|
|
||||||
"curvedLine": "",
|
|
||||||
"documentation": "",
|
|
||||||
"doubleClick": "",
|
|
||||||
"drag": "",
|
|
||||||
"editor": "",
|
|
||||||
"editLineArrowPoints": "",
|
|
||||||
"editText": "",
|
|
||||||
"github": "",
|
|
||||||
"howto": "",
|
|
||||||
"or": "অথবা",
|
|
||||||
"preventBinding": "",
|
|
||||||
"tools": "",
|
|
||||||
"shortcuts": "",
|
|
||||||
"textFinish": "",
|
|
||||||
"textNewLine": "",
|
|
||||||
"title": "",
|
|
||||||
"view": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"zoomToSelection": "",
|
|
||||||
"toggleElementLock": "",
|
|
||||||
"movePageUpDown": "",
|
|
||||||
"movePageLeftRight": "",
|
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
|
||||||
"clearCanvasDialog": {
|
|
||||||
"title": ""
|
|
||||||
},
|
|
||||||
"publishDialog": {
|
|
||||||
"title": "",
|
|
||||||
"itemName": "",
|
|
||||||
"authorName": "",
|
|
||||||
"githubUsername": "",
|
|
||||||
"twitterUsername": "",
|
|
||||||
"libraryName": "",
|
|
||||||
"libraryDesc": "",
|
|
||||||
"website": "",
|
|
||||||
"placeholder": {
|
|
||||||
"authorName": "",
|
|
||||||
"libraryName": "",
|
|
||||||
"libraryDesc": "",
|
|
||||||
"githubHandle": "",
|
|
||||||
"twitterHandle": "",
|
|
||||||
"website": ""
|
|
||||||
},
|
|
||||||
"errors": {
|
|
||||||
"required": "",
|
|
||||||
"website": ""
|
|
||||||
},
|
|
||||||
"noteDescription": "",
|
|
||||||
"noteGuidelines": "",
|
|
||||||
"noteLicense": "",
|
|
||||||
"noteItems": "",
|
|
||||||
"atleastOneLibItem": "",
|
|
||||||
"republishWarning": ""
|
|
||||||
},
|
|
||||||
"publishSuccessDialog": {
|
|
||||||
"title": "",
|
|
||||||
"content": ""
|
|
||||||
},
|
|
||||||
"confirmDialog": {
|
|
||||||
"resetLibrary": "",
|
|
||||||
"removeItemsFromLib": ""
|
|
||||||
},
|
|
||||||
"imageExportDialog": {
|
|
||||||
"header": "",
|
|
||||||
"label": {
|
|
||||||
"withBackground": "",
|
|
||||||
"onlySelected": "",
|
|
||||||
"darkMode": "",
|
|
||||||
"embedScene": "",
|
|
||||||
"scale": "",
|
|
||||||
"padding": ""
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"embedScene": ""
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"exportToPng": "",
|
|
||||||
"exportToSvg": "",
|
|
||||||
"copyPngToClipboard": ""
|
|
||||||
},
|
|
||||||
"button": {
|
|
||||||
"exportToPng": "",
|
|
||||||
"exportToSvg": "",
|
|
||||||
"copyPngToClipboard": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"encrypted": {
|
|
||||||
"tooltip": "",
|
|
||||||
"link": ""
|
|
||||||
},
|
|
||||||
"stats": {
|
|
||||||
"angle": "কোণ",
|
|
||||||
"shapes": "",
|
|
||||||
"height": "",
|
|
||||||
"scene": "",
|
|
||||||
"selected": "",
|
|
||||||
"storage": "",
|
|
||||||
"fullTitle": "",
|
|
||||||
"title": "",
|
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "",
|
|
||||||
"version": "",
|
|
||||||
"versionCopy": "",
|
|
||||||
"versionNotAvailable": "",
|
|
||||||
"width": "প্রস্থ"
|
|
||||||
},
|
|
||||||
"toast": {
|
|
||||||
"addedToLibrary": "সংগ্রহশালায় যুক্ত হয়েছে",
|
|
||||||
"copyStyles": "",
|
|
||||||
"copyToClipboard": "ক্লিপবোর্ডে কপি করা হয়েছে।",
|
|
||||||
"copyToClipboardAsPng": "",
|
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "",
|
|
||||||
"fileSavedToFilename": "",
|
|
||||||
"canvas": "",
|
|
||||||
"selection": "বাছাই",
|
|
||||||
"pasteAsSingleElement": "",
|
|
||||||
"unableToEmbed": "",
|
|
||||||
"unrecognizedLinkFormat": "",
|
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
|
||||||
"colors": {
|
|
||||||
"transparent": "",
|
|
||||||
"black": "",
|
|
||||||
"white": "",
|
|
||||||
"red": "",
|
|
||||||
"pink": "",
|
|
||||||
"grape": "",
|
|
||||||
"violet": "",
|
|
||||||
"gray": "",
|
|
||||||
"blue": "",
|
|
||||||
"cyan": "",
|
|
||||||
"teal": "",
|
|
||||||
"green": "",
|
|
||||||
"yellow": "",
|
|
||||||
"orange": "",
|
|
||||||
"bronze": ""
|
|
||||||
},
|
|
||||||
"welcomeScreen": {
|
|
||||||
"app": {
|
|
||||||
"center_heading": "",
|
|
||||||
"center_heading_plus": "",
|
|
||||||
"menuHint": ""
|
|
||||||
},
|
|
||||||
"defaults": {
|
|
||||||
"menuHint": "",
|
|
||||||
"center_heading": "",
|
|
||||||
"toolbarHint": "",
|
|
||||||
"helpHint": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"colorPicker": {
|
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "",
|
|
||||||
"colors": "",
|
|
||||||
"shades": "",
|
|
||||||
"hexCode": "",
|
|
||||||
"noShades": ""
|
|
||||||
},
|
|
||||||
"overwriteConfirm": {
|
|
||||||
"action": {
|
|
||||||
"exportToImage": {
|
|
||||||
"title": "",
|
|
||||||
"button": "",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"saveToDisk": {
|
|
||||||
"title": "",
|
|
||||||
"button": "",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"excalidrawPlus": {
|
|
||||||
"title": "",
|
|
||||||
"button": "",
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"loadFromFile": {
|
|
||||||
"title": "",
|
|
||||||
"button": "",
|
|
||||||
"description": ""
|
|
||||||
},
|
|
||||||
"shareableLink": {
|
|
||||||
"title": "",
|
|
||||||
"button": "",
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mermaid": {
|
|
||||||
"title": "",
|
|
||||||
"button": "",
|
|
||||||
"description": "",
|
|
||||||
"syntax": "",
|
|
||||||
"preview": ""
|
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "",
|
|
||||||
"followStatus": "",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "",
|
|
||||||
"confirm": "",
|
|
||||||
"close": ""
|
|
||||||
},
|
|
||||||
"recents": "",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "Copia al porta-retalls com a PNG",
|
"copyAsPng": "Copia al porta-retalls com a PNG",
|
||||||
"copyAsSvg": "Copia al porta-retalls com a SVG",
|
"copyAsSvg": "Copia al porta-retalls com a SVG",
|
||||||
"copyText": "Copia al porta-retalls com a text",
|
"copyText": "Copia al porta-retalls com a text",
|
||||||
"copySource": "Copia al porta-retalls",
|
"copySource": "Copia l'origen al porta-retalls",
|
||||||
"convertToCode": "Converteix a codi",
|
"convertToCode": "",
|
||||||
"bringForward": "Porta endavant",
|
"bringForward": "Porta endavant",
|
||||||
"sendToBack": "Envia enrere",
|
"sendToBack": "Envia enrere",
|
||||||
"bringToFront": "Porta al davant",
|
"bringToFront": "Porta al davant",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Copia els estils",
|
"copyStyles": "Copia els estils",
|
||||||
"pasteStyles": "Enganxa els estils",
|
"pasteStyles": "Enganxa els estils",
|
||||||
"stroke": "Color del traç",
|
"stroke": "Color del traç",
|
||||||
"changeStroke": "Canvia el color del traç",
|
|
||||||
"background": "Color del fons",
|
"background": "Color del fons",
|
||||||
"changeBackground": "Canvia el color de fons",
|
|
||||||
"fill": "Estil del fons",
|
"fill": "Estil del fons",
|
||||||
"strokeWidth": "Amplada del traç",
|
"strokeWidth": "Amplada del traç",
|
||||||
"strokeStyle": "Estil del traç",
|
"strokeStyle": "Estil del traç",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Cap",
|
"arrowhead_none": "Cap",
|
||||||
"arrowhead_arrow": "Fletxa",
|
"arrowhead_arrow": "Fletxa",
|
||||||
"arrowhead_bar": "Barra",
|
"arrowhead_bar": "Barra",
|
||||||
"arrowhead_circle": "Cercle",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Circumferència",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Triangle",
|
"arrowhead_triangle": "Triangle",
|
||||||
"arrowhead_triangle_outline": "Triangle (vora)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Rombe",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Rombe (vora)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "Potes de gall (moltes)",
|
|
||||||
"arrowhead_crowfoot_one": "Potes de gall (una)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Potes de gall (una o moltes)",
|
|
||||||
"more_options": "Més opcions",
|
|
||||||
"arrowtypes": "Tipus de fletxa",
|
|
||||||
"arrowtype_sharp": "Fletxa Esmolada",
|
|
||||||
"arrowtype_round": "Fletxa corba",
|
|
||||||
"arrowtype_elbowed": "Fletxa de colzes",
|
|
||||||
"fontSize": "Mida de lletra",
|
"fontSize": "Mida de lletra",
|
||||||
"fontFamily": "Tipus de lletra",
|
"fontFamily": "Tipus de lletra",
|
||||||
"addWatermark": "Afegeix-hi «Fet amb Excalidraw»",
|
"addWatermark": "Afegeix-hi «Fet amb Excalidraw»",
|
||||||
@@ -66,7 +56,7 @@
|
|||||||
"veryLarge": "Molt gran",
|
"veryLarge": "Molt gran",
|
||||||
"solid": "Sòlid",
|
"solid": "Sòlid",
|
||||||
"hachure": "Ratlletes",
|
"hachure": "Ratlletes",
|
||||||
"zigzag": "Ziga-zaga",
|
"zigzag": "",
|
||||||
"crossHatch": "Ratlletes creuades",
|
"crossHatch": "Ratlletes creuades",
|
||||||
"thin": "Fi",
|
"thin": "Fi",
|
||||||
"bold": "Negreta",
|
"bold": "Negreta",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Usat al llenç",
|
"canvasColors": "Usat al llenç",
|
||||||
"canvasBackground": "Fons del llenç",
|
"canvasBackground": "Fons del llenç",
|
||||||
"drawingCanvas": "Llenç de dibuix",
|
"drawingCanvas": "Llenç de dibuix",
|
||||||
"clearCanvas": "Neteja el llenç",
|
|
||||||
"layers": "Capes",
|
"layers": "Capes",
|
||||||
"actions": "Accions",
|
"actions": "Accions",
|
||||||
"language": "Llengua",
|
"language": "Llengua",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Agrupa la selecció",
|
"group": "Agrupa la selecció",
|
||||||
"ungroup": "Desagrupa la selecció",
|
"ungroup": "Desagrupa la selecció",
|
||||||
"collaborators": "Col·laboradors",
|
"collaborators": "Col·laboradors",
|
||||||
"toggleGrid": "Alterna la quadrícula",
|
"showGrid": "Mostra la graella",
|
||||||
"addToLibrary": "Afegir a la biblioteca",
|
"addToLibrary": "Afegir a la biblioteca",
|
||||||
"removeFromLibrary": "Eliminar de la biblioteca",
|
"removeFromLibrary": "Eliminar de la biblioteca",
|
||||||
"libraryLoadingMessage": "S'està carregant la biblioteca…",
|
"libraryLoadingMessage": "S'està carregant la biblioteca…",
|
||||||
"libraries": "Explora les biblioteques",
|
"libraries": "Explora les biblioteques",
|
||||||
"loadingScene": "S'està carregant l'escena…",
|
"loadingScene": "S'està carregant l'escena…",
|
||||||
"loadScene": "Carrega una escena des d'un fitxer",
|
|
||||||
"align": "Alinea",
|
"align": "Alinea",
|
||||||
"alignTop": "Alinea a la part superior",
|
"alignTop": "Alinea a la part superior",
|
||||||
"alignBottom": "Alinea a la part inferior",
|
"alignBottom": "Alinea a la part inferior",
|
||||||
@@ -117,33 +105,26 @@
|
|||||||
"share": "Comparteix",
|
"share": "Comparteix",
|
||||||
"showStroke": "Mostra el selector de color del traç",
|
"showStroke": "Mostra el selector de color del traç",
|
||||||
"showBackground": "Mostra el selector de color de fons",
|
"showBackground": "Mostra el selector de color de fons",
|
||||||
"showFonts": "Mostra el selector tipogràfic",
|
"toggleTheme": "Activa o desactiva el tema",
|
||||||
"toggleTheme": "Alternar tema clar i fosc",
|
|
||||||
"theme": "Tema",
|
|
||||||
"personalLib": "Biblioteca personal",
|
"personalLib": "Biblioteca personal",
|
||||||
"excalidrawLib": "Biblioteca d'Excalidraw",
|
"excalidrawLib": "Biblioteca d'Excalidraw",
|
||||||
"decreaseFontSize": "Redueix la mida de la lletra",
|
"decreaseFontSize": "Redueix la mida de la lletra",
|
||||||
"increaseFontSize": "Augmenta la mida de la lletra",
|
"increaseFontSize": "Augmenta la mida de la lletra",
|
||||||
"unbindText": "Desvincular el text",
|
"unbindText": "Desvincular el text",
|
||||||
"bindText": "Ajusta el text al contenidor",
|
"bindText": "Ajusta el text al contenidor",
|
||||||
"createContainerFromText": "Ajusta el text al contenidor",
|
"createContainerFromText": "",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Edita l'enllaç",
|
"edit": "Edita l'enllaç",
|
||||||
"editEmbed": "Editar enllaç incrustable",
|
"editEmbed": "Edita l'enllaç i incrusta-ho",
|
||||||
"create": "Afegir un enllaç",
|
"create": "Crea un enllaç",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "Enllaç",
|
"label": "Enllaç",
|
||||||
"labelEmbed": "Enllaça i encasta",
|
"labelEmbed": "",
|
||||||
"empty": "No s'ha definit cap enllaç",
|
"empty": "No s'ha definit cap enllaç"
|
||||||
"hint": "Escriu o enganxa un enllaç aquí",
|
|
||||||
"goToElement": "Anar a l'element objectiu"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Editar línia",
|
"edit": "Editar línia",
|
||||||
"editArrow": "Edita la fletxa"
|
"exit": "Sortir de l'editor de línia"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Bloca",
|
"lock": "Bloca",
|
||||||
@@ -154,49 +135,15 @@
|
|||||||
"statusPublished": "Publicat",
|
"statusPublished": "Publicat",
|
||||||
"sidebarLock": "Manté la barra lateral oberta",
|
"sidebarLock": "Manté la barra lateral oberta",
|
||||||
"selectAllElementsInFrame": "Selecciona tots els elements del marc",
|
"selectAllElementsInFrame": "Selecciona tots els elements del marc",
|
||||||
"removeAllElementsFromFrame": "Elimina tots els elements del marc",
|
"removeAllElementsFromFrame": "Eliminat tots els elements del marc",
|
||||||
"eyeDropper": "Tria un color del llenç",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "Text a diagrama",
|
"textToDiagram": "",
|
||||||
"prompt": "Prompt",
|
"prompt": ""
|
||||||
"followUs": "Seguiu-nos",
|
|
||||||
"discordChat": "Xat de Discord",
|
|
||||||
"zoomToFitViewport": "Amplia per adaptar-se a la finestra",
|
|
||||||
"zoomToFitSelection": "Zoom per veure la selecció",
|
|
||||||
"zoomToFit": "Zoom per veure tots els elements",
|
|
||||||
"installPWA": "Instal·la Excalidraw localment (PWA)",
|
|
||||||
"autoResize": "Activa la redimensió de text automàtica",
|
|
||||||
"imageCropping": "Retallar la imatge",
|
|
||||||
"unCroppedDimension": "Dimensió sense retallar",
|
|
||||||
"copyElementLink": "Copiar enllaç a objecte",
|
|
||||||
"linkToElement": "Enllaç a l'objecte",
|
|
||||||
"wrapSelectionInFrame": "Embolica la selecció en un marc",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "Enllaç a l'objecte",
|
|
||||||
"desc": "Fes clic en una forma al llenç o enganxa un enllaç.",
|
|
||||||
"notFound": "L'objecte enllaçat no s'ha trobat al llenç."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Encara no s'hi han afegit elements...",
|
"noItems": "Encara no s'hi han afegit elements...",
|
||||||
"hint_emptyLibrary": "Trieu un element o un llenç per a afegir-lo aquí, o instal·leu una biblioteca del repositori públic, més avall.",
|
"hint_emptyLibrary": "Trieu un element o un llenç per a afegir-lo aquí, o instal·leu una biblioteca del repositori públic, més avall.",
|
||||||
"hint_emptyPrivateLibrary": "Trieu un element o un llenç per a afegir-lo aquí.",
|
"hint_emptyPrivateLibrary": "Trieu un element o un llenç per a afegir-lo aquí."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "Troba al llenç",
|
|
||||||
"noMatch": "No hem trobat coincidències...",
|
|
||||||
"singleResult": "resultat",
|
|
||||||
"multipleResults": "resultats",
|
|
||||||
"placeholder": "Troba al llenç...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Neteja el llenç",
|
"clearReset": "Neteja el llenç",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Exporta la imatge...",
|
"exportImage": "Exporta la imatge...",
|
||||||
"export": "Guardar a...",
|
"export": "Guardar a...",
|
||||||
"copyToClipboard": "Copia al porta-retalls",
|
"copyToClipboard": "Copia al porta-retalls",
|
||||||
"copyLink": "Copia l'enllaç",
|
|
||||||
"save": "Desa al fitxer actual",
|
"save": "Desa al fitxer actual",
|
||||||
"saveAs": "Anomena i desa",
|
"saveAs": "Anomena i desa",
|
||||||
"load": "Obrir",
|
"load": "Obrir",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Pantalla completa",
|
"fullScreen": "Pantalla completa",
|
||||||
"darkMode": "Mode fosc",
|
"darkMode": "Mode fosc",
|
||||||
"lightMode": "Mode clar",
|
"lightMode": "Mode clar",
|
||||||
"systemMode": "Mode del sistema",
|
|
||||||
"zenMode": "Mode zen",
|
"zenMode": "Mode zen",
|
||||||
"objectsSnapMode": "Ajusta als objectes",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "Surt de mode zen",
|
"exitZenMode": "Surt de mode zen",
|
||||||
"cancel": "Cancel·la",
|
"cancel": "Cancel·la",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Neteja",
|
"clear": "Neteja",
|
||||||
"remove": "Suprimeix",
|
"remove": "Suprimeix",
|
||||||
"embed": "Commuta incrustació",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Publica",
|
||||||
"submit": "Envia",
|
"submit": "Envia",
|
||||||
"confirm": "Confirma",
|
"confirm": "Confirma",
|
||||||
"embeddableInteractionButton": "Feu clic per interactuar"
|
"embeddableInteractionButton": "Feu clic per interactuar"
|
||||||
@@ -260,39 +204,37 @@
|
|||||||
"resetLibrary": "Això buidarà la biblioteca. N'esteu segur?",
|
"resetLibrary": "Això buidarà la biblioteca. N'esteu segur?",
|
||||||
"removeItemsFromsLibrary": "Suprimir {{count}} element(s) de la biblioteca?",
|
"removeItemsFromsLibrary": "Suprimir {{count}} element(s) de la biblioteca?",
|
||||||
"invalidEncryptionKey": "La clau d'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada.",
|
"invalidEncryptionKey": "La clau d'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada.",
|
||||||
"collabOfflineWarning": "Sense connexió a internet disponible.\nEls vostres canvis no seran guardats!",
|
"collabOfflineWarning": "Sense connexió a internet disponible.\nEls vostres canvis no seran guardats!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Tipus de fitxer no suportat.",
|
"unsupportedFileType": "Tipus de fitxer no suportat.",
|
||||||
"imageInsertError": "No s'ha pogut insertar la imatge, torneu-ho a provar més tard...",
|
"imageInsertError": "No s'ha pogut insertar la imatge, torneu-ho a provar més tard...",
|
||||||
"fileTooBig": "El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.",
|
"fileTooBig": "El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.",
|
||||||
"svgImageInsertError": "No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.",
|
"svgImageInsertError": "No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.",
|
||||||
"failedToFetchImage": "No s'ha pogut obtenir la imatge.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "SVG no vàlid.",
|
||||||
"cannotResolveCollabServer": "No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.",
|
"cannotResolveCollabServer": "No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.",
|
||||||
"importLibraryError": "No s'ha pogut carregar la biblioteca",
|
"importLibraryError": "No s'ha pogut carregar la biblioteca",
|
||||||
"saveLibraryError": "No hem pogut desar la llibreria a l'emmagatzematge. Si us plau, deseu la vostra llibreria a un fitxer local per assegurar que no perds els canvis.",
|
|
||||||
"collabSaveFailed": "No s'ha pogut desar a la base de dades de fons. Si els problemes persisteixen, hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.",
|
"collabSaveFailed": "No s'ha pogut desar a la base de dades de fons. Si els problemes persisteixen, hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.",
|
||||||
"collabSaveFailed_sizeExceeded": "No s'ha pogut desar a la base de dades de fons, sembla que el llenç és massa gran. Hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.",
|
"collabSaveFailed_sizeExceeded": "No s'ha pogut desar a la base de dades de fons, sembla que el llenç és massa gran. Hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.",
|
||||||
"imageToolNotSupported": "Les imatges no estan habilitades.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "Sembla que feu servir el navegador Brave amb el <bold>blocatge agressiu d'indentificació única</bold> activat.",
|
"line1": "",
|
||||||
"line2": "Això podria provocar problemes amb els <bold>elements de text</bold> en els vostres dissenys.",
|
"line2": "",
|
||||||
"line3": "Us recomanem encaridament que desactiveu aquesta característica. Podeu seguir <link>aquests passos</link> per a fer-ho.",
|
"line3": "",
|
||||||
"line4": "Si els elements de text no es mostren correctament malgrat haver desactivat aquesta opció, si us plau, obriu una <issueLink>incidència</issueLink> a la nostra pàgina de GitHub o escriviu-nos a <discordLink>Discord</discordLink>"
|
"line4": ""
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "Els elements incrustables no poden afegir-se a la biblioteca.",
|
"embeddable": "",
|
||||||
"iframe": "Elements IFrame no es poden afegir a la biblioteca.",
|
"iframe": "",
|
||||||
"image": "Suport per a afegir imatges a la biblioteca aviat!"
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "No s'ha pogut enganxar (no s'ha pogut llegir del porta-retalls del sistema).",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "No s'ha pogut enganxar.",
|
"asyncPasteFailedOnParse": "No s'ha pogut enganxar.",
|
||||||
"copyToSystemClipboardFailed": "No s'ha pogut copiar al porta-retalls."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Selecció",
|
"selection": "Selecció",
|
||||||
"lasso": "",
|
|
||||||
"image": "Insereix imatge",
|
"image": "Insereix imatge",
|
||||||
"rectangle": "Rectangle",
|
"rectangle": "Rectangle",
|
||||||
"diamond": "Rombe",
|
"diamond": "Rombe",
|
||||||
@@ -304,32 +246,16 @@
|
|||||||
"library": "Biblioteca",
|
"library": "Biblioteca",
|
||||||
"lock": "Mantenir activa l'eina seleccionada desprès de dibuixar",
|
"lock": "Mantenir activa l'eina seleccionada desprès de dibuixar",
|
||||||
"penMode": "Mode de llapis - evita tocar",
|
"penMode": "Mode de llapis - evita tocar",
|
||||||
"link": "Afegeix/actualitza l'enllaç per a una forma seleccionada",
|
"link": "Afegeix / actualitza l'enllaç per a la forma seleccionada",
|
||||||
"eraser": "Esborrador",
|
"eraser": "Esborrador",
|
||||||
"frame": "Eina de marc",
|
"frame": "",
|
||||||
"magicframe": "De Wireframe a codi",
|
"magicframe": "",
|
||||||
"embeddable": "Incrustació Web",
|
"embeddable": "",
|
||||||
"laser": "Punter làser",
|
"laser": "",
|
||||||
"hand": "Mà (eina de desplaçament)",
|
"hand": "Mà (eina de desplaçament)",
|
||||||
"extraTools": "Més eines",
|
"extraTools": "",
|
||||||
"mermaidToExcalidraw": "Mermaid a Excalidraw",
|
"mermaidToExcalidraw": "De Mermaid a Excalidraw",
|
||||||
"convertElementType": ""
|
"magicSettings": "Preferències d'IA"
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Rectangle",
|
|
||||||
"diamond": "Rombe",
|
|
||||||
"ellipse": "El·lipse",
|
|
||||||
"arrow": "Fletxa",
|
|
||||||
"line": "Línia",
|
|
||||||
"freedraw": "Dibuix a mà alçada",
|
|
||||||
"text": "Text",
|
|
||||||
"image": "Imatge",
|
|
||||||
"group": "Grup",
|
|
||||||
"frame": "Marc",
|
|
||||||
"magicframe": "De Wireframe a codi",
|
|
||||||
"embeddable": "Incrustació Web",
|
|
||||||
"selection": "Selecció",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Accions del llenç",
|
"canvasActions": "Accions del llenç",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Formes"
|
"shapes": "Formes"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Per moure el llenç, manteniu premuda la roda del ratolí o la barra espaiadora mentre arrossegueu o utilitzeu l'eina manual",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia",
|
"linearElement": "Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Feu clic i arrossegueu, deixeu anar per a finalitzar",
|
"freeDraw": "Feu clic i arrossegueu, deixeu anar per a finalitzar",
|
||||||
"text": "Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l'eina de selecció",
|
"text": "Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l'eina de selecció",
|
||||||
"embeddable": "Feu clic i arrossegueu per crear una Incrustació Web",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "Feu doble clic o premeu Retorn per a editar el text",
|
||||||
"text_editing": "",
|
"text_editing": "Premeu Escapada o Ctrl+Retorn (o Ordre+Retorn) per a finalitzar l'edició",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Feu clic a l'ultim punt, o pitgeu Esc o Retorn per a finalitzar",
|
||||||
"lockAngle": "",
|
"lockAngle": "Per restringir els angles, mantenir premut el majúscul (SHIFT)",
|
||||||
"resize": "",
|
"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": "",
|
"resizeImage": "Podeu redimensionar lliurement prement MAJÚSCULA;\nper a redimensionar des del centre, premeu ALT",
|
||||||
"rotate": "",
|
"rotate": "Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Mantingueu premut Ctrl o Cmd i feu doble clic o premeu Ctrl o Cmd + Retorn per editar els punts",
|
||||||
"lineEditor_line_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_pointSelected": "",
|
"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",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment",
|
||||||
"publishLibrary": "Publiqueu la vostra pròpia llibreria",
|
"publishLibrary": "Publiqueu la vostra pròpia llibreria",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Premeu enter per a afegir-hi text",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Manteniu CtrlOrCmd per a selecció profunda, i per a evitar l'arrossegament",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Mantingueu premuda Alt per a revertir els elements seleccionats per a esborrar",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "És probable que aquesta funció es pugui activar posant la marca \"dom.events.asyncClipboard.clipboardItem\" a \"true\". Per canviar les marques del navegador al Firefox, visiteu la pàgina \"about:config\".",
|
"firefox_clipboard_write": "És probable que aquesta funció es pugui activar posant la marca \"dom.events.asyncClipboard.clipboardItem\" a \"true\". Per canviar les marques del navegador al Firefox, visiteu la pàgina \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "No es pot mostrar la previsualització",
|
"cannotShowPreview": "No es pot mostrar la previsualització",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Anàvem amb molta cura de no incloure la informació de la vostra escena en l'error. Si l'escena no és privada, podeu fer-ne el seguiment al nostre <button>rastrejador d'errors.</button> Incloeu la informació a continuació copiant i enganxant a GitHub Issues.",
|
"openIssueMessage": "Anàvem amb molta cura de no incloure la informació de la vostra escena en l'error. Si l'escena no és privada, podeu fer-ne el seguiment al nostre <button>rastrejador d'errors.</button> Incloeu la informació a continuació copiant i enganxant a GitHub Issues.",
|
||||||
"sceneContent": "Contingut de l'escena:"
|
"sceneContent": "Contingut de l'escena:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "O"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Convideu gent a col·laborar en el vostre disseny.",
|
"desc_intro": "Podeu convidar persones a la vostra escena actual a col·laborar amb vós.",
|
||||||
"desc_privacy": "No us amoïneu, la sessió està encriptada d'extrem a extrem i és totalment privada. Ni tan sols el nostre servidor pot veure què dibuixeu.",
|
"desc_privacy": "No us preocupeu, la sessió utilitza el xifratge de punta a punta, de manera que qualsevol cosa que dibuixeu romandrà privada. Ni tan sols el nostre servidor podrà veure què feu.",
|
||||||
"button_startSession": "Inicia la sessió",
|
"button_startSession": "Inicia la sessió",
|
||||||
"button_stopSession": "Atura la sessió",
|
"button_stopSession": "Atura la sessió",
|
||||||
"desc_inProgressIntro": "La sessió de col·laboració en directe està en marxa.",
|
"desc_inProgressIntro": "La sessió de col·laboració en directe està en marxa.",
|
||||||
@@ -410,16 +328,14 @@
|
|||||||
"click": "clic",
|
"click": "clic",
|
||||||
"deepSelect": "Selecció profunda",
|
"deepSelect": "Selecció profunda",
|
||||||
"deepBoxSelect": "Seleccioneu profundament dins del quadre i eviteu arrossegar",
|
"deepBoxSelect": "Seleccioneu profundament dins del quadre i eviteu arrossegar",
|
||||||
"createFlowchart": "Crear un diagrama de flux a partir d'un element genèric",
|
|
||||||
"navigateFlowchart": "Navegar per un diagrama de flux",
|
|
||||||
"curvedArrow": "Fletxa corba",
|
"curvedArrow": "Fletxa corba",
|
||||||
"curvedLine": "Línia corba",
|
"curvedLine": "Línia corba",
|
||||||
"documentation": "Documentació",
|
"documentation": "Documentació",
|
||||||
"doubleClick": "doble clic",
|
"doubleClick": "doble clic",
|
||||||
"drag": "arrossega",
|
"drag": "arrossega",
|
||||||
"editor": "Editor",
|
"editor": "Editor",
|
||||||
"editLineArrowPoints": "Edita els punts de la línia/fletxa",
|
"editLineArrowPoints": "",
|
||||||
"editText": "Edita text / afegeix etiqueta",
|
"editText": "",
|
||||||
"github": "Hi heu trobat un problema? Informeu-ne",
|
"github": "Hi heu trobat un problema? Informeu-ne",
|
||||||
"howto": "Seguiu les nostres guies",
|
"howto": "Seguiu les nostres guies",
|
||||||
"or": "o",
|
"or": "o",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Zoom per veure la selecció",
|
"zoomToSelection": "Zoom per veure la selecció",
|
||||||
"toggleElementLock": "Blocar/desblocar la selecció",
|
"toggleElementLock": "Blocar/desblocar la selecció",
|
||||||
"movePageUpDown": "Mou la pàgina cap amunt/a baix",
|
"movePageUpDown": "Mou la pàgina cap amunt/a baix",
|
||||||
"movePageLeftRight": "Mou la pàgina cap a l'esquerra/dreta",
|
"movePageLeftRight": "Mou la pàgina cap a l'esquerra/dreta"
|
||||||
"cropStart": "Retallar l'imatge",
|
|
||||||
"cropFinish": "Finalitza el retall d'imatge"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Neteja el llenç"
|
"title": "Neteja el llenç"
|
||||||
@@ -478,27 +392,27 @@
|
|||||||
"removeItemsFromLib": "Suprimeix els elements seleccionats de la llibreria"
|
"removeItemsFromLib": "Suprimeix els elements seleccionats de la llibreria"
|
||||||
},
|
},
|
||||||
"imageExportDialog": {
|
"imageExportDialog": {
|
||||||
"header": "Exporteu la imatge",
|
"header": "",
|
||||||
"label": {
|
"label": {
|
||||||
"withBackground": "Fons",
|
"withBackground": "",
|
||||||
"onlySelected": "Només seleccionat",
|
"onlySelected": "Només els seleccionats",
|
||||||
"darkMode": "Mode fosc",
|
"darkMode": "Mode fosc",
|
||||||
"embedScene": "Incrusta escena",
|
"embedScene": "",
|
||||||
"scale": "Escala",
|
"scale": "",
|
||||||
"padding": "Marge intern (padding)"
|
"padding": ""
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "Les dades de l’escena es desaran al fitxer PNG/SVG de manera que es pugui restaurar l’escena.\nAixò farà augmentar la mida del fitxer exportat."
|
"embedScene": ""
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "Exporteu a PNG",
|
"exportToPng": "Exporta a PNG",
|
||||||
"exportToSvg": "Exporteu a SVG",
|
"exportToSvg": "Exporta a SVG",
|
||||||
"copyPngToClipboard": "Copieu el PNG al porta-retalls"
|
"copyPngToClipboard": "Copia el PNG al porta-retalls"
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"exportToPng": "PNG",
|
"exportToPng": "PNG",
|
||||||
"exportToSvg": "SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "Copieu al porta-retalls"
|
"copyPngToClipboard": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encrypted": {
|
"encrypted": {
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Angle",
|
"angle": "Angle",
|
||||||
"shapes": "Formes",
|
"element": "Element",
|
||||||
|
"elements": "Elements",
|
||||||
"height": "Altura",
|
"height": "Altura",
|
||||||
"scene": "Escena",
|
"scene": "Escena",
|
||||||
"selected": "Seleccionat",
|
"selected": "Seleccionat",
|
||||||
"storage": "Emmagatzematge",
|
"storage": "Emmagatzematge",
|
||||||
"fullTitle": "Propietats del Llenç i de la Forma",
|
"title": "Estadístiques per nerds",
|
||||||
"title": "Propietats",
|
|
||||||
"generalStats": "General",
|
|
||||||
"elementProperties": "Propietats de la forma",
|
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"version": "Versió",
|
"version": "Versió",
|
||||||
"versionCopy": "Feu clic per a copiar",
|
"versionCopy": "Feu clic per a copiar",
|
||||||
@@ -527,28 +439,26 @@
|
|||||||
"copyStyles": "S'han copiat els estils.",
|
"copyStyles": "S'han copiat els estils.",
|
||||||
"copyToClipboard": "S'ha copiat al porta-retalls.",
|
"copyToClipboard": "S'ha copiat al porta-retalls.",
|
||||||
"copyToClipboardAsPng": "S'ha copiat {{exportSelection}} al porta-retalls en format PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "S'ha copiat {{exportSelection}} al porta-retalls en format PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "S'ha copiat {{exportSelection}} al porta-retalls com a SVG\n({{exportColorScheme}})",
|
|
||||||
"fileSaved": "S'ha desat el fitxer.",
|
"fileSaved": "S'ha desat el fitxer.",
|
||||||
"fileSavedToFilename": "S'ha desat a {filename}",
|
"fileSavedToFilename": "S'ha desat a {filename}",
|
||||||
"canvas": "el llenç",
|
"canvas": "el llenç",
|
||||||
"selection": "la selecció",
|
"selection": "la selecció",
|
||||||
"pasteAsSingleElement": "Fer servir {{shortcut}} per enganxar com un sol element,\no enganxeu-lo en un editor de text existent",
|
"pasteAsSingleElement": "Fer servir {{shortcut}} per enganxar com un sol element,\no enganxeu-lo en un editor de text existent",
|
||||||
"unableToEmbed": "Actualment no es permet incrustar aquesta URL. Planteja un problema a GitHub per sol·licitar que l'URL estigui a la llista blanca",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "L'enllaç que has incrustat no coincideix amb el format esperat. Si us plau, intenta enganxar l'enllaç 'embed' proporcionada pel lloc web d'origen",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": "Enllaç copiat al porta-retalls"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Transparent",
|
"transparent": "Transparent",
|
||||||
"black": "Negre",
|
"black": "",
|
||||||
"white": "Blanc",
|
"white": "",
|
||||||
"red": "Vermell",
|
"red": "",
|
||||||
"pink": "Rosa",
|
"pink": "",
|
||||||
"grape": "Violat (raïm)",
|
"grape": "",
|
||||||
"violet": "Violat",
|
"violet": "",
|
||||||
"gray": "Gris",
|
"gray": "",
|
||||||
"blue": "Blau",
|
"blue": "",
|
||||||
"cyan": "Cian",
|
"cyan": "",
|
||||||
"teal": "Xarxet",
|
"teal": "",
|
||||||
"green": "Verd",
|
"green": "Verd",
|
||||||
"yellow": "Groc",
|
"yellow": "Groc",
|
||||||
"orange": "Taronja",
|
"orange": "Taronja",
|
||||||
@@ -568,97 +478,48 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
"mostUsedCustomColors": "",
|
||||||
"mostUsedCustomColors": "Colors personalitzats més usats",
|
"colors": "",
|
||||||
"colors": "Colors",
|
"shades": "",
|
||||||
"shades": "Ombres",
|
"hexCode": "",
|
||||||
"hexCode": "Codi hexadecimal",
|
"noShades": ""
|
||||||
"noShades": "No hi ha ombres disponibles per a aquest color"
|
|
||||||
},
|
},
|
||||||
"overwriteConfirm": {
|
"overwriteConfirm": {
|
||||||
"action": {
|
"action": {
|
||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "Exporteu com a imatge",
|
"title": "Exporta com a imatge",
|
||||||
"button": "Exporteu com a imatge",
|
"button": "Exporta com a imatge",
|
||||||
"description": "Exporta les dades de l'escena com una imatge des de la qual podràs importar-les més tard."
|
"description": ""
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "Deseu al disc",
|
"title": "Desa al disc",
|
||||||
"button": "Deseu al disc",
|
"button": "Desa al disc",
|
||||||
"description": "Exporta les dades de l'escena a un fitxer des del qual podràs importar-les més tard."
|
"description": ""
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "",
|
||||||
"button": "Exporta a Excalidraw+",
|
"button": "",
|
||||||
"description": "Desa l'escena al teu espai de treball d'Excalidraw+."
|
"description": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "Carrega des d'un fitxer",
|
"title": "Carrega des d'un fitxer",
|
||||||
"button": "Carrega des d'un fitxer",
|
"button": "Carrega des d'un fitxer",
|
||||||
"description": "Carregar des d'un fitxer <bold>substituirà el contingut actual</bold>.<br></br>Podeu desar el vostre disseny abans fent servir una de les opcions més avall."
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "Carrega des d'un enllaç",
|
"title": "Carrega des d'un enllaç",
|
||||||
"button": "Substitueix el contingut",
|
"button": "",
|
||||||
"description": "Carregar un disseny extern <bold>substituirà el contingut actual</bold>.<br></br>Podeu desar el vostre disseny abans fent servir una de les opcions més avall."
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "Mermaid a Excalidraw",
|
"title": "De Mermaid a Excalidraw",
|
||||||
"button": "Inseriu",
|
"button": "Insereix",
|
||||||
"description": "Actualment només s'admeten els diagrames <flowchartLink>Flowchart</flowchartLink>, <sequenceLink> Sequence, </sequenceLink> i <classLink> Class </classLink>. Els altres tipus es representaran com a imatge a Excalidraw.",
|
"description": "",
|
||||||
"syntax": "Sintaxi de Mermaid",
|
"syntax": "Sintaxi de Mermaid",
|
||||||
"preview": "Previsualització"
|
"preview": "Previsualització"
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Cerca ràpida"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "antic"
|
|
||||||
},
|
|
||||||
"sceneFonts": "En aquesta escena",
|
|
||||||
"availableFonts": "Lletres tipogràfiques disponibles",
|
|
||||||
"empty": "No s'ha trobat cap lletra tipogràfica"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "No s'ha trobat cap usuari",
|
|
||||||
"hint": {
|
|
||||||
"text": "Feu clic sobre un usuari per seguir-lo",
|
|
||||||
"followStatus": "Ara per ara seguiu aquest usuari",
|
|
||||||
"inCall": "L'usuari es troba en una trucada de veu",
|
|
||||||
"micMuted": "El micròfon de l'usuari és silenciat",
|
|
||||||
"isSpeaking": "L'usuari parla ara"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Paleta d'ordres",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Selecciona",
|
|
||||||
"confirm": "Confirma",
|
|
||||||
"close": "Tanca"
|
|
||||||
},
|
|
||||||
"recents": "Usats recentment",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Cerca menús, ordres i descobreix joies amagades",
|
|
||||||
"noMatch": "No hi ha ordres coincidents..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Ordre no disponible...",
|
|
||||||
"shortcutHint": "Per obrir la paleta d'ordres, utilitza {{shortcut}}"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "Zkopírovat do schránky jako PNG",
|
"copyAsPng": "Zkopírovat do schránky jako PNG",
|
||||||
"copyAsSvg": "Zkopírovat do schránky jako SVG",
|
"copyAsSvg": "Zkopírovat do schránky jako SVG",
|
||||||
"copyText": "Zkopírovat do schránky jako text",
|
"copyText": "Zkopírovat do schránky jako text",
|
||||||
"copySource": "Kopírovat zdroj do schránky",
|
"copySource": "",
|
||||||
"convertToCode": "Převést na kód",
|
"convertToCode": "",
|
||||||
"bringForward": "Přenést blíž",
|
"bringForward": "Přenést blíž",
|
||||||
"sendToBack": "Přenést do pozadí",
|
"sendToBack": "Přenést do pozadí",
|
||||||
"bringToFront": "Přenést do popředí",
|
"bringToFront": "Přenést do popředí",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Kopírovat styly",
|
"copyStyles": "Kopírovat styly",
|
||||||
"pasteStyles": "Vložit styly",
|
"pasteStyles": "Vložit styly",
|
||||||
"stroke": "Obrys",
|
"stroke": "Obrys",
|
||||||
"changeStroke": "Změnit barvu ohraničení",
|
|
||||||
"background": "Pozadí",
|
"background": "Pozadí",
|
||||||
"changeBackground": "Změnit barvu pozadí",
|
|
||||||
"fill": "Výplň",
|
"fill": "Výplň",
|
||||||
"strokeWidth": "Tloušťka tahu",
|
"strokeWidth": "Tloušťka tahu",
|
||||||
"strokeStyle": "Styl tahu",
|
"strokeStyle": "Styl tahu",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Žádný",
|
"arrowhead_none": "Žádný",
|
||||||
"arrowhead_arrow": "Šipka",
|
"arrowhead_arrow": "Šipka",
|
||||||
"arrowhead_bar": "Kóta",
|
"arrowhead_bar": "Kóta",
|
||||||
"arrowhead_circle": "Kruh",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Kružnice",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Trojúhelník",
|
"arrowhead_triangle": "Trojúhelník",
|
||||||
"arrowhead_triangle_outline": "Trojúhelník (obrys)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Kosočtverec",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Kosočtverec (obrys)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "Typ šipky",
|
|
||||||
"arrowtype_sharp": "Ostrá šipka",
|
|
||||||
"arrowtype_round": "Zakřivená šipka",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "Velikost písma",
|
"fontSize": "Velikost písma",
|
||||||
"fontFamily": "Písmo",
|
"fontFamily": "Písmo",
|
||||||
"addWatermark": "Přidat \"Vyrobeno s Excalidraw\"",
|
"addWatermark": "Přidat \"Vyrobeno s Excalidraw\"",
|
||||||
@@ -65,7 +55,7 @@
|
|||||||
"large": "Velké",
|
"large": "Velké",
|
||||||
"veryLarge": "Velmi velké",
|
"veryLarge": "Velmi velké",
|
||||||
"solid": "Plný",
|
"solid": "Plný",
|
||||||
"hachure": "Šrafování",
|
"hachure": "Hachure",
|
||||||
"zigzag": "Klikatě",
|
"zigzag": "Klikatě",
|
||||||
"crossHatch": "Křížový šrafování",
|
"crossHatch": "Křížový šrafování",
|
||||||
"thin": "Tenký",
|
"thin": "Tenký",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Použito na plátně",
|
"canvasColors": "Použito na plátně",
|
||||||
"canvasBackground": "Pozadí plátna",
|
"canvasBackground": "Pozadí plátna",
|
||||||
"drawingCanvas": "Kreslicí plátno",
|
"drawingCanvas": "Kreslicí plátno",
|
||||||
"clearCanvas": "Vyčistit plátno",
|
|
||||||
"layers": "Vrstvy",
|
"layers": "Vrstvy",
|
||||||
"actions": "Akce",
|
"actions": "Akce",
|
||||||
"language": "Jazyk",
|
"language": "Jazyk",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Sloučit výběr do skupiny",
|
"group": "Sloučit výběr do skupiny",
|
||||||
"ungroup": "Zrušit sloučení skupiny",
|
"ungroup": "Zrušit sloučení skupiny",
|
||||||
"collaborators": "Spolupracovníci",
|
"collaborators": "Spolupracovníci",
|
||||||
"toggleGrid": "Přepínač mřížky",
|
"showGrid": "Zobrazit mřížku",
|
||||||
"addToLibrary": "Přidat do knihovny",
|
"addToLibrary": "Přidat do knihovny",
|
||||||
"removeFromLibrary": "Odebrat z knihovny",
|
"removeFromLibrary": "Odebrat z knihovny",
|
||||||
"libraryLoadingMessage": "Načítání knihovny…",
|
"libraryLoadingMessage": "Načítání knihovny…",
|
||||||
"libraries": "Procházet knihovny",
|
"libraries": "Procházet knihovny",
|
||||||
"loadingScene": "Načítání scény…",
|
"loadingScene": "Načítání scény…",
|
||||||
"loadScene": "Načíst scénu ze souboru",
|
|
||||||
"align": "Zarovnání",
|
"align": "Zarovnání",
|
||||||
"alignTop": "Zarovnat nahoru",
|
"alignTop": "Zarovnat nahoru",
|
||||||
"alignBottom": "Zarovnat dolů",
|
"alignBottom": "Zarovnat dolů",
|
||||||
@@ -117,9 +105,7 @@
|
|||||||
"share": "Sdílet",
|
"share": "Sdílet",
|
||||||
"showStroke": "Zobrazit výběr barvy",
|
"showStroke": "Zobrazit výběr barvy",
|
||||||
"showBackground": "Zobrazit výběr barev pozadí",
|
"showBackground": "Zobrazit výběr barev pozadí",
|
||||||
"showFonts": "Zobrazit výběr písma",
|
"toggleTheme": "Přepnout tmavý řežim",
|
||||||
"toggleTheme": "Přepnout světlý/tmavý motiv",
|
|
||||||
"theme": "Motiv",
|
|
||||||
"personalLib": "Osobní knihovna",
|
"personalLib": "Osobní knihovna",
|
||||||
"excalidrawLib": "Exkalidraw knihovna",
|
"excalidrawLib": "Exkalidraw knihovna",
|
||||||
"decreaseFontSize": "Zmenšit písmo",
|
"decreaseFontSize": "Zmenšit písmo",
|
||||||
@@ -129,21 +115,16 @@
|
|||||||
"createContainerFromText": "Zabalit text do kontejneru",
|
"createContainerFromText": "Zabalit text do kontejneru",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Upravit odkaz",
|
"edit": "Upravit odkaz",
|
||||||
"editEmbed": "Upravit odkaz pro vložení",
|
"editEmbed": "",
|
||||||
"create": "Přidat odkaz",
|
"create": "Vytvořit odkaz",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "Odkaz",
|
"label": "Odkaz",
|
||||||
"labelEmbed": "Odkaz & vložit",
|
"labelEmbed": "",
|
||||||
"empty": "Není nastaven žádný odkaz",
|
"empty": ""
|
||||||
"hint": "Napište nebo vložte svůj odkaz zde",
|
|
||||||
"goToElement": "Přejít na cílový prvek"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Upravit čáru",
|
"edit": "Upravit čáru",
|
||||||
"editArrow": "Upravit šipku"
|
"exit": "Ukončit editor řádků"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Uzamknout",
|
"lock": "Uzamknout",
|
||||||
@@ -153,50 +134,16 @@
|
|||||||
},
|
},
|
||||||
"statusPublished": "Zveřejněno",
|
"statusPublished": "Zveřejněno",
|
||||||
"sidebarLock": "Ponechat postranní panel otevřený",
|
"sidebarLock": "Ponechat postranní panel otevřený",
|
||||||
"selectAllElementsInFrame": "Vybrat všechny prvky v orámování",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "Odstranit všechny prvky z orámování",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "Vyberte barvu z plátna",
|
"eyeDropper": "Vyberte barvu z plátna",
|
||||||
"textToDiagram": "Z textu na diagram",
|
"textToDiagram": "",
|
||||||
"prompt": "Výzva",
|
"prompt": ""
|
||||||
"followUs": "Sledujte nás",
|
|
||||||
"discordChat": "Discord chat",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "Přiblížit na výběr",
|
|
||||||
"zoomToFit": "Přiblížit na zobrazení všech prvků",
|
|
||||||
"installPWA": "Instalovat Excalidraw lokálně (PWA)",
|
|
||||||
"autoResize": "Povolit automatickou změnu velikosti textu",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "Kopírovat odkaz na objekt",
|
|
||||||
"linkToElement": "Odkaz na objekt",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "Odkaz na objekt",
|
|
||||||
"desc": "Klikněte na tvar na plátně nebo vložte odkaz.",
|
|
||||||
"notFound": "Propojený objekt nebyl na plátně nalezen."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Dosud neexistují žádné položky...",
|
"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_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.",
|
"hint_emptyPrivateLibrary": "Vyberte položku na plátně a přidejte ji sem."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "Najít na plátně",
|
|
||||||
"noMatch": "Nebyla nalezena žádná shoda...",
|
|
||||||
"singleResult": "výsledek",
|
|
||||||
"multipleResults": "výsledky",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Resetovat plátno",
|
"clearReset": "Resetovat plátno",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Exportovat obrázek...",
|
"exportImage": "Exportovat obrázek...",
|
||||||
"export": "Uložit jako...",
|
"export": "Uložit jako...",
|
||||||
"copyToClipboard": "Kopírovat do schránky",
|
"copyToClipboard": "Kopírovat do schránky",
|
||||||
"copyLink": "Kopírovat odkaz",
|
|
||||||
"save": "Uložit do aktuálního souboru",
|
"save": "Uložit do aktuálního souboru",
|
||||||
"saveAs": "Uložit jako",
|
"saveAs": "Uložit jako",
|
||||||
"load": "Otevřít",
|
"load": "Otevřít",
|
||||||
@@ -215,7 +161,7 @@
|
|||||||
"zoomIn": "Přiblížit",
|
"zoomIn": "Přiblížit",
|
||||||
"zoomOut": "Oddálit",
|
"zoomOut": "Oddálit",
|
||||||
"resetZoom": "Resetovat přiblížení",
|
"resetZoom": "Resetovat přiblížení",
|
||||||
"menu": "Hlavní nabídka",
|
"menu": "Menu",
|
||||||
"done": "Hotovo",
|
"done": "Hotovo",
|
||||||
"edit": "Upravit",
|
"edit": "Upravit",
|
||||||
"undo": "Zpět",
|
"undo": "Zpět",
|
||||||
@@ -225,19 +171,17 @@
|
|||||||
"fullScreen": "Celá obrazovka",
|
"fullScreen": "Celá obrazovka",
|
||||||
"darkMode": "Tmavý režim",
|
"darkMode": "Tmavý režim",
|
||||||
"lightMode": "Světlý režim",
|
"lightMode": "Světlý režim",
|
||||||
"systemMode": "Nastavení systému",
|
|
||||||
"zenMode": "Zen mód",
|
"zenMode": "Zen mód",
|
||||||
"objectsSnapMode": "Přichytávat k objektům",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "Opustit zen mód",
|
"exitZenMode": "Opustit zen mód",
|
||||||
"cancel": "Zrušit",
|
"cancel": "Zrušit",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Vyčistit",
|
"clear": "Vyčistit",
|
||||||
"remove": "Odstranit",
|
"remove": "Odstranit",
|
||||||
"embed": "Přepínač vkládání",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Zveřejnit",
|
||||||
"submit": "Odeslat",
|
"submit": "Odeslat",
|
||||||
"confirm": "Potvrdit",
|
"confirm": "Potvrdit",
|
||||||
"embeddableInteractionButton": "Klikněte pro interakci"
|
"embeddableInteractionButton": ""
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "Toto vymaže celé plátno. Jste si jisti?",
|
"clearReset": "Toto vymaže celé plátno. Jste si jisti?",
|
||||||
@@ -260,21 +204,20 @@
|
|||||||
"resetLibrary": "Tímto vymažete vaši knihovnu. Jste si jisti?",
|
"resetLibrary": "Tímto vymažete vaši knihovnu. Jste si jisti?",
|
||||||
"removeItemsFromsLibrary": "Smazat {{count}} položek z knihovny?",
|
"removeItemsFromsLibrary": "Smazat {{count}} položek z knihovny?",
|
||||||
"invalidEncryptionKey": "Šifrovací klíč musí mít 22 znaků. Live spolupráce je zakázána.",
|
"invalidEncryptionKey": "Šifrovací klíč musí mít 22 znaků. Live spolupráce je zakázána.",
|
||||||
"collabOfflineWarning": "Není k dispozici žádné internetové připojení.\nVaše změny nebudou uloženy!",
|
"collabOfflineWarning": "Není k dispozici žádné internetové připojení.\nVaše změny nebudou uloženy!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Nepodporovaný typ souboru.",
|
"unsupportedFileType": "Nepodporovaný typ souboru.",
|
||||||
"imageInsertError": "Nelze vložit obrázek. Zkuste to později...",
|
"imageInsertError": "Nelze vložit obrázek. Zkuste to později...",
|
||||||
"fileTooBig": "Soubor je příliš velký. Maximální povolená velikost je {{maxSize}}.",
|
"fileTooBig": "Soubor je příliš velký. Maximální povolená velikost je {{maxSize}}.",
|
||||||
"svgImageInsertError": "Nelze vložit SVG obrázek. Značení SVG je neplatné.",
|
"svgImageInsertError": "Nelze vložit SVG obrázek. Značení SVG je neplatné.",
|
||||||
"failedToFetchImage": "Nepodařilo se načíst obrázek.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "Neplatný SVG.",
|
||||||
"cannotResolveCollabServer": "Nelze se připojit ke sdílenému serveru. Prosím obnovte stránku a zkuste to znovu.",
|
"cannotResolveCollabServer": "Nelze se připojit ke sdílenému serveru. Prosím obnovte stránku a zkuste to znovu.",
|
||||||
"importLibraryError": "Nelze načíst knihovnu",
|
"importLibraryError": "Nelze načíst knihovnu",
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "Nelze uložit do databáze na serveru. Pokud problémy přetrvávají, měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.",
|
"collabSaveFailed": "Nelze uložit do databáze na serveru. Pokud problémy přetrvávají, měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.",
|
||||||
"collabSaveFailed_sizeExceeded": "Nelze uložit do databáze na serveru, plátno se zdá být příliš velké. Měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.",
|
"collabSaveFailed_sizeExceeded": "Nelze uložit do databáze na serveru, plátno se zdá být příliš velké. Měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.",
|
||||||
"imageToolNotSupported": "Obrázky jsou vypnuty.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "Vypadá to, že používáte Brave prohlížeč s povoleným nastavením <bold>Aggressively Block Fingerprinting</bold>.",
|
"line1": "Vypadá to, že používáte Brave prohlížeč s povoleným nastavením <bold>Aggressively Block Fingerprinting</bold>.",
|
||||||
"line2": "To by mohlo vést k narušení <bold>Textových elementů</bold> ve vašich výkresech.",
|
"line2": "To by mohlo vést k narušení <bold>Textových elementů</bold> ve vašich výkresech.",
|
||||||
@@ -287,12 +230,11 @@
|
|||||||
"image": ""
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "Nepodařilo se vložit.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": ""
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Výběr",
|
"selection": "Výběr",
|
||||||
"lasso": "",
|
|
||||||
"image": "Vložit obrázek",
|
"image": "Vložit obrázek",
|
||||||
"rectangle": "Obdélník",
|
"rectangle": "Obdélník",
|
||||||
"diamond": "Diamant",
|
"diamond": "Diamant",
|
||||||
@@ -304,32 +246,16 @@
|
|||||||
"library": "Knihovna",
|
"library": "Knihovna",
|
||||||
"lock": "Po kreslení ponechat vybraný nástroj aktivní",
|
"lock": "Po kreslení ponechat vybraný nástroj aktivní",
|
||||||
"penMode": "Režim Pera - zabránit dotyku",
|
"penMode": "Režim Pera - zabránit dotyku",
|
||||||
"link": "",
|
"link": "Přidat/aktualizovat odkaz pro vybraný tvar",
|
||||||
"eraser": "Guma",
|
"eraser": "Guma",
|
||||||
"frame": "Orámování",
|
"frame": "",
|
||||||
"magicframe": "Z wireframu na kód",
|
"magicframe": "",
|
||||||
"embeddable": "Web Embed",
|
|
||||||
"laser": "Laserové ukazovátko",
|
|
||||||
"hand": "Ruka (nástroj pro posouvání)",
|
|
||||||
"extraTools": "Více nástrojů",
|
|
||||||
"mermaidToExcalidraw": "",
|
|
||||||
"convertElementType": ""
|
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Obdélník",
|
|
||||||
"diamond": "Kosočtverec",
|
|
||||||
"ellipse": "Elipsa",
|
|
||||||
"arrow": "Šipka",
|
|
||||||
"line": "Čára",
|
|
||||||
"freedraw": "Volné kreslení",
|
|
||||||
"text": "Text",
|
|
||||||
"image": "Obrázek",
|
|
||||||
"group": "Skupina",
|
|
||||||
"frame": "Rám",
|
|
||||||
"magicframe": "Z wireframu na kód",
|
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
"selection": "Výběr",
|
"laser": "",
|
||||||
"iframe": "IFrame"
|
"hand": "Ruka (nástroj pro posouvání)",
|
||||||
|
"extraTools": "",
|
||||||
|
"mermaidToExcalidraw": "",
|
||||||
|
"magicSettings": ""
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Akce plátna",
|
"canvasActions": "Akce plátna",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Tvary"
|
"shapes": "Tvary"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Chcete-li přesunout plátno, podržte kolečko nebo mezerník při tažení nebo použijte nástroj Ruka",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Kliknutím pro více bodů, táhnutím pro jednu čáru",
|
"linearElement": "Kliknutím pro více bodů, táhnutím pro jednu čáru",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Klikněte a táhněte, pro ukončení pusťte",
|
"freeDraw": "Klikněte a táhněte, pro ukončení pusťte",
|
||||||
"text": "Tip: Text můžete také přidat dvojitým kliknutím kdekoli pomocí nástroje pro výběr",
|
"text": "Tip: Text můžete také přidat dvojitým kliknutím kdekoli pomocí nástroje pro výběr",
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "Dvojklikem nebo stisknutím klávesy ENTER upravíte text",
|
||||||
"text_editing": "",
|
"text_editing": "Stiskněte Escape nebo Ctrl/Cmd+ENTER pro dokončení úprav",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Klikněte na poslední bod nebo stiskněte Escape anebo Enter pro dokončení",
|
||||||
"lockAngle": "",
|
"lockAngle": "Úhel můžete omezit podržením SHIFT",
|
||||||
"resize": "",
|
"resize": "Můžete omezit proporce podržením SHIFT při změně velikosti,\npodržte ALT pro změnu velikosti od středu",
|
||||||
"resizeImage": "",
|
"resizeImage": "Můžete volně změnit velikost podržením SHIFT,\npodržením klávesy ALT změníte velikosti od středu",
|
||||||
"rotate": "",
|
"rotate": "Úhly můžete omezit podržením SHIFT při otáčení",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Podržte Ctrl/Cmd a dvakrát klikněte nebo stiskněte Ctrl/Cmd + Enter pro úpravu bodů",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Stisknutím tlačítka Delete odstraňte bod(y),\nCtrl/Cmd+D pro duplicitu nebo táhnutím pro přesun",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "Vyberte bod, který chcete upravit (podržením klávesy SHIFT vyberete více položek),\nnebo podržením klávesy Alt a kliknutím přidáte nové body",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Kliknutím umístěte obrázek, nebo klepnutím a přetažením ručně nastavíte jeho velikost",
|
||||||
"publishLibrary": "Publikovat vlastní knihovnu",
|
"publishLibrary": "Publikovat vlastní knihovnu",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Stiskněte Enter pro přidání textu",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Podržte Ctrl/Cmd pro hluboký výběr a pro zabránění táhnutí",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Podržením klávesy Alt vrátíte prvky označené pro smazání",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Tato funkce může být povolena nastavením vlajky \"dom.events.asyncClipboard.clipboardItem\" na \"true\". Chcete-li změnit vlajky prohlížeče ve Firefoxu, navštivte stránku \"about:config\".",
|
"firefox_clipboard_write": "Tato funkce může být povolena nastavením vlajky \"dom.events.asyncClipboard.clipboardItem\" na \"true\". Chcete-li změnit vlajky prohlížeče ve Firefoxu, navštivte stránku \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Náhled nelze zobrazit",
|
"cannotShowPreview": "Náhled nelze zobrazit",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Byli jsme velmi opatrní, abychom neuváděli informace o Vaší scéně. Pokud vaše scéna není soukromá, zvažte prosím sledování na našem <button>bug trackeru</button>. Uveďte prosím níže uvedené informace kopírováním a vložením do problému na GitHubu.",
|
"openIssueMessage": "Byli jsme velmi opatrní, abychom neuváděli informace o Vaší scéně. Pokud vaše scéna není soukromá, zvažte prosím sledování na našem <button>bug trackeru</button>. Uveďte prosím níže uvedené informace kopírováním a vložením do problému na GitHubu.",
|
||||||
"sceneContent": "Obsah scény:"
|
"sceneContent": "Obsah scény:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": ""
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "",
|
"desc_intro": "Můžete pozvat lidi na vaši aktuální scénu ke spolupráci s vámi.",
|
||||||
"desc_privacy": "",
|
"desc_privacy": "Nebojte se, relace používá end-to-end šifrování, takže cokoliv nakreslíte zůstane soukromé. Ani náš server nebude schopen vidět, s čím budete pracovat.",
|
||||||
"button_startSession": "Zahájit relaci",
|
"button_startSession": "Zahájit relaci",
|
||||||
"button_stopSession": "Ukončit relaci",
|
"button_stopSession": "Ukončit relaci",
|
||||||
"desc_inProgressIntro": "Živá spolupráce právě probíhá.",
|
"desc_inProgressIntro": "Živá spolupráce právě probíhá.",
|
||||||
@@ -410,14 +328,12 @@
|
|||||||
"click": "kliknutí",
|
"click": "kliknutí",
|
||||||
"deepSelect": "Hluboký výběr",
|
"deepSelect": "Hluboký výběr",
|
||||||
"deepBoxSelect": "Hluboký výběr uvnitř boxu a zabránění táhnnutí",
|
"deepBoxSelect": "Hluboký výběr uvnitř boxu a zabránění táhnnutí",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "Zakřivená šipka",
|
"curvedArrow": "Zakřivená šipka",
|
||||||
"curvedLine": "Zakřivená čára",
|
"curvedLine": "Zakřivená čára",
|
||||||
"documentation": "Dokumentace",
|
"documentation": "Dokumentace",
|
||||||
"doubleClick": "dvojklik",
|
"doubleClick": "dvojklik",
|
||||||
"drag": "tažení",
|
"drag": "tažení",
|
||||||
"editor": "",
|
"editor": "Editor",
|
||||||
"editLineArrowPoints": "Upravit body linií/šipek",
|
"editLineArrowPoints": "Upravit body linií/šipek",
|
||||||
"editText": "Upravit text / přidat popis",
|
"editText": "Upravit text / přidat popis",
|
||||||
"github": "Našel jsi problém? Nahlaš ho",
|
"github": "Našel jsi problém? Nahlaš ho",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Přiblížit na výběr",
|
"zoomToSelection": "Přiblížit na výběr",
|
||||||
"toggleElementLock": "Zamknout/odemknout výběr",
|
"toggleElementLock": "Zamknout/odemknout výběr",
|
||||||
"movePageUpDown": "Posunout stránku nahoru/dolů",
|
"movePageUpDown": "Posunout stránku nahoru/dolů",
|
||||||
"movePageLeftRight": "Přesunout stránku doleva/doprava",
|
"movePageLeftRight": "Přesunout stránku doleva/doprava"
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Vymazat plátno"
|
"title": "Vymazat plátno"
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Úhel",
|
"angle": "Úhel",
|
||||||
"shapes": "Tvary",
|
"element": "Prvek",
|
||||||
|
"elements": "Prvky",
|
||||||
"height": "Výška",
|
"height": "Výška",
|
||||||
"scene": "Scéna",
|
"scene": "Scéna",
|
||||||
"selected": "Vybráno",
|
"selected": "Vybráno",
|
||||||
"storage": "Úložiště",
|
"storage": "Úložiště",
|
||||||
"fullTitle": "Vlastnosti plátna a tvarů",
|
"title": "Statistika pro nerdy",
|
||||||
"title": "Vlastnosti",
|
|
||||||
"generalStats": "Obecné",
|
|
||||||
"elementProperties": "Vlastnosti tvaru",
|
|
||||||
"total": "Celkem",
|
"total": "Celkem",
|
||||||
"version": "Verze",
|
"version": "Verze",
|
||||||
"versionCopy": "Kliknutím zkopírujete",
|
"versionCopy": "Kliknutím zkopírujete",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Styly byly zkopírovány.",
|
"copyStyles": "Styly byly zkopírovány.",
|
||||||
"copyToClipboard": "Zkopírováno do schránky.",
|
"copyToClipboard": "Zkopírováno do schránky.",
|
||||||
"copyToClipboardAsPng": "{{exportSelection}} zkopírován do schránky jako PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "{{exportSelection}} zkopírován do schránky jako PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Soubor byl uložen.",
|
"fileSaved": "Soubor byl uložen.",
|
||||||
"fileSavedToFilename": "Uloženo do {filename}",
|
"fileSavedToFilename": "Uloženo do {filename}",
|
||||||
"canvas": "plátno",
|
"canvas": "plátno",
|
||||||
"selection": "výběr",
|
"selection": "výběr",
|
||||||
"pasteAsSingleElement": "Pomocí {{shortcut}} vložte jako jeden prvek,\nnebo vložte do existujícího textového editoru",
|
"pasteAsSingleElement": "Pomocí {{shortcut}} vložte jako jeden prvek,\nnebo vložte do existujícího textového editoru",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Průhledná",
|
"transparent": "Průhledná",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Nejpoužívanější vlastní barvy",
|
"mostUsedCustomColors": "Nejpoužívanější vlastní barvy",
|
||||||
"colors": "Barvy",
|
"colors": "Barvy",
|
||||||
"shades": "Stíny",
|
"shades": "Stíny",
|
||||||
@@ -595,70 +504,22 @@
|
|||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "Načíst ze souboru",
|
"title": "",
|
||||||
"button": "Načíst ze souboru",
|
"button": "",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "Načíst z odkazu",
|
"title": "",
|
||||||
"button": "Nahradit můj obsah",
|
"button": "",
|
||||||
"description": ""
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "",
|
"title": "",
|
||||||
"button": "Vložit",
|
"button": "",
|
||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "Mermaid syntaxe",
|
"syntax": "",
|
||||||
"preview": "Náhled"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Rychlé vyhledávání"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "staré"
|
|
||||||
},
|
|
||||||
"sceneFonts": "V této scéně",
|
|
||||||
"availableFonts": "Dostupná písma",
|
|
||||||
"empty": "Nebyla nalezena žádná písma"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "Nebyli nalezeni žádní uživatelé",
|
|
||||||
"hint": {
|
|
||||||
"text": "Klikněte na uživatele pro sledování",
|
|
||||||
"followStatus": "Právě sledujete tohoto uživatele",
|
|
||||||
"inCall": "Uživatel je v hovoru",
|
|
||||||
"micMuted": "Mikrofon uživatele je ztlumen",
|
|
||||||
"isSpeaking": "Uživatel hovoří"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Paleta příkazů",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Vybrat",
|
|
||||||
"confirm": "Potvrdit",
|
|
||||||
"close": "Zavřít"
|
|
||||||
},
|
|
||||||
"recents": "Naposledy použito",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": "Žádné odpovídající příkazy..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Příkaz není k dispozici...",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Kopier stil",
|
"copyStyles": "Kopier stil",
|
||||||
"pasteStyles": "Indsæt stil",
|
"pasteStyles": "Indsæt stil",
|
||||||
"stroke": "Linje",
|
"stroke": "Linje",
|
||||||
"changeStroke": "Ændr stregfarve",
|
|
||||||
"background": "Baggrund",
|
"background": "Baggrund",
|
||||||
"changeBackground": "Ændr baggrundsfarve",
|
|
||||||
"fill": "Udfyld",
|
"fill": "Udfyld",
|
||||||
"strokeWidth": "Linjebredde",
|
"strokeWidth": "Linjebredde",
|
||||||
"strokeStyle": "Linjeform",
|
"strokeStyle": "Linjeform",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Ingen",
|
"arrowhead_none": "Ingen",
|
||||||
"arrowhead_arrow": "Pil",
|
"arrowhead_arrow": "Pil",
|
||||||
"arrowhead_bar": "Bjælke",
|
"arrowhead_bar": "Bjælke",
|
||||||
"arrowhead_circle": "Cirkel",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Cirkel (omrids)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Trekant",
|
"arrowhead_triangle": "Trekant",
|
||||||
"arrowhead_triangle_outline": "Trekant (omrids)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Diamant",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Diamant (omrids)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "Kragefod (mange)",
|
|
||||||
"arrowhead_crowfoot_one": "Kragefod (én)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Kragefod (én eller mange)",
|
|
||||||
"more_options": "Flere muligheder",
|
|
||||||
"arrowtypes": "Pile type",
|
|
||||||
"arrowtype_sharp": "Skarp pil",
|
|
||||||
"arrowtype_round": "Buet pil",
|
|
||||||
"arrowtype_elbowed": "Albuepil",
|
|
||||||
"fontSize": "Skriftstørrelse",
|
"fontSize": "Skriftstørrelse",
|
||||||
"fontFamily": "Skrifttypefamilie",
|
"fontFamily": "Skrifttypefamilie",
|
||||||
"addWatermark": "Tilføj \"Lavet med Excalidraw\"",
|
"addWatermark": "Tilføj \"Lavet med Excalidraw\"",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Brugt på lærred",
|
"canvasColors": "Brugt på lærred",
|
||||||
"canvasBackground": "Lærredsbaggrund",
|
"canvasBackground": "Lærredsbaggrund",
|
||||||
"drawingCanvas": "Tegnelærred",
|
"drawingCanvas": "Tegnelærred",
|
||||||
"clearCanvas": "Ryd lærred",
|
|
||||||
"layers": "Lag",
|
"layers": "Lag",
|
||||||
"actions": "Handlinger",
|
"actions": "Handlinger",
|
||||||
"language": "Sprog",
|
"language": "Sprog",
|
||||||
@@ -92,122 +81,79 @@
|
|||||||
"name": "Navn",
|
"name": "Navn",
|
||||||
"yourName": "Dit navn",
|
"yourName": "Dit navn",
|
||||||
"madeWithExcalidraw": "Fremstillet med Excalidraw",
|
"madeWithExcalidraw": "Fremstillet med Excalidraw",
|
||||||
"group": "Gruppér valgte",
|
"group": "Grupper valgte",
|
||||||
"ungroup": "Afgruppér valgte",
|
"ungroup": "Opløs gruppe",
|
||||||
"collaborators": "Samarbejdspartnere",
|
"collaborators": "Deltagere",
|
||||||
"toggleGrid": "Slå gitter til/fra",
|
"showGrid": "Vis gitter",
|
||||||
"addToLibrary": "Føj til bibliotek",
|
"addToLibrary": "Føj til Bibliotek",
|
||||||
"removeFromLibrary": "Fjern fra biblioteket",
|
"removeFromLibrary": "Fjern fra biblioteket",
|
||||||
"libraryLoadingMessage": "Indlæser bibliotek…",
|
"libraryLoadingMessage": "Indlæser bibliotek…",
|
||||||
"libraries": "Gennemse biblioteker",
|
"libraries": "Gennemse biblioteker",
|
||||||
"loadingScene": "Indlæser scene…",
|
"loadingScene": "Indlæser scene…",
|
||||||
"loadScene": "Indlæs scene fra fil",
|
|
||||||
"align": "Justér",
|
"align": "Justér",
|
||||||
"alignTop": "Juster til top",
|
"alignTop": "Juster til top",
|
||||||
"alignBottom": "Juster til bund",
|
"alignBottom": "Juster til bund",
|
||||||
"alignLeft": "Venstrejusteret",
|
"alignLeft": "Venstrejusteret",
|
||||||
"alignRight": "Højrejustér",
|
"alignRight": "Juster højre",
|
||||||
"centerVertically": "Centrér vertikalt",
|
"centerVertically": "Center vertikalt",
|
||||||
"centerHorizontally": "Centrér horisontalt",
|
"centerHorizontally": "Vandret centreret",
|
||||||
"distributeHorizontally": "Distribuer vandret",
|
"distributeHorizontally": "Distribuer vandret",
|
||||||
"distributeVertically": "Distribuer lodret",
|
"distributeVertically": "Distribuer lodret",
|
||||||
"flipHorizontal": "Vend horisontalt",
|
"flipHorizontal": "Spejlvend horisontalt",
|
||||||
"flipVertical": "Vend vertikalt",
|
"flipVertical": "Vend lodret",
|
||||||
"viewMode": "Visningstilstand",
|
"viewMode": "Visningstilstand",
|
||||||
"share": "Del",
|
"share": "Del",
|
||||||
"showStroke": "Vis stregfarve-vælger",
|
"showStroke": "Vis stregfarve-vælger",
|
||||||
"showBackground": "Vis baggrundsfarve-vælger",
|
"showBackground": "Vis baggrundsfarve-vælger",
|
||||||
"showFonts": "Vis skrifttypevælger",
|
"toggleTheme": "Skift tema",
|
||||||
"toggleTheme": "Slå lys/mørkt tema til/fra",
|
|
||||||
"theme": "Tema",
|
|
||||||
"personalLib": "Personligt bibliotek",
|
"personalLib": "Personligt bibliotek",
|
||||||
"excalidrawLib": "",
|
"excalidrawLib": "Excalidraw Bibliotek",
|
||||||
"decreaseFontSize": "",
|
"decreaseFontSize": "Gør skriften mindre",
|
||||||
"increaseFontSize": "",
|
"increaseFontSize": "Gør skriften større",
|
||||||
"unbindText": "",
|
"unbindText": "Frigør tekst",
|
||||||
"bindText": "",
|
"bindText": "Bind tekst til beholderen",
|
||||||
"createContainerFromText": "",
|
"createContainerFromText": "Ombryd tekst i en beholder",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "",
|
"edit": "Redigér link",
|
||||||
"editEmbed": "",
|
"editEmbed": "Redigér link & indlejret",
|
||||||
"create": "",
|
"create": "Link oprettet",
|
||||||
"label": "",
|
"createEmbed": "Opret link & indlejret",
|
||||||
"labelEmbed": "",
|
"label": "Links",
|
||||||
"empty": "",
|
"labelEmbed": "Link & indlejret",
|
||||||
"hint": "",
|
"empty": "Intet link angivet"
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "",
|
"edit": "Rediger Linje",
|
||||||
"editArrow": ""
|
"exit": "Afslut linjeeditor"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "",
|
"lock": "Lås",
|
||||||
"unlock": "",
|
"unlock": "Lås op",
|
||||||
"lockAll": "",
|
"lockAll": "Lås alle",
|
||||||
"unlockAll": ""
|
"unlockAll": "Lås alle op"
|
||||||
},
|
},
|
||||||
"statusPublished": "",
|
"statusPublished": "Udgiver",
|
||||||
"sidebarLock": "",
|
"sidebarLock": "Hold sidepanel åben",
|
||||||
"selectAllElementsInFrame": "",
|
"selectAllElementsInFrame": "Vælg alle elementer i rammen",
|
||||||
"removeAllElementsFromFrame": "",
|
"removeAllElementsFromFrame": "Fjern alle elementer fra ramme",
|
||||||
"eyeDropper": "",
|
"eyeDropper": "Vælg farve fra lærred",
|
||||||
"textToDiagram": "",
|
"textToDiagram": "Tekst til diagram",
|
||||||
"prompt": "",
|
"prompt": "Prompt"
|
||||||
"followUs": "",
|
|
||||||
"discordChat": "",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "",
|
"noItems": "Ingen varer tilføjet endnu...",
|
||||||
"hint_emptyLibrary": "",
|
"hint_emptyLibrary": "Vælg et element på lærred for at tilføje det her, eller installer et bibliotek fra det offentlige arkiv, nedenfor.",
|
||||||
"hint_emptyPrivateLibrary": "",
|
"hint_emptyPrivateLibrary": "Vælg et element på lærred for at tilføje det her."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "",
|
"clearReset": "Nulstil lærredet",
|
||||||
"exportJSON": "",
|
"exportJSON": "Eksportér til fil",
|
||||||
"exportImage": "",
|
"exportImage": "Eksporter billede...",
|
||||||
"export": "",
|
"export": "Gem til...",
|
||||||
"copyToClipboard": "Kopier til klippebord",
|
"copyToClipboard": "Kopier til klippebord",
|
||||||
"copyLink": "",
|
"save": "Gem til nuværende fil",
|
||||||
"save": "",
|
|
||||||
"saveAs": "Gem som",
|
"saveAs": "Gem som",
|
||||||
"load": "",
|
"load": "Åbn",
|
||||||
"getShareableLink": "Lav et delbart link",
|
"getShareableLink": "Lav et delbart link",
|
||||||
"close": "Luk",
|
"close": "Luk",
|
||||||
"selectLanguage": "Vælg sprog",
|
"selectLanguage": "Vælg sprog",
|
||||||
@@ -215,7 +161,7 @@
|
|||||||
"zoomIn": "Zoom ind",
|
"zoomIn": "Zoom ind",
|
||||||
"zoomOut": "Zoom ud",
|
"zoomOut": "Zoom ud",
|
||||||
"resetZoom": "Nulstil zoom",
|
"resetZoom": "Nulstil zoom",
|
||||||
"menu": "",
|
"menu": "Menu",
|
||||||
"done": "Færdig",
|
"done": "Færdig",
|
||||||
"edit": "Rediger",
|
"edit": "Rediger",
|
||||||
"undo": "Fortryd",
|
"undo": "Fortryd",
|
||||||
@@ -225,19 +171,17 @@
|
|||||||
"fullScreen": "Fuld skærm",
|
"fullScreen": "Fuld skærm",
|
||||||
"darkMode": "Mørk tilstand",
|
"darkMode": "Mørk tilstand",
|
||||||
"lightMode": "Lys baggrund",
|
"lightMode": "Lys baggrund",
|
||||||
"systemMode": "",
|
|
||||||
"zenMode": "Zentilstand",
|
"zenMode": "Zentilstand",
|
||||||
"objectsSnapMode": "",
|
"objectsSnapMode": "Fastgør til objekter",
|
||||||
"exitZenMode": "Stop zentilstand",
|
"exitZenMode": "Stop zentilstand",
|
||||||
"cancel": "Annuller",
|
"cancel": "Annuller",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Ryd",
|
"clear": "Ryd",
|
||||||
"remove": "Fjern",
|
"remove": "Fjern",
|
||||||
"embed": "",
|
"embed": "Slå indlejring til/fra",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Publicér",
|
||||||
"submit": "Gem",
|
"submit": "Gem",
|
||||||
"confirm": "Bekræft",
|
"confirm": "Bekræft",
|
||||||
"embeddableInteractionButton": ""
|
"embeddableInteractionButton": "Klik for at interagere"
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "Dette vil rydde hele lærredet. Er du sikker?",
|
"clearReset": "Dette vil rydde hele lærredet. Er du sikker?",
|
||||||
@@ -245,105 +189,85 @@
|
|||||||
"couldNotCreateShareableLinkTooBig": "Kunne ikke oprette delbart link: scenen er for stor",
|
"couldNotCreateShareableLinkTooBig": "Kunne ikke oprette delbart link: scenen er for stor",
|
||||||
"couldNotLoadInvalidFile": "Kunne ikke indlæse ugyldig fil",
|
"couldNotLoadInvalidFile": "Kunne ikke indlæse ugyldig fil",
|
||||||
"importBackendFailed": "Import fra backend mislykkedes.",
|
"importBackendFailed": "Import fra backend mislykkedes.",
|
||||||
"cannotExportEmptyCanvas": "",
|
"cannotExportEmptyCanvas": "Kan ikke eksportere tomt lærred.",
|
||||||
"couldNotCopyToClipboard": "",
|
"couldNotCopyToClipboard": "Kunne ikke kopiere til udklipsholderen.",
|
||||||
"decryptFailed": "",
|
"decryptFailed": "Kunne ikke dekryptere data.",
|
||||||
"uploadedSecurly": "",
|
"uploadedSecurly": "Upload er blevet sikret med ende-til-ende kryptering, hvilket betyder, at Excalidraw server og tredjeparter ikke kan læse indholdet.",
|
||||||
"loadSceneOverridePrompt": "",
|
"loadSceneOverridePrompt": "Indlæsning af ekstern tegning erstatter dit eksisterende indhold. Ønsker du at fortsætte?",
|
||||||
"collabStopOverridePrompt": "",
|
"collabStopOverridePrompt": "Stopper sessionen vil overskrive din tidligere, lokalt gemte tegning. Er du sikker?\n\n(Hvis du ønsker at beholde din lokale tegning, skal du blot lukke browserfanen i stedet.)",
|
||||||
"errorAddingToLibrary": "",
|
"errorAddingToLibrary": "Kunne ikke tilføje element til biblioteket",
|
||||||
"errorRemovingFromLibrary": "",
|
"errorRemovingFromLibrary": "Kunne ikke fjerne element fra biblioteket",
|
||||||
"confirmAddLibrary": "",
|
"confirmAddLibrary": "Dette vil tilføje {{numShapes}} form(er) til dit bibliotek. Er du sikker?",
|
||||||
"imageDoesNotContainScene": "",
|
"imageDoesNotContainScene": "Dette billede synes ikke at indeholde scene data. Har du aktiveret scene indlejring under eksport?",
|
||||||
"cannotRestoreFromImage": "",
|
"cannotRestoreFromImage": "Scene kunne ikke gendannes fra denne billedfil",
|
||||||
"invalidSceneUrl": "",
|
"invalidSceneUrl": "Kunne ikke importere scene fra den angivne URL. Det er enten misdannet eller indeholder ikke gyldige Excalidraw JSON data.",
|
||||||
"resetLibrary": "",
|
"resetLibrary": "Dette vil rydde hele lærredet. Er du sikker?",
|
||||||
"removeItemsFromsLibrary": "",
|
"removeItemsFromsLibrary": "Slet {{count}} vare(r) fra biblioteket?",
|
||||||
"invalidEncryptionKey": "",
|
"invalidEncryptionKey": "Krypteringsnøglen skal være på 22 tegn. Live-samarbejde er deaktiveret.",
|
||||||
"collabOfflineWarning": "",
|
"collabOfflineWarning": "Ingen internetforbindelse tilgængelig.\nDine ændringer vil ikke blive gemt!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "",
|
"unsupportedFileType": "Filtypen er ikke understøttet.",
|
||||||
"imageInsertError": "",
|
"imageInsertError": "Billedet kunne ikke indsættes. Prøv igen senere...",
|
||||||
"fileTooBig": "",
|
"fileTooBig": "Filen er for stor. Maksimal tilladt størrelse er {{maxSize}}.",
|
||||||
"svgImageInsertError": "",
|
"svgImageInsertError": "Kunne ikke indsætte SVG-billede. SVG-markup'en ser ugyldig ud.",
|
||||||
"failedToFetchImage": "",
|
"failedToFetchImage": "Dataene blev ikke hentet.",
|
||||||
"cannotResolveCollabServer": "",
|
"invalidSVGString": "Ugyldig SVG.",
|
||||||
"importLibraryError": "",
|
"cannotResolveCollabServer": "Kunne ikke oprette forbindelse til samarbejdsserveren. Genindlæs siden og prøv igen.",
|
||||||
"saveLibraryError": "",
|
"importLibraryError": "Biblioteket kunne ikke indlæses",
|
||||||
"collabSaveFailed": "",
|
"collabSaveFailed": "Kunne ikke gemme i databasen. Hvis problemerne fortsætter, bør du gemme din fil lokalt for at sikre, at du ikke mister dit arbejde.",
|
||||||
"collabSaveFailed_sizeExceeded": "",
|
"collabSaveFailed_sizeExceeded": "Kunne ikke gemme i databasen, lærredet lader til at være for stort. Du bør gemme filen lokalt for at sikre, at du ikke mister dit arbejde.",
|
||||||
"imageToolNotSupported": "",
|
"imageToolNotSupported": "Billeder er deaktiveret.",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "",
|
"line1": "Det ser ud til, at du bruger Brave browser med indstillingen <bold>Aggressively Block Fingerprinting</bold> aktiveret.",
|
||||||
"line2": "",
|
"line2": "Dette kan resultere i brud på <bold>tekstelementerne</bold> i dine tegninger.",
|
||||||
"line3": "",
|
"line3": "Vi anbefaler kraftigt at deaktivere denne indstilling. Du kan følge <link>disse trin</link> om, hvordan du gør det.",
|
||||||
"line4": ""
|
"line4": "Hvis deaktivering af denne indstilling ikke løser visning af tekstelementer, åbn venligst et <issueLink>issue</issueLink> på vores GitHub, eller skriv os på <discordLink>Discord</discordLink>"
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "",
|
"embeddable": "Indlejringselementer kan ikke tilføjes til biblioteket.",
|
||||||
"iframe": "",
|
"iframe": "IFrame elementer kan ikke tilføjes til biblioteket.",
|
||||||
"image": ""
|
"image": "Understøttelse af at tilføje billeder til biblioteket kommer snart!"
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "",
|
"asyncPasteFailedOnRead": "Kunne ikke indsætte (kan ikke læse fra systemets udklipsholder).",
|
||||||
"asyncPasteFailedOnParse": "",
|
"asyncPasteFailedOnParse": "Kunne ikke indsætte.",
|
||||||
"copyToSystemClipboardFailed": ""
|
"copyToSystemClipboardFailed": "Kunne ikke kopiere til udklipsholderen."
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "",
|
"selection": "&Udvalg",
|
||||||
"lasso": "",
|
"image": "Indsæt billeder",
|
||||||
"image": "",
|
"rectangle": "Rektangler",
|
||||||
"rectangle": "",
|
"diamond": "Diamanter",
|
||||||
"diamond": "",
|
"ellipse": "Ellipser",
|
||||||
"ellipse": "",
|
"arrow": "Pile",
|
||||||
"arrow": "",
|
"line": "Linje",
|
||||||
"line": "",
|
"freedraw": "Tegn",
|
||||||
"freedraw": "",
|
"text": "Tekster",
|
||||||
"text": "",
|
"library": "~Bibliotek",
|
||||||
"library": "",
|
"lock": "Behold valgte værktøj aktiv efter tegning",
|
||||||
"lock": "",
|
"penMode": "Pen-tilstand - forhindrer berøring",
|
||||||
"penMode": "",
|
"link": "Tilføj/ Opdater link for en valgt form",
|
||||||
"link": "",
|
"eraser": "Slet",
|
||||||
"eraser": "",
|
"frame": "Rammeværktøj",
|
||||||
"frame": "",
|
"magicframe": "Wireframe til kode",
|
||||||
"magicframe": "",
|
"embeddable": "Web-indlejring",
|
||||||
"embeddable": "",
|
"laser": "Lasermarkør",
|
||||||
"laser": "",
|
"hand": "Hånd (panorering værktøj)",
|
||||||
"hand": "",
|
"extraTools": "Flere værktøjer",
|
||||||
"extraTools": "",
|
"mermaidToExcalidraw": "Mermaid til Excalidraw",
|
||||||
"mermaidToExcalidraw": "",
|
"magicSettings": "AI indstillinger"
|
||||||
"convertElementType": ""
|
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": ""
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "",
|
"canvasActions": "Lærred handlinger",
|
||||||
"selectedShapeActions": "",
|
"selectedShapeActions": "Valgte figurhandlinger",
|
||||||
"shapes": ""
|
"shapes": "Former"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "For at flytte lærred, hold musehjulet eller mellemrumstasten mens du trækker, eller brug håndværktøjet",
|
||||||
"canvasPanning": "",
|
"linearElement": "Klik for at starte flere punkter, træk for enkelt linje",
|
||||||
"linearElement": "",
|
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Klik og træk, slip når du er færdig",
|
"freeDraw": "Klik og træk, slip når du er færdig",
|
||||||
"text": "",
|
"text": "Tip: du kan også tilføje tekst ved at dobbeltklikke hvor som helst med det valgte værktøj",
|
||||||
"embeddable": "",
|
"embeddable": "Klik på træk for at oprette en hjemmeside indlejret",
|
||||||
"text_selected": "",
|
"text_selected": "",
|
||||||
"text_editing": "",
|
"text_editing": "",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "",
|
||||||
@@ -352,40 +276,34 @@
|
|||||||
"resizeImage": "",
|
"resizeImage": "",
|
||||||
"rotate": "",
|
"rotate": "",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "",
|
||||||
"lineEditor_line_info": "",
|
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_pointSelected": "",
|
||||||
"lineEditor_nothingSelected": "",
|
"lineEditor_nothingSelected": "",
|
||||||
|
"placeImage": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "",
|
||||||
"createFlowchart": "",
|
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"eraserRevert": "",
|
"eraserRevert": "",
|
||||||
"firefox_clipboard_write": "",
|
"firefox_clipboard_write": "",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "",
|
"cannotShowPreview": "Kan ikke vise forhåndsvisning",
|
||||||
"canvasTooBig": "",
|
"canvasTooBig": "Lærredet kan være for stort.",
|
||||||
"canvasTooBigTip": ""
|
"canvasTooBigTip": "Tip: Prøv at flytte de fjerneste elementer lidt tættere sammen."
|
||||||
},
|
},
|
||||||
"errorSplash": {
|
"errorSplash": {
|
||||||
"headingMain": "",
|
"headingMain": "Der opstod en fejl. Prøv <button>at genindlæse siden</button>.",
|
||||||
"clearCanvasMessage": "",
|
"clearCanvasMessage": "",
|
||||||
"clearCanvasCaveat": "",
|
"clearCanvasCaveat": "",
|
||||||
"trackedToSentry": "",
|
"trackedToSentry": "",
|
||||||
"openIssueMessage": "<button></button> Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.",
|
"openIssueMessage": "<button></button> Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.",
|
||||||
"sceneContent": "Scene indhold:"
|
"sceneContent": "Scene indhold:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": ""
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "",
|
"desc_intro": "Du kan invitere folk til din nuværende scene, så de kan samarbejde med dig.",
|
||||||
"desc_privacy": "",
|
"desc_privacy": "Bare rolig, sessionen bruger end-to-end kryptering, så uanset hvad du tegner vil det forblive privat. Ikke engang vores server vil kunne se, hvad du kommer op med.",
|
||||||
"button_startSession": "",
|
"button_startSession": "Start session",
|
||||||
"button_stopSession": "",
|
"button_stopSession": "Stop session",
|
||||||
"desc_inProgressIntro": "Live-samarbejde session er nu begyndt.",
|
"desc_inProgressIntro": "Live-samarbejde session er nu begyndt.",
|
||||||
"desc_shareLink": "Del dette link med enhver, du ønsker at samarbejde med:",
|
"desc_shareLink": "Del dette link med enhver, du ønsker at samarbejde med:",
|
||||||
"desc_exitSession": "",
|
"desc_exitSession": "",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "",
|
"click": "",
|
||||||
"deepSelect": "",
|
"deepSelect": "",
|
||||||
"deepBoxSelect": "",
|
"deepBoxSelect": "",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "",
|
"curvedArrow": "",
|
||||||
"curvedLine": "",
|
"curvedLine": "",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "",
|
"zoomToSelection": "",
|
||||||
"toggleElementLock": "",
|
"toggleElementLock": "",
|
||||||
"movePageUpDown": "",
|
"movePageUpDown": "",
|
||||||
"movePageLeftRight": "",
|
"movePageLeftRight": ""
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": ""
|
"title": ""
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "",
|
"angle": "",
|
||||||
"shapes": "",
|
"element": "",
|
||||||
|
"elements": "",
|
||||||
"height": "",
|
"height": "",
|
||||||
"scene": "",
|
"scene": "",
|
||||||
"selected": "",
|
"selected": "",
|
||||||
"storage": "",
|
"storage": "",
|
||||||
"fullTitle": "",
|
"title": "Statistik for nørder",
|
||||||
"title": "",
|
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "",
|
"total": "",
|
||||||
"version": "",
|
"version": "",
|
||||||
"versionCopy": "Klik for at kopiere",
|
"versionCopy": "Klik for at kopiere",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Kopieret stilarter.",
|
"copyStyles": "Kopieret stilarter.",
|
||||||
"copyToClipboard": "Kopieret til klippebord.",
|
"copyToClipboard": "Kopieret til klippebord.",
|
||||||
"copyToClipboardAsPng": "Kopieret {{exportSelection}} til klippebord som PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "Kopieret {{exportSelection}} til klippebord som PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Fil gemt.",
|
"fileSaved": "Fil gemt.",
|
||||||
"fileSavedToFilename": "Gemt som {filename}",
|
"fileSavedToFilename": "Gemt som {filename}",
|
||||||
"canvas": "",
|
"canvas": "canvas",
|
||||||
"selection": "markering",
|
"selection": "markering",
|
||||||
"pasteAsSingleElement": "",
|
"pasteAsSingleElement": "",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "",
|
"transparent": "",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "",
|
"mostUsedCustomColors": "",
|
||||||
"colors": "",
|
"colors": "",
|
||||||
"shades": "",
|
"shades": "",
|
||||||
@@ -612,53 +521,5 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "",
|
"syntax": "",
|
||||||
"preview": ""
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "",
|
|
||||||
"followStatus": "",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "",
|
|
||||||
"confirm": "",
|
|
||||||
"close": ""
|
|
||||||
},
|
|
||||||
"recents": "",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,664 +0,0 @@
|
|||||||
{
|
|
||||||
"labels": {
|
|
||||||
"paste": "Einfügen",
|
|
||||||
"pasteAsPlaintext": "Als unformatierten Text einfügen",
|
|
||||||
"pasteCharts": "Diagramme einfügen",
|
|
||||||
"selectAll": "Alle auswählen",
|
|
||||||
"multiSelect": "Element zur Auswahl hinzufügen",
|
|
||||||
"moveCanvas": "Leinwand verschieben",
|
|
||||||
"cut": "Ausschneiden",
|
|
||||||
"copy": "Kopieren",
|
|
||||||
"copyAsPng": "In Zwischenablage kopieren (PNG)",
|
|
||||||
"copyAsSvg": "In Zwischenablage kopieren (SVG)",
|
|
||||||
"copyText": "In die Zwischenablage als Text kopieren",
|
|
||||||
"copySource": "Quelle in Zwischenablage kopieren",
|
|
||||||
"convertToCode": "In Code konvertieren",
|
|
||||||
"bringForward": "Nach vorne",
|
|
||||||
"sendToBack": "In den Hintergrund",
|
|
||||||
"bringToFront": "In den Vordergrund",
|
|
||||||
"sendBackward": "Nach hinten",
|
|
||||||
"delete": "Löschen",
|
|
||||||
"copyStyles": "Formatierung kopieren",
|
|
||||||
"pasteStyles": "Formatierung übernehmen",
|
|
||||||
"stroke": "Strich",
|
|
||||||
"changeStroke": "Strichfarbe ändern",
|
|
||||||
"background": "Hintergrund",
|
|
||||||
"changeBackground": "Hintergrundfarbe ändern",
|
|
||||||
"fill": "Füllung",
|
|
||||||
"strokeWidth": "Strichstärke",
|
|
||||||
"strokeStyle": "Konturstil",
|
|
||||||
"strokeStyle_solid": "Durchgezogen",
|
|
||||||
"strokeStyle_dashed": "Gestrichelt",
|
|
||||||
"strokeStyle_dotted": "Gepunktet",
|
|
||||||
"sloppiness": "Sauberkeit",
|
|
||||||
"opacity": "Deckkraft",
|
|
||||||
"textAlign": "Textausrichtung",
|
|
||||||
"edges": "Kanten",
|
|
||||||
"sharp": "Scharf",
|
|
||||||
"round": "Rund",
|
|
||||||
"arrowheads": "Pfeilspitzen",
|
|
||||||
"arrowhead_none": "Keine",
|
|
||||||
"arrowhead_arrow": "Pfeil",
|
|
||||||
"arrowhead_bar": "Balken",
|
|
||||||
"arrowhead_circle": "Kreis",
|
|
||||||
"arrowhead_circle_outline": "Kreis (Umrandung)",
|
|
||||||
"arrowhead_triangle": "Dreieck",
|
|
||||||
"arrowhead_triangle_outline": "Dreieck (Umrandung)",
|
|
||||||
"arrowhead_diamond": "Raute",
|
|
||||||
"arrowhead_diamond_outline": "Raute (Umrandung)",
|
|
||||||
"arrowhead_crowfoot_many": "Krähenfuß (viele)",
|
|
||||||
"arrowhead_crowfoot_one": "Krähenfuß (einer)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Krähenfuß (einer oder viele)",
|
|
||||||
"more_options": "Weitere Optionen",
|
|
||||||
"arrowtypes": "Pfeiltyp",
|
|
||||||
"arrowtype_sharp": "Scharfer Pfeil",
|
|
||||||
"arrowtype_round": "Gebogener Pfeil",
|
|
||||||
"arrowtype_elbowed": "Ellenbogen-Pfeil",
|
|
||||||
"fontSize": "Schriftgröße",
|
|
||||||
"fontFamily": "Schriftfamilie",
|
|
||||||
"addWatermark": "\"Made with Excalidraw\" hinzufügen",
|
|
||||||
"handDrawn": "Handgezeichnet",
|
|
||||||
"normal": "Normal",
|
|
||||||
"code": "Code",
|
|
||||||
"small": "Klein",
|
|
||||||
"medium": "Mittel",
|
|
||||||
"large": "Groß",
|
|
||||||
"veryLarge": "Sehr groß",
|
|
||||||
"solid": "Deckend",
|
|
||||||
"hachure": "Schraffiert",
|
|
||||||
"zigzag": "Zickzack",
|
|
||||||
"crossHatch": "Kreuzschraffiert",
|
|
||||||
"thin": "Dünn",
|
|
||||||
"bold": "Fett",
|
|
||||||
"left": "Links",
|
|
||||||
"center": "Zentriert",
|
|
||||||
"right": "Rechts",
|
|
||||||
"extraBold": "Extra Fett",
|
|
||||||
"architect": "Architekt",
|
|
||||||
"artist": "Künstler",
|
|
||||||
"cartoonist": "Karikaturist",
|
|
||||||
"fileTitle": "Dateiname",
|
|
||||||
"colorPicker": "Farbauswähler",
|
|
||||||
"canvasColors": "Auf Leinwand verwendet",
|
|
||||||
"canvasBackground": "Zeichenflächenhintergrund",
|
|
||||||
"drawingCanvas": "Leinwand",
|
|
||||||
"clearCanvas": "Zeichenfläche löschen",
|
|
||||||
"layers": "Ebenen",
|
|
||||||
"actions": "Aktionen",
|
|
||||||
"language": "Sprache",
|
|
||||||
"liveCollaboration": "Live-Zusammenarbeit...",
|
|
||||||
"duplicateSelection": "Duplizieren",
|
|
||||||
"untitled": "Unbenannt",
|
|
||||||
"name": "Name",
|
|
||||||
"yourName": "Dein Name",
|
|
||||||
"madeWithExcalidraw": "Made with Excalidraw",
|
|
||||||
"group": "Auswahl gruppieren",
|
|
||||||
"ungroup": "Gruppierung aufheben",
|
|
||||||
"collaborators": "Mitarbeitende",
|
|
||||||
"toggleGrid": "Raster umschalten",
|
|
||||||
"addToLibrary": "Zur Bibliothek hinzufügen",
|
|
||||||
"removeFromLibrary": "Aus Bibliothek entfernen",
|
|
||||||
"libraryLoadingMessage": "Lade Bibliothek…",
|
|
||||||
"libraries": "Bibliotheken durchsuchen",
|
|
||||||
"loadingScene": "Lade Zeichnung…",
|
|
||||||
"loadScene": "Szene aus Datei laden",
|
|
||||||
"align": "Ausrichten",
|
|
||||||
"alignTop": "Obere Kanten",
|
|
||||||
"alignBottom": "Untere Kanten",
|
|
||||||
"alignLeft": "Linke Kanten",
|
|
||||||
"alignRight": "Rechte Kanten",
|
|
||||||
"centerVertically": "Vertikal zentrieren",
|
|
||||||
"centerHorizontally": "Horizontal zentrieren",
|
|
||||||
"distributeHorizontally": "Horizontal verteilen",
|
|
||||||
"distributeVertically": "Vertikal verteilen",
|
|
||||||
"flipHorizontal": "Horizontal spiegeln",
|
|
||||||
"flipVertical": "Vertikal spiegeln",
|
|
||||||
"viewMode": "Ansichtsmodus",
|
|
||||||
"share": "Teilen",
|
|
||||||
"showStroke": "Auswahl für Strichfarbe anzeigen",
|
|
||||||
"showBackground": "Hintergrundfarbe auswählen",
|
|
||||||
"showFonts": "Schriftauswahl anzeigen",
|
|
||||||
"toggleTheme": "Helles/dunkles Design umschalten",
|
|
||||||
"theme": "Design",
|
|
||||||
"personalLib": "Persönliche Bibliothek",
|
|
||||||
"excalidrawLib": "Excalidraw Bibliothek",
|
|
||||||
"decreaseFontSize": "Schriftgröße verringern",
|
|
||||||
"increaseFontSize": "Schriftgröße erhöhen",
|
|
||||||
"unbindText": "Text lösen",
|
|
||||||
"bindText": "Text an Container binden",
|
|
||||||
"createContainerFromText": "Text in Container einbetten",
|
|
||||||
"link": {
|
|
||||||
"edit": "Link bearbeiten",
|
|
||||||
"editEmbed": "Einbettbaren Link bearbeiten",
|
|
||||||
"create": "Link hinzufügen",
|
|
||||||
"label": "Link",
|
|
||||||
"labelEmbed": "Verlinken & einbetten",
|
|
||||||
"empty": "Kein Link festgelegt",
|
|
||||||
"hint": "Link hier eingeben oder einfügen",
|
|
||||||
"goToElement": "Gehe zu Zielelement"
|
|
||||||
},
|
|
||||||
"lineEditor": {
|
|
||||||
"edit": "Linie bearbeiten",
|
|
||||||
"editArrow": "Pfeil bearbeiten"
|
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
|
||||||
"elementLock": {
|
|
||||||
"lock": "Sperren",
|
|
||||||
"unlock": "Entsperren",
|
|
||||||
"lockAll": "Alle sperren",
|
|
||||||
"unlockAll": "Alle entsperren"
|
|
||||||
},
|
|
||||||
"statusPublished": "Veröffentlicht",
|
|
||||||
"sidebarLock": "Seitenleiste offen lassen",
|
|
||||||
"selectAllElementsInFrame": "Alle Elemente im Rahmen auswählen",
|
|
||||||
"removeAllElementsFromFrame": "Alle Elemente aus dem Rahmen entfernen",
|
|
||||||
"eyeDropper": "Farbe von der Zeichenfläche auswählen",
|
|
||||||
"textToDiagram": "Text zu Diagramm",
|
|
||||||
"prompt": "Eingabe",
|
|
||||||
"followUs": "Folge uns",
|
|
||||||
"discordChat": "Discord-Chat",
|
|
||||||
"zoomToFitViewport": "Zoom auf Ansicht anpassen",
|
|
||||||
"zoomToFitSelection": "Zoom auf Auswahl anpassen",
|
|
||||||
"zoomToFit": "Zoom auf alle Elemente anpassen",
|
|
||||||
"installPWA": "Excalidraw lokal installieren (PWA)",
|
|
||||||
"autoResize": "Aktiviere automatische Textgrößenanpassung",
|
|
||||||
"imageCropping": "Bild zuschneiden",
|
|
||||||
"unCroppedDimension": "Nicht zugeschnittene Dimension",
|
|
||||||
"copyElementLink": "Link zum Objekt kopieren",
|
|
||||||
"linkToElement": "Link zum Objekt",
|
|
||||||
"wrapSelectionInFrame": "Auswahl in Rahmen einbetten",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "Link zum Objekt",
|
|
||||||
"desc": "Klicke auf eine Form auf der Zeichenfläche oder füge einen Link ein.",
|
|
||||||
"notFound": "Verknüpftes Objekt wurde nicht auf der Zeichenfläche gefunden."
|
|
||||||
},
|
|
||||||
"library": {
|
|
||||||
"noItems": "Noch keine Elemente hinzugefügt...",
|
|
||||||
"hint_emptyLibrary": "Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.",
|
|
||||||
"hint_emptyPrivateLibrary": "Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen.",
|
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "Auf Zeichenfläche suchen",
|
|
||||||
"noMatch": "Keine Treffer gefunden...",
|
|
||||||
"singleResult": "Ergebnis",
|
|
||||||
"multipleResults": "Ergebnisse",
|
|
||||||
"placeholder": "Text auf Zeichenfläche suchen...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
|
||||||
"buttons": {
|
|
||||||
"clearReset": "Zeichenfläche löschen & Hintergrundfarbe zurücksetzen",
|
|
||||||
"exportJSON": "In Datei exportieren",
|
|
||||||
"exportImage": "Exportiere Bild...",
|
|
||||||
"export": "Speichern als...",
|
|
||||||
"copyToClipboard": "In Zwischenablage kopieren",
|
|
||||||
"copyLink": "Link kopieren",
|
|
||||||
"save": "In aktueller Datei speichern",
|
|
||||||
"saveAs": "Speichern unter",
|
|
||||||
"load": "Öffnen",
|
|
||||||
"getShareableLink": "Teilbaren Link erhalten",
|
|
||||||
"close": "Schließen",
|
|
||||||
"selectLanguage": "Sprache auswählen",
|
|
||||||
"scrollBackToContent": "Zurück zum Inhalt",
|
|
||||||
"zoomIn": "Vergrößern",
|
|
||||||
"zoomOut": "Verkleinern",
|
|
||||||
"resetZoom": "Zoom zurücksetzen",
|
|
||||||
"menu": "Menü",
|
|
||||||
"done": "Fertig",
|
|
||||||
"edit": "Bearbeiten",
|
|
||||||
"undo": "Rückgängig machen",
|
|
||||||
"redo": "Wiederholen",
|
|
||||||
"resetLibrary": "Bibliothek zurücksetzen",
|
|
||||||
"createNewRoom": "Neuen Raum erstellen",
|
|
||||||
"fullScreen": "Vollbildanzeige",
|
|
||||||
"darkMode": "Dunkles Design",
|
|
||||||
"lightMode": "Helles Design",
|
|
||||||
"systemMode": "System-Modus",
|
|
||||||
"zenMode": "Zen-Modus",
|
|
||||||
"objectsSnapMode": "Einrasten an Objekten",
|
|
||||||
"exitZenMode": "Zen-Modus verlassen",
|
|
||||||
"cancel": "Abbrechen",
|
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Löschen",
|
|
||||||
"remove": "Entfernen",
|
|
||||||
"embed": "Einbettung umschalten",
|
|
||||||
"publishLibrary": "",
|
|
||||||
"submit": "Absenden",
|
|
||||||
"confirm": "Bestätigen",
|
|
||||||
"embeddableInteractionButton": "Klicken, um zu interagieren"
|
|
||||||
},
|
|
||||||
"alerts": {
|
|
||||||
"clearReset": "Dies wird die ganze Zeichenfläche löschen. Bist du dir sicher?",
|
|
||||||
"couldNotCreateShareableLink": "Konnte keinen teilbaren Link erstellen.",
|
|
||||||
"couldNotCreateShareableLinkTooBig": "Konnte keinen teilbaren Link erstellen: Die Zeichnung ist zu groß",
|
|
||||||
"couldNotLoadInvalidFile": "Ungültige Datei konnte nicht geladen werden",
|
|
||||||
"importBackendFailed": "Import vom Server ist fehlgeschlagen.",
|
|
||||||
"cannotExportEmptyCanvas": "Leere Zeichenfläche kann nicht exportiert werden.",
|
|
||||||
"couldNotCopyToClipboard": "Kopieren in die Zwischenablage fehlgeschlagen.",
|
|
||||||
"decryptFailed": "Daten konnten nicht entschlüsselt werden.",
|
|
||||||
"uploadedSecurly": "Der Upload wurde mit Ende-zu-Ende-Verschlüsselung gespeichert. Weder Excalidraw noch Dritte können den Inhalt einsehen.",
|
|
||||||
"loadSceneOverridePrompt": "Das Laden einer externen Zeichnung ersetzt den vorhandenen Inhalt. Möchtest du fortfahren?",
|
|
||||||
"collabStopOverridePrompt": "Das Stoppen der Sitzung wird deine vorherige, lokal gespeicherte Zeichnung überschreiben. Bist du dir sicher?\n\n(Wenn du deine lokale Zeichnung behalten möchtest, schließe stattdessen den Browser-Tab.)",
|
|
||||||
"errorAddingToLibrary": "Das Element konnte nicht zur Bibliothek hinzugefügt werden",
|
|
||||||
"errorRemovingFromLibrary": "Das Element konnte nicht aus der Bibliothek entfernt werden",
|
|
||||||
"confirmAddLibrary": "Dies fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du dir sicher?",
|
|
||||||
"imageDoesNotContainScene": "Dieses Bild scheint keine Szenendaten zu enthalten. Hast Du das Einbetten der Szene während des Exports aktiviert?",
|
|
||||||
"cannotRestoreFromImage": "Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden",
|
|
||||||
"invalidSceneUrl": "Die Szene konnte nicht von der angegebenen URL importiert werden. Sie ist entweder fehlerhaft oder enthält keine gültigen Excalidraw JSON-Daten.",
|
|
||||||
"resetLibrary": "Dieses löscht deine Bibliothek. Bist du sicher?",
|
|
||||||
"removeItemsFromsLibrary": "{{count}} Element(e) aus der Bibliothek löschen?",
|
|
||||||
"invalidEncryptionKey": "Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.",
|
|
||||||
"collabOfflineWarning": "Keine Internetverbindung verfügbar.\nDeine Änderungen werden nicht gespeichert!",
|
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
|
||||||
"errors": {
|
|
||||||
"unsupportedFileType": "Nicht unterstützter Dateityp.",
|
|
||||||
"imageInsertError": "Das Bild konnte nicht eingefügt werden. Versuche es später erneut...",
|
|
||||||
"fileTooBig": "Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.",
|
|
||||||
"svgImageInsertError": "SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.",
|
|
||||||
"failedToFetchImage": "Bild konnte nicht abgerufen werden.",
|
|
||||||
"cannotResolveCollabServer": "Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.",
|
|
||||||
"importLibraryError": "Bibliothek konnte nicht geladen werden",
|
|
||||||
"saveLibraryError": "Bibliothek konnte nicht gespeichert werden. Bitte speichere deine Bibliothek lokal in einer Datei, um sicherzustellen, dass keine Änderungen verloren gehen.",
|
|
||||||
"collabSaveFailed": "Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.",
|
|
||||||
"collabSaveFailed_sizeExceeded": "Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.",
|
|
||||||
"imageToolNotSupported": "Bilder sind deaktiviert.",
|
|
||||||
"brave_measure_text_error": {
|
|
||||||
"line1": "Sieht so aus, als ob Du den Brave-Browser verwendest und die <bold>aggressive Blockierung von Fingerabdrücken</bold> aktiviert hast.",
|
|
||||||
"line2": "Dies könnte dazu führen, dass die <bold>Textelemente</bold> in Ihren Zeichnungen zerstört werden.",
|
|
||||||
"line3": "Wir empfehlen dringend, diese Einstellung zu deaktivieren. Dazu kannst Du <link>diesen Schritten</link> folgen.",
|
|
||||||
"line4": "Wenn die Deaktivierung dieser Einstellung die fehlerhafte Anzeige von Textelementen nicht behebt, öffne bitte ein <issueLink>Ticket</issueLink> auf unserem GitHub oder schreibe uns auf <discordLink>Discord</discordLink>"
|
|
||||||
},
|
|
||||||
"libraryElementTypeError": {
|
|
||||||
"embeddable": "Einbettbare Elemente können der Bibliothek nicht hinzugefügt werden.",
|
|
||||||
"iframe": "IFrame-Elemente können nicht zur Bibliothek hinzugefügt werden.",
|
|
||||||
"image": "Unterstützung für das Hinzufügen von Bildern in die Bibliothek kommt bald!"
|
|
||||||
},
|
|
||||||
"asyncPasteFailedOnRead": "Einfügen fehlgeschlagen (konnte aus der Zwischenablage des Systems nicht gelesen werden).",
|
|
||||||
"asyncPasteFailedOnParse": "Einfügen fehlgeschlagen.",
|
|
||||||
"copyToSystemClipboardFailed": "Kopieren in die Zwischenablage fehlgeschlagen."
|
|
||||||
},
|
|
||||||
"toolBar": {
|
|
||||||
"selection": "Auswahl",
|
|
||||||
"lasso": "",
|
|
||||||
"image": "Bild einfügen",
|
|
||||||
"rectangle": "Rechteck",
|
|
||||||
"diamond": "Raute",
|
|
||||||
"ellipse": "Ellipse",
|
|
||||||
"arrow": "Pfeil",
|
|
||||||
"line": "Linie",
|
|
||||||
"freedraw": "Zeichnen",
|
|
||||||
"text": "Text",
|
|
||||||
"library": "Bibliothek",
|
|
||||||
"lock": "Ausgewähltes Werkzeug nach Zeichnen aktiv lassen",
|
|
||||||
"penMode": "Stift-Modus - Berührung verhindern",
|
|
||||||
"link": "Link für ausgewählte Form hinzufügen / aktualisieren",
|
|
||||||
"eraser": "Radierer",
|
|
||||||
"frame": "Rahmenwerkzeug",
|
|
||||||
"magicframe": "Wireframe zu Code",
|
|
||||||
"embeddable": "Web-Einbettung",
|
|
||||||
"laser": "Laserpointer",
|
|
||||||
"hand": "Hand (Schwenkwerkzeug)",
|
|
||||||
"extraTools": "Weitere Werkzeuge",
|
|
||||||
"mermaidToExcalidraw": "Mermaid zu Excalidraw",
|
|
||||||
"convertElementType": ""
|
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Rechteck",
|
|
||||||
"diamond": "Raute",
|
|
||||||
"ellipse": "Ellipse",
|
|
||||||
"arrow": "Pfeil",
|
|
||||||
"line": "Linie",
|
|
||||||
"freedraw": "Frei zeichnen",
|
|
||||||
"text": "Text",
|
|
||||||
"image": "Bild",
|
|
||||||
"group": "Gruppe",
|
|
||||||
"frame": "Rahmen",
|
|
||||||
"magicframe": "Wireframe zu Code",
|
|
||||||
"embeddable": "Web-Einbettung",
|
|
||||||
"selection": "Auswahl",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
|
||||||
"headings": {
|
|
||||||
"canvasActions": "Aktionen für Zeichenfläche",
|
|
||||||
"selectedShapeActions": "Aktionen für Auswahl",
|
|
||||||
"shapes": "Formen"
|
|
||||||
},
|
|
||||||
"hints": {
|
|
||||||
"dismissSearch": "",
|
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie",
|
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Klicke und ziehe. Lass los, wenn du fertig bist",
|
|
||||||
"text": "Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst",
|
|
||||||
"embeddable": "Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen",
|
|
||||||
"text_selected": "",
|
|
||||||
"text_editing": "",
|
|
||||||
"linearElementMulti": "",
|
|
||||||
"lockAngle": "",
|
|
||||||
"resize": "",
|
|
||||||
"resizeImage": "",
|
|
||||||
"rotate": "",
|
|
||||||
"lineEditor_info": "",
|
|
||||||
"lineEditor_line_info": "",
|
|
||||||
"lineEditor_pointSelected": "",
|
|
||||||
"lineEditor_nothingSelected": "",
|
|
||||||
"publishLibrary": "Veröffentliche deine eigene Bibliothek",
|
|
||||||
"bindTextToElement": "",
|
|
||||||
"createFlowchart": "",
|
|
||||||
"deepBoxSelect": "",
|
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung \"dom.events.asyncClipboard.clipboardItem\" auf \"true\" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite \"about:config\".",
|
|
||||||
"disableSnapping": "",
|
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
|
||||||
"canvasError": {
|
|
||||||
"cannotShowPreview": "Vorschau kann nicht angezeigt werden",
|
|
||||||
"canvasTooBig": "Die Leinwand ist möglicherweise zu groß.",
|
|
||||||
"canvasTooBigTip": "Tipp: Schiebe die am weitesten entfernten Elemente ein wenig näher zusammen."
|
|
||||||
},
|
|
||||||
"errorSplash": {
|
|
||||||
"headingMain": "Es ist ein Fehler aufgetreten. Versuche <button>die Seite neu zu laden.</button>",
|
|
||||||
"clearCanvasMessage": "Wenn das Neuladen nicht funktioniert, versuche <button>die Zeichenfläche zu löschen.</button>",
|
|
||||||
"clearCanvasCaveat": " Dies wird zum Verlust von Daten führen ",
|
|
||||||
"trackedToSentry": "Der Fehler mit der Kennung {{eventId}} wurde in unserem System registriert.",
|
|
||||||
"openIssueMessage": "Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren <button>Bug-Tracker</button>. Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).",
|
|
||||||
"sceneContent": "Zeichnungsinhalt:"
|
|
||||||
},
|
|
||||||
"shareDialog": {
|
|
||||||
"or": "Oder"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
|
||||||
"desc_intro": "Lade Leute ein, an deiner Zeichnung mitzuarbeiten.",
|
|
||||||
"desc_privacy": "Keine Sorge, die Sitzung ist Ende-zu-Ende verschlüsselt und vollständig privat. Nicht einmal unser Server kann sehen, was du zeichnest.",
|
|
||||||
"button_startSession": "Sitzung starten",
|
|
||||||
"button_stopSession": "Sitzung beenden",
|
|
||||||
"desc_inProgressIntro": "Die Live-Sitzung wird nun ausgeführt.",
|
|
||||||
"desc_shareLink": "Teile diesen Link mit allen, mit denen du zusammenarbeiten möchtest:",
|
|
||||||
"desc_exitSession": "Wenn du die Sitzung beendest, wird deine Verbindung zum Raum getrennt. Du kannst jedoch lokal weiter an der Zeichnung arbeiten. Beachte, dass dies keine Auswirkungen auf andere hat und diese weiterhin gemeinsam an ihrer Version arbeiten können.",
|
|
||||||
"shareTitle": "An einer Live-Kollaborationssitzung auf Excalidraw teilnehmen"
|
|
||||||
},
|
|
||||||
"errorDialog": {
|
|
||||||
"title": "Fehler"
|
|
||||||
},
|
|
||||||
"exportDialog": {
|
|
||||||
"disk_title": "Auf Festplatte speichern",
|
|
||||||
"disk_details": "Exportiere die Zeichnungsdaten in eine Datei, die Du später importieren kannst.",
|
|
||||||
"disk_button": "Als Datei speichern",
|
|
||||||
"link_title": "Teilbarer Link",
|
|
||||||
"link_details": "Als schreibgeschützten Link exportieren.",
|
|
||||||
"link_button": "Als Link exportieren",
|
|
||||||
"excalidrawplus_description": "Speichere die Szene in deinem Excalidraw+ Arbeitsbereich.",
|
|
||||||
"excalidrawplus_button": "Exportieren",
|
|
||||||
"excalidrawplus_exportError": "Konnte nicht nach Excalidraw+ exportieren..."
|
|
||||||
},
|
|
||||||
"helpDialog": {
|
|
||||||
"blog": "Lies unseren Blog",
|
|
||||||
"click": "klicken",
|
|
||||||
"deepSelect": "Auswahl innerhalb der Gruppe",
|
|
||||||
"deepBoxSelect": "Auswahl innerhalb der Gruppe, und Ziehen vermeiden",
|
|
||||||
"createFlowchart": "Erstelle ein Flussdiagramm aus einem generischen Element",
|
|
||||||
"navigateFlowchart": "Durchsuche ein Flussdiagramm",
|
|
||||||
"curvedArrow": "Gebogener Pfeil",
|
|
||||||
"curvedLine": "Gebogene Linie",
|
|
||||||
"documentation": "Dokumentation",
|
|
||||||
"doubleClick": "doppelklicken",
|
|
||||||
"drag": "ziehen",
|
|
||||||
"editor": "Editor",
|
|
||||||
"editLineArrowPoints": "Linien-/Pfeil-Punkte bearbeiten",
|
|
||||||
"editText": "Text bearbeiten / Label hinzufügen",
|
|
||||||
"github": "Ein Problem gefunden? Informiere uns",
|
|
||||||
"howto": "Folge unseren Anleitungen",
|
|
||||||
"or": "oder",
|
|
||||||
"preventBinding": "Pfeil-Bindung verhindern",
|
|
||||||
"tools": "Werkzeuge",
|
|
||||||
"shortcuts": "Tastaturkürzel",
|
|
||||||
"textFinish": "Bearbeitung beenden (Texteditor)",
|
|
||||||
"textNewLine": "Neue Zeile hinzufügen (Texteditor)",
|
|
||||||
"title": "Hilfe",
|
|
||||||
"view": "Ansicht",
|
|
||||||
"zoomToFit": "Zoomen um alle Elemente einzupassen",
|
|
||||||
"zoomToSelection": "Auf Auswahl zoomen",
|
|
||||||
"toggleElementLock": "Auswahl sperren/entsperren",
|
|
||||||
"movePageUpDown": "Seite nach oben/unten verschieben",
|
|
||||||
"movePageLeftRight": "Seite nach links/rechts verschieben",
|
|
||||||
"cropStart": "Bild zuschneiden",
|
|
||||||
"cropFinish": "Zuschneiden des Bildes beenden"
|
|
||||||
},
|
|
||||||
"clearCanvasDialog": {
|
|
||||||
"title": "Zeichenfläche löschen"
|
|
||||||
},
|
|
||||||
"publishDialog": {
|
|
||||||
"title": "Bibliothek veröffentlichen",
|
|
||||||
"itemName": "Elementname",
|
|
||||||
"authorName": "Name des Autors",
|
|
||||||
"githubUsername": "GitHub-Benutzername",
|
|
||||||
"twitterUsername": "Twitter-Benutzername",
|
|
||||||
"libraryName": "Name der Bibliothek",
|
|
||||||
"libraryDesc": "Beschreibung der Bibliothek",
|
|
||||||
"website": "Webseite",
|
|
||||||
"placeholder": {
|
|
||||||
"authorName": "Dein Name oder Benutzername",
|
|
||||||
"libraryName": "Name deiner Bibliothek",
|
|
||||||
"libraryDesc": "Beschreibung deiner Bibliothek, um anderen Nutzern bei der Verwendung zu helfen",
|
|
||||||
"githubHandle": "GitHub-Handle (optional), damit du die Bibliothek bearbeiten kannst, wenn sie zur Überprüfung eingereicht wurde",
|
|
||||||
"twitterHandle": "Twitter-Benutzername (optional), damit wir wissen, wen wir bei Werbung über Twitter nennen können",
|
|
||||||
"website": "Link zu deiner persönlichen Webseite oder zu anderer Seite (optional)"
|
|
||||||
},
|
|
||||||
"errors": {
|
|
||||||
"required": "Erforderlich",
|
|
||||||
"website": "Gültige URL eingeben"
|
|
||||||
},
|
|
||||||
"noteDescription": "Sende deine Bibliothek ein, um in die <link>öffentliche Bibliotheks-Repository aufgenommen zu werden</link>damit andere Nutzer sie in ihren Zeichnungen verwenden können.",
|
|
||||||
"noteGuidelines": "Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die <link>Richtlinien</link> vor dem Absenden. Du benötigst ein GitHub-Konto, um zu kommunizieren und Änderungen vorzunehmen, falls erforderlich, aber es ist nicht unbedingt erforderlich.",
|
|
||||||
"noteLicense": "Mit dem Absenden stimmst du zu, dass die Bibliothek unter der <link>MIT-Lizenz, </link>die zusammengefasst beinhaltet, dass jeder sie ohne Einschränkungen nutzen kann.",
|
|
||||||
"noteItems": "Jedes Bibliothekselement muss einen eigenen Namen haben, damit es gefiltert werden kann. Die folgenden Bibliothekselemente werden hinzugefügt:",
|
|
||||||
"atleastOneLibItem": "Bitte wähle mindestens ein Bibliothekselement aus, um zu beginnen",
|
|
||||||
"republishWarning": "Hinweis: Einige der ausgewählten Elemente sind bereits als veröffentlicht/eingereicht markiert. Du solltest Elemente nur erneut einreichen, wenn Du eine existierende Bibliothek oder Einreichung aktualisierst."
|
|
||||||
},
|
|
||||||
"publishSuccessDialog": {
|
|
||||||
"title": "Bibliothek übermittelt",
|
|
||||||
"content": "Vielen Dank {{authorName}}. Deine Bibliothek wurde zur Überprüfung eingereicht. Du kannst den Status verfolgen<link>hier</link>"
|
|
||||||
},
|
|
||||||
"confirmDialog": {
|
|
||||||
"resetLibrary": "Bibliothek zurücksetzen",
|
|
||||||
"removeItemsFromLib": "Ausgewählte Elemente aus der Bibliothek entfernen"
|
|
||||||
},
|
|
||||||
"imageExportDialog": {
|
|
||||||
"header": "Bild exportieren",
|
|
||||||
"label": {
|
|
||||||
"withBackground": "Hintergrund",
|
|
||||||
"onlySelected": "Nur ausgewählte",
|
|
||||||
"darkMode": "Dunkler Modus",
|
|
||||||
"embedScene": "Szene einbetten",
|
|
||||||
"scale": "Skalierung",
|
|
||||||
"padding": "Abstand"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"embedScene": "Die Zeichnungsdaten werden in der exportierten PNG/SVG-Datei gespeichert, sodass das Dokument später weiter bearbeitet werden kann. \nDieses wird die exportierte Datei vergrößern."
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"exportToPng": "Als PNG exportieren",
|
|
||||||
"exportToSvg": "Als SVG exportieren",
|
|
||||||
"copyPngToClipboard": "PNG in die Zwischenablage kopieren"
|
|
||||||
},
|
|
||||||
"button": {
|
|
||||||
"exportToPng": "PNG",
|
|
||||||
"exportToSvg": "SVG",
|
|
||||||
"copyPngToClipboard": "In Zwischenablage kopieren"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"encrypted": {
|
|
||||||
"tooltip": "Da deine Zeichnungen Ende-zu-Ende verschlüsselt werden, sehen auch unsere Excalidraw-Server sie niemals.",
|
|
||||||
"link": "Blogbeitrag über Ende-zu-Ende-Verschlüsselung in Excalidraw"
|
|
||||||
},
|
|
||||||
"stats": {
|
|
||||||
"angle": "Winkel",
|
|
||||||
"shapes": "Formen",
|
|
||||||
"height": "Höhe",
|
|
||||||
"scene": "Zeichnung",
|
|
||||||
"selected": "Ausgewählt",
|
|
||||||
"storage": "Speicher",
|
|
||||||
"fullTitle": "Zeichenflächen- & Formeigenschaften",
|
|
||||||
"title": "Eigenschaften",
|
|
||||||
"generalStats": "Allgemein",
|
|
||||||
"elementProperties": "Formeigenschaften",
|
|
||||||
"total": "Gesamt",
|
|
||||||
"version": "Version",
|
|
||||||
"versionCopy": "Zum Kopieren klicken",
|
|
||||||
"versionNotAvailable": "Version nicht verfügbar",
|
|
||||||
"width": "Breite"
|
|
||||||
},
|
|
||||||
"toast": {
|
|
||||||
"addedToLibrary": "Zur Bibliothek hinzugefügt",
|
|
||||||
"copyStyles": "Formatierungen kopiert.",
|
|
||||||
"copyToClipboard": "In die Zwischenablage kopiert.",
|
|
||||||
"copyToClipboardAsPng": "{{exportSelection}} als PNG in die Zwischenablage kopiert\n({{exportColorScheme}})",
|
|
||||||
"copyToClipboardAsSvg": "{{exportSelection}} als SVG in die Zwischenablage kopiert ({{exportColorScheme}})",
|
|
||||||
"fileSaved": "Datei gespeichert.",
|
|
||||||
"fileSavedToFilename": "Als {filename} gespeichert",
|
|
||||||
"canvas": "Zeichenfläche",
|
|
||||||
"selection": "Auswahl",
|
|
||||||
"pasteAsSingleElement": "Verwende {{shortcut}} , um als einzelnes Element\neinzufügen oder in einen existierenden Texteditor einzufügen",
|
|
||||||
"unableToEmbed": "Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen",
|
|
||||||
"unrecognizedLinkFormat": "Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den 'embed' String einzufügen, der von der Quellseite zur Verfügung gestellt wird",
|
|
||||||
"elementLinkCopied": "Link in Zwischenablage kopiert"
|
|
||||||
},
|
|
||||||
"colors": {
|
|
||||||
"transparent": "Transparent",
|
|
||||||
"black": "Schwarz",
|
|
||||||
"white": "Weiß",
|
|
||||||
"red": "Rot",
|
|
||||||
"pink": "Pink",
|
|
||||||
"grape": "Traube",
|
|
||||||
"violet": "Violett",
|
|
||||||
"gray": "Grau",
|
|
||||||
"blue": "Blau",
|
|
||||||
"cyan": "Cyan",
|
|
||||||
"teal": "Blaugrün",
|
|
||||||
"green": "Grün",
|
|
||||||
"yellow": "Gelb",
|
|
||||||
"orange": "Orange",
|
|
||||||
"bronze": "Bronze"
|
|
||||||
},
|
|
||||||
"welcomeScreen": {
|
|
||||||
"app": {
|
|
||||||
"center_heading": "Alle Daten werden lokal in Deinem Browser gespeichert.",
|
|
||||||
"center_heading_plus": "Möchtest du stattdessen zu Excalidraw+ gehen?",
|
|
||||||
"menuHint": "Exportieren, Einstellungen, Sprachen, ..."
|
|
||||||
},
|
|
||||||
"defaults": {
|
|
||||||
"menuHint": "Exportieren, Einstellungen und mehr...",
|
|
||||||
"center_heading": "Diagramme. Einfach. Gemacht.",
|
|
||||||
"toolbarHint": "Wähle ein Werkzeug & beginne zu zeichnen!",
|
|
||||||
"helpHint": "Kurzbefehle & Hilfe"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"colorPicker": {
|
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Beliebteste benutzerdefinierte Farben",
|
|
||||||
"colors": "Farben",
|
|
||||||
"shades": "Schattierungen",
|
|
||||||
"hexCode": "Hex-Code",
|
|
||||||
"noShades": "Keine Schattierungen für diese Farbe verfügbar"
|
|
||||||
},
|
|
||||||
"overwriteConfirm": {
|
|
||||||
"action": {
|
|
||||||
"exportToImage": {
|
|
||||||
"title": "Als Bild exportieren",
|
|
||||||
"button": "Als Bild exportieren",
|
|
||||||
"description": "Exportiere die Zeichnungsdaten als ein Bild, von dem Du später importieren kannst."
|
|
||||||
},
|
|
||||||
"saveToDisk": {
|
|
||||||
"title": "Auf Festplatte speichern",
|
|
||||||
"button": "Auf Festplatte speichern",
|
|
||||||
"description": "Exportiere die Zeichnungsdaten in eine Datei, von der Du später importieren kannst."
|
|
||||||
},
|
|
||||||
"excalidrawPlus": {
|
|
||||||
"title": "Excalidraw+",
|
|
||||||
"button": "Export nach Excalidraw+",
|
|
||||||
"description": "Speichere die Szene in deinem Excalidraw+-Arbeitsbereich."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"loadFromFile": {
|
|
||||||
"title": "Aus Datei laden",
|
|
||||||
"button": "Aus Datei laden",
|
|
||||||
"description": "Das Laden aus einer Datei wird <bold>Deinen vorhandenen Inhalt ersetzen</bold>.<br></br>Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."
|
|
||||||
},
|
|
||||||
"shareableLink": {
|
|
||||||
"title": "Aus Link laden",
|
|
||||||
"button": "Meinen Inhalt ersetzen",
|
|
||||||
"description": "Das Laden einer externen Zeichnung wird <bold>Deinen vorhandenen Inhalt ersetzen</bold>.<br></br>Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mermaid": {
|
|
||||||
"title": "Mermaid zu Excalidraw",
|
|
||||||
"button": "Einfügen",
|
|
||||||
"description": "Derzeit werden nur <flowchartLink>Flussdiagramme</flowchartLink>, <sequenceLink>Sequenzdiagramme</sequenceLink> und <classLink>Klassendiagramme</classLink> unterstützt. Die anderen Typen werden als Bild in Excalidraw dargestellt.",
|
|
||||||
"syntax": "Mermaid-Syntax",
|
|
||||||
"preview": "Vorschau"
|
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Schnellsuche"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "alt"
|
|
||||||
},
|
|
||||||
"sceneFonts": "In dieser Szene",
|
|
||||||
"availableFonts": "Verfügbare Schriftarten",
|
|
||||||
"empty": "Keine Schriftarten gefunden"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "Keine Benutzer gefunden",
|
|
||||||
"hint": {
|
|
||||||
"text": "Klicke auf Benutzer um zu folgen",
|
|
||||||
"followStatus": "Du folgst derzeit diesem Benutzer",
|
|
||||||
"inCall": "Benutzer ist in einem Sprachanruf",
|
|
||||||
"micMuted": "Mikrofon des Benutzers ist stumm geschaltet",
|
|
||||||
"isSpeaking": "Benutzer spricht"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Befehlspalette",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Auswählen",
|
|
||||||
"confirm": "Bestätigen",
|
|
||||||
"close": "Schließen"
|
|
||||||
},
|
|
||||||
"recents": "Zuletzt verwendet",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Suche in Menüs und Befehlen, entdecke versteckte Funktionen",
|
|
||||||
"noMatch": "Keine passenden Befehle..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Befehl ist nicht verfügbar...",
|
|
||||||
"shortcutHint": "Benutze {{shortcut}} für Befehlspalette"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"labels": {
|
"labels": {
|
||||||
"paste": "Einfügen",
|
"paste": "Einfügen",
|
||||||
"pasteAsPlaintext": "Als unformatierten Text einfügen",
|
"pasteAsPlaintext": "Als reinen Text einfügen",
|
||||||
"pasteCharts": "Diagramme einfügen",
|
"pasteCharts": "Diagramme einfügen",
|
||||||
"selectAll": "Alle auswählen",
|
"selectAll": "Alle auswählen",
|
||||||
"multiSelect": "Element zur Auswahl hinzufügen",
|
"multiSelect": "Element zur Auswahl hinzufügen",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Formatierung kopieren",
|
"copyStyles": "Formatierung kopieren",
|
||||||
"pasteStyles": "Formatierung übernehmen",
|
"pasteStyles": "Formatierung übernehmen",
|
||||||
"stroke": "Strich",
|
"stroke": "Strich",
|
||||||
"changeStroke": "Strichfarbe ändern",
|
|
||||||
"background": "Hintergrund",
|
"background": "Hintergrund",
|
||||||
"changeBackground": "Hintergrundfarbe ändern",
|
|
||||||
"fill": "Füllung",
|
"fill": "Füllung",
|
||||||
"strokeWidth": "Strichstärke",
|
"strokeWidth": "Strichstärke",
|
||||||
"strokeStyle": "Konturstil",
|
"strokeStyle": "Konturstil",
|
||||||
@@ -46,14 +44,6 @@
|
|||||||
"arrowhead_triangle_outline": "Dreieck (Umrandung)",
|
"arrowhead_triangle_outline": "Dreieck (Umrandung)",
|
||||||
"arrowhead_diamond": "Raute",
|
"arrowhead_diamond": "Raute",
|
||||||
"arrowhead_diamond_outline": "Raute (Umrandung)",
|
"arrowhead_diamond_outline": "Raute (Umrandung)",
|
||||||
"arrowhead_crowfoot_many": "Krähenfuß (viele)",
|
|
||||||
"arrowhead_crowfoot_one": "Krähenfuß (einer)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Krähenfuß (einer oder viele)",
|
|
||||||
"more_options": "Weitere Optionen",
|
|
||||||
"arrowtypes": "Pfeiltyp",
|
|
||||||
"arrowtype_sharp": "Scharfer Pfeil",
|
|
||||||
"arrowtype_round": "Gebogener Pfeil",
|
|
||||||
"arrowtype_elbowed": "Ellenbogen-Pfeil",
|
|
||||||
"fontSize": "Schriftgröße",
|
"fontSize": "Schriftgröße",
|
||||||
"fontFamily": "Schriftfamilie",
|
"fontFamily": "Schriftfamilie",
|
||||||
"addWatermark": "\"Made with Excalidraw\" hinzufügen",
|
"addWatermark": "\"Made with Excalidraw\" hinzufügen",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Auf Leinwand verwendet",
|
"canvasColors": "Auf Leinwand verwendet",
|
||||||
"canvasBackground": "Zeichenflächenhintergrund",
|
"canvasBackground": "Zeichenflächenhintergrund",
|
||||||
"drawingCanvas": "Leinwand",
|
"drawingCanvas": "Leinwand",
|
||||||
"clearCanvas": "Zeichenfläche löschen",
|
|
||||||
"layers": "Ebenen",
|
"layers": "Ebenen",
|
||||||
"actions": "Aktionen",
|
"actions": "Aktionen",
|
||||||
"language": "Sprache",
|
"language": "Sprache",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Auswahl gruppieren",
|
"group": "Auswahl gruppieren",
|
||||||
"ungroup": "Gruppierung aufheben",
|
"ungroup": "Gruppierung aufheben",
|
||||||
"collaborators": "Mitarbeitende",
|
"collaborators": "Mitarbeitende",
|
||||||
"toggleGrid": "Raster umschalten",
|
"showGrid": "Raster anzeigen",
|
||||||
"addToLibrary": "Zur Bibliothek hinzufügen",
|
"addToLibrary": "Zur Bibliothek hinzufügen",
|
||||||
"removeFromLibrary": "Aus Bibliothek entfernen",
|
"removeFromLibrary": "Aus Bibliothek entfernen",
|
||||||
"libraryLoadingMessage": "Lade Bibliothek…",
|
"libraryLoadingMessage": "Lade Bibliothek…",
|
||||||
"libraries": "Bibliotheken durchsuchen",
|
"libraries": "Bibliotheken durchsuchen",
|
||||||
"loadingScene": "Lade Zeichnung…",
|
"loadingScene": "Lade Zeichnung…",
|
||||||
"loadScene": "Szene aus Datei laden",
|
|
||||||
"align": "Ausrichten",
|
"align": "Ausrichten",
|
||||||
"alignTop": "Obere Kanten",
|
"alignTop": "Obere Kanten",
|
||||||
"alignBottom": "Untere Kanten",
|
"alignBottom": "Untere Kanten",
|
||||||
@@ -117,33 +105,26 @@
|
|||||||
"share": "Teilen",
|
"share": "Teilen",
|
||||||
"showStroke": "Auswahl für Strichfarbe anzeigen",
|
"showStroke": "Auswahl für Strichfarbe anzeigen",
|
||||||
"showBackground": "Hintergrundfarbe auswählen",
|
"showBackground": "Hintergrundfarbe auswählen",
|
||||||
"showFonts": "Schriftauswahl anzeigen",
|
"toggleTheme": "Design umschalten",
|
||||||
"toggleTheme": "Helles/dunkles Design umschalten",
|
|
||||||
"theme": "Design",
|
|
||||||
"personalLib": "Persönliche Bibliothek",
|
"personalLib": "Persönliche Bibliothek",
|
||||||
"excalidrawLib": "Excalidraw Bibliothek",
|
"excalidrawLib": "Excalidraw Bibliothek",
|
||||||
"decreaseFontSize": "Schriftgröße verringern",
|
"decreaseFontSize": "Schriftgröße verkleinern",
|
||||||
"increaseFontSize": "Schriftgröße erhöhen",
|
"increaseFontSize": "Schrift vergrößern",
|
||||||
"unbindText": "Text lösen",
|
"unbindText": "Text lösen",
|
||||||
"bindText": "Text an Container binden",
|
"bindText": "Text an Container binden",
|
||||||
"createContainerFromText": "Text in Container einbetten",
|
"createContainerFromText": "Text in Container einbetten",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Link bearbeiten",
|
"edit": "Link bearbeiten",
|
||||||
"editEmbed": "Einbettbaren Link bearbeiten",
|
"editEmbed": "Link bearbeiten & einbetten",
|
||||||
"create": "Link hinzufügen",
|
"create": "Link erstellen",
|
||||||
|
"createEmbed": "Link erstellen & einbetten",
|
||||||
"label": "Link",
|
"label": "Link",
|
||||||
"labelEmbed": "Verlinken & einbetten",
|
"labelEmbed": "Verlinken & einbetten",
|
||||||
"empty": "Kein Link festgelegt",
|
"empty": "Kein Link festgelegt"
|
||||||
"hint": "Link hier eingeben oder einfügen",
|
|
||||||
"goToElement": "Gehe zu Zielelement"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Linie bearbeiten",
|
"edit": "Linie bearbeiten",
|
||||||
"editArrow": "Pfeil bearbeiten"
|
"exit": "Linieneditor verlassen"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Sperren",
|
"lock": "Sperren",
|
||||||
@@ -157,46 +138,12 @@
|
|||||||
"removeAllElementsFromFrame": "Alle Elemente aus dem Rahmen entfernen",
|
"removeAllElementsFromFrame": "Alle Elemente aus dem Rahmen entfernen",
|
||||||
"eyeDropper": "Farbe von der Zeichenfläche auswählen",
|
"eyeDropper": "Farbe von der Zeichenfläche auswählen",
|
||||||
"textToDiagram": "Text zu Diagramm",
|
"textToDiagram": "Text zu Diagramm",
|
||||||
"prompt": "Eingabe",
|
"prompt": "Eingabe"
|
||||||
"followUs": "Folge uns",
|
|
||||||
"discordChat": "Discord-Chat",
|
|
||||||
"zoomToFitViewport": "Zoom auf Ansicht anpassen",
|
|
||||||
"zoomToFitSelection": "Zoom auf Auswahl anpassen",
|
|
||||||
"zoomToFit": "Zoom auf alle Elemente anpassen",
|
|
||||||
"installPWA": "Excalidraw lokal installieren (PWA)",
|
|
||||||
"autoResize": "Aktiviere automatische Textgrößenanpassung",
|
|
||||||
"imageCropping": "Bild zuschneiden",
|
|
||||||
"unCroppedDimension": "Nicht zugeschnittene Dimension",
|
|
||||||
"copyElementLink": "Link zum Objekt kopieren",
|
|
||||||
"linkToElement": "Link zum Objekt",
|
|
||||||
"wrapSelectionInFrame": "Auswahl in Rahmen einbetten",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "Link zum Objekt",
|
|
||||||
"desc": "Klicke auf eine Form auf der Zeichenfläche oder füge einen Link ein.",
|
|
||||||
"notFound": "Verknüpftes Objekt wurde nicht auf der Zeichenfläche gefunden."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Noch keine Elemente hinzugefügt...",
|
"noItems": "Noch keine Elemente hinzugefügt...",
|
||||||
"hint_emptyLibrary": "Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.",
|
"hint_emptyLibrary": "Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.",
|
||||||
"hint_emptyPrivateLibrary": "Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen.",
|
"hint_emptyPrivateLibrary": "Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "Auf Zeichenfläche suchen",
|
|
||||||
"noMatch": "Keine Treffer gefunden...",
|
|
||||||
"singleResult": "Ergebnis",
|
|
||||||
"multipleResults": "Ergebnisse",
|
|
||||||
"placeholder": "Text auf Zeichenfläche suchen...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Zeichenfläche löschen & Hintergrundfarbe zurücksetzen",
|
"clearReset": "Zeichenfläche löschen & Hintergrundfarbe zurücksetzen",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Exportiere Bild...",
|
"exportImage": "Exportiere Bild...",
|
||||||
"export": "Speichern als...",
|
"export": "Speichern als...",
|
||||||
"copyToClipboard": "In Zwischenablage kopieren",
|
"copyToClipboard": "In Zwischenablage kopieren",
|
||||||
"copyLink": "Link kopieren",
|
|
||||||
"save": "In aktueller Datei speichern",
|
"save": "In aktueller Datei speichern",
|
||||||
"saveAs": "Speichern unter",
|
"saveAs": "Speichern unter",
|
||||||
"load": "Öffnen",
|
"load": "Öffnen",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Vollbildanzeige",
|
"fullScreen": "Vollbildanzeige",
|
||||||
"darkMode": "Dunkles Design",
|
"darkMode": "Dunkles Design",
|
||||||
"lightMode": "Helles Design",
|
"lightMode": "Helles Design",
|
||||||
"systemMode": "System-Modus",
|
|
||||||
"zenMode": "Zen-Modus",
|
"zenMode": "Zen-Modus",
|
||||||
"objectsSnapMode": "Einrasten an Objekten",
|
"objectsSnapMode": "Einrasten an Objekten",
|
||||||
"exitZenMode": "Zen-Modus verlassen",
|
"exitZenMode": "Zen-Modus verlassen",
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Löschen",
|
"clear": "Löschen",
|
||||||
"remove": "Entfernen",
|
"remove": "Entfernen",
|
||||||
"embed": "Einbettung umschalten",
|
"embed": "Einbettung umschalten",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Veröffentlichen",
|
||||||
"submit": "Absenden",
|
"submit": "Absenden",
|
||||||
"confirm": "Bestätigen",
|
"confirm": "Bestätigen",
|
||||||
"embeddableInteractionButton": "Klicken, um zu interagieren"
|
"embeddableInteractionButton": "Klicken, um zu interagieren"
|
||||||
@@ -260,8 +204,7 @@
|
|||||||
"resetLibrary": "Dieses löscht deine Bibliothek. Bist du sicher?",
|
"resetLibrary": "Dieses löscht deine Bibliothek. Bist du sicher?",
|
||||||
"removeItemsFromsLibrary": "{{count}} Element(e) aus der Bibliothek löschen?",
|
"removeItemsFromsLibrary": "{{count}} Element(e) aus der Bibliothek löschen?",
|
||||||
"invalidEncryptionKey": "Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.",
|
"invalidEncryptionKey": "Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.",
|
||||||
"collabOfflineWarning": "Keine Internetverbindung verfügbar.\nDeine Änderungen werden nicht gespeichert!",
|
"collabOfflineWarning": "Keine Internetverbindung verfügbar.\nDeine Änderungen werden nicht gespeichert!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Nicht unterstützter Dateityp.",
|
"unsupportedFileType": "Nicht unterstützter Dateityp.",
|
||||||
@@ -269,9 +212,9 @@
|
|||||||
"fileTooBig": "Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.",
|
"fileTooBig": "Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.",
|
||||||
"svgImageInsertError": "SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.",
|
"svgImageInsertError": "SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.",
|
||||||
"failedToFetchImage": "Bild konnte nicht abgerufen werden.",
|
"failedToFetchImage": "Bild konnte nicht abgerufen werden.",
|
||||||
|
"invalidSVGString": "Ungültige SVG.",
|
||||||
"cannotResolveCollabServer": "Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.",
|
"cannotResolveCollabServer": "Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.",
|
||||||
"importLibraryError": "Bibliothek konnte nicht geladen werden",
|
"importLibraryError": "Bibliothek konnte nicht geladen werden",
|
||||||
"saveLibraryError": "Bibliothek konnte nicht gespeichert werden. Bitte speichere deine Bibliothek lokal in einer Datei, um sicherzustellen, dass keine Änderungen verloren gehen.",
|
|
||||||
"collabSaveFailed": "Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.",
|
"collabSaveFailed": "Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.",
|
||||||
"collabSaveFailed_sizeExceeded": "Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.",
|
"collabSaveFailed_sizeExceeded": "Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.",
|
||||||
"imageToolNotSupported": "Bilder sind deaktiviert.",
|
"imageToolNotSupported": "Bilder sind deaktiviert.",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Auswahl",
|
"selection": "Auswahl",
|
||||||
"lasso": "",
|
|
||||||
"image": "Bild einfügen",
|
"image": "Bild einfügen",
|
||||||
"rectangle": "Rechteck",
|
"rectangle": "Rechteck",
|
||||||
"diamond": "Raute",
|
"diamond": "Raute",
|
||||||
@@ -313,23 +255,7 @@
|
|||||||
"hand": "Hand (Schwenkwerkzeug)",
|
"hand": "Hand (Schwenkwerkzeug)",
|
||||||
"extraTools": "Weitere Werkzeuge",
|
"extraTools": "Weitere Werkzeuge",
|
||||||
"mermaidToExcalidraw": "Mermaid zu Excalidraw",
|
"mermaidToExcalidraw": "Mermaid zu Excalidraw",
|
||||||
"convertElementType": ""
|
"magicSettings": "KI-Einstellungen"
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Rechteck",
|
|
||||||
"diamond": "Raute",
|
|
||||||
"ellipse": "Ellipse",
|
|
||||||
"arrow": "Pfeil",
|
|
||||||
"line": "Linie",
|
|
||||||
"freedraw": "Frei zeichnen",
|
|
||||||
"text": "Text",
|
|
||||||
"image": "Bild",
|
|
||||||
"group": "Gruppe",
|
|
||||||
"frame": "Rahmen",
|
|
||||||
"magicframe": "Wireframe zu Code",
|
|
||||||
"embeddable": "Web-Einbettung",
|
|
||||||
"selection": "Auswahl",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Aktionen für Zeichenfläche",
|
"canvasActions": "Aktionen für Zeichenfläche",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Formen"
|
"shapes": "Formen"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Um die Zeichenfläche zu verschieben, halte das Mausrad oder die Leertaste während des Ziehens, oder verwende das Hand-Werkzeug",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie",
|
"linearElement": "Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Klicke und ziehe. Lass los, wenn du fertig bist",
|
"freeDraw": "Klicke und ziehe. Lass los, wenn du fertig bist",
|
||||||
"text": "Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst",
|
"text": "Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst",
|
||||||
"embeddable": "Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen",
|
"embeddable": "Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen",
|
||||||
"text_selected": "",
|
"text_selected": "Doppelklicken oder Eingabetaste drücken, um Text zu bearbeiten",
|
||||||
"text_editing": "",
|
"text_editing": "Drücke Escape oder CtrlOrCmd+Eingabetaste, um die Bearbeitung abzuschließen",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Zum Beenden auf den letzten Punkt klicken oder Escape oder Eingabe drücken",
|
||||||
"lockAngle": "",
|
"lockAngle": "Du kannst Winkel einschränken, indem du SHIFT gedrückt hältst",
|
||||||
"resize": "",
|
"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": "",
|
"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": "",
|
"rotate": "Du kannst Winkel einschränken, indem du SHIFT während der Drehung gedrückt hältst",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "CtrlOrCmd halten und Doppelklick oder CtrlOrCmd + Eingabe drücken, um Punkte zu bearbeiten",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Drücke Löschen, um Punkt(e) zu entfernen, CtrlOrCmd+D zum Duplizieren oder ziehe zum Verschieben",
|
||||||
"lineEditor_pointSelected": "",
|
"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",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Klicken, um das Bild zu platzieren oder klicken und ziehen um seine Größe manuell zu setzen",
|
||||||
"publishLibrary": "Veröffentliche deine eigene Bibliothek",
|
"publishLibrary": "Veröffentliche deine eigene Bibliothek",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Zum Hinzufügen Eingabetaste drücken",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Halte CtrlOrCmd gedrückt, um innerhalb der Gruppe auszuwählen, und um Ziehen zu vermeiden",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Halte Alt gedrückt, um die zum Löschen markierten Elemente zurückzusetzen",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung \"dom.events.asyncClipboard.clipboardItem\" auf \"true\" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite \"about:config\".",
|
"firefox_clipboard_write": "Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung \"dom.events.asyncClipboard.clipboardItem\" auf \"true\" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": "Halte CtrlOrCmd gedrückt, um das Einrasten zu deaktivieren"
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Vorschau kann nicht angezeigt werden",
|
"cannotShowPreview": "Vorschau kann nicht angezeigt werden",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren <button>Bug-Tracker</button>. Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).",
|
"openIssueMessage": "Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren <button>Bug-Tracker</button>. Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).",
|
||||||
"sceneContent": "Zeichnungsinhalt:"
|
"sceneContent": "Zeichnungsinhalt:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Oder"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Lade Leute ein, an deiner Zeichnung mitzuarbeiten.",
|
"desc_intro": "Du kannst Leute zu deiner aktuellen Zeichnung einladen um mit ihnen zusammenzuarbeiten.",
|
||||||
"desc_privacy": "Keine Sorge, die Sitzung ist Ende-zu-Ende verschlüsselt und vollständig privat. Nicht einmal unser Server kann sehen, was du zeichnest.",
|
"desc_privacy": "Keine Sorge, die Sitzung nutzt eine Ende-zu-Ende-Verschlüsselung. Alles was du zeichnest, bleibt privat. Auch unser Server sieht nicht, was du dir einfallen lässt.",
|
||||||
"button_startSession": "Sitzung starten",
|
"button_startSession": "Sitzung starten",
|
||||||
"button_stopSession": "Sitzung beenden",
|
"button_stopSession": "Sitzung beenden",
|
||||||
"desc_inProgressIntro": "Die Live-Sitzung wird nun ausgeführt.",
|
"desc_inProgressIntro": "Die Live-Sitzung wird nun ausgeführt.",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "klicken",
|
"click": "klicken",
|
||||||
"deepSelect": "Auswahl innerhalb der Gruppe",
|
"deepSelect": "Auswahl innerhalb der Gruppe",
|
||||||
"deepBoxSelect": "Auswahl innerhalb der Gruppe, und Ziehen vermeiden",
|
"deepBoxSelect": "Auswahl innerhalb der Gruppe, und Ziehen vermeiden",
|
||||||
"createFlowchart": "Erstelle ein Flussdiagramm aus einem generischen Element",
|
|
||||||
"navigateFlowchart": "Durchsuche ein Flussdiagramm",
|
|
||||||
"curvedArrow": "Gebogener Pfeil",
|
"curvedArrow": "Gebogener Pfeil",
|
||||||
"curvedLine": "Gebogene Linie",
|
"curvedLine": "Gebogene Linie",
|
||||||
"documentation": "Dokumentation",
|
"documentation": "Dokumentation",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Auf Auswahl zoomen",
|
"zoomToSelection": "Auf Auswahl zoomen",
|
||||||
"toggleElementLock": "Auswahl sperren/entsperren",
|
"toggleElementLock": "Auswahl sperren/entsperren",
|
||||||
"movePageUpDown": "Seite nach oben/unten verschieben",
|
"movePageUpDown": "Seite nach oben/unten verschieben",
|
||||||
"movePageLeftRight": "Seite nach links/rechts verschieben",
|
"movePageLeftRight": "Seite nach links/rechts verschieben"
|
||||||
"cropStart": "Bild zuschneiden",
|
|
||||||
"cropFinish": "Zuschneiden des Bildes beenden"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Zeichenfläche löschen"
|
"title": "Zeichenfläche löschen"
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Winkel",
|
"angle": "Winkel",
|
||||||
"shapes": "Formen",
|
"element": "Element",
|
||||||
|
"elements": "Elemente",
|
||||||
"height": "Höhe",
|
"height": "Höhe",
|
||||||
"scene": "Zeichnung",
|
"scene": "Zeichnung",
|
||||||
"selected": "Ausgewählt",
|
"selected": "Ausgewählt",
|
||||||
"storage": "Speicher",
|
"storage": "Speicher",
|
||||||
"fullTitle": "Zeichenflächen- & Formeigenschaften",
|
"title": "Statistiken für Nerds",
|
||||||
"title": "Eigenschaften",
|
|
||||||
"generalStats": "Allgemein",
|
|
||||||
"elementProperties": "Formeigenschaften",
|
|
||||||
"total": "Gesamt",
|
"total": "Gesamt",
|
||||||
"version": "Version",
|
"version": "Version",
|
||||||
"versionCopy": "Zum Kopieren klicken",
|
"versionCopy": "Zum Kopieren klicken",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Formatierungen kopiert.",
|
"copyStyles": "Formatierungen kopiert.",
|
||||||
"copyToClipboard": "In die Zwischenablage kopiert.",
|
"copyToClipboard": "In die Zwischenablage kopiert.",
|
||||||
"copyToClipboardAsPng": "{{exportSelection}} als PNG in die Zwischenablage kopiert\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "{{exportSelection}} als PNG in die Zwischenablage kopiert\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "{{exportSelection}} als SVG in die Zwischenablage kopiert ({{exportColorScheme}})",
|
|
||||||
"fileSaved": "Datei gespeichert.",
|
"fileSaved": "Datei gespeichert.",
|
||||||
"fileSavedToFilename": "Als {filename} gespeichert",
|
"fileSavedToFilename": "Als {filename} gespeichert",
|
||||||
"canvas": "Zeichenfläche",
|
"canvas": "Zeichenfläche",
|
||||||
"selection": "Auswahl",
|
"selection": "Auswahl",
|
||||||
"pasteAsSingleElement": "Verwende {{shortcut}} , um als einzelnes Element\neinzufügen oder in einen existierenden Texteditor einzufügen",
|
"pasteAsSingleElement": "Verwende {{shortcut}} , um als einzelnes Element\neinzufügen oder in einen existierenden Texteditor einzufügen",
|
||||||
"unableToEmbed": "Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen",
|
"unableToEmbed": "Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen",
|
||||||
"unrecognizedLinkFormat": "Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den 'embed' String einzufügen, der von der Quellseite zur Verfügung gestellt wird",
|
"unrecognizedLinkFormat": "Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den 'embed' String einzufügen, der von der Quellseite zur Verfügung gestellt wird"
|
||||||
"elementLinkCopied": "Link in Zwischenablage kopiert"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Transparent",
|
"transparent": "Transparent",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Beliebteste benutzerdefinierte Farben",
|
"mostUsedCustomColors": "Beliebteste benutzerdefinierte Farben",
|
||||||
"colors": "Farben",
|
"colors": "Farben",
|
||||||
"shades": "Schattierungen",
|
"shades": "Schattierungen",
|
||||||
@@ -612,53 +521,5 @@
|
|||||||
"description": "Derzeit werden nur <flowchartLink>Flussdiagramme</flowchartLink>, <sequenceLink>Sequenzdiagramme</sequenceLink> und <classLink>Klassendiagramme</classLink> unterstützt. Die anderen Typen werden als Bild in Excalidraw dargestellt.",
|
"description": "Derzeit werden nur <flowchartLink>Flussdiagramme</flowchartLink>, <sequenceLink>Sequenzdiagramme</sequenceLink> und <classLink>Klassendiagramme</classLink> unterstützt. Die anderen Typen werden als Bild in Excalidraw dargestellt.",
|
||||||
"syntax": "Mermaid-Syntax",
|
"syntax": "Mermaid-Syntax",
|
||||||
"preview": "Vorschau"
|
"preview": "Vorschau"
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Schnellsuche"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "alt"
|
|
||||||
},
|
|
||||||
"sceneFonts": "In dieser Szene",
|
|
||||||
"availableFonts": "Verfügbare Schriftarten",
|
|
||||||
"empty": "Keine Schriftarten gefunden"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "Keine Benutzer gefunden",
|
|
||||||
"hint": {
|
|
||||||
"text": "Klicke auf Benutzer um zu folgen",
|
|
||||||
"followStatus": "Du folgst derzeit diesem Benutzer",
|
|
||||||
"inCall": "Benutzer ist in einem Sprachanruf",
|
|
||||||
"micMuted": "Mikrofon des Benutzers ist stumm geschaltet",
|
|
||||||
"isSpeaking": "Benutzer spricht"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Befehlspalette",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Auswählen",
|
|
||||||
"confirm": "Bestätigen",
|
|
||||||
"close": "Schließen"
|
|
||||||
},
|
|
||||||
"recents": "Zuletzt verwendet",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Suche in Menüs und Befehlen, entdecke versteckte Funktionen",
|
|
||||||
"noMatch": "Keine passenden Befehle..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Befehl ist nicht verfügbar...",
|
|
||||||
"shortcutHint": "Benutze {{shortcut}} für Befehlspalette"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,19 +11,17 @@
|
|||||||
"copyAsPng": "Αντιγραφή στο πρόχειρο ως PNG",
|
"copyAsPng": "Αντιγραφή στο πρόχειρο ως PNG",
|
||||||
"copyAsSvg": "Αντιγραφή στο πρόχειρο ως SVG",
|
"copyAsSvg": "Αντιγραφή στο πρόχειρο ως SVG",
|
||||||
"copyText": "Αντιγραφή στο πρόχειρο ως κείμενο",
|
"copyText": "Αντιγραφή στο πρόχειρο ως κείμενο",
|
||||||
"copySource": "Αντιγραφή προέλευσης στο πρόχειρο",
|
"copySource": "",
|
||||||
"convertToCode": "Μετατροπή σε κώδικα",
|
"convertToCode": "",
|
||||||
"bringForward": "Μεταφορά μπροστά",
|
"bringForward": "Στο προσκήνιο",
|
||||||
"sendToBack": "Στείλ' το στο τέλος",
|
"sendToBack": "Ένα επίπεδο πίσω",
|
||||||
"bringToFront": "Φερ' το μπροστά",
|
"bringToFront": "Ένα επίπεδο μπροστά",
|
||||||
"sendBackward": "Στο παρασκήνιο",
|
"sendBackward": "Στο παρασκήνιο",
|
||||||
"delete": "Διαγραφή",
|
"delete": "Διαγραφή",
|
||||||
"copyStyles": "Αντιγραφή εμφάνισης",
|
"copyStyles": "Αντιγραφή εμφάνισης",
|
||||||
"pasteStyles": "Επικόλληση εμφάνισης",
|
"pasteStyles": "Επικόλληση εμφάνισης",
|
||||||
"stroke": "Μολυβιά",
|
"stroke": "Μολυβιά",
|
||||||
"changeStroke": "Αλλαγή χρώματος πινελιάς",
|
|
||||||
"background": "Φόντο",
|
"background": "Φόντο",
|
||||||
"changeBackground": "Αλλαγή χρώματος παρασκηνίου",
|
|
||||||
"fill": "Γέμισμα",
|
"fill": "Γέμισμα",
|
||||||
"strokeWidth": "Πάχος μολυβιάς",
|
"strokeWidth": "Πάχος μολυβιάς",
|
||||||
"strokeStyle": "Στυλ περιγράμματος",
|
"strokeStyle": "Στυλ περιγράμματος",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Κανένα",
|
"arrowhead_none": "Κανένα",
|
||||||
"arrowhead_arrow": "Βέλος",
|
"arrowhead_arrow": "Βέλος",
|
||||||
"arrowhead_bar": "Μπάρα",
|
"arrowhead_bar": "Μπάρα",
|
||||||
"arrowhead_circle": "Κύκλος",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Κύκλος (περίγραμμα)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Τρίγωνο",
|
"arrowhead_triangle": "Τρίγωνο",
|
||||||
"arrowhead_triangle_outline": "Τρίγωνο (περίγραμμα)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Ρόμβος",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Ρόμβος (περίγραμμα)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "Τύπος βέλους",
|
|
||||||
"arrowtype_sharp": "Αιχμηρό βέλος",
|
|
||||||
"arrowtype_round": "Κυρτό βέλος",
|
|
||||||
"arrowtype_elbowed": "Γωνιακό βέλος",
|
|
||||||
"fontSize": "Μέγεθος γραμματοσειράς",
|
"fontSize": "Μέγεθος γραμματοσειράς",
|
||||||
"fontFamily": "Γραμματοσειρά",
|
"fontFamily": "Γραμματοσειρά",
|
||||||
"addWatermark": "Προσθήκη \"Φτιαγμένο με Excalidraw\"",
|
"addWatermark": "Προσθήκη \"Φτιαγμένο με Excalidraw\"",
|
||||||
@@ -66,7 +56,7 @@
|
|||||||
"veryLarge": "Πολύ μεγάλο",
|
"veryLarge": "Πολύ μεγάλο",
|
||||||
"solid": "Συμπαγής",
|
"solid": "Συμπαγής",
|
||||||
"hachure": "Εκκόλαψη",
|
"hachure": "Εκκόλαψη",
|
||||||
"zigzag": "Τεθλασμένη γραμμή",
|
"zigzag": "",
|
||||||
"crossHatch": "Διασταυρούμενη εκκόλαψη",
|
"crossHatch": "Διασταυρούμενη εκκόλαψη",
|
||||||
"thin": "Λεπτή",
|
"thin": "Λεπτή",
|
||||||
"bold": "Έντονη",
|
"bold": "Έντονη",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Χρησιμοποείται στον καμβά",
|
"canvasColors": "Χρησιμοποείται στον καμβά",
|
||||||
"canvasBackground": "Φόντο καμβά",
|
"canvasBackground": "Φόντο καμβά",
|
||||||
"drawingCanvas": "Σχεδίαση καμβά",
|
"drawingCanvas": "Σχεδίαση καμβά",
|
||||||
"clearCanvas": "Καθαρισμός καμβά",
|
|
||||||
"layers": "Στρώματα",
|
"layers": "Στρώματα",
|
||||||
"actions": "Ενέργειες",
|
"actions": "Ενέργειες",
|
||||||
"language": "Γλώσσα",
|
"language": "Γλώσσα",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Δημιουργία ομάδας από επιλογή",
|
"group": "Δημιουργία ομάδας από επιλογή",
|
||||||
"ungroup": "Κατάργηση ομάδας από επιλογή",
|
"ungroup": "Κατάργηση ομάδας από επιλογή",
|
||||||
"collaborators": "Συνεργάτες",
|
"collaborators": "Συνεργάτες",
|
||||||
"toggleGrid": "Εναλλαγή ορατότητας πλέγματος",
|
"showGrid": "Προβολή πλέγματος",
|
||||||
"addToLibrary": "Προσθήκη στη βιβλιοθήκη",
|
"addToLibrary": "Προσθήκη στη βιβλιοθήκη",
|
||||||
"removeFromLibrary": "Αφαίρεση από τη βιβλιοθήκη",
|
"removeFromLibrary": "Αφαίρεση από τη βιβλιοθήκη",
|
||||||
"libraryLoadingMessage": "Φόρτωση βιβλιοθήκης…",
|
"libraryLoadingMessage": "Φόρτωση βιβλιοθήκης…",
|
||||||
"libraries": "Άλλες βιβλιοθήκες",
|
"libraries": "Άλλες βιβλιοθήκες",
|
||||||
"loadingScene": "Φόρτωση σκηνής…",
|
"loadingScene": "Φόρτωση σκηνής…",
|
||||||
"loadScene": "Φόρτωση σκηνής από αρχείο",
|
|
||||||
"align": "Στοίχιση",
|
"align": "Στοίχιση",
|
||||||
"alignTop": "Στοίχιση πάνω",
|
"alignTop": "Στοίχιση πάνω",
|
||||||
"alignBottom": "Στοίχιση κάτω",
|
"alignBottom": "Στοίχιση κάτω",
|
||||||
@@ -117,33 +105,26 @@
|
|||||||
"share": "Κοινοποίηση",
|
"share": "Κοινοποίηση",
|
||||||
"showStroke": "Εμφάνιση επιλογέα χρωμάτων πινελιάς",
|
"showStroke": "Εμφάνιση επιλογέα χρωμάτων πινελιάς",
|
||||||
"showBackground": "Εμφάνιση επιλογέα χρώματος φόντου",
|
"showBackground": "Εμφάνιση επιλογέα χρώματος φόντου",
|
||||||
"showFonts": "Εμφάνιση επιλογέα γραμματοσειράς",
|
"toggleTheme": "Εναλλαγή θέματος",
|
||||||
"toggleTheme": "Εναλλαγή φωτεινού/σκοτεινού θέματος",
|
|
||||||
"theme": "Θέμα",
|
|
||||||
"personalLib": "Προσωπική Βιβλιοθήκη",
|
"personalLib": "Προσωπική Βιβλιοθήκη",
|
||||||
"excalidrawLib": "Βιβλιοθήκη Excalidraw",
|
"excalidrawLib": "Βιβλιοθήκη Excalidraw",
|
||||||
"decreaseFontSize": "Μείωση μεγέθους γραμματοσειράς",
|
"decreaseFontSize": "Μείωση μεγέθους γραμματοσειράς",
|
||||||
"increaseFontSize": "Αύξηση μεγέθους γραμματοσειράς",
|
"increaseFontSize": "Αύξηση μεγέθους γραμματοσειράς",
|
||||||
"unbindText": "Αποσύνδεση κειμένου",
|
"unbindText": "Αποσύνδεση κειμένου",
|
||||||
"bindText": "Δέσμευση κειμένου στο δοχείο",
|
"bindText": "Δέσμευση κειμένου στο δοχείο",
|
||||||
"createContainerFromText": "Αναδίπλωση κειμένου σε δοχείο",
|
"createContainerFromText": "",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Επεξεργασία συνδέσμου",
|
"edit": "Επεξεργασία συνδέσμου",
|
||||||
"editEmbed": "",
|
"editEmbed": "",
|
||||||
"create": "",
|
"create": "Δημιουργία συνδέσμου",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "Σύνδεσμος",
|
"label": "Σύνδεσμος",
|
||||||
"labelEmbed": "Σύνδεσμος & ενσωμάτωση",
|
"labelEmbed": "",
|
||||||
"empty": "Δεν έχει οριστεί σύνδεσμος",
|
"empty": ""
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Επεξεργασία γραμμής",
|
"edit": "Επεξεργασία γραμμής",
|
||||||
"editArrow": "Επεξεργασία βέλους"
|
"exit": "Έξοδος επεξεργαστή κειμένου"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Κλείδωμα",
|
"lock": "Κλείδωμα",
|
||||||
@@ -153,50 +134,16 @@
|
|||||||
},
|
},
|
||||||
"statusPublished": "Δημοσιευμένο",
|
"statusPublished": "Δημοσιευμένο",
|
||||||
"sidebarLock": "Κρατήστε την πλαϊνή μπάρα ανοιχτή",
|
"sidebarLock": "Κρατήστε την πλαϊνή μπάρα ανοιχτή",
|
||||||
"selectAllElementsInFrame": "Επιλογή όλων των στοιχείων στο πλαίσιο",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "Αφαίρεση όλων των στοιχείων από το πλαίσιο",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "Διαλέξτε χρώμα απ' τον καμβά",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "Κείμενο σε διάγραμμα",
|
"textToDiagram": "",
|
||||||
"prompt": "Εντολή",
|
"prompt": ""
|
||||||
"followUs": "Ακολουθήστε μας",
|
|
||||||
"discordChat": "Συνομιλία Discord",
|
|
||||||
"zoomToFitViewport": "Εστίαση για να χωρέσει στο παράθυρο προβολής",
|
|
||||||
"zoomToFitSelection": "Εστίαση για να χωρέσει στην επιλογή",
|
|
||||||
"zoomToFit": "Εστίαση για να χωρέσει σε όλα τα στοιχεία",
|
|
||||||
"installPWA": "Τοπική εγκατάσταση Excalidraw (PWA)",
|
|
||||||
"autoResize": "Ενεργοποίηση αυτόματης αλλαγής μεγέθους κειμένου",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Δεν έχουν προστεθεί αντικείμενα ακόμη...",
|
"noItems": "Δεν έχουν προστεθεί αντικείμενα ακόμη...",
|
||||||
"hint_emptyLibrary": "Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ, ή εγκαταστήστε μια βιβλιοθήκη από το δημόσιο αποθετήριο, παρακάτω.",
|
"hint_emptyLibrary": "Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ, ή εγκαταστήστε μια βιβλιοθήκη από το δημόσιο αποθετήριο, παρακάτω.",
|
||||||
"hint_emptyPrivateLibrary": "Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ.",
|
"hint_emptyPrivateLibrary": "Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Επαναφορά του καμβά",
|
"clearReset": "Επαναφορά του καμβά",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Εξαγωγή εικόνας...",
|
"exportImage": "Εξαγωγή εικόνας...",
|
||||||
"export": "Αποθήκευση ως...",
|
"export": "Αποθήκευση ως...",
|
||||||
"copyToClipboard": "Αντιγραφή στο πρόχειρο",
|
"copyToClipboard": "Αντιγραφή στο πρόχειρο",
|
||||||
"copyLink": "Αντιγραφή συνδέσμου",
|
|
||||||
"save": "Αποθήκευση στο τρέχον αρχείο",
|
"save": "Αποθήκευση στο τρέχον αρχείο",
|
||||||
"saveAs": "Αποθήκευση ως",
|
"saveAs": "Αποθήκευση ως",
|
||||||
"load": "Άνοιγμα",
|
"load": "Άνοιγμα",
|
||||||
@@ -225,19 +171,17 @@
|
|||||||
"fullScreen": "Πλήρης οθόνη",
|
"fullScreen": "Πλήρης οθόνη",
|
||||||
"darkMode": "Σκοτεινή λειτουργία",
|
"darkMode": "Σκοτεινή λειτουργία",
|
||||||
"lightMode": "Φωτεινή λειτουργία",
|
"lightMode": "Φωτεινή λειτουργία",
|
||||||
"systemMode": "Λειτουργία συστήματος",
|
|
||||||
"zenMode": "Λειτουργία Zεν",
|
"zenMode": "Λειτουργία Zεν",
|
||||||
"objectsSnapMode": "Προσκόλληση σε αντικείμενα",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "Έξοδος από την λειτουργία Zen",
|
"exitZenMode": "Έξοδος από την λειτουργία Zen",
|
||||||
"cancel": "Ακύρωση",
|
"cancel": "Ακύρωση",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Καθαρισμός",
|
"clear": "Καθαρισμός",
|
||||||
"remove": "Κατάργηση",
|
"remove": "Κατάργηση",
|
||||||
"embed": "Εναλλαγή ενσωμάτωσης",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Δημοσίευση",
|
||||||
"submit": "Υποβολή",
|
"submit": "Υποβολή",
|
||||||
"confirm": "Επιβεβαίωση",
|
"confirm": "Επιβεβαίωση",
|
||||||
"embeddableInteractionButton": "Κάντε κλικ για αλληλεπίδραση"
|
"embeddableInteractionButton": ""
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;",
|
"clearReset": "Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;",
|
||||||
@@ -260,39 +204,37 @@
|
|||||||
"resetLibrary": "Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;",
|
"resetLibrary": "Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;",
|
||||||
"removeItemsFromsLibrary": "Διαγραφή {{count}} αντικειμένου(ων) από τη βιβλιοθήκη;",
|
"removeItemsFromsLibrary": "Διαγραφή {{count}} αντικειμένου(ων) από τη βιβλιοθήκη;",
|
||||||
"invalidEncryptionKey": "Το κλειδί κρυπτογράφησης πρέπει να είναι 22 χαρακτήρες. Η ζωντανή συνεργασία είναι απενεργοποιημένη.",
|
"invalidEncryptionKey": "Το κλειδί κρυπτογράφησης πρέπει να είναι 22 χαρακτήρες. Η ζωντανή συνεργασία είναι απενεργοποιημένη.",
|
||||||
"collabOfflineWarning": "Δεν υπάρχει διαθέσιμη σύνδεση στο internet.\nΟι αλλαγές σας δεν θα αποθηκευτούν!",
|
"collabOfflineWarning": "Δεν υπάρχει διαθέσιμη σύνδεση στο internet.\nΟι αλλαγές σας δεν θα αποθηκευτούν!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Μη υποστηριζόμενος τύπος αρχείου.",
|
"unsupportedFileType": "Μη υποστηριζόμενος τύπος αρχείου.",
|
||||||
"imageInsertError": "Αδυναμία εισαγωγής εικόνας. Προσπαθήστε ξανά αργότερα...",
|
"imageInsertError": "Αδυναμία εισαγωγής εικόνας. Προσπαθήστε ξανά αργότερα...",
|
||||||
"fileTooBig": "Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπόμενο μέγεθος είναι {{maxSize}}.",
|
"fileTooBig": "Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπόμενο μέγεθος είναι {{maxSize}}.",
|
||||||
"svgImageInsertError": "Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.",
|
"svgImageInsertError": "Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.",
|
||||||
"failedToFetchImage": "Αποτυχία ανάκτησης εικόνας.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "Μη έγκυρο SVG.",
|
||||||
"cannotResolveCollabServer": "Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.",
|
"cannotResolveCollabServer": "Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.",
|
||||||
"importLibraryError": "Αδυναμία φόρτωσης βιβλιοθήκης",
|
"importLibraryError": "Αδυναμία φόρτωσης βιβλιοθήκης",
|
||||||
"saveLibraryError": "Αδύνατη η αποθήκευση της βιβλιοθήκης στον δίσκο. Παρακαλώ αποθηκεύστε τη βιβλιοθήκη σας σε ένα αρχείο τοπικά για να βεβαιωθείτε ότι δε θα χάσετε τις αλλαγές.",
|
|
||||||
"collabSaveFailed": "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.",
|
"collabSaveFailed": "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.",
|
||||||
"collabSaveFailed_sizeExceeded": "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.",
|
"collabSaveFailed_sizeExceeded": "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.",
|
||||||
"imageToolNotSupported": "Οι εικόνες είναι απενεργοποιημένες.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "Φαίνεται ότι χρησιμοποιείτε τον περιηγητή Brave με ενεργοποιημένη τη ρύθμιση <bold>Aggressively Block Fingerprinting</bold>.",
|
"line1": "",
|
||||||
"line2": "Αυτό θα μπορεί να οδηγήσει στη διάλυση των <bold>Στοιχείων Κειμένου</bold> στο σχέδιό σας.",
|
"line2": "",
|
||||||
"line3": "Σας συνιστούμε να απενεργοποιήσετε αυτή τη ρύθμιση. Μπορείτε να ακολουθήσετε <link>αυτά τα βήματα</link> για το πώς να το κάνετε.",
|
"line3": "",
|
||||||
"line4": "Εάν η απενεργοποίηση αυτής της ρύθμισης δε διορθώσει την εμφάνιση των στοιχείων κειμένου, παρακαλώ ανοίξτε ένα <issueLink>θέμα</issueLink> στο GitHub, ή γράψτε μας στο <discordLink>Discord</discordLink>"
|
"line4": ""
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "Τα ενσωματώσιμα στοιχεία δεν μπορούν να προστεθούν στη βιβλιοθήκη.",
|
"embeddable": "",
|
||||||
"iframe": "Τα στοιχεία IFrame δεν μπορούν να προστεθούν στη βιβλιοθήκη.",
|
"iframe": "",
|
||||||
"image": "Η υποστήριξη για προσθήκη εικόνων στη βιβλιοθήκη έρχεται σύντομα!"
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "Δεν ήταν δυνατή η επικόλληση (δεν ήταν δυνατή η ανάγνωση από το πρόχειρο του συστήματος).",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "Αδυναμία επικόλλησης.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": "Αδυναμία αντιγραφής στο πρόχειρο."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Επιλογή",
|
"selection": "Επιλογή",
|
||||||
"lasso": "",
|
|
||||||
"image": "Εισαγωγή εικόνας",
|
"image": "Εισαγωγή εικόνας",
|
||||||
"rectangle": "Ορθογώνιο",
|
"rectangle": "Ορθογώνιο",
|
||||||
"diamond": "Ρόμβος",
|
"diamond": "Ρόμβος",
|
||||||
@@ -304,32 +246,16 @@
|
|||||||
"library": "Βιβλιοθήκη",
|
"library": "Βιβλιοθήκη",
|
||||||
"lock": "Κράτησε επιλεγμένο το εργαλείο μετά το σχέδιο",
|
"lock": "Κράτησε επιλεγμένο το εργαλείο μετά το σχέδιο",
|
||||||
"penMode": "Λειτουργία μολυβιού - αποτροπή αφής",
|
"penMode": "Λειτουργία μολυβιού - αποτροπή αφής",
|
||||||
"link": "Προσθήκη / Ενημέρωση συνδέσμου για επιλεγμένο σχήμα",
|
"link": "Προσθήκη/ Ενημέρωση συνδέσμου για ένα επιλεγμένο σχήμα",
|
||||||
"eraser": "Γόμα",
|
"eraser": "Γόμα",
|
||||||
"frame": "Εργαλείο πλαισίου",
|
"frame": "",
|
||||||
"magicframe": "Wireframe σε κώδικα",
|
"magicframe": "",
|
||||||
"embeddable": "Web Embed",
|
"embeddable": "",
|
||||||
"laser": "Δείκτης λέιζερ",
|
"laser": "",
|
||||||
"hand": "Χέρι (εργαλείο μετακίνησης)",
|
"hand": "",
|
||||||
"extraTools": "Περισσότερα εργαλεία",
|
"extraTools": "",
|
||||||
"mermaidToExcalidraw": "Mermaid σε Excalidraw",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Ορθογώνιο",
|
|
||||||
"diamond": "Ρόμβος",
|
|
||||||
"ellipse": "Έλλειψη",
|
|
||||||
"arrow": "Βέλος",
|
|
||||||
"line": "Γραμμή",
|
|
||||||
"freedraw": "Ελεύθερη σχεδίαση",
|
|
||||||
"text": "Κείμενο",
|
|
||||||
"image": "Εικόνα",
|
|
||||||
"group": "Ομάδα",
|
|
||||||
"frame": "Πλαίσιο",
|
|
||||||
"magicframe": "Wireframe σε κώδικα",
|
|
||||||
"embeddable": "Web Embed",
|
|
||||||
"selection": "Επιλογή",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Ενέργειες καμβά",
|
"canvasActions": "Ενέργειες καμβά",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Σχήματα"
|
"shapes": "Σχήματα"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
|
||||||
"canvasPanning": "",
|
"canvasPanning": "",
|
||||||
"linearElement": "Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή",
|
"linearElement": "Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει",
|
"freeDraw": "Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει",
|
||||||
"text": "Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών",
|
"text": "Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών",
|
||||||
"embeddable": "Κάντε κλικ και σύρετε για να δημιουργήσετε μια ενσωματωμένη ιστοσελίδα",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "Κάντε διπλό κλικ ή πατήστε ENTER για να επεξεργαστείτε το κείμενο",
|
||||||
"text_editing": "",
|
"text_editing": "Πατήστε Escape ή CtrlOrCmd+ENTER για να ολοκληρώσετε την επεξεργασία",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις",
|
||||||
"lockAngle": "",
|
"lockAngle": "Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT",
|
||||||
"resize": "",
|
"resize": "Μπορείς να περιορίσεις τις αναλογίες κρατώντας το SHIFT ενώ αλλάζεις μέγεθος,\nκράτησε πατημένο το ALT για αλλαγή μεγέθους από το κέντρο",
|
||||||
"resizeImage": "",
|
"resizeImage": "Μπορείτε να αλλάξετε το μέγεθος ελεύθερα κρατώντας πατημένο το SHIFT,\nκρατήστε πατημένο το ALT για να αλλάξετε το μέγεθος από το κέντρο",
|
||||||
"rotate": "",
|
"rotate": "Μπορείς να περιορίσεις τις γωνίες κρατώντας πατημένο το πλήκτρο SHIFT κατά την περιστροφή",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Κρατήστε πατημένο Ctrl ή Cmd και πατήστε το πλήκτρο Ctrl ή Cmd + Enter για επεξεργασία σημείων",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Πατήστε Διαγραφή για αφαίρεση σημείου(ων),\nCtrlOrCmd+D για αντιγραφή, ή σύρετε για μετακίνηση",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "Επιλέξτε ένα σημείο για να επεξεργαστείτε (κρατήστε πατημένο το SHIFT για να επιλέξετε πολλαπλά),\nή κρατήστε πατημένο το Alt και κάντε κλικ για να προσθέσετε νέα σημεία",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Κάντε κλικ για να τοποθετήσετε την εικόνα ή κάντε κλικ και σύρετε για να ορίσετε το μέγεθός της χειροκίνητα",
|
||||||
"publishLibrary": "Δημοσιεύστε τη δική σας βιβλιοθήκη",
|
"publishLibrary": "Δημοσιεύστε τη δική σας βιβλιοθήκη",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Πατήστε Enter για προσθήκη κειμένου",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Κρατήστε πατημένο το CtrlOrCmd για να επιλέξετε βαθιά, και να αποτρέψετε τη μεταφορά",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Κρατήστε πατημένο το Alt για να επαναφέρετε τα στοιχεία που σημειώθηκαν για διαγραφή",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Αυτή η επιλογή μπορεί πιθανώς να ενεργοποιηθεί αλλάζοντας την ρύθμιση \"dom.events.asyncClipboard.clipboardItem\" σε \"true\". Για να αλλάξετε τις ρυθμίσεις του προγράμματος περιήγησης στο Firefox, επισκεφθείτε τη σελίδα \"about:config\".",
|
"firefox_clipboard_write": "Αυτή η επιλογή μπορεί πιθανώς να ενεργοποιηθεί αλλάζοντας την ρύθμιση \"dom.events.asyncClipboard.clipboardItem\" σε \"true\". Για να αλλάξετε τις ρυθμίσεις του προγράμματος περιήγησης στο Firefox, επισκεφθείτε τη σελίδα \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Αδυναμία εμφάνισης προεπισκόπησης",
|
"cannotShowPreview": "Αδυναμία εμφάνισης προεπισκόπησης",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας <button>ανιχνευτής σφαλμάτων.</button> Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.",
|
"openIssueMessage": "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας <button>ανιχνευτής σφαλμάτων.</button> Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.",
|
||||||
"sceneContent": "Περιεχόμενο σκηνής:"
|
"sceneContent": "Περιεχόμενο σκηνής:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Ή"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Προσκαλέστε άτομα για να συνεργαστείτε στο σχέδιό σας.",
|
"desc_intro": "Μπορείς να προσκαλέσεις άλλους να δουλέψουν μαζί σου.",
|
||||||
"desc_privacy": "Μην ανησυχείτε, η συνεδρία είναι κρυπτογραφημένη από άκρο σε άκρο, και πλήρως ιδιωτική. Ούτε ο διακομιστής μας μπορεί να δει τι σχεδιάζετε.",
|
"desc_privacy": "Μην ανησυχείς, η συνεδρία χρησιμοποιεί κρυπτογράφηση από σημείο σε σημείο, άρα οτιδήποτε κάνεις θα παραμείνει ανοιχτό μόνο σε εσένα. Ούτε οι μηχανές μας μπορούν να δουν τι κάνεις.",
|
||||||
"button_startSession": "Έναρξη Συνεδρίας",
|
"button_startSession": "Έναρξη Συνεδρίας",
|
||||||
"button_stopSession": "Τερματισμός Συνεδρίας",
|
"button_stopSession": "Τερματισμός Συνεδρίας",
|
||||||
"desc_inProgressIntro": "Η ζωντανή συνεργασία με άλλους είναι σε ενεργή.",
|
"desc_inProgressIntro": "Η ζωντανή συνεργασία με άλλους είναι σε ενεργή.",
|
||||||
@@ -410,16 +328,14 @@
|
|||||||
"click": "κλικ",
|
"click": "κλικ",
|
||||||
"deepSelect": "Βαθιά επιλογή",
|
"deepSelect": "Βαθιά επιλογή",
|
||||||
"deepBoxSelect": "Βαθιά επιλογή μέσα στο πλαίσιο και αποτροπή συρσίματος",
|
"deepBoxSelect": "Βαθιά επιλογή μέσα στο πλαίσιο και αποτροπή συρσίματος",
|
||||||
"createFlowchart": "Δημιουργία διαγράμματος ροής από ένα γενικό στοιχείο",
|
|
||||||
"navigateFlowchart": "Πλοήγηση σε ένα διάγραμμα ροής",
|
|
||||||
"curvedArrow": "Κυρτό βέλος",
|
"curvedArrow": "Κυρτό βέλος",
|
||||||
"curvedLine": "Κυρτή γραμμή",
|
"curvedLine": "Κυρτή γραμμή",
|
||||||
"documentation": "Εγχειρίδιο",
|
"documentation": "Εγχειρίδιο",
|
||||||
"doubleClick": "διπλό κλικ",
|
"doubleClick": "διπλό κλικ",
|
||||||
"drag": "σύρε",
|
"drag": "σύρε",
|
||||||
"editor": "Επεξεργαστής",
|
"editor": "Επεξεργαστής",
|
||||||
"editLineArrowPoints": "Επεξεργασία σημείων γραμμής/βέλους",
|
"editLineArrowPoints": "",
|
||||||
"editText": "Επεξεργασία κειμένου / προσθήκη ετικέτας",
|
"editText": "",
|
||||||
"github": "Βρήκατε πρόβλημα; Υποβάλετε το",
|
"github": "Βρήκατε πρόβλημα; Υποβάλετε το",
|
||||||
"howto": "Ακολουθήστε τους οδηγούς μας",
|
"howto": "Ακολουθήστε τους οδηγούς μας",
|
||||||
"or": "ή",
|
"or": "ή",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Ζουμ στην επιλογή",
|
"zoomToSelection": "Ζουμ στην επιλογή",
|
||||||
"toggleElementLock": "Κλείδωμα/Ξεκλείδωμα επιλογής",
|
"toggleElementLock": "Κλείδωμα/Ξεκλείδωμα επιλογής",
|
||||||
"movePageUpDown": "Μετακίνηση σελίδας πάνω/κάτω",
|
"movePageUpDown": "Μετακίνηση σελίδας πάνω/κάτω",
|
||||||
"movePageLeftRight": "Μετακίνηση σελίδας αριστερά/δεξιά",
|
"movePageLeftRight": "Μετακίνηση σελίδας αριστερά/δεξιά"
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Καθαρισμός καμβά"
|
"title": "Καθαρισμός καμβά"
|
||||||
@@ -445,8 +359,8 @@
|
|||||||
"title": "Δημοσίευση βιβλιοθήκης",
|
"title": "Δημοσίευση βιβλιοθήκης",
|
||||||
"itemName": "Όνομα αντικειμένου",
|
"itemName": "Όνομα αντικειμένου",
|
||||||
"authorName": "Όνομα δημιουργού",
|
"authorName": "Όνομα δημιουργού",
|
||||||
"githubUsername": "Όνομα χρήστη GitHub",
|
"githubUsername": "GitHub username",
|
||||||
"twitterUsername": "Όνομα χρήστη Twitter",
|
"twitterUsername": "Twitter username",
|
||||||
"libraryName": "Όνομα βιβλιοθήκης",
|
"libraryName": "Όνομα βιβλιοθήκης",
|
||||||
"libraryDesc": "Περιγραφή βιβλιοθήκης",
|
"libraryDesc": "Περιγραφή βιβλιοθήκης",
|
||||||
"website": "Ιστοσελίδα",
|
"website": "Ιστοσελίδα",
|
||||||
@@ -478,27 +392,27 @@
|
|||||||
"removeItemsFromLib": "Αφαίρεση επιλεγμένων αντικειμένων από τη βιβλιοθήκη"
|
"removeItemsFromLib": "Αφαίρεση επιλεγμένων αντικειμένων από τη βιβλιοθήκη"
|
||||||
},
|
},
|
||||||
"imageExportDialog": {
|
"imageExportDialog": {
|
||||||
"header": "Εξαγωγή εικόνας",
|
"header": "",
|
||||||
"label": {
|
"label": {
|
||||||
"withBackground": "Παρασκήνιο",
|
"withBackground": "",
|
||||||
"onlySelected": "Μόνο τα επιλεγμένα",
|
"onlySelected": "",
|
||||||
"darkMode": "Σκοτεινό θέμα",
|
"darkMode": "",
|
||||||
"embedScene": "Ενσωμάτωση σκηνής",
|
"embedScene": "",
|
||||||
"scale": "Κλιμάκωση",
|
"scale": "",
|
||||||
"padding": "Περιθώριο"
|
"padding": ""
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "Τα δεδομένα σκηνής θα αποθηκευτούν στο αρχείο PNG/SVG προς εξαγωγή ώστε η σκηνή να είναι δυνατό να αποκατασταθεί από αυτό.\nΘα αυξήσει το μέγεθος του αρχείου προς εξαγωγή."
|
"embedScene": ""
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "Εξαγωγή σε PNG",
|
"exportToPng": "",
|
||||||
"exportToSvg": "Εξαγωγή σε SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "Αντιγραφή PNG στο πρόχειρο"
|
"copyPngToClipboard": ""
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"exportToPng": "PNG",
|
"exportToPng": "",
|
||||||
"exportToSvg": "SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "Αντιγραφή στο πρόχειρο"
|
"copyPngToClipboard": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encrypted": {
|
"encrypted": {
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Γωνία",
|
"angle": "Γωνία",
|
||||||
"shapes": "Σχήματα",
|
"element": "Στοιχείο",
|
||||||
|
"elements": "Στοιχεία",
|
||||||
"height": "Ύψος",
|
"height": "Ύψος",
|
||||||
"scene": "Σκηνή",
|
"scene": "Σκηνή",
|
||||||
"selected": "Επιλεγμένα",
|
"selected": "Επιλεγμένα",
|
||||||
"storage": "Χώρος",
|
"storage": "Χώρος",
|
||||||
"fullTitle": "Ιδιότητες Καμβά & Σχήματος",
|
"title": "Στατιστικά για σπασίκλες",
|
||||||
"title": "Ιδιότητες",
|
|
||||||
"generalStats": "Γενικά",
|
|
||||||
"elementProperties": "Ιδιότητες σχήματος",
|
|
||||||
"total": "Σύνολο ",
|
"total": "Σύνολο ",
|
||||||
"version": "Έκδοση",
|
"version": "Έκδοση",
|
||||||
"versionCopy": "Κάνε κλικ για αντιγραφή",
|
"versionCopy": "Κάνε κλικ για αντιγραφή",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Αντιγράφηκαν στυλ.",
|
"copyStyles": "Αντιγράφηκαν στυλ.",
|
||||||
"copyToClipboard": "Αντιγράφηκε στο πρόχειρο.",
|
"copyToClipboard": "Αντιγράφηκε στο πρόχειρο.",
|
||||||
"copyToClipboardAsPng": "Αντιγράφηκε {{exportSelection}} στο πρόχειρο ως PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "Αντιγράφηκε {{exportSelection}} στο πρόχειρο ως PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Το αρχείο αποθηκεύτηκε.",
|
"fileSaved": "Το αρχείο αποθηκεύτηκε.",
|
||||||
"fileSavedToFilename": "Αποθηκεύτηκε στο {filename}",
|
"fileSavedToFilename": "Αποθηκεύτηκε στο {filename}",
|
||||||
"canvas": "καμβάς",
|
"canvas": "καμβάς",
|
||||||
"selection": "επιλογή",
|
"selection": "επιλογή",
|
||||||
"pasteAsSingleElement": "Χρησιμοποίησε το {{shortcut}} για να επικολλήσεις ως ένα μόνο στοιχείο,\nή να επικολλήσεις σε έναν υπάρχοντα επεξεργαστή κειμένου",
|
"pasteAsSingleElement": "Χρησιμοποίησε το {{shortcut}} για να επικολλήσεις ως ένα μόνο στοιχείο,\nή να επικολλήσεις σε έναν υπάρχοντα επεξεργαστή κειμένου",
|
||||||
"unableToEmbed": "Η ενσωμάτωση αυτού του url δεν επιτρέπεται αυτήν τη στιγμή. Θέστε ένα πρόβλημα στο GitHub για να ζητήσετε το url να είναι στη λίστα των επιτρεπόμενων.",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "Ο σύνδεσμος που ενσωματώσατε δεν ταιριάζει με την αναμενόμενη μορφή. Παρακαλώ προσπαθήστε να επικολλήσετε τη συμβολοσειρά 'embed' που παρέχεται από τον ιστότοπο προορισμού",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Διαφανές",
|
"transparent": "Διαφανές",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Πιο χρησιμοποιούμενα χρώματα",
|
"mostUsedCustomColors": "Πιο χρησιμοποιούμενα χρώματα",
|
||||||
"colors": "Χρώματα",
|
"colors": "Χρώματα",
|
||||||
"shades": "Αποχρώσεις",
|
"shades": "Αποχρώσεις",
|
||||||
@@ -578,87 +487,39 @@
|
|||||||
"overwriteConfirm": {
|
"overwriteConfirm": {
|
||||||
"action": {
|
"action": {
|
||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "Εξαγωγή ως εικόνα",
|
"title": "",
|
||||||
"button": "Εξαγωγή ως εικόνα",
|
"button": "",
|
||||||
"description": "Εξαγωγή δεδομένων σκηνής σε ένα αρχείο από το οποίο μπορείτε να εισάγετε αργότερα."
|
"description": ""
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "Αποθήκευση στο δίσκο",
|
"title": "",
|
||||||
"button": "Αποθήκευση στο δίσκο",
|
"button": "",
|
||||||
"description": "Εξαγωγή δεδομένων σκηνής σε ένα αρχείο από το οποίο μπορείτε να εισάγετε αργότερα."
|
"description": ""
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "",
|
||||||
"button": "Εξαγωγή σε Excalidraw+",
|
"button": "",
|
||||||
"description": "Αποθηκεύστε τη σκηνή στο χώρο εργασίας σας Excalidraw+."
|
"description": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "Φόρτωση από αρχείο",
|
"title": "",
|
||||||
"button": "Φόρτωση από αρχείο",
|
"button": "",
|
||||||
"description": "Η φόρτωση από αρχείο θα <bold>αντικαταστήσει το υπάρχον περιεχόμενό σας</bold>.<br></br>Μπορείτε πρώτα να δημιουργήσετε αντίγραφα ασφαλείας του σχεδίου σας χρησιμοποιώντας μία από τις παρακάτω επιλογές."
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "Φόρτωση από σύνδεσμο",
|
"title": "",
|
||||||
"button": "Αντικατάσταση του περιεχομένου μου",
|
"button": "",
|
||||||
"description": "Η φόρτωση εξωτερικού σχεδίου θα <bold>αντικαταστήσει το υπάρχον περιεχόμενο</bold>.<br></br>Μπορείτε να δημιουργήσετε αντίγραφα ασφαλείας του σχεδίου σας πρώτα χρησιμοποιώντας μία από τις παρακάτω επιλογές."
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "Mermaid σε Excalidraw",
|
"title": "",
|
||||||
"button": "Εισαγωγή",
|
"button": "",
|
||||||
"description": "Επί του παρόντος υποστηρίζονται μόνο Διαγράμματα <flowchartLink>Ροής</flowchartLink>,<sequenceLink> Ακολουθίας, </sequenceLink> και <classLink>Κλάσεων</classLink>. Οι άλλοι τύποι θα αποδοθούν ως εικόνα στο Excalidraw.",
|
"description": "",
|
||||||
"syntax": "Σύνταξη Mermaid",
|
"syntax": "",
|
||||||
"preview": "Προεπισκόπηση"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Γρήγορη αναζήτηση"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "παλιό"
|
|
||||||
},
|
|
||||||
"sceneFonts": "Σε αυτή τη σκηνή",
|
|
||||||
"availableFonts": "Διαθέσιμες γραμματοσειρές",
|
|
||||||
"empty": "Δεν βρέθηκαν γραμματοσειρές"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "Δεν βρέθηκαν χρήστες",
|
|
||||||
"hint": {
|
|
||||||
"text": "Κάντε κλικ στο χρήστη για να τον ακολουθήσετε",
|
|
||||||
"followStatus": "Ακολουθείτε αυτόν τον χρήστη",
|
|
||||||
"inCall": "Ο χρήστης βρίσκεται σε κλήση",
|
|
||||||
"micMuted": "Το μικρόφωνο του χρήστη είναι σε σίγαση",
|
|
||||||
"isSpeaking": "Ο χρήστης μιλάει"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Παλέτα Εντολών",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Επιλογή",
|
|
||||||
"confirm": "Επιβεβαίωση",
|
|
||||||
"close": "Κλείσιμο"
|
|
||||||
},
|
|
||||||
"recents": "Πρόσφατα χρησιμοποιημένα",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Αναζητήστε μενού, εντολές και ανακαλύψτε κρυμμένα διαμάντια",
|
|
||||||
"noMatch": "Δεν υπάρχουν εντολές που ταιριάζουν..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Η εντολή δεν είναι διαθέσιμη...",
|
|
||||||
"shortcutHint": "Για την παλέτα εντολών, χρησιμοποιήστε το {{shortcut}}"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,9 @@
|
|||||||
"strokeStyle_dotted": "Dotted",
|
"strokeStyle_dotted": "Dotted",
|
||||||
"sloppiness": "Sloppiness",
|
"sloppiness": "Sloppiness",
|
||||||
"opacity": "Opacity",
|
"opacity": "Opacity",
|
||||||
|
"strokeType": "Stroke Type",
|
||||||
|
"strokeWidthFixed": "Fixed width",
|
||||||
|
"strokeWidthVariable": "Variable width",
|
||||||
"textAlign": "Text align",
|
"textAlign": "Text align",
|
||||||
"edges": "Edges",
|
"edges": "Edges",
|
||||||
"sharp": "Sharp",
|
"sharp": "Sharp",
|
||||||
|
|||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Copiar estilos",
|
"copyStyles": "Copiar estilos",
|
||||||
"pasteStyles": "Pegar estilos",
|
"pasteStyles": "Pegar estilos",
|
||||||
"stroke": "Trazo",
|
"stroke": "Trazo",
|
||||||
"changeStroke": "Cambiar el color del trazo",
|
|
||||||
"background": "Fondo",
|
"background": "Fondo",
|
||||||
"changeBackground": "Cambiar el color de fondo",
|
|
||||||
"fill": "Rellenar",
|
"fill": "Rellenar",
|
||||||
"strokeWidth": "Grosor del trazo",
|
"strokeWidth": "Grosor del trazo",
|
||||||
"strokeStyle": "Estilo del trazo",
|
"strokeStyle": "Estilo del trazo",
|
||||||
@@ -46,14 +44,6 @@
|
|||||||
"arrowhead_triangle_outline": "Triángulo (contorno)",
|
"arrowhead_triangle_outline": "Triángulo (contorno)",
|
||||||
"arrowhead_diamond": "Diamante",
|
"arrowhead_diamond": "Diamante",
|
||||||
"arrowhead_diamond_outline": "Diamante (contorno)",
|
"arrowhead_diamond_outline": "Diamante (contorno)",
|
||||||
"arrowhead_crowfoot_many": "Pie de la corona (varios)",
|
|
||||||
"arrowhead_crowfoot_one": "Pie de la corona (uno)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Pie de la corona (uno o varios)",
|
|
||||||
"more_options": "Más opciones",
|
|
||||||
"arrowtypes": "Tipo de flecha",
|
|
||||||
"arrowtype_sharp": "Flecha Afilada",
|
|
||||||
"arrowtype_round": "Flecha Curva",
|
|
||||||
"arrowtype_elbowed": "Flecha de codo",
|
|
||||||
"fontSize": "Tamaño de la fuente",
|
"fontSize": "Tamaño de la fuente",
|
||||||
"fontFamily": "Tipo de fuente",
|
"fontFamily": "Tipo de fuente",
|
||||||
"addWatermark": "Agregar \"Hecho con Excalidraw\"",
|
"addWatermark": "Agregar \"Hecho con Excalidraw\"",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Usado en lienzo",
|
"canvasColors": "Usado en lienzo",
|
||||||
"canvasBackground": "Fondo del lienzo",
|
"canvasBackground": "Fondo del lienzo",
|
||||||
"drawingCanvas": "Lienzo de dibujo",
|
"drawingCanvas": "Lienzo de dibujo",
|
||||||
"clearCanvas": "Lona transparente",
|
|
||||||
"layers": "Capas",
|
"layers": "Capas",
|
||||||
"actions": "Acciones",
|
"actions": "Acciones",
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Agrupar selección",
|
"group": "Agrupar selección",
|
||||||
"ungroup": "Desagrupar selección",
|
"ungroup": "Desagrupar selección",
|
||||||
"collaborators": "Colaboradores",
|
"collaborators": "Colaboradores",
|
||||||
"toggleGrid": "Alternar rejilla",
|
"showGrid": "Mostrar cuadrícula",
|
||||||
"addToLibrary": "Añadir a la biblioteca",
|
"addToLibrary": "Añadir a la biblioteca",
|
||||||
"removeFromLibrary": "Eliminar de la biblioteca",
|
"removeFromLibrary": "Eliminar de la biblioteca",
|
||||||
"libraryLoadingMessage": "Cargando biblioteca…",
|
"libraryLoadingMessage": "Cargando biblioteca…",
|
||||||
"libraries": "Explorar bibliotecas",
|
"libraries": "Explorar bibliotecas",
|
||||||
"loadingScene": "Cargando escena…",
|
"loadingScene": "Cargando escena…",
|
||||||
"loadScene": "Cargar escena desde archivo",
|
|
||||||
"align": "Alinear",
|
"align": "Alinear",
|
||||||
"alignTop": "Alineación superior",
|
"alignTop": "Alineación superior",
|
||||||
"alignBottom": "Alineación inferior",
|
"alignBottom": "Alineación inferior",
|
||||||
@@ -117,9 +105,7 @@
|
|||||||
"share": "Compartir",
|
"share": "Compartir",
|
||||||
"showStroke": "Mostrar selector de color de trazo",
|
"showStroke": "Mostrar selector de color de trazo",
|
||||||
"showBackground": "Mostrar el selector de color de fondo",
|
"showBackground": "Mostrar el selector de color de fondo",
|
||||||
"showFonts": "Mostrar selector de fuentes",
|
"toggleTheme": "Cambiar tema",
|
||||||
"toggleTheme": "Cambiar tema claro/oscuro",
|
|
||||||
"theme": "Tema",
|
|
||||||
"personalLib": "Biblioteca personal",
|
"personalLib": "Biblioteca personal",
|
||||||
"excalidrawLib": "Biblioteca Excalidraw",
|
"excalidrawLib": "Biblioteca Excalidraw",
|
||||||
"decreaseFontSize": "Disminuir tamaño de letra",
|
"decreaseFontSize": "Disminuir tamaño de letra",
|
||||||
@@ -129,21 +115,16 @@
|
|||||||
"createContainerFromText": "Envolver el texto en un contenedor",
|
"createContainerFromText": "Envolver el texto en un contenedor",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Editar enlace",
|
"edit": "Editar enlace",
|
||||||
"editEmbed": "Editar enlace incrustable",
|
"editEmbed": "Editar enlace e incrustar",
|
||||||
"create": "Añadir enlace",
|
"create": "Crear enlace",
|
||||||
|
"createEmbed": "Crear enlace e incrustar",
|
||||||
"label": "Enlace",
|
"label": "Enlace",
|
||||||
"labelEmbed": "Enlazar e incrustar",
|
"labelEmbed": "Enlazar e incrustar",
|
||||||
"empty": "No se ha establecido un enlace",
|
"empty": "No se ha establecido un enlace"
|
||||||
"hint": "Escribe o pega tu enlace aquí",
|
|
||||||
"goToElement": "Ir al elemento objetivo"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Editar línea",
|
"edit": "Editar línea",
|
||||||
"editArrow": "Editar flecha"
|
"exit": "Salir del editor en línea"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Bloquear",
|
"lock": "Bloquear",
|
||||||
@@ -157,46 +138,12 @@
|
|||||||
"removeAllElementsFromFrame": "Eliminar todos los elementos del marco",
|
"removeAllElementsFromFrame": "Eliminar todos los elementos del marco",
|
||||||
"eyeDropper": "Seleccionar un color del lienzo",
|
"eyeDropper": "Seleccionar un color del lienzo",
|
||||||
"textToDiagram": "Texto a diagrama",
|
"textToDiagram": "Texto a diagrama",
|
||||||
"prompt": "Prompt",
|
"prompt": "Sugerencia"
|
||||||
"followUs": "Síguenos",
|
|
||||||
"discordChat": "Chat de Discord",
|
|
||||||
"zoomToFitViewport": "Zoom para encajar en la ventana",
|
|
||||||
"zoomToFitSelection": "Zoom para ajustar la selección",
|
|
||||||
"zoomToFit": "Zoom para mostrar todos los elementos",
|
|
||||||
"installPWA": "Instalar Excalidraw localmente (PWA)",
|
|
||||||
"autoResize": "Activar redimensionado automático de texto",
|
|
||||||
"imageCropping": "Recortar imagen",
|
|
||||||
"unCroppedDimension": "Dimensión no recortada",
|
|
||||||
"copyElementLink": "Copiar enlace al objeto",
|
|
||||||
"linkToElement": "Enlace al objeto",
|
|
||||||
"wrapSelectionInFrame": "Ajustar la selección en el marco",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "Enlace al objeto",
|
|
||||||
"desc": "Haga clic en una forma en lienzo o pegue un enlace.",
|
|
||||||
"notFound": "El objeto vinculado no se encontró en el lienzo."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "No hay elementos añadidos todavía...",
|
"noItems": "No hay elementos añadidos todavía...",
|
||||||
"hint_emptyLibrary": "Seleccione un elemento en el lienzo para añadirlo aquí, o instale una biblioteca del repositorio público, a continuación.",
|
"hint_emptyLibrary": "Seleccione un elemento en el lienzo para añadirlo aquí, o instale una biblioteca del repositorio público, a continuación.",
|
||||||
"hint_emptyPrivateLibrary": "Seleccione un elemento del lienzo para añadirlo aquí.",
|
"hint_emptyPrivateLibrary": "Seleccione un elemento del lienzo para añadirlo aquí."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "Encontrar en lienzo",
|
|
||||||
"noMatch": "No hay coincidencias...",
|
|
||||||
"singleResult": "resultado",
|
|
||||||
"multipleResults": "resultados",
|
|
||||||
"placeholder": "Encontrar texto en lienzo...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Limpiar lienzo y reiniciar el color de fondo",
|
"clearReset": "Limpiar lienzo y reiniciar el color de fondo",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Exportar imagen...",
|
"exportImage": "Exportar imagen...",
|
||||||
"export": "Guardar en...",
|
"export": "Guardar en...",
|
||||||
"copyToClipboard": "Copiar al portapapeles",
|
"copyToClipboard": "Copiar al portapapeles",
|
||||||
"copyLink": "Copiar enlace",
|
|
||||||
"save": "Guardar en archivo actual",
|
"save": "Guardar en archivo actual",
|
||||||
"saveAs": "Guardar como",
|
"saveAs": "Guardar como",
|
||||||
"load": "Abrir",
|
"load": "Abrir",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Pantalla completa",
|
"fullScreen": "Pantalla completa",
|
||||||
"darkMode": "Modo oscuro",
|
"darkMode": "Modo oscuro",
|
||||||
"lightMode": "Modo claro",
|
"lightMode": "Modo claro",
|
||||||
"systemMode": "Modo del sistema",
|
|
||||||
"zenMode": "Modo Zen",
|
"zenMode": "Modo Zen",
|
||||||
"objectsSnapMode": "Ajustar a los objetos",
|
"objectsSnapMode": "Ajustar a los objetos",
|
||||||
"exitZenMode": "Salir del modo Zen",
|
"exitZenMode": "Salir del modo Zen",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Borrar",
|
"clear": "Borrar",
|
||||||
"remove": "Eliminar",
|
"remove": "Eliminar",
|
||||||
"embed": "Alternar incrustación",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Publicar",
|
||||||
"submit": "Enviar",
|
"submit": "Enviar",
|
||||||
"confirm": "Confirmar",
|
"confirm": "Confirmar",
|
||||||
"embeddableInteractionButton": "Pulsa para interactuar"
|
"embeddableInteractionButton": "Pulsa para interactuar"
|
||||||
@@ -260,8 +204,7 @@
|
|||||||
"resetLibrary": "Esto borrará tu biblioteca. ¿Estás seguro?",
|
"resetLibrary": "Esto borrará tu biblioteca. ¿Estás seguro?",
|
||||||
"removeItemsFromsLibrary": "¿Eliminar {{count}} elemento(s) de la biblioteca?",
|
"removeItemsFromsLibrary": "¿Eliminar {{count}} elemento(s) de la biblioteca?",
|
||||||
"invalidEncryptionKey": "La clave de cifrado debe tener 22 caracteres. La colaboración en vivo está deshabilitada.",
|
"invalidEncryptionKey": "La clave de cifrado debe tener 22 caracteres. La colaboración en vivo está deshabilitada.",
|
||||||
"collabOfflineWarning": "No hay conexión a internet disponible.\n¡No se guardarán los cambios!",
|
"collabOfflineWarning": "No hay conexión a internet disponible.\n¡No se guardarán los cambios!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Tipo de archivo no admitido.",
|
"unsupportedFileType": "Tipo de archivo no admitido.",
|
||||||
@@ -269,22 +212,22 @@
|
|||||||
"fileTooBig": "Archivo demasiado grande. El tamaño máximo permitido es {{maxSize}}.",
|
"fileTooBig": "Archivo demasiado grande. El tamaño máximo permitido es {{maxSize}}.",
|
||||||
"svgImageInsertError": "No se pudo insertar la imagen SVG. El código SVG parece inválido.",
|
"svgImageInsertError": "No se pudo insertar la imagen SVG. El código SVG parece inválido.",
|
||||||
"failedToFetchImage": "Error al obtener la imagen.",
|
"failedToFetchImage": "Error al obtener la imagen.",
|
||||||
|
"invalidSVGString": "SVG no válido.",
|
||||||
"cannotResolveCollabServer": "No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.",
|
"cannotResolveCollabServer": "No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.",
|
||||||
"importLibraryError": "No se pudo cargar la librería",
|
"importLibraryError": "No se pudo cargar la librería",
|
||||||
"saveLibraryError": "No se pudo guardar la biblioteca en el almacenamiento. Por favor, guarde su biblioteca en un archivo localmente para asegurarse de que no pierde los cambios.",
|
|
||||||
"collabSaveFailed": "No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.",
|
"collabSaveFailed": "No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.",
|
||||||
"collabSaveFailed_sizeExceeded": "No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo.",
|
"collabSaveFailed_sizeExceeded": "No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo.",
|
||||||
"imageToolNotSupported": "Las imágenes están desactivadas.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "Parece que estás usando el navegador Brave con el ajuste <bold>Forzar el bloqueo de huellas digitales</bold> habilitado.",
|
"line1": "Parece que estás usando el navegador Brave con el ajuste <bold>Forzar el bloqueo de huellas digitales</bold> habilitado.",
|
||||||
"line2": "Esto podría resultar en errores en los <bold>Elementos de Texto</bold> en tus dibujos.",
|
"line2": "Esto podría resultar en errores en los <bold>Elementos de Texto</bold> en tus dibujos.",
|
||||||
"line3": "Recomendamos fuertemente deshabilitar esta configuración. Puedes seguir <link>estos pasos</link> sobre cómo hacerlo.",
|
"line3": "Recomendamos fuertemente deshabilitar esta configuración. Puedes seguir <link>estos pasos</link> sobre cómo hacerlo.",
|
||||||
"line4": "Si deshabilitar esta opción no arregla la visualización de elementos conformados por texto, por favor abre un <issueLink>problema</issueLink> en nuestro GitHub o escríbanos en <discordLink>Discord</discordLink>"
|
"line4": ""
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "Los elementos incrustables no pueden ser añadidos a la biblioteca.",
|
"embeddable": "",
|
||||||
"iframe": "Los elementos IFrame no se pueden agregar a la biblioteca.",
|
"iframe": "Los elementos IFrame no se pueden agregar a la biblioteca.",
|
||||||
"image": "¡Soporte para añadir imágenes a la biblioteca muy pronto!"
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "No se pudo pegar (no se pudo leer desde el portapapeles del sistema).",
|
"asyncPasteFailedOnRead": "No se pudo pegar (no se pudo leer desde el portapapeles del sistema).",
|
||||||
"asyncPasteFailedOnParse": "No se pudo pegar.",
|
"asyncPasteFailedOnParse": "No se pudo pegar.",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Selección",
|
"selection": "Selección",
|
||||||
"lasso": "",
|
|
||||||
"image": "Insertar imagen",
|
"image": "Insertar imagen",
|
||||||
"rectangle": "Rectángulo",
|
"rectangle": "Rectángulo",
|
||||||
"diamond": "Diamante",
|
"diamond": "Diamante",
|
||||||
@@ -306,30 +248,14 @@
|
|||||||
"penMode": "Modo Lápiz - previene toque",
|
"penMode": "Modo Lápiz - previene toque",
|
||||||
"link": "Añadir/Actualizar enlace para una forma seleccionada",
|
"link": "Añadir/Actualizar enlace para una forma seleccionada",
|
||||||
"eraser": "Borrar",
|
"eraser": "Borrar",
|
||||||
"frame": "Herramienta Estructura",
|
"frame": "",
|
||||||
"magicframe": "Esquema a código",
|
"magicframe": "Esquema a código",
|
||||||
"embeddable": "Incrustar Web",
|
"embeddable": "Incrustar Web",
|
||||||
"laser": "Puntero láser",
|
"laser": "Puntero láser",
|
||||||
"hand": "Mano (herramienta de panoramización)",
|
"hand": "Mano (herramienta de panoramización)",
|
||||||
"extraTools": "Más herramientas",
|
"extraTools": "Más herramientas",
|
||||||
"mermaidToExcalidraw": "Mermaid a Excalidraw",
|
"mermaidToExcalidraw": "Mermaid a Excalidraw",
|
||||||
"convertElementType": ""
|
"magicSettings": "Ajustes AI"
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Rectángulo",
|
|
||||||
"diamond": "Rombo",
|
|
||||||
"ellipse": "Elipse",
|
|
||||||
"arrow": "Flecha",
|
|
||||||
"line": "Línea",
|
|
||||||
"freedraw": "Dibujar a mano",
|
|
||||||
"text": "Texto",
|
|
||||||
"image": "Imagen",
|
|
||||||
"group": "Grupo",
|
|
||||||
"frame": "Marco",
|
|
||||||
"magicframe": "Esquema a código",
|
|
||||||
"embeddable": "Incrustar Web",
|
|
||||||
"selection": "Selección",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Acciones del lienzo",
|
"canvasActions": "Acciones del lienzo",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Formas"
|
"shapes": "Formas"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Para mover el lienzo, mantenga la rueda del ratón o la barra espaciadora mientras arrastra o utilice la herramienta de mano",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Haz clic para dibujar múltiples puntos, arrastrar para solo una línea",
|
"linearElement": "Haz clic para dibujar múltiples puntos, arrastrar para solo una línea",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Haz clic y arrastra, suelta al terminar",
|
"freeDraw": "Haz clic y arrastra, suelta al terminar",
|
||||||
"text": "Consejo: también puedes añadir texto haciendo doble clic en cualquier lugar con la herramienta de selección",
|
"text": "Consejo: también puedes añadir texto haciendo doble clic en cualquier lugar con la herramienta de selección",
|
||||||
"embeddable": "Haga clic y arrastre para crear un sitio web incrustado",
|
"embeddable": "Haga clic y arrastre para crear un sitio web incrustado",
|
||||||
"text_selected": "",
|
"text_selected": "Doble clic o pulse ENTER para editar el texto",
|
||||||
"text_editing": "",
|
"text_editing": "Pulse Escape o Ctrl/Cmd + ENTER para terminar de editar",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Haz clic en el último punto o presiona Escape o Enter para finalizar",
|
||||||
"lockAngle": "",
|
"lockAngle": "Puedes restringir el ángulo manteniendo presionado el botón SHIFT",
|
||||||
"resize": "",
|
"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": "",
|
"resizeImage": "Puede redimensionar libremente pulsando SHIFT,\npulse ALT para redimensionar desde el centro",
|
||||||
"rotate": "",
|
"rotate": "Puedes restringir los ángulos manteniendo presionado SHIFT mientras giras",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Mantenga pulsado CtrlOrCmd y haga doble click o presione CtrlOrCmd + Enter para editar puntos",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Presione Suprimir para eliminar el/los punto(s), CtrlOrCmd+D para duplicarlo, o arrástrelo para moverlo",
|
||||||
"lineEditor_pointSelected": "",
|
"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",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Haga clic para colocar la imagen o haga click y arrastre para establecer su tamaño manualmente",
|
||||||
"publishLibrary": "Publica tu propia biblioteca",
|
"publishLibrary": "Publica tu propia biblioteca",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Presione Entrar para agregar",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Mantén CtrlOrCmd para seleccionar en profundidad, y para evitar arrastrar",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Mantenga pulsado Alt para revertir los elementos marcados para su eliminación",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Esta característica puede ser habilitada estableciendo la bandera \"dom.events.asyncClipboard.clipboardItem\" a \"true\". Para cambiar las banderas del navegador en Firefox, visite la página \"about:config\".",
|
"firefox_clipboard_write": "Esta característica puede ser habilitada estableciendo la bandera \"dom.events.asyncClipboard.clipboardItem\" a \"true\". Para cambiar las banderas del navegador en Firefox, visite la página \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": "Mantén pulsado CtrlOrCmd para desactivar el ajuste"
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "No se puede mostrar la vista previa",
|
"cannotShowPreview": "No se puede mostrar la vista previa",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Fuimos muy cautelosos de no incluir la información de tu escena en el error. Si tu escena no es privada, por favor considera seguir nuestro <button>rastreador de errores.</button> Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.",
|
"openIssueMessage": "Fuimos muy cautelosos de no incluir la información de tu escena en el error. Si tu escena no es privada, por favor considera seguir nuestro <button>rastreador de errores.</button> Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.",
|
||||||
"sceneContent": "Contenido de la escena:"
|
"sceneContent": "Contenido de la escena:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "O"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Invita a gente a colaborar en tu dibujo.",
|
"desc_intro": "Puede invitar a otras personas a tu actual escena para que colaboren contigo.",
|
||||||
"desc_privacy": "No te preocupes, la sesión está encriptada de extremo a extremo y es totalmente privada. Ni siquiera nuestro servidor puede ver lo que dibujas.",
|
"desc_privacy": "No te preocupes, la sesión usa encriptación de punta a punta, por lo que todo lo que se dibuje se mantendrá privadamente. Ni siquiera nuestro servidor podrá ver lo que haces.",
|
||||||
"button_startSession": "Iniciar sesión",
|
"button_startSession": "Iniciar sesión",
|
||||||
"button_stopSession": "Detener sesión",
|
"button_stopSession": "Detener sesión",
|
||||||
"desc_inProgressIntro": "La sesión de colaboración en vivo está ahora en progreso.",
|
"desc_inProgressIntro": "La sesión de colaboración en vivo está ahora en progreso.",
|
||||||
@@ -407,11 +325,9 @@
|
|||||||
},
|
},
|
||||||
"helpDialog": {
|
"helpDialog": {
|
||||||
"blog": "Lea nuestro blog",
|
"blog": "Lea nuestro blog",
|
||||||
"click": "clic",
|
"click": "click",
|
||||||
"deepSelect": "Selección profunda",
|
"deepSelect": "Selección profunda",
|
||||||
"deepBoxSelect": "Seleccione en profundidad dentro de la caja, y evite arrastrar",
|
"deepBoxSelect": "Seleccione en profundidad dentro de la caja, y evite arrastrar",
|
||||||
"createFlowchart": "Crear un diagrama de flujo a partir de un elemento genérico",
|
|
||||||
"navigateFlowchart": "Navegar un diagrama de flujo",
|
|
||||||
"curvedArrow": "Flecha curva",
|
"curvedArrow": "Flecha curva",
|
||||||
"curvedLine": "Línea curva",
|
"curvedLine": "Línea curva",
|
||||||
"documentation": "Documentación",
|
"documentation": "Documentación",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Ampliar selección",
|
"zoomToSelection": "Ampliar selección",
|
||||||
"toggleElementLock": "Bloquear/desbloquear selección",
|
"toggleElementLock": "Bloquear/desbloquear selección",
|
||||||
"movePageUpDown": "Mover página hacia arriba/abajo",
|
"movePageUpDown": "Mover página hacia arriba/abajo",
|
||||||
"movePageLeftRight": "Mover página hacia la izquierda/derecha",
|
"movePageLeftRight": "Mover página hacia la izquierda/derecha"
|
||||||
"cropStart": "Recortar imagen",
|
|
||||||
"cropFinish": "Terminar recorte de imagen"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Borrar lienzo"
|
"title": "Borrar lienzo"
|
||||||
@@ -488,7 +402,7 @@
|
|||||||
"padding": "Espaciado"
|
"padding": "Espaciado"
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "Los datos de la escena se guardarán en el archivo PNG/SVG exportado, así la escena puede ser restaurada desde la misma. Esto acción aumentará el tamaño del archivo exportado."
|
"embedScene": ""
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "Exportar a PNG",
|
"exportToPng": "Exportar a PNG",
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Ángulo",
|
"angle": "Ángulo",
|
||||||
"shapes": "Formas",
|
"element": "Elemento",
|
||||||
|
"elements": "Elementos",
|
||||||
"height": "Alto",
|
"height": "Alto",
|
||||||
"scene": "Escena",
|
"scene": "Escena",
|
||||||
"selected": "Seleccionado",
|
"selected": "Seleccionado",
|
||||||
"storage": "Almacenamiento",
|
"storage": "Almacenamiento",
|
||||||
"fullTitle": "Propiedades del Lienzo y Forma",
|
"title": "Estadísticas para nerds",
|
||||||
"title": "Propiedades",
|
|
||||||
"generalStats": "General",
|
|
||||||
"elementProperties": "Propiedades de forma",
|
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"version": "Versión",
|
"version": "Versión",
|
||||||
"versionCopy": "Click para copiar",
|
"versionCopy": "Click para copiar",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Estilos copiados.",
|
"copyStyles": "Estilos copiados.",
|
||||||
"copyToClipboard": "Copiado en el portapapeles.",
|
"copyToClipboard": "Copiado en el portapapeles.",
|
||||||
"copyToClipboardAsPng": "Copiado {{exportSelection}} al portapapeles como PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "Copiado {{exportSelection}} al portapapeles como PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "Copiado {{exportSelection}} al portapapeles como PNG\n({{exportColorScheme}})",
|
|
||||||
"fileSaved": "Archivo guardado.",
|
"fileSaved": "Archivo guardado.",
|
||||||
"fileSavedToFilename": "Guardado en {filename}",
|
"fileSavedToFilename": "Guardado en {filename}",
|
||||||
"canvas": "lienzo",
|
"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",
|
"pasteAsSingleElement": "Usa {{shortcut}} para pegar como un solo elemento,\no pegar en un editor de texto existente",
|
||||||
"unableToEmbed": "Incorporar esta url no está permitido actualmente. Señale esta incidencia en nuestro GitHub para solicitar que esta url esté entre las permitidas",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "El enlace que incrustó no coincide con el formato esperado. Por favor intente pegar la cadena 'embed' proporcionada por el sitio de origen",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": "Enlace copiado al portapapeles"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Transparente",
|
"transparent": "Transparente",
|
||||||
@@ -568,19 +478,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Colores personalizados más utilizados",
|
"mostUsedCustomColors": "Colores personalizados más utilizados",
|
||||||
"colors": "Colores",
|
"colors": "Colores",
|
||||||
"shades": "Sombras",
|
"shades": "",
|
||||||
"hexCode": "Código Hexadecimal",
|
"hexCode": "Código Hexadecimal",
|
||||||
"noShades": "No hay sombras disponibles para este color"
|
"noShades": ""
|
||||||
},
|
},
|
||||||
"overwriteConfirm": {
|
"overwriteConfirm": {
|
||||||
"action": {
|
"action": {
|
||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "Exportar como imagen",
|
"title": "Exportar como imagen",
|
||||||
"button": "Exportar como imagen",
|
"button": "Exportar como imagen",
|
||||||
"description": "Exporta los datos de la escena como una imagen desde el cual podrás importarlo más tarde."
|
"description": ""
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "Guardar en el disco",
|
"title": "Guardar en el disco",
|
||||||
@@ -588,16 +497,16 @@
|
|||||||
"description": "Exporta los datos de la escena a un archivo desde el cual podrás importar más tarde."
|
"description": "Exporta los datos de la escena a un archivo desde el cual podrás importar más tarde."
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "",
|
||||||
"button": "Exportar a Excalidraw+",
|
"button": "Exportar a Excalidraw+",
|
||||||
"description": "Guarda la escena en su espacio de trabajo de Excalidraw+."
|
"description": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "Cargar desde un archivo",
|
"title": "Cargar desde un archivo",
|
||||||
"button": "Cargar desde un archivo",
|
"button": "Cargar desde un archivo",
|
||||||
"description": "Cargando desde un archivo <bold>reemplazará tu contenido actual</bold> <br></br>Puedes primero hacer una copia de seguridad usando una de las siguientes opciones."
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "Cargar desde un enlace",
|
"title": "Cargar desde un enlace",
|
||||||
@@ -609,56 +518,8 @@
|
|||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "Mermaid a Excalidraw",
|
"title": "Mermaid a Excalidraw",
|
||||||
"button": "Insertar",
|
"button": "Insertar",
|
||||||
"description": "Actualmente sólo estos tipos de <flowchartLink>diagrama de flujo</flowchartLink>,<sequenceLink> Secuencia, </sequenceLink> y <classLink>Clase </classLink> son soportados. Los otros tipos de diagramas se renderizarán como imagen en Excalidraw.",
|
"description": "Actualmente sólo <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Secuencia, </sequenceLink> y <classLink>Class </classLink>Diagramas son soportados. Los otros tipos se renderizarán como imagen en Excalidraw.",
|
||||||
"syntax": "Sintaxis Mermaid",
|
"syntax": "Sintaxis Mermaid",
|
||||||
"preview": "Vista previa"
|
"preview": "Vista previa"
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Búsqueda rápida"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "viejo"
|
|
||||||
},
|
|
||||||
"sceneFonts": "En esta escena",
|
|
||||||
"availableFonts": "Fuentes disponibles",
|
|
||||||
"empty": "No se han encontrado fuentes"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "No se han encontrado usuarios",
|
|
||||||
"hint": {
|
|
||||||
"text": "Haga clic en el usuario para seguir",
|
|
||||||
"followStatus": "Ya estás siguiendo a este usuario",
|
|
||||||
"inCall": "El usuario está en una llamada de voz",
|
|
||||||
"micMuted": "El micrófono del usuario está silenciado",
|
|
||||||
"isSpeaking": "El usuario está hablando"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Paleta de comandos",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Seleccionar",
|
|
||||||
"confirm": "Confirmar",
|
|
||||||
"close": "Cerrar"
|
|
||||||
},
|
|
||||||
"recents": "Usado recientemente",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Busca menús, comandos y descubre gemas ocultas",
|
|
||||||
"noMatch": "No hay comandos coincidentes..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Comando no disponible...",
|
|
||||||
"shortcutHint": "Para la paleta de comandos, utilice {{shortcut}}"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "Kopiatu arbelera PNG gisa",
|
"copyAsPng": "Kopiatu arbelera PNG gisa",
|
||||||
"copyAsSvg": "Kopiatu arbelera SVG gisa",
|
"copyAsSvg": "Kopiatu arbelera SVG gisa",
|
||||||
"copyText": "Kopiatu arbelera testu gisa",
|
"copyText": "Kopiatu arbelera testu gisa",
|
||||||
"copySource": "Kopiatu jatorria arbelean",
|
"copySource": "Kopiatu iturria arbelean",
|
||||||
"convertToCode": "Kodera bihurtu",
|
"convertToCode": "Bihurtu kodea",
|
||||||
"bringForward": "Ekarri aurrerago",
|
"bringForward": "Ekarri aurrerago",
|
||||||
"sendToBack": "Eraman atzera",
|
"sendToBack": "Eraman atzera",
|
||||||
"bringToFront": "Ekarri aurrera",
|
"bringToFront": "Ekarri aurrera",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Kopiatu estiloak",
|
"copyStyles": "Kopiatu estiloak",
|
||||||
"pasteStyles": "Itsatsi estiloak",
|
"pasteStyles": "Itsatsi estiloak",
|
||||||
"stroke": "Marra",
|
"stroke": "Marra",
|
||||||
"changeStroke": "Marraren kolorea aldatu",
|
|
||||||
"background": "Atzeko planoa",
|
"background": "Atzeko planoa",
|
||||||
"changeBackground": "Atzealdeko kolorea aldatu",
|
|
||||||
"fill": "Bete",
|
"fill": "Bete",
|
||||||
"strokeWidth": "Marraren zabalera",
|
"strokeWidth": "Marraren zabalera",
|
||||||
"strokeStyle": "Marraren estiloa",
|
"strokeStyle": "Marraren estiloa",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Bat ere ez",
|
"arrowhead_none": "Bat ere ez",
|
||||||
"arrowhead_arrow": "Gezia",
|
"arrowhead_arrow": "Gezia",
|
||||||
"arrowhead_bar": "Barra",
|
"arrowhead_bar": "Barra",
|
||||||
"arrowhead_circle": "Zirkulua",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Zirkulua (eskema)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Hirukia",
|
"arrowhead_triangle": "Hirukia",
|
||||||
"arrowhead_triangle_outline": "Triangelua (eskema)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Erromboa",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Erromboa (eskema)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "",
|
|
||||||
"arrowtype_sharp": "",
|
|
||||||
"arrowtype_round": "",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "Letra-tamaina",
|
"fontSize": "Letra-tamaina",
|
||||||
"fontFamily": "Letra-tipoa",
|
"fontFamily": "Letra-tipoa",
|
||||||
"addWatermark": "Gehitu \"Excalidraw bidez egina\"",
|
"addWatermark": "Gehitu \"Excalidraw bidez egina\"",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Oihalean erabilita",
|
"canvasColors": "Oihalean erabilita",
|
||||||
"canvasBackground": "Oihalaren atzeko planoa",
|
"canvasBackground": "Oihalaren atzeko planoa",
|
||||||
"drawingCanvas": "Marrazteko oihala",
|
"drawingCanvas": "Marrazteko oihala",
|
||||||
"clearCanvas": "Garbitu",
|
|
||||||
"layers": "Geruzak",
|
"layers": "Geruzak",
|
||||||
"actions": "Ekintzak",
|
"actions": "Ekintzak",
|
||||||
"language": "Hizkuntza",
|
"language": "Hizkuntza",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Hautapena taldea bihurtu",
|
"group": "Hautapena taldea bihurtu",
|
||||||
"ungroup": "Desegin hautapenaren taldea",
|
"ungroup": "Desegin hautapenaren taldea",
|
||||||
"collaborators": "Kolaboratzaileak",
|
"collaborators": "Kolaboratzaileak",
|
||||||
"toggleGrid": "Txandakatu sareta",
|
"showGrid": "Erakutsi sareta",
|
||||||
"addToLibrary": "Gehitu liburutegira",
|
"addToLibrary": "Gehitu liburutegira",
|
||||||
"removeFromLibrary": "Kendu liburutegitik",
|
"removeFromLibrary": "Kendu liburutegitik",
|
||||||
"libraryLoadingMessage": "Liburutegia kargatzen…",
|
"libraryLoadingMessage": "Liburutegia kargatzen…",
|
||||||
"libraries": "Arakatu liburutegiak",
|
"libraries": "Arakatu liburutegiak",
|
||||||
"loadingScene": "Eszena kargatzen…",
|
"loadingScene": "Eszena kargatzen…",
|
||||||
"loadScene": "Fitxategitik kargatu",
|
|
||||||
"align": "Lerrokatu",
|
"align": "Lerrokatu",
|
||||||
"alignTop": "Lerrokatu goian",
|
"alignTop": "Lerrokatu goian",
|
||||||
"alignBottom": "Lerrokatu behean",
|
"alignBottom": "Lerrokatu behean",
|
||||||
@@ -117,9 +105,7 @@
|
|||||||
"share": "Partekatu",
|
"share": "Partekatu",
|
||||||
"showStroke": "Erakutsi marraren kolore-hautatzailea",
|
"showStroke": "Erakutsi marraren kolore-hautatzailea",
|
||||||
"showBackground": "Erakutsi atzeko planoaren kolore-hautatzailea",
|
"showBackground": "Erakutsi atzeko planoaren kolore-hautatzailea",
|
||||||
"showFonts": "",
|
"toggleTheme": "Aldatu gaia",
|
||||||
"toggleTheme": "Gaia argia/iluna aktibatu",
|
|
||||||
"theme": "Itxura",
|
|
||||||
"personalLib": "Liburutegi pertsonala",
|
"personalLib": "Liburutegi pertsonala",
|
||||||
"excalidrawLib": "Excalidraw liburutegia",
|
"excalidrawLib": "Excalidraw liburutegia",
|
||||||
"decreaseFontSize": "Txikitu letra tamaina",
|
"decreaseFontSize": "Txikitu letra tamaina",
|
||||||
@@ -129,21 +115,16 @@
|
|||||||
"createContainerFromText": "Bilatu testua edukiontzi batean",
|
"createContainerFromText": "Bilatu testua edukiontzi batean",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Editatu esteka",
|
"edit": "Editatu esteka",
|
||||||
"editEmbed": "",
|
"editEmbed": "Editatu esteka eta kapsulatu",
|
||||||
"create": "",
|
"create": "Sortu esteka",
|
||||||
|
"createEmbed": "Sortu esteka eta kapsulatu",
|
||||||
"label": "Esteka",
|
"label": "Esteka",
|
||||||
"labelEmbed": "Esteka eta kapsula",
|
"labelEmbed": "Esteka eta kapsula",
|
||||||
"empty": "Ez da estekarik ezarri",
|
"empty": "Ez da estekarik ezarri"
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Editatu lerroa",
|
"edit": "Editatu lerroa",
|
||||||
"editArrow": "Gezia aldatu"
|
"exit": "Irten lerro-editoretik"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Blokeatu",
|
"lock": "Blokeatu",
|
||||||
@@ -157,46 +138,12 @@
|
|||||||
"removeAllElementsFromFrame": "Kendu markoko elementu guztiak",
|
"removeAllElementsFromFrame": "Kendu markoko elementu guztiak",
|
||||||
"eyeDropper": "Aukeratu kolorea oihaletik",
|
"eyeDropper": "Aukeratu kolorea oihaletik",
|
||||||
"textToDiagram": "Testutik diagramara",
|
"textToDiagram": "Testutik diagramara",
|
||||||
"prompt": "Galdetu",
|
"prompt": ""
|
||||||
"followUs": "Jarraitu gaitzazu",
|
|
||||||
"discordChat": "Discord txata",
|
|
||||||
"zoomToFitViewport": "Zoom ikuspegira",
|
|
||||||
"zoomToFitSelection": "Zoom hautapenera",
|
|
||||||
"zoomToFit": "Egin zoom elementu guztiak ikusteko",
|
|
||||||
"installPWA": "Instalatu Excalidraw lokalean (PWA)",
|
|
||||||
"autoResize": "Textu zabalera automatikoa aktibatu",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Oraindik ez da elementurik gehitu...",
|
"noItems": "Oraindik ez da elementurik gehitu...",
|
||||||
"hint_emptyLibrary": "Hautatu oihaleko elementu bat hemen gehitzeko, edo instalatu liburutegi bat beheko biltegi publikotik.",
|
"hint_emptyLibrary": "Hautatu oihaleko elementu bat hemen gehitzeko, edo instalatu liburutegi bat beheko biltegi publikotik.",
|
||||||
"hint_emptyPrivateLibrary": "Hautatu oihaleko elementu bat hemen gehitzeko.",
|
"hint_emptyPrivateLibrary": "Hautatu oihaleko elementu bat hemen gehitzeko."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Garbitu oihala",
|
"clearReset": "Garbitu oihala",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Esportatu irudia...",
|
"exportImage": "Esportatu irudia...",
|
||||||
"export": "Gorde hemen...",
|
"export": "Gorde hemen...",
|
||||||
"copyToClipboard": "Kopiatu arbelera",
|
"copyToClipboard": "Kopiatu arbelera",
|
||||||
"copyLink": "",
|
|
||||||
"save": "Gorde uneko fitxategian",
|
"save": "Gorde uneko fitxategian",
|
||||||
"saveAs": "Gorde honela",
|
"saveAs": "Gorde honela",
|
||||||
"load": "Ireki",
|
"load": "Ireki",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Pantaila osoa",
|
"fullScreen": "Pantaila osoa",
|
||||||
"darkMode": "Modu iluna",
|
"darkMode": "Modu iluna",
|
||||||
"lightMode": "Modu argia",
|
"lightMode": "Modu argia",
|
||||||
"systemMode": "",
|
|
||||||
"zenMode": "Zen modua",
|
"zenMode": "Zen modua",
|
||||||
"objectsSnapMode": "Atxiki objektuei",
|
"objectsSnapMode": "Atxiki objektuei",
|
||||||
"exitZenMode": "Irten Zen modutik",
|
"exitZenMode": "Irten Zen modutik",
|
||||||
"cancel": "Utzi",
|
"cancel": "Utzi",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Garbitu",
|
"clear": "Garbitu",
|
||||||
"remove": "Kendu",
|
"remove": "Kendu",
|
||||||
"embed": "Aldatu kapsulatzea",
|
"embed": "Aldatu kapsulatzea",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Argitaratu",
|
||||||
"submit": "Bidali",
|
"submit": "Bidali",
|
||||||
"confirm": "Bai",
|
"confirm": "Bai",
|
||||||
"embeddableInteractionButton": "Egin klik elkar eragiteko"
|
"embeddableInteractionButton": "Egin klik elkar eragiteko"
|
||||||
@@ -260,8 +204,7 @@
|
|||||||
"resetLibrary": "Honek zure liburutegia garbituko du. Ziur zaude?",
|
"resetLibrary": "Honek zure liburutegia garbituko du. Ziur zaude?",
|
||||||
"removeItemsFromsLibrary": "Liburutegitik {{count}} elementu ezabatu?",
|
"removeItemsFromsLibrary": "Liburutegitik {{count}} elementu ezabatu?",
|
||||||
"invalidEncryptionKey": "Enkriptazio-gakoak 22 karaktere izan behar ditu. Zuzeneko lankidetza desgaituta dago.",
|
"invalidEncryptionKey": "Enkriptazio-gakoak 22 karaktere izan behar ditu. Zuzeneko lankidetza desgaituta dago.",
|
||||||
"collabOfflineWarning": "Ez dago Interneteko konexiorik.\nZure aldaketak ez dira gordeko!",
|
"collabOfflineWarning": "Ez dago Interneteko konexiorik.\nZure aldaketak ez dira gordeko!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Onartu gabeko fitxategi mota.",
|
"unsupportedFileType": "Onartu gabeko fitxategi mota.",
|
||||||
@@ -269,12 +212,12 @@
|
|||||||
"fileTooBig": "Fitxategia handiegia da. Onartutako gehienezko tamaina {{maxSize}} da.",
|
"fileTooBig": "Fitxategia handiegia da. Onartutako gehienezko tamaina {{maxSize}} da.",
|
||||||
"svgImageInsertError": "Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.",
|
"svgImageInsertError": "Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.",
|
||||||
"failedToFetchImage": "Ezin izan da irudia eskuratu.",
|
"failedToFetchImage": "Ezin izan da irudia eskuratu.",
|
||||||
|
"invalidSVGString": "SVG baliogabea.",
|
||||||
"cannotResolveCollabServer": "Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.",
|
"cannotResolveCollabServer": "Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.",
|
||||||
"importLibraryError": "Ezin izan da liburutegia kargatu",
|
"importLibraryError": "Ezin izan da liburutegia kargatu",
|
||||||
"saveLibraryError": "Ezin izan da liburutegian gorde. Mesedez, gorde fitxategi lokal batetara aldaketarik ez galtzeko.",
|
|
||||||
"collabSaveFailed": "Ezin izan da backend datu-basean gorde. Arazoak jarraitzen badu, zure fitxategia lokalean gorde beharko zenuke zure lana ez duzula galtzen ziurtatzeko.",
|
"collabSaveFailed": "Ezin izan da backend datu-basean gorde. Arazoak jarraitzen badu, zure fitxategia lokalean gorde beharko zenuke zure lana ez duzula galtzen ziurtatzeko.",
|
||||||
"collabSaveFailed_sizeExceeded": "Ezin izan da backend datu-basean gorde, ohiala handiegia dela dirudi. Fitxategia lokalean gorde beharko zenuke zure lana galtzen ez duzula ziurtatzeko.",
|
"collabSaveFailed_sizeExceeded": "Ezin izan da backend datu-basean gorde, ohiala handiegia dela dirudi. Fitxategia lokalean gorde beharko zenuke zure lana galtzen ez duzula ziurtatzeko.",
|
||||||
"imageToolNotSupported": "Irudiak desgaituak daude.",
|
"imageToolNotSupported": "Irudiak desgaituta daude.",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "Brave arakatzailea erabiltzen ari zarela dirudi <bold>Blokeatu hatz-markak erasokorki</bold> ezarpena gaituta.",
|
"line1": "Brave arakatzailea erabiltzen ari zarela dirudi <bold>Blokeatu hatz-markak erasokorki</bold> ezarpena gaituta.",
|
||||||
"line2": "Honek zure marrazkietako <bold>Testu-elementuak</bold> hautsi ditzake.",
|
"line2": "Honek zure marrazkietako <bold>Testu-elementuak</bold> hautsi ditzake.",
|
||||||
@@ -283,7 +226,7 @@
|
|||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "Kapsulatutako elementuak ezin dira liburutegira gehitu.",
|
"embeddable": "Kapsulatutako elementuak ezin dira liburutegira gehitu.",
|
||||||
"iframe": "Kapsulatutako elementuak ezin dira liburutegira gehitu.",
|
"iframe": "IFrame elementuak ezin dira liburutegira gehitu.",
|
||||||
"image": "Laster egongo da irudiak liburutegian gehitzeko laguntza!"
|
"image": "Laster egongo da irudiak liburutegian gehitzeko laguntza!"
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "Ezin izan da itsatsi (ezin izan da sistemaren arbeletik irakurri).",
|
"asyncPasteFailedOnRead": "Ezin izan da itsatsi (ezin izan da sistemaren arbeletik irakurri).",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Hautapena",
|
"selection": "Hautapena",
|
||||||
"lasso": "",
|
|
||||||
"image": "Txertatu irudia",
|
"image": "Txertatu irudia",
|
||||||
"rectangle": "Laukizuzena",
|
"rectangle": "Laukizuzena",
|
||||||
"diamond": "Diamantea",
|
"diamond": "Diamantea",
|
||||||
@@ -307,29 +249,13 @@
|
|||||||
"link": "Gehitu / Eguneratu esteka hautatutako forma baterako",
|
"link": "Gehitu / Eguneratu esteka hautatutako forma baterako",
|
||||||
"eraser": "Borragoma",
|
"eraser": "Borragoma",
|
||||||
"frame": "Marko tresna",
|
"frame": "Marko tresna",
|
||||||
"magicframe": "Wireframetik kodera",
|
"magicframe": "Wireframe kodetzeko",
|
||||||
"embeddable": "Web kapsulatzea",
|
"embeddable": "Web kapsulatzea",
|
||||||
"laser": "Laser punteroa",
|
"laser": "Laser punteroa",
|
||||||
"hand": "Eskua (panoratze tresna)",
|
"hand": "Eskua (panoratze tresna)",
|
||||||
"extraTools": "Tresna gehiago",
|
"extraTools": "Tresna gehiago",
|
||||||
"mermaidToExcalidraw": "Mermaid-etik Excalidraw-ra",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": "AI ezarpenak"
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": ""
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Canvas ekintzak",
|
"canvasActions": "Canvas ekintzak",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Formak"
|
"shapes": "Formak"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Oihala mugitzeko, eutsi saguaren gurpila edo zuriune-barra arrastatzean, edo erabili esku tresna",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Egin klik hainbat puntu hasteko, arrastatu lerro bakarrerako",
|
"linearElement": "Egin klik hainbat puntu hasteko, arrastatu lerro bakarrerako",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Egin klik eta arrastatu, askatu amaitutakoan",
|
"freeDraw": "Egin klik eta arrastatu, askatu amaitutakoan",
|
||||||
"text": "Aholkua: testua gehitu dezakezu edozein lekutan klik bikoitza eginez hautapen tresnarekin",
|
"text": "Aholkua: testua gehitu dezakezu edozein lekutan klik bikoitza eginez hautapen tresnarekin",
|
||||||
"embeddable": "Egin klik eta arrastatu webgunea kapsulatzeko",
|
"embeddable": "Egin klik eta arrastatu webgunea kapsulatzeko",
|
||||||
"text_selected": "",
|
"text_selected": "Egin klik bikoitza edo sakatu SARTU testua editatzeko",
|
||||||
"text_editing": "",
|
"text_editing": "Sakatu Esc edo Ctrl+SARTU editatzen amaitzeko",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Egin klik azken puntuan edo sakatu Esc edo Sartu amaitzeko",
|
||||||
"lockAngle": "",
|
"lockAngle": "SHIFT sakatuta angelua mantendu dezakezu",
|
||||||
"resize": "",
|
"resize": "Proportzioak mantendu ditzakezu SHIFT sakatuta tamaina aldatzen duzun bitartean.\nsakatu ALT erditik tamaina aldatzeko",
|
||||||
"resizeImage": "",
|
"resizeImage": "Tamaina libreki alda dezakezu SHIFT sakatuta,\nsakatu ALT erditik tamaina aldatzeko",
|
||||||
"rotate": "",
|
"rotate": "Angeluak mantendu ditzakezu SHIFT sakatuta biratzen duzun bitartean",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Eutsi sakatuta Ctrl edo Cmd eta egin klik bikoitza edo sakatu Ctrl edo Cmd + Sartu puntuak editatzeko",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Sakatu Ezabatu puntuak kentzeko,\nKtrl+D bikoizteko, edo arrastatu mugitzeko",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "Hautatu editatzeko puntu bat (SHIFT sakatuta anitz hautatzeko),\nedo eduki Alt sakatuta eta egin klik puntu berriak gehitzeko",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Egin klik irudia kokatzeko, edo egin klik eta arrastatu bere tamaina eskuz ezartzeko",
|
||||||
"publishLibrary": "Argitaratu zure liburutegia",
|
"publishLibrary": "Argitaratu zure liburutegia",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Sakatu Sartu testua gehitzeko",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Eutsi Ctrl edo Cmd sakatuta aukeraketa sakona egiteko eta arrastatzea saihesteko",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Eduki Alt sakatuta ezabatzeko markatutako elementuak leheneratzeko",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Ezaugarri hau \"dom.events.asyncClipboard.clipboardItem\" marka \"true\" gisa ezarrita gaitu daiteke. Firefox-en arakatzailearen banderak aldatzeko, bisitatu \"about:config\" orrialdera.",
|
"firefox_clipboard_write": "Ezaugarri hau \"dom.events.asyncClipboard.clipboardItem\" marka \"true\" gisa ezarrita gaitu daiteke. Firefox-en arakatzailearen banderak aldatzeko, bisitatu \"about:config\" orrialdera.",
|
||||||
"disableSnapping": "",
|
"disableSnapping": "Eduki sakatuta Ctrl edo Cmd tekla atxikipena desgaitzeko"
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Ezin da oihala aurreikusi",
|
"cannotShowPreview": "Ezin da oihala aurreikusi",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure <button>erroreen jarraipena egitea.</button> Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.",
|
"openIssueMessage": "Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure <button>erroreen jarraipena egitea.</button> Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.",
|
||||||
"sceneContent": "Eszenaren edukia:"
|
"sceneContent": "Eszenaren edukia:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Edo"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Gonbidatu jendea zure marrazkira.",
|
"desc_intro": "Jendea zure uneko eszenara gonbida dezakezu zurekin elkarlanean aritzeko.",
|
||||||
"desc_privacy": "Lasai, sesioa encriptatua dago eta erabat pribatua da. Gure zerbitzarian ere ezin da ikusi zure marrazkia.",
|
"desc_privacy": "Ez kezkatu, saioak muturretik muturrerako enkriptatzea erabiltzen du, beraz, marrazten duzuna pribatua izango da. Gure zerbitzariak ere ezingo du ikusi zer egiten duzun.",
|
||||||
"button_startSession": "Hasi saioa",
|
"button_startSession": "Hasi saioa",
|
||||||
"button_stopSession": "Itxi saioa",
|
"button_stopSession": "Itxi saioa",
|
||||||
"desc_inProgressIntro": "Zuzeneko lankidetza saioa abian da.",
|
"desc_inProgressIntro": "Zuzeneko lankidetza saioa abian da.",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "sakatu",
|
"click": "sakatu",
|
||||||
"deepSelect": "Hautapen sakona",
|
"deepSelect": "Hautapen sakona",
|
||||||
"deepBoxSelect": "Hautapen sakona egin laukizuzen bidez, eta saihestu arrastatzea",
|
"deepBoxSelect": "Hautapen sakona egin laukizuzen bidez, eta saihestu arrastatzea",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "Gezi kurbatua",
|
"curvedArrow": "Gezi kurbatua",
|
||||||
"curvedLine": "Lerro kurbatua",
|
"curvedLine": "Lerro kurbatua",
|
||||||
"documentation": "Dokumentazioa",
|
"documentation": "Dokumentazioa",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Zooma hautapenera",
|
"zoomToSelection": "Zooma hautapenera",
|
||||||
"toggleElementLock": "Blokeatu/desbloketatu hautapena",
|
"toggleElementLock": "Blokeatu/desbloketatu hautapena",
|
||||||
"movePageUpDown": "Mugitu orria gora/behera",
|
"movePageUpDown": "Mugitu orria gora/behera",
|
||||||
"movePageLeftRight": "Mugitu orria ezker/eskuin",
|
"movePageLeftRight": "Mugitu orria ezker/eskuin"
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Garbitu oihala"
|
"title": "Garbitu oihala"
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Angelua",
|
"angle": "Angelua",
|
||||||
"shapes": "",
|
"element": "Elementua",
|
||||||
|
"elements": "Elementuak",
|
||||||
"height": "Altuera",
|
"height": "Altuera",
|
||||||
"scene": "Eszena",
|
"scene": "Eszena",
|
||||||
"selected": "Hautatua",
|
"selected": "Hautatua",
|
||||||
"storage": "Biltegia",
|
"storage": "Biltegia",
|
||||||
"fullTitle": "",
|
"title": "Datuak",
|
||||||
"title": "",
|
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "Guztira",
|
"total": "Guztira",
|
||||||
"version": "Bertsioa",
|
"version": "Bertsioa",
|
||||||
"versionCopy": "Klikatu kopiatzeko",
|
"versionCopy": "Klikatu kopiatzeko",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Estiloak kopiatu dira.",
|
"copyStyles": "Estiloak kopiatu dira.",
|
||||||
"copyToClipboard": "Arbelean kopiatu da.",
|
"copyToClipboard": "Arbelean kopiatu da.",
|
||||||
"copyToClipboardAsPng": "{{exportSelection}} kopiatu da arbelean PNG gisa\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "{{exportSelection}} kopiatu da arbelean PNG gisa\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Fitxategia gorde da.",
|
"fileSaved": "Fitxategia gorde da.",
|
||||||
"fileSavedToFilename": "{filename}-n gorde da",
|
"fileSavedToFilename": "{filename}-n gorde da",
|
||||||
"canvas": "oihala",
|
"canvas": "oihala",
|
||||||
"selection": "hautapena",
|
"selection": "hautapena",
|
||||||
"pasteAsSingleElement": "Erabili {{shortcut}} elementu bakar gisa itsasteko,\nedo itsatsi lehendik dagoen testu-editore batean",
|
"pasteAsSingleElement": "Erabili {{shortcut}} elementu bakar gisa itsasteko,\nedo itsatsi lehendik dagoen testu-editore batean",
|
||||||
"unableToEmbed": "Url hau txertatzea ez da une honetan onartzen. Sortu issue bat GitHub-en Urla zerrenda zurian sartzea eskatzeko",
|
"unableToEmbed": "Url hau txertatzea ez da une honetan onartzen. Sortu issue bat GitHub-en Urla zerrenda zurian sartzea eskatzeko",
|
||||||
"unrecognizedLinkFormat": "Kapsulatu duzun esteka ez dator bat espero den formatuarekin. Mesedez, saiatu iturburu-guneak emandako 'kapsulatu' katea itsasten",
|
"unrecognizedLinkFormat": "Kapsulatu duzun esteka ez dator bat espero den formatuarekin. Mesedez, saiatu iturburu-guneak emandako 'kapsulatu' katea itsasten"
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Gardena",
|
"transparent": "Gardena",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "Gehien erabilitako kolore pertsonalizatuak",
|
"mostUsedCustomColors": "Gehien erabilitako kolore pertsonalizatuak",
|
||||||
"colors": "Koloreak",
|
"colors": "Koloreak",
|
||||||
"shades": "Ñabardurak",
|
"shades": "Ñabardurak",
|
||||||
@@ -607,58 +516,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "Mermaid-etik Excalidraw-ra",
|
|
||||||
"button": "Txertatu",
|
|
||||||
"description": "Momentu honetan <flowchartLink>Flowchart</flowchartLink>, <sequenceLink> Sequence, </sequenceLink> eta <classLink>Class </classLink>Diagramak onartzen dira. Beste motak irudi gisa errendatuko dira Excalidrawn.",
|
|
||||||
"syntax": "Mermaid sintaxia",
|
|
||||||
"preview": "Aurrebista"
|
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "Klik erabiltzailean jarraitzeko",
|
|
||||||
"followStatus": "Dagoeneko erabiltzaile hau jarraitzen ari zara",
|
|
||||||
"inCall": "Erabiltzailea dei batean dago",
|
|
||||||
"micMuted": "Erabiltzailearen mikronofoa isildua dago",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
"title": "",
|
||||||
"shortcuts": {
|
"button": "Txertatu",
|
||||||
"select": "",
|
"description": "",
|
||||||
"confirm": "",
|
"syntax": "",
|
||||||
"close": ""
|
"preview": "Aurrebista"
|
||||||
},
|
|
||||||
"recents": "",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,27 @@
|
|||||||
{
|
{
|
||||||
"labels": {
|
"labels": {
|
||||||
"paste": "جایگذاری",
|
"paste": "جای گذاری",
|
||||||
"pasteAsPlaintext": "جایگذاری به عنوان متن ساده",
|
"pasteAsPlaintext": "جایگذاری به عنوان متن ساده",
|
||||||
"pasteCharts": "جایگذاری نمودارها",
|
"pasteCharts": "قراردادن نمودارها",
|
||||||
"selectAll": "انتخاب همه",
|
"selectAll": "انتخاب همه",
|
||||||
"multiSelect": "یک ایتم به انتخاب شده ها اضافه کنید",
|
"multiSelect": "یک ایتم به انتخاب شده ها اضافه کنید.",
|
||||||
"moveCanvas": "جابجایی بوم",
|
"moveCanvas": "جابجایی بوم",
|
||||||
"cut": "بریدن",
|
"cut": "بریدن",
|
||||||
"copy": "کپی",
|
"copy": "کپی",
|
||||||
"copyAsPng": "کپی در حافطه موقت به صورت PNG",
|
"copyAsPng": "کپی در حافطه موقت به صورت PNG",
|
||||||
"copyAsSvg": "کپی در حافطه موقت به صورت SVG",
|
"copyAsSvg": "کپی در حافطه موقت به صورت SVG",
|
||||||
"copyText": "کپی در حافطه موقت به صورت متن",
|
"copyText": "کپی در حافطه موقت به صورت متن",
|
||||||
"copySource": "کپی منبع در حافظه موقت",
|
"copySource": "",
|
||||||
"convertToCode": "تبدیل به کد",
|
"convertToCode": "",
|
||||||
"bringForward": "جلو آوردن",
|
"bringForward": "جلو آوردن",
|
||||||
"sendToBack": "ارسال به عقب",
|
"sendToBack": "پس فرستادن",
|
||||||
"bringToFront": "جلو آوردن",
|
"bringToFront": "جلو آوردن",
|
||||||
"sendBackward": "پس فرستادن",
|
"sendBackward": "پس فرستادن",
|
||||||
"delete": "حذف",
|
"delete": "حذف",
|
||||||
"copyStyles": "کپی سبک",
|
"copyStyles": "کپی سبک",
|
||||||
"pasteStyles": "جایگذاری سبک",
|
"pasteStyles": "جای گذاری سبک",
|
||||||
"stroke": "حاشیه",
|
"stroke": "حاشیه",
|
||||||
"changeStroke": "تغییر رنگ حاشیه",
|
|
||||||
"background": "پس زمینه",
|
"background": "پس زمینه",
|
||||||
"changeBackground": "تغییر رنگ پس زمینه",
|
|
||||||
"fill": "رنگ آمیزی",
|
"fill": "رنگ آمیزی",
|
||||||
"strokeWidth": "ضخامت حاشیه",
|
"strokeWidth": "ضخامت حاشیه",
|
||||||
"strokeStyle": "استایل حاشیه",
|
"strokeStyle": "استایل حاشیه",
|
||||||
@@ -32,32 +30,24 @@
|
|||||||
"strokeStyle_dotted": "نقطه چین",
|
"strokeStyle_dotted": "نقطه چین",
|
||||||
"sloppiness": "دقت",
|
"sloppiness": "دقت",
|
||||||
"opacity": "شفافیت",
|
"opacity": "شفافیت",
|
||||||
"textAlign": "تراز متن",
|
"textAlign": "چیدمان متن",
|
||||||
"edges": "لبه ها",
|
"edges": "لبه ها",
|
||||||
"sharp": "تیز",
|
"sharp": "تیز",
|
||||||
"round": "گرد",
|
"round": "دور",
|
||||||
"arrowheads": "سر پیکان",
|
"arrowheads": "سر پیکان",
|
||||||
"arrowhead_none": "هیچ کدام",
|
"arrowhead_none": "هیچ کدام",
|
||||||
"arrowhead_arrow": "پیکان",
|
"arrowhead_arrow": "پیکان",
|
||||||
"arrowhead_bar": "میله ای",
|
"arrowhead_bar": "میله ای",
|
||||||
"arrowhead_circle": "دایره",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "دایره (پیرامون)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "مثلث",
|
"arrowhead_triangle": "مثلث",
|
||||||
"arrowhead_triangle_outline": "مثلث (پیرامون)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "الماس",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "الماس (پیرامون)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "پای کلاغی (بسیار)",
|
|
||||||
"arrowhead_crowfoot_one": "پای کلاغی (یک)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "پای کلاغی (یک یا بسیار)",
|
|
||||||
"more_options": "امکانات بیشتر",
|
|
||||||
"arrowtypes": "نوع پیکان",
|
|
||||||
"arrowtype_sharp": "پیکان تیز",
|
|
||||||
"arrowtype_round": "پیکان منحنی",
|
|
||||||
"arrowtype_elbowed": "پیکان گوشهدار",
|
|
||||||
"fontSize": "اندازه قلم",
|
"fontSize": "اندازه قلم",
|
||||||
"fontFamily": "نوع قلم",
|
"fontFamily": "نوع قلم",
|
||||||
"addWatermark": "\"ساخته شده با Excalidraw\" را اضافه کن",
|
"addWatermark": "\"ساخته شده با Excalidraw\" را اضافه کن",
|
||||||
"handDrawn": "دستنویس",
|
"handDrawn": "دست نویس",
|
||||||
"normal": "عادی",
|
"normal": "عادی",
|
||||||
"code": "کد",
|
"code": "کد",
|
||||||
"small": "کوچک",
|
"small": "کوچک",
|
||||||
@@ -79,15 +69,14 @@
|
|||||||
"cartoonist": "کارتونیست",
|
"cartoonist": "کارتونیست",
|
||||||
"fileTitle": "نام فایل",
|
"fileTitle": "نام فایل",
|
||||||
"colorPicker": "انتخابگر رنگ",
|
"colorPicker": "انتخابگر رنگ",
|
||||||
"canvasColors": "اسنفاده شده در بوم",
|
"canvasColors": "رنگ های بوم",
|
||||||
"canvasBackground": "پسزمینه بوم",
|
"canvasBackground": "بوم",
|
||||||
"drawingCanvas": "بوم نقاشی",
|
"drawingCanvas": "بوم نقاشی",
|
||||||
"clearCanvas": "پاکسازی بوم",
|
|
||||||
"layers": "لایه ها",
|
"layers": "لایه ها",
|
||||||
"actions": "عملیات",
|
"actions": "عملیات",
|
||||||
"language": "زبان",
|
"language": "زبان",
|
||||||
"liveCollaboration": "همکاری آنلاین...",
|
"liveCollaboration": "همکاری آنلاین...",
|
||||||
"duplicateSelection": "تکراری",
|
"duplicateSelection": "تکرار",
|
||||||
"untitled": "بدون عنوان",
|
"untitled": "بدون عنوان",
|
||||||
"name": "نام",
|
"name": "نام",
|
||||||
"yourName": "نام شما",
|
"yourName": "نام شما",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "گروهبندی انتخابها",
|
"group": "گروهبندی انتخابها",
|
||||||
"ungroup": "حذف گروهبندی انتخابها",
|
"ungroup": "حذف گروهبندی انتخابها",
|
||||||
"collaborators": "همکاران",
|
"collaborators": "همکاران",
|
||||||
"toggleGrid": "تغییر وضعیت خطوط شطرنجی",
|
"showGrid": "نمایش گرید",
|
||||||
"addToLibrary": "افزودن به کتابخانه",
|
"addToLibrary": "افزودن به کتابخانه",
|
||||||
"removeFromLibrary": "حذف از کتابخانه",
|
"removeFromLibrary": "حذف از کتابخانه",
|
||||||
"libraryLoadingMessage": "بارگذاری کتابخانه…",
|
"libraryLoadingMessage": "بارگذاری کتابخانه…",
|
||||||
"libraries": "مرور کردن کتابخانه ها",
|
"libraries": "مرور کردن کتابخانه ها",
|
||||||
"loadingScene": "باگذاری صحنه…",
|
"loadingScene": "باگذاری صحنه…",
|
||||||
"loadScene": "بارگذاری صحنه از فایل",
|
|
||||||
"align": "تراز",
|
"align": "تراز",
|
||||||
"alignTop": "تراز به بالا",
|
"alignTop": "تراز به بالا",
|
||||||
"alignBottom": "تراز به پایین",
|
"alignBottom": "تراز به پایین",
|
||||||
@@ -117,11 +105,9 @@
|
|||||||
"share": "اشتراکگذاری",
|
"share": "اشتراکگذاری",
|
||||||
"showStroke": "نمایش انتخاب کننده رنگ حاشیه",
|
"showStroke": "نمایش انتخاب کننده رنگ حاشیه",
|
||||||
"showBackground": "نمایش انتخاب کننده رنگ پس زمینه",
|
"showBackground": "نمایش انتخاب کننده رنگ پس زمینه",
|
||||||
"showFonts": "نمایش انتخاب فونت",
|
"toggleTheme": "تغییر تم",
|
||||||
"toggleTheme": "تغییر وضعیت پوسته روشن/تیره",
|
|
||||||
"theme": "پوسته",
|
|
||||||
"personalLib": "کتابخانه شخصی",
|
"personalLib": "کتابخانه شخصی",
|
||||||
"excalidrawLib": "کتابخانه Excalidraw",
|
"excalidrawLib": "کتابخانه",
|
||||||
"decreaseFontSize": "کاهش اندازه فونت",
|
"decreaseFontSize": "کاهش اندازه فونت",
|
||||||
"increaseFontSize": "افزایش دادن اندازه فونت",
|
"increaseFontSize": "افزایش دادن اندازه فونت",
|
||||||
"unbindText": "بازکردن نوشته",
|
"unbindText": "بازکردن نوشته",
|
||||||
@@ -129,21 +115,16 @@
|
|||||||
"createContainerFromText": "متن را در یک جایگاه بپیچید",
|
"createContainerFromText": "متن را در یک جایگاه بپیچید",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "ویرایش لینک",
|
"edit": "ویرایش لینک",
|
||||||
"editEmbed": "تغیر لینک",
|
"editEmbed": "",
|
||||||
"create": "افزودن لینک",
|
"create": "ایجاد پیوند",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "لینک",
|
"label": "لینک",
|
||||||
"labelEmbed": "لینک و افزونه",
|
"labelEmbed": "",
|
||||||
"empty": "هیچ لینکی ست نشده",
|
"empty": ""
|
||||||
"hint": "لینک خود را بنویسید یا جایگذاری کنید",
|
|
||||||
"goToElement": "رفتن به المان مد نظر"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "ویرایش لینک",
|
"edit": "ویرایش لینک",
|
||||||
"editArrow": "ویرایش پیکان"
|
"exit": "خروج از ویرایشگر"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "قفل",
|
"lock": "قفل",
|
||||||
@@ -153,50 +134,16 @@
|
|||||||
},
|
},
|
||||||
"statusPublished": "منتشر شده",
|
"statusPublished": "منتشر شده",
|
||||||
"sidebarLock": "باز نگه داشتن سایدبار",
|
"sidebarLock": "باز نگه داشتن سایدبار",
|
||||||
"selectAllElementsInFrame": "همه آیتم های در فریم را انتخاب کنید",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "حذف همه آیتم های داخل فریم",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "انتخاب رنگ از بوم",
|
"eyeDropper": "انتخاب رنگ از کرباس",
|
||||||
"textToDiagram": "متن به دیاگرام",
|
"textToDiagram": "",
|
||||||
"prompt": "فوری",
|
"prompt": ""
|
||||||
"followUs": "ما را دنبال کنید",
|
|
||||||
"discordChat": "چت دیسکورد",
|
|
||||||
"zoomToFitViewport": "بزرگنمایی به اندازه نمایشگر",
|
|
||||||
"zoomToFitSelection": "بزرگنمایی به اندازه قسمت انتخاب شده",
|
|
||||||
"zoomToFit": "بزرگنمایی برای دیدن تمام آیتم ها",
|
|
||||||
"installPWA": "نصب Excalidraw روی دستگاه (PWA)",
|
|
||||||
"autoResize": "فعالسازی تنظیم خودکار سایز",
|
|
||||||
"imageCropping": "برش عکس",
|
|
||||||
"unCroppedDimension": "اندازه غیر برشی",
|
|
||||||
"copyElementLink": "کپی لینک به آیتم",
|
|
||||||
"linkToElement": "لینک به آیتم",
|
|
||||||
"wrapSelectionInFrame": "انتخاب را در قاب قرار دهید",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "لینک به آیتم",
|
|
||||||
"desc": "روی شکل یا بوم کلیک کنید، یا لینک را جایگذاری کنید.",
|
|
||||||
"notFound": "آیتم لینک شده در بوم پیدا نشد."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "آیتمی به اینجا اضافه نشده...",
|
"noItems": "آیتمی به اینجا اضافه نشده...",
|
||||||
"hint_emptyLibrary": "یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.",
|
"hint_emptyLibrary": "یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.",
|
||||||
"hint_emptyPrivateLibrary": "یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید.",
|
"hint_emptyPrivateLibrary": "یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "جستجو در بوم",
|
|
||||||
"noMatch": "هیچ موردی یافت نشد...",
|
|
||||||
"singleResult": "نتیجه",
|
|
||||||
"multipleResults": "نتایج",
|
|
||||||
"placeholder": "جستجوی متن در بوم...",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "پاکسازی بوم نقاشی",
|
"clearReset": "پاکسازی بوم نقاشی",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "خروجی گرفتن از تصویر...",
|
"exportImage": "خروجی گرفتن از تصویر...",
|
||||||
"export": "ذخیره در...",
|
"export": "ذخیره در...",
|
||||||
"copyToClipboard": "کپی در حافظه موقت",
|
"copyToClipboard": "کپی در حافظه موقت",
|
||||||
"copyLink": "کپی لینک",
|
|
||||||
"save": "ذخیره در همین فایل",
|
"save": "ذخیره در همین فایل",
|
||||||
"saveAs": "ذخیره با نام",
|
"saveAs": "ذخیره با نام",
|
||||||
"load": "باز کردن",
|
"load": "باز کردن",
|
||||||
@@ -225,19 +171,17 @@
|
|||||||
"fullScreen": "تمامصفحه",
|
"fullScreen": "تمامصفحه",
|
||||||
"darkMode": "حالت تیره",
|
"darkMode": "حالت تیره",
|
||||||
"lightMode": "حالت روشن",
|
"lightMode": "حالت روشن",
|
||||||
"systemMode": "حالت سیستم",
|
|
||||||
"zenMode": "حالت ذن",
|
"zenMode": "حالت ذن",
|
||||||
"objectsSnapMode": "به اشیاء بچسبد",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "خروج از حالت تمرکز",
|
"exitZenMode": "خروج از حالت تمرکز",
|
||||||
"cancel": "لغو",
|
"cancel": "لغو",
|
||||||
"saveLibNames": "",
|
"clear": "پاک کردن",
|
||||||
"clear": "پاکسازی",
|
|
||||||
"remove": "پاک کردن",
|
"remove": "پاک کردن",
|
||||||
"embed": "تغییر افزونه",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "انتشار",
|
||||||
"submit": "ارسال",
|
"submit": "ارسال",
|
||||||
"confirm": "تایید",
|
"confirm": "تایید",
|
||||||
"embeddableInteractionButton": "کلیک برای تعامل"
|
"embeddableInteractionButton": ""
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "این کار کل صفحه را پاک میکند. آیا مطمئنید؟",
|
"clearReset": "این کار کل صفحه را پاک میکند. آیا مطمئنید؟",
|
||||||
@@ -246,8 +190,8 @@
|
|||||||
"couldNotLoadInvalidFile": "عدم توانایی در بازگذاری فایل نامعتبر",
|
"couldNotLoadInvalidFile": "عدم توانایی در بازگذاری فایل نامعتبر",
|
||||||
"importBackendFailed": "بارگیری از پشت صحنه با شکست مواجه شد.",
|
"importBackendFailed": "بارگیری از پشت صحنه با شکست مواجه شد.",
|
||||||
"cannotExportEmptyCanvas": "بوم خالی قابل تبدیل نیست.",
|
"cannotExportEmptyCanvas": "بوم خالی قابل تبدیل نیست.",
|
||||||
"couldNotCopyToClipboard": "در بریدهدان رونویسی نشد.",
|
"couldNotCopyToClipboard": "به کلیپ بورد کپی نشد.",
|
||||||
"decryptFailed": "رمزگشایی داده ها امکانپذیر نیست.",
|
"decryptFailed": "رمزگشایی داده ها امکان پذیر نیست.",
|
||||||
"uploadedSecurly": "آپلود با رمزگذاری دو طرفه انجام میشود، به این معنی که سرور Excalidraw و اشخاص ثالث نمی توانند مطالب شما را بخوانند.",
|
"uploadedSecurly": "آپلود با رمزگذاری دو طرفه انجام میشود، به این معنی که سرور Excalidraw و اشخاص ثالث نمی توانند مطالب شما را بخوانند.",
|
||||||
"loadSceneOverridePrompt": "بارگزاری یک طرح خارجی محتوای فعلی رو از بین میبرد. آیا میخواهید ادامه دهید؟",
|
"loadSceneOverridePrompt": "بارگزاری یک طرح خارجی محتوای فعلی رو از بین میبرد. آیا میخواهید ادامه دهید؟",
|
||||||
"collabStopOverridePrompt": "با توقف بوم نقاشی، نقشه قبلی و ذخیره شده محلی شما را بازنویسی می کند. مطمئنی؟\n\n(اگر می خواهید نقاشی محلی خود را حفظ کنید، به سادگی برگه مرورگر را ببندید.)",
|
"collabStopOverridePrompt": "با توقف بوم نقاشی، نقشه قبلی و ذخیره شده محلی شما را بازنویسی می کند. مطمئنی؟\n\n(اگر می خواهید نقاشی محلی خود را حفظ کنید، به سادگی برگه مرورگر را ببندید.)",
|
||||||
@@ -260,39 +204,37 @@
|
|||||||
"resetLibrary": "ین کار کل صفحه را پاک میکند. آیا مطمئنید?",
|
"resetLibrary": "ین کار کل صفحه را پاک میکند. آیا مطمئنید?",
|
||||||
"removeItemsFromsLibrary": "حذف {{count}} آیتم(ها) از کتابخانه?",
|
"removeItemsFromsLibrary": "حذف {{count}} آیتم(ها) از کتابخانه?",
|
||||||
"invalidEncryptionKey": "کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.",
|
"invalidEncryptionKey": "کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.",
|
||||||
"collabOfflineWarning": "اتصال به اینترنت در دسترس نیست.\nتغییرات شما ذخیره نمی شود!",
|
"collabOfflineWarning": "اتصال به اینترنت در دسترس نیست.\nتغییرات شما ذخیره نمی شود!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "نوع فایل پشتیبانی نشده.",
|
"unsupportedFileType": "نوع فایل پشتیبانی نشده.",
|
||||||
"imageInsertError": "عکس ارسال نشد. بعداً دوباره تلاش کنید...",
|
"imageInsertError": "عکس ارسال نشد. بعداً دوباره تلاش کنید...",
|
||||||
"fileTooBig": "فایل خیلی بزرگ است حداکثر اندازه مجاز {{maxSize}}.",
|
"fileTooBig": "فایل خیلی بزرگ است حداکثر اندازه مجاز {{maxSize}}.",
|
||||||
"svgImageInsertError": "تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.",
|
"svgImageInsertError": "تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.",
|
||||||
"failedToFetchImage": "گرفتن تصویر ناموفق بود.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "SVG نادرست.",
|
||||||
"cannotResolveCollabServer": "به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.",
|
"cannotResolveCollabServer": "به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.",
|
||||||
"importLibraryError": "دادهها بارگذاری نشدند",
|
"importLibraryError": "دادهها بارگذاری نشدند",
|
||||||
"saveLibraryError": "ذخیرهسازی در سرور با مشکل مواجه شد. لطفا فایل خود را در دستگاه خود به صورت محلی ذخیره کنید تا مطمئن شوید تغییرات اعمال شده را از دست نخواهید داد.",
|
|
||||||
"collabSaveFailed": "در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.",
|
"collabSaveFailed": "در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.",
|
||||||
"collabSaveFailed_sizeExceeded": "در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.",
|
"collabSaveFailed_sizeExceeded": "در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.",
|
||||||
"imageToolNotSupported": "تصاویر غیر فعال شدند.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "به نظر میرسد از مرورگر Brave با تنظیم <bold> مسدود کردن شدید اثرانگشت</bold> استفاده میکنید.",
|
"line1": "به نظر میرسد از مرورگر Brave با تنظیم <bold> مسدود کردن شدید اثرانگشت</bold> استفاده میکنید.",
|
||||||
"line2": "این می تواند منجر به شکستن <bold>عناصر متن</bold> در نقاشی های شما شود.",
|
"line2": "این می تواند منجر به شکستن <bold>عناصر متن</bold> در نقاشی های شما شود.",
|
||||||
"line3": "اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار میتوانید <link>این مراحل</link> را دنبال کنید.",
|
"line3": "اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار میتوانید <link>این مراحل</link> را دنبال کنید.",
|
||||||
"line4": "اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک <issueLink>مشکل</issueLink> را در GitHub ما باز کنید یا برای ما در <discordLink>Discord</discordLink> بنویسید"
|
"line4": "اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک <issueLink>مشکل</issueLink> را در GitHub ما باز کنید یا برای ما در <discordLink>Discord</discordLink> بنویسید."
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "عناصر افزوده شده نمی توانند به کتابخانه افزوده شوند.",
|
"embeddable": "",
|
||||||
"iframe": "عناصر IFrame نمی توانند به کتابخانه افزوده شوند.",
|
"iframe": "",
|
||||||
"image": "پشتیبانی از افزودن تصاویر به کتابخانه به زودی اضافه خواهد شد!"
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "نمی تواند جاگذاری شود (نمی تواند از کلیپبورد بخواند).",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "نمیتواند جایگذاری شود.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": "نمی تواند در کلیپبورد کپی شود."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "گزینش",
|
"selection": "گزینش",
|
||||||
"lasso": "",
|
|
||||||
"image": "وارد کردن تصویر",
|
"image": "وارد کردن تصویر",
|
||||||
"rectangle": "مستطیل",
|
"rectangle": "مستطیل",
|
||||||
"diamond": "لوزی",
|
"diamond": "لوزی",
|
||||||
@@ -304,66 +246,45 @@
|
|||||||
"library": "کتابخانه",
|
"library": "کتابخانه",
|
||||||
"lock": "ابزار انتخاب شده را بعد از کشیدن نگه دار",
|
"lock": "ابزار انتخاب شده را بعد از کشیدن نگه دار",
|
||||||
"penMode": "حالت قلم - جلوگیری از تماس",
|
"penMode": "حالت قلم - جلوگیری از تماس",
|
||||||
"link": "افزودن/بهروزرسانی لینک برای شکل انتخابی",
|
"link": "افزودن/بهروزرسانی پیوند برای شکل انتخابی",
|
||||||
"eraser": "پاک کن",
|
"eraser": "پاک کن",
|
||||||
"frame": "ابزار فریم",
|
"frame": "",
|
||||||
"magicframe": "وایرفریم به کد",
|
"magicframe": "",
|
||||||
"embeddable": "افزونه وب",
|
"embeddable": "",
|
||||||
"laser": "اشاره گر لیزری",
|
"laser": "",
|
||||||
"hand": "دست (ابزار پانینگ)",
|
"hand": "دست (ابزار پانینگ)",
|
||||||
"extraTools": "ابزارهای بیشتر",
|
"extraTools": "ابزارهای بیشتر",
|
||||||
"mermaidToExcalidraw": "مرمید به excalidraw",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "مستطیل",
|
|
||||||
"diamond": "لوزی",
|
|
||||||
"ellipse": "بیضی",
|
|
||||||
"arrow": "پیکان",
|
|
||||||
"line": "خط",
|
|
||||||
"freedraw": "کشیدن",
|
|
||||||
"text": "متن",
|
|
||||||
"image": "تصویر",
|
|
||||||
"group": "گروه",
|
|
||||||
"frame": "قاب",
|
|
||||||
"magicframe": "وایرفریم به کد",
|
|
||||||
"embeddable": "افزونه وب",
|
|
||||||
"selection": "انتخاب",
|
|
||||||
"iframe": "آی فریم"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "عملیات روی بوم",
|
"canvasActions": "عملیات روی بوم",
|
||||||
"selectedShapeActions": "عملیات روی شکل انتخاب شده",
|
"selectedShapeActions": "عملیات روی شکل انتخاب شده",
|
||||||
"shapes": "اشکال"
|
"shapes": "شکلها"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "برای حرکت دادن بوم، چرخ ماوس یا فاصله را در حین کشیدن نگه دارید یا از ابزار دستی استفاده کنید",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "برای چند نقطه کلیک و برای یک خط بکشید",
|
"linearElement": "برای چند نقطه کلیک و برای یک خط بکشید",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "کلیک کنید و بکشید و وقتی کار تمام شد رها کنید",
|
"freeDraw": "کلیک کنید و بکشید و وقتی کار تمام شد رها کنید",
|
||||||
"text": "نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید",
|
"text": "نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید",
|
||||||
"embeddable": "کلیک-درگ برای ساخت افزونه وب",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "دوبار کلیک کنید یا Enter را فشار دهید تا نقاط را ویرایش کنید",
|
||||||
"text_editing": "",
|
"text_editing": "Escape یا CtrlOrCmd+ENTER را فشار دهید تا ویرایش تمام شود",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "روی آخرین نقطه کلیک کنید یا کلید ESC را بزنید یا کلید Enter را بزنید برای اتمام کار",
|
||||||
"lockAngle": "",
|
"lockAngle": "با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید",
|
||||||
"resize": "",
|
"resize": "می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید",
|
||||||
"resizeImage": "",
|
"resizeImage": "با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،\nبرای تغییر اندازه از مرکز، ALT را نگه دارید",
|
||||||
"rotate": "",
|
"rotate": "با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "CtrlOrCmd را نگه دارید و دوبار کلیک کنید یا CtrlOrCmd + Enter را فشار دهید تا نقاط را ویرایش کنید.",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،\nیا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود",
|
||||||
"publishLibrary": "کتابخانه خود را منتشر کنید",
|
"publishLibrary": "کتابخانه خود را منتشر کنید",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "برای افزودن اینتر را بزنید",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "CtrlOrCmd را برای انتخاب عمیق و جلوگیری از کشیدن نگه دارید",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Alt را نگه دارید تا عناصر علامت گذاری شده برای حذف برگردند",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "احتمالاً میتوان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه \"about:config\" دیدن کنید.",
|
"firefox_clipboard_write": "احتمالاً میتوان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه \"about:config\" دیدن کنید.",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "پیش نمایش نشان داده نمی شود",
|
"cannotShowPreview": "پیش نمایش نشان داده نمی شود",
|
||||||
@@ -371,19 +292,16 @@
|
|||||||
"canvasTooBigTip": "نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید."
|
"canvasTooBigTip": "نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید."
|
||||||
},
|
},
|
||||||
"errorSplash": {
|
"errorSplash": {
|
||||||
"headingMain": "مشکلی رخ داده. امتحان کنید <button> بارگذاری مجدد صفحه </button>.",
|
"headingMain": "",
|
||||||
"clearCanvasMessage": "اگر بازنشانی صفحه مشکل را حل نکرد <button>پاک کردن بوم</button> را امتحان کنید.",
|
"clearCanvasMessage": "اگر بازنشانی صفحه مشکل را حل نکرد این را امتحان کنید ",
|
||||||
"clearCanvasCaveat": " این باعث میشود کارهای شما ذخیره نشود ",
|
"clearCanvasCaveat": " این باعث میشود کارهای شما ذخیره نشود ",
|
||||||
"trackedToSentry": "خطا با شناسه {{eventId}} در سیستم ما رهگیری شد.",
|
"trackedToSentry": "",
|
||||||
"openIssueMessage": "ما بسیار محتاط بودیم که اطلاعات صحنه شما را در خطا لحاظ نکنیم. اگر صحنه شما خصوصی نیست، لطفاً ما را دنبال کنید\n<button> رد یابی خطا </button>. لطفاً اطلاعات زیر را با کپی و جایگذاری در مشکل GitHub وارد کنید.",
|
"openIssueMessage": "",
|
||||||
"sceneContent": "محتوای صحنه:"
|
"sceneContent": "محتوای صحنه:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "یا"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "از دیگران برای همکاری در کار خود دعوت کنید.",
|
"desc_intro": "می توانید افرادی را به صحنه فعلی خود دعوت کنید تا با شما همکاری کنند.",
|
||||||
"desc_privacy": "نگران نباشید، این نشست به صورت پایانه-به-پایانه رمزنگاری شده است و کاملا امن است. حتی سرورهای ما نیز قادر به دیدن ترسیمات شما نیستند.",
|
"desc_privacy": "نگران نباشید، این جلسه از رمزگذاری دوطرفه استفاده می کند، پس هر چیزی بکشید خصوصی خواهد ماند. حتی سرور ما نمیتواند ببیند چیزی که شما طراحی میکنید.",
|
||||||
"button_startSession": "شروع جلسه",
|
"button_startSession": "شروع جلسه",
|
||||||
"button_stopSession": "پایان جلسه",
|
"button_stopSession": "پایان جلسه",
|
||||||
"desc_inProgressIntro": "جلسه همکاری آنلاین در حال انجام است.",
|
"desc_inProgressIntro": "جلسه همکاری آنلاین در حال انجام است.",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "کلیک",
|
"click": "کلیک",
|
||||||
"deepSelect": "انتخاب عمیق",
|
"deepSelect": "انتخاب عمیق",
|
||||||
"deepBoxSelect": "انتخاب عمیق در کادر، و جلوگیری از کشیدن",
|
"deepBoxSelect": "انتخاب عمیق در کادر، و جلوگیری از کشیدن",
|
||||||
"createFlowchart": "از هر آیتمی یک فلوچارت ایجاد کنید",
|
|
||||||
"navigateFlowchart": "پیمایش یک فلوچارت",
|
|
||||||
"curvedArrow": "فلش خمیده",
|
"curvedArrow": "فلش خمیده",
|
||||||
"curvedLine": "منحنی",
|
"curvedLine": "منحنی",
|
||||||
"documentation": "مستندات",
|
"documentation": "مستندات",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "بزرگنمایی قسمت انتخاب شده",
|
"zoomToSelection": "بزرگنمایی قسمت انتخاب شده",
|
||||||
"toggleElementLock": "قفل/بازکردن انتخاب شده ها",
|
"toggleElementLock": "قفل/بازکردن انتخاب شده ها",
|
||||||
"movePageUpDown": "حرکت صفحه به بالا/پایین",
|
"movePageUpDown": "حرکت صفحه به بالا/پایین",
|
||||||
"movePageLeftRight": "حرکت صفحه به چپ/راست",
|
"movePageLeftRight": "حرکت صفحه به چپ/راست"
|
||||||
"cropStart": "برش تصویر",
|
|
||||||
"cropFinish": "پایان برش تصویر"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "پاک کردن بوم"
|
"title": "پاک کردن بوم"
|
||||||
@@ -449,22 +363,22 @@
|
|||||||
"twitterUsername": "نام کاربری توییتر",
|
"twitterUsername": "نام کاربری توییتر",
|
||||||
"libraryName": "نام کتابخانه",
|
"libraryName": "نام کتابخانه",
|
||||||
"libraryDesc": "توضیحات کتابخانه",
|
"libraryDesc": "توضیحات کتابخانه",
|
||||||
"website": "وبسایت",
|
"website": "تارنما",
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"authorName": "نام یا نام کاربری شما",
|
"authorName": "نام یا نام کاربری شما",
|
||||||
"libraryName": "اسم کتابخانه",
|
"libraryName": "اسم کتابخانه",
|
||||||
"libraryDesc": "شرحی از کتابخانه شما برای کمک به مردم برای درک استفاده از آن",
|
"libraryDesc": "شرحی از کتابخانه شما برای کمک به مردم برای درک استفاده از آن",
|
||||||
"githubHandle": "دسته GitHub (اختیاری)، بنابراین می توانید پس از ارسال برای بررسی، کتابخانه را ویرایش کنید",
|
"githubHandle": "دسته GitHub (اختیاری)، بنابراین می توانید پس از ارسال برای بررسی، کتابخانه را ویرایش کنید",
|
||||||
"twitterHandle": "نام کاربری توییتر (اختیاری)، بنابراین میدانیم هنگام تبلیغ در توییتر به چه کسی اعتبار دهیم",
|
"twitterHandle": "نام کاربری توییتر (اختیاری)، بنابراین می دانیم هنگام تبلیغ در توییتر به چه کسی اعتبار دهیم",
|
||||||
"website": "پیوند به وب سایت شخصی شما یا هر جای دیگر (اختیاری)"
|
"website": "پیوند به وب سایت شخصی شما یا هر جای دیگر (اختیاری)"
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"required": "لازم",
|
"required": "لازم",
|
||||||
"website": "وارد کردن آدرس درست"
|
"website": "وارد کردن آدرس درست"
|
||||||
},
|
},
|
||||||
"noteDescription": "کتابخانه خود را ارسال کنید تا در <link/> مخرن کتابخانه عمومی <link> برای بقیه مردم گنجانده شود تا در طرح هایشان استفاده کنند.",
|
"noteDescription": "",
|
||||||
"noteGuidelines": "کتابخانه باید ابتدا به صورت دستی تأیید شود. لطفا قبل انتشار <link>راهنما</link> را مطالعه کنید. برای برقراری ارتباط و ایجاد تغییرات در صورت درخواست، به یک حساب GitHub نیاز دارید، اما خیلی الزامی نیست.",
|
"noteGuidelines": "",
|
||||||
"noteLicense": "با ارسال، موافقت می کنید که کتابخانه تحت عنوان <link>MIT License</link> منتشر شود،که به طور خلاصه به این معنی است که هر کسی می تواند بدون محدودیت از آنها استفاده کند.",
|
"noteLicense": "",
|
||||||
"noteItems": "هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:",
|
"noteItems": "هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:",
|
||||||
"atleastOneLibItem": "لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید",
|
"atleastOneLibItem": "لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید",
|
||||||
"republishWarning": "توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام بهروزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید."
|
"republishWarning": "توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام بهروزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید."
|
||||||
@@ -475,30 +389,30 @@
|
|||||||
},
|
},
|
||||||
"confirmDialog": {
|
"confirmDialog": {
|
||||||
"resetLibrary": "تنظیم مجدد کتابخانه",
|
"resetLibrary": "تنظیم مجدد کتابخانه",
|
||||||
"removeItemsFromLib": "موارد انتخاب شده از کتابخوانه حذف شوند"
|
"removeItemsFromLib": "موارد انتخاب شده از موارد پسندیده حذف شوند"
|
||||||
},
|
},
|
||||||
"imageExportDialog": {
|
"imageExportDialog": {
|
||||||
"header": "خروجی گرفتن از تصویر",
|
"header": "",
|
||||||
"label": {
|
"label": {
|
||||||
"withBackground": "پس زمینه",
|
"withBackground": "پس زمینه",
|
||||||
"onlySelected": "فقط انتخاب شده ها",
|
"onlySelected": "",
|
||||||
"darkMode": "حالت تاریک",
|
"darkMode": "حالت تیره",
|
||||||
"embedScene": "صحنه افزونه",
|
"embedScene": "",
|
||||||
"scale": "نسبت",
|
"scale": "",
|
||||||
"padding": "فاصله"
|
"padding": ""
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "داده های صحنه در فایل PNG/SVG صادر شده ذخیره می شود تا صحنه را بتوان از آن بازیابی کرد.\nاندازه فایل خروجی را افزایش می دهد."
|
"embedScene": ""
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "تبدیل به PNG",
|
"exportToPng": "",
|
||||||
"exportToSvg": "تبدیل به SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "کپی PNG در حافظه موقت"
|
"copyPngToClipboard": ""
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"exportToPng": "PNG",
|
"exportToPng": "PNG",
|
||||||
"exportToSvg": "SVG",
|
"exportToSvg": "SVG",
|
||||||
"copyPngToClipboard": "کپی در حافظه موقت"
|
"copyPngToClipboard": "کپی در کلیپبورد"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encrypted": {
|
"encrypted": {
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "زاویه",
|
"angle": "زاویه",
|
||||||
"shapes": "اشکال",
|
"element": "اِلمان",
|
||||||
|
"elements": "اِلمان ها",
|
||||||
"height": "ارتفاع",
|
"height": "ارتفاع",
|
||||||
"scene": "صحنه",
|
"scene": "صحنه",
|
||||||
"selected": "انتخاب شده",
|
"selected": "انتخاب شده",
|
||||||
"storage": "حافظه",
|
"storage": "حافظه",
|
||||||
"fullTitle": "ویژگیهای بوم و شکل",
|
"title": "آمار برای نردها",
|
||||||
"title": "ویژگیها",
|
|
||||||
"generalStats": "عمومی",
|
|
||||||
"elementProperties": "ویژگیهای شکل",
|
|
||||||
"total": "مجموع",
|
"total": "مجموع",
|
||||||
"version": "نسخه",
|
"version": "نسخه",
|
||||||
"versionCopy": "برای کپی کردن کلیک کنید",
|
"versionCopy": "برای کپی کردن کلیک کنید",
|
||||||
@@ -524,18 +436,16 @@
|
|||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"addedToLibrary": "به مجموعه اضافه شد",
|
"addedToLibrary": "به مجموعه اضافه شد",
|
||||||
"copyStyles": "سبک کپی شد.",
|
"copyStyles": "کپی سبک.",
|
||||||
"copyToClipboard": "در کلیپبورد کپی شد.",
|
"copyToClipboard": "در کلیپبورد کپی شد.",
|
||||||
"copyToClipboardAsPng": "کپی {{exportSelection}} در حافظه موقت به عنوان PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "کپی {{exportSelection}} در کلیپبورد به عنوان PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "{{exportSelection}} در حافظه موقت به عنوان\n({{exportColorScheme}}) رونویسی شد",
|
|
||||||
"fileSaved": "فایل ذخیره شد.",
|
"fileSaved": "فایل ذخیره شد.",
|
||||||
"fileSavedToFilename": "ذخیره در {filename}",
|
"fileSavedToFilename": "ذخیره در {filename}",
|
||||||
"canvas": "بوم",
|
"canvas": "بوم",
|
||||||
"selection": "انتخاب",
|
"selection": "انتخاب",
|
||||||
"pasteAsSingleElement": "از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،\nیا در یک ویرایشگر متن موجود جایگذاری کنید",
|
"pasteAsSingleElement": "از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،\nیا در یک ویرایشگر متن موجود جایگذاری کنید",
|
||||||
"unableToEmbed": "قرار دادن این Url در حال حاضر مجاز نیست. درGitHub برای درخواست Url Whitelisted مشکلی ایجاد کنید",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "پیوندی که افزودید با قالب مورد انتظار مطابقت ندارد. لطفاً سعی کنید رشته \"افزونه\" ارائه شده توسط سایت منبع را بچسبانید",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": "لینک در کلیپبورد کپی شد"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "شفاف",
|
"transparent": "شفاف",
|
||||||
@@ -568,97 +478,48 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
"mostUsedCustomColors": "",
|
||||||
"mostUsedCustomColors": "رنگ های بهتازگی بهکار گرفته شده",
|
|
||||||
"colors": "رنگها",
|
"colors": "رنگها",
|
||||||
"shades": "جلوهها",
|
"shades": "جلوهها",
|
||||||
"hexCode": "کدِ هگز",
|
"hexCode": "کدِ هگز",
|
||||||
"noShades": "هیچ سایه ای برای این رنگ در دسترس نیست"
|
"noShades": ""
|
||||||
},
|
},
|
||||||
"overwriteConfirm": {
|
"overwriteConfirm": {
|
||||||
"action": {
|
"action": {
|
||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "صادر کردن به عنوان تصاویر",
|
"title": "",
|
||||||
"button": "صادر کردن به عنوان تصاویر",
|
"button": "",
|
||||||
"description": "خروجی از داده های صحنه به عنوان تصویر که میتوانید بعدا بیافزایید."
|
"description": ""
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "ذخیره در دیسک",
|
"title": "ذخیره در دیسک",
|
||||||
"button": "ذخیره در دیسک",
|
"button": "ذخیره در دیسک",
|
||||||
"description": "خروجی از داده های صحنه را به عنوان فایل که بعدا می توانید بیافزایید."
|
"description": ""
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "",
|
||||||
"button": "خروجی به Excalidraw+",
|
"button": "",
|
||||||
"description": "ذخیره صفحه در میز کار Excalidraw+."
|
"description": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "بارگذاری از فایل",
|
"title": "بارگذاری از فایل",
|
||||||
"button": "بارگذاری از فایل",
|
"button": "بارگذاری از فایل",
|
||||||
"description": "بارگذاری از فایل <bold>جایگزین بشه با محتوای موجود</bold>.<br></br> می توانید ابتدا با استفاده از یکی از گزینه های زیر از نقاشی خود نسخه پشتیبان تهیه کنید."
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "بارگذاری از پیوند",
|
"title": "",
|
||||||
"button": "جایگزینی محتوای من",
|
"button": "",
|
||||||
"description": "بارگذاری از فایل <bold>جایگزین بشه با محتوای موجود</bold>.<br></br> می توانید ابتدا با استفاده از یکی از گزینه های زیر از نقاشی خود نسخه پشتیبان تهیه کنید."
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "مرمید به excalidraw",
|
"title": "",
|
||||||
"button": "درج",
|
"button": "",
|
||||||
"description": "فعلا فقط <flowchartLink> فلوچارت </flowchartLink> ، <sequenceLink> توالی </sequenceLink> و <classLink> کلاس </classLink> نمودارها پشتیبانی می شوند. انواع دیگر به صورت تصویر در Excalidraw ارائه خواهند شد.",
|
"description": "",
|
||||||
"syntax": "مرمید syntax",
|
"syntax": "",
|
||||||
"preview": "پیشنمایش"
|
"preview": "پیشنمایش"
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "جستجو فوری"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "قدیمی"
|
|
||||||
},
|
|
||||||
"sceneFonts": "در این صحنه",
|
|
||||||
"availableFonts": "قلم های در دسترس",
|
|
||||||
"empty": "قلمی یافت نشد"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "کاربری یافت نشد",
|
|
||||||
"hint": {
|
|
||||||
"text": "روی کاربر بزنید تا دنبالش کنید",
|
|
||||||
"followStatus": "هماینک این کاربر را دنبال میکنید",
|
|
||||||
"inCall": "کاربر در تماسی صوتی است",
|
|
||||||
"micMuted": "میکروفون کاربر بیصدا است",
|
|
||||||
"isSpeaking": "کاربر در حال صحبت است"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "تخته فرمانها",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "انتخاب",
|
|
||||||
"confirm": "تایید",
|
|
||||||
"close": "بستن"
|
|
||||||
},
|
|
||||||
"recents": "اخیراً استفاده شده",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "در فهرستها و دستورها را جستجو کنید هم سنگهای پنهان را کشف کنید",
|
|
||||||
"noMatch": "دستوری یافت نشد..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "دستور در دسترس نیست...",
|
|
||||||
"shortcutHint": "برای تخته دستور ها {{shortcut}} را بکار بگیرید"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "Kopioi leikepöydälle PNG-tiedostona",
|
"copyAsPng": "Kopioi leikepöydälle PNG-tiedostona",
|
||||||
"copyAsSvg": "Kopioi leikepöydälle SVG-tiedostona",
|
"copyAsSvg": "Kopioi leikepöydälle SVG-tiedostona",
|
||||||
"copyText": "Kopioi tekstinä",
|
"copyText": "Kopioi tekstinä",
|
||||||
"copySource": "Kopioi lähde leikepöydälle",
|
"copySource": "",
|
||||||
"convertToCode": "Muunna koodiksi",
|
"convertToCode": "",
|
||||||
"bringForward": "Tuo eteenpäin",
|
"bringForward": "Tuo eteenpäin",
|
||||||
"sendToBack": "Vie taakse",
|
"sendToBack": "Vie taakse",
|
||||||
"bringToFront": "Tuo eteen",
|
"bringToFront": "Tuo eteen",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Kopioi tyyli",
|
"copyStyles": "Kopioi tyyli",
|
||||||
"pasteStyles": "Liitä tyyli",
|
"pasteStyles": "Liitä tyyli",
|
||||||
"stroke": "Piirto",
|
"stroke": "Piirto",
|
||||||
"changeStroke": "",
|
|
||||||
"background": "Tausta",
|
"background": "Tausta",
|
||||||
"changeBackground": "",
|
|
||||||
"fill": "Täyttö",
|
"fill": "Täyttö",
|
||||||
"strokeWidth": "Viivan leveys",
|
"strokeWidth": "Viivan leveys",
|
||||||
"strokeStyle": "Viivan tyyli",
|
"strokeStyle": "Viivan tyyli",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Ei mitään",
|
"arrowhead_none": "Ei mitään",
|
||||||
"arrowhead_arrow": "Nuoli",
|
"arrowhead_arrow": "Nuoli",
|
||||||
"arrowhead_bar": "Tasapää",
|
"arrowhead_bar": "Tasapää",
|
||||||
"arrowhead_circle": "Ympyrä",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Ympyrä (ääriviiva)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Kolmio",
|
"arrowhead_triangle": "Kolmio",
|
||||||
"arrowhead_triangle_outline": "Kolmio (ääriviiva)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "",
|
|
||||||
"arrowtype_sharp": "",
|
|
||||||
"arrowtype_round": "",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "Kirjasinkoko",
|
"fontSize": "Kirjasinkoko",
|
||||||
"fontFamily": "Kirjasintyyppi",
|
"fontFamily": "Kirjasintyyppi",
|
||||||
"addWatermark": "Lisää \"Tehty Excalidrawilla\"",
|
"addWatermark": "Lisää \"Tehty Excalidrawilla\"",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Käytössä piirtoalueella",
|
"canvasColors": "Käytössä piirtoalueella",
|
||||||
"canvasBackground": "Piirtoalueen tausta",
|
"canvasBackground": "Piirtoalueen tausta",
|
||||||
"drawingCanvas": "Piirtoalue",
|
"drawingCanvas": "Piirtoalue",
|
||||||
"clearCanvas": "Tyhjennä piirtoalue",
|
|
||||||
"layers": "Tasot",
|
"layers": "Tasot",
|
||||||
"actions": "Toiminnot",
|
"actions": "Toiminnot",
|
||||||
"language": "Kieli",
|
"language": "Kieli",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Ryhmitä valinta",
|
"group": "Ryhmitä valinta",
|
||||||
"ungroup": "Pura valittu ryhmä",
|
"ungroup": "Pura valittu ryhmä",
|
||||||
"collaborators": "Yhteistyökumppanit",
|
"collaborators": "Yhteistyökumppanit",
|
||||||
"toggleGrid": "Näytä tai piilota ruudukko",
|
"showGrid": "Näytä ruudukko",
|
||||||
"addToLibrary": "Lisää kirjastoon",
|
"addToLibrary": "Lisää kirjastoon",
|
||||||
"removeFromLibrary": "Poista kirjastosta",
|
"removeFromLibrary": "Poista kirjastosta",
|
||||||
"libraryLoadingMessage": "Ladataan kirjastoa…",
|
"libraryLoadingMessage": "Ladataan kirjastoa…",
|
||||||
"libraries": "Selaa kirjastoja",
|
"libraries": "Selaa kirjastoja",
|
||||||
"loadingScene": "Ladataan työtä…",
|
"loadingScene": "Ladataan työtä…",
|
||||||
"loadScene": "",
|
|
||||||
"align": "Tasaa",
|
"align": "Tasaa",
|
||||||
"alignTop": "Tasaa ylös",
|
"alignTop": "Tasaa ylös",
|
||||||
"alignBottom": "Tasaa alas",
|
"alignBottom": "Tasaa alas",
|
||||||
@@ -117,9 +105,7 @@
|
|||||||
"share": "Jaa",
|
"share": "Jaa",
|
||||||
"showStroke": "Näytä viivan värin valitsin",
|
"showStroke": "Näytä viivan värin valitsin",
|
||||||
"showBackground": "Näytä taustavärin valitsin",
|
"showBackground": "Näytä taustavärin valitsin",
|
||||||
"showFonts": "",
|
"toggleTheme": "Vaihda teema",
|
||||||
"toggleTheme": "",
|
|
||||||
"theme": "Teema",
|
|
||||||
"personalLib": "Oma kirjasto",
|
"personalLib": "Oma kirjasto",
|
||||||
"excalidrawLib": "Excalidraw kirjasto",
|
"excalidrawLib": "Excalidraw kirjasto",
|
||||||
"decreaseFontSize": "Pienennä kirjasinkokoa",
|
"decreaseFontSize": "Pienennä kirjasinkokoa",
|
||||||
@@ -130,20 +116,15 @@
|
|||||||
"link": {
|
"link": {
|
||||||
"edit": "Muokkaa linkkiä",
|
"edit": "Muokkaa linkkiä",
|
||||||
"editEmbed": "",
|
"editEmbed": "",
|
||||||
"create": "",
|
"create": "Luo linkki",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "Linkki",
|
"label": "Linkki",
|
||||||
"labelEmbed": "",
|
"labelEmbed": "",
|
||||||
"empty": "Linkkiä ei ole asetettu",
|
"empty": ""
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Muokkaa riviä",
|
"edit": "Muokkaa riviä",
|
||||||
"editArrow": ""
|
"exit": "Poistu rivieditorista"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Lukitse",
|
"lock": "Lukitse",
|
||||||
@@ -156,47 +137,13 @@
|
|||||||
"selectAllElementsInFrame": "",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "Teksti kaavioksi",
|
"textToDiagram": "",
|
||||||
"prompt": "",
|
"prompt": ""
|
||||||
"followUs": "Seuraa meitä",
|
|
||||||
"discordChat": "Discord-keskustelu",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Kirjastossa ei ole vielä yhtään kohdetta...",
|
"noItems": "Kirjastossa ei ole vielä yhtään kohdetta...",
|
||||||
"hint_emptyLibrary": "Valitse lisättävä kohde piirtoalueelta, tai asenna alta julkinen kirjasto.",
|
"hint_emptyLibrary": "Valitse lisättävä kohde piirtoalueelta, tai asenna alta julkinen kirjasto.",
|
||||||
"hint_emptyPrivateLibrary": "Valitse lisättävä kohde piirtoalueelta.",
|
"hint_emptyPrivateLibrary": "Valitse lisättävä kohde piirtoalueelta."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Tyhjennä piirtoalue",
|
"clearReset": "Tyhjennä piirtoalue",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Vie kuva...",
|
"exportImage": "Vie kuva...",
|
||||||
"export": "Tallenna nimellä...",
|
"export": "Tallenna nimellä...",
|
||||||
"copyToClipboard": "Kopioi leikepöydälle",
|
"copyToClipboard": "Kopioi leikepöydälle",
|
||||||
"copyLink": "",
|
|
||||||
"save": "Tallenna nykyiseen tiedostoon",
|
"save": "Tallenna nykyiseen tiedostoon",
|
||||||
"saveAs": "Tallenna nimellä",
|
"saveAs": "Tallenna nimellä",
|
||||||
"load": "Avaa",
|
"load": "Avaa",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Koko näyttö",
|
"fullScreen": "Koko näyttö",
|
||||||
"darkMode": "Tumma tila",
|
"darkMode": "Tumma tila",
|
||||||
"lightMode": "Vaalea tila",
|
"lightMode": "Vaalea tila",
|
||||||
"systemMode": "Järjestelmätila",
|
|
||||||
"zenMode": "Zen-tila",
|
"zenMode": "Zen-tila",
|
||||||
"objectsSnapMode": "",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "Poistu zen-tilasta",
|
"exitZenMode": "Poistu zen-tilasta",
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Pyyhi",
|
"clear": "Pyyhi",
|
||||||
"remove": "Poista",
|
"remove": "Poista",
|
||||||
"embed": "",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Julkaise",
|
||||||
"submit": "Lähetä",
|
"submit": "Lähetä",
|
||||||
"confirm": "Vahvista",
|
"confirm": "Vahvista",
|
||||||
"embeddableInteractionButton": ""
|
"embeddableInteractionButton": ""
|
||||||
@@ -260,8 +204,7 @@
|
|||||||
"resetLibrary": "Tämä tyhjentää kirjastosi. Jatketaanko?",
|
"resetLibrary": "Tämä tyhjentää kirjastosi. Jatketaanko?",
|
||||||
"removeItemsFromsLibrary": "Poista {{count}} kohdetta kirjastosta?",
|
"removeItemsFromsLibrary": "Poista {{count}} kohdetta kirjastosta?",
|
||||||
"invalidEncryptionKey": "Salausavaimen on oltava 22 merkkiä pitkä. Live-yhteistyö ei ole käytössä.",
|
"invalidEncryptionKey": "Salausavaimen on oltava 22 merkkiä pitkä. Live-yhteistyö ei ole käytössä.",
|
||||||
"collabOfflineWarning": "Internet-yhteyttä ei ole saatavilla.\nMuutoksiasi ei tallenneta!",
|
"collabOfflineWarning": "Internet-yhteyttä ei ole saatavilla.\nMuutoksiasi ei tallenneta!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Tiedostotyyppiä ei tueta.",
|
"unsupportedFileType": "Tiedostotyyppiä ei tueta.",
|
||||||
@@ -269,9 +212,9 @@
|
|||||||
"fileTooBig": "Tiedosto on liian suuri. Suurin sallittu koko on {{maxSize}}.",
|
"fileTooBig": "Tiedosto on liian suuri. Suurin sallittu koko on {{maxSize}}.",
|
||||||
"svgImageInsertError": "SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.",
|
"svgImageInsertError": "SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.",
|
||||||
"failedToFetchImage": "",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "Virheellinen SVG.",
|
||||||
"cannotResolveCollabServer": "Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.",
|
"cannotResolveCollabServer": "Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.",
|
||||||
"importLibraryError": "Kokoelman lataaminen epäonnistui",
|
"importLibraryError": "Kokoelman lataaminen epäonnistui",
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.",
|
"collabSaveFailed": "Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.",
|
||||||
"collabSaveFailed_sizeExceeded": "Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.",
|
"collabSaveFailed_sizeExceeded": "Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.",
|
||||||
"imageToolNotSupported": "",
|
"imageToolNotSupported": "",
|
||||||
@@ -287,12 +230,11 @@
|
|||||||
"image": ""
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "Ei voitu liittää.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": "Kopiointi leikepöydälle epäonnistui."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Valinta",
|
"selection": "Valinta",
|
||||||
"lasso": "",
|
|
||||||
"image": "Lisää kuva",
|
"image": "Lisää kuva",
|
||||||
"rectangle": "Suorakulmio",
|
"rectangle": "Suorakulmio",
|
||||||
"diamond": "Vinoneliö",
|
"diamond": "Vinoneliö",
|
||||||
@@ -304,32 +246,16 @@
|
|||||||
"library": "Kirjasto",
|
"library": "Kirjasto",
|
||||||
"lock": "Pidä valittu työkalu aktiivisena piirron jälkeen",
|
"lock": "Pidä valittu työkalu aktiivisena piirron jälkeen",
|
||||||
"penMode": "Kynätila - estä kosketus",
|
"penMode": "Kynätila - estä kosketus",
|
||||||
"link": "",
|
"link": "Lisää/päivitä linkki valitulle muodolle",
|
||||||
"eraser": "Poistotyökalu",
|
"eraser": "Poistotyökalu",
|
||||||
"frame": "",
|
"frame": "",
|
||||||
"magicframe": "",
|
"magicframe": "",
|
||||||
"embeddable": "Verkkoupote",
|
|
||||||
"laser": "Laserosoitin",
|
|
||||||
"hand": "Käsi (panning-työkalu)",
|
|
||||||
"extraTools": "Lisää työkaluja",
|
|
||||||
"mermaidToExcalidraw": "Mermaid Excalidrawiksi",
|
|
||||||
"convertElementType": ""
|
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
"selection": "",
|
"laser": "",
|
||||||
"iframe": ""
|
"hand": "Käsi (panning-työkalu)",
|
||||||
|
"extraTools": "",
|
||||||
|
"mermaidToExcalidraw": "",
|
||||||
|
"magicSettings": ""
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Piirtoalueen toiminnot",
|
"canvasActions": "Piirtoalueen toiminnot",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Muodot"
|
"shapes": "Muodot"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Piirtoalueen liikuttamiseksi pidä hiiren pyörää tai välilyöntiä pohjassa tai käytä käsityökalua",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Klikkaa piirtääksesi useampi piste, raahaa piirtääksesi yksittäinen viiva",
|
"linearElement": "Klikkaa piirtääksesi useampi piste, raahaa piirtääksesi yksittäinen viiva",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Paina ja raahaa, päästä irti kun olet valmis",
|
"freeDraw": "Paina ja raahaa, päästä irti kun olet valmis",
|
||||||
"text": "Vinkki: voit myös lisätä tekstiä kaksoisnapsauttamalla mihin tahansa valintatyökalulla",
|
"text": "Vinkki: voit myös lisätä tekstiä kaksoisnapsauttamalla mihin tahansa valintatyökalulla",
|
||||||
"embeddable": "",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "Kaksoisnapsauta tai paina ENTER muokataksesi tekstiä",
|
||||||
"text_editing": "",
|
"text_editing": "Paina Escape tai CtrlOrCmd+ENTER lopettaaksesi muokkaamisen",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Lopeta klikkaamalla viimeistä pistettä, painamalla Escape- tai Enter-näppäintä",
|
||||||
"lockAngle": "",
|
"lockAngle": "Voit rajoittaa kulmaa pitämällä SHIFT-näppäintä alaspainettuna",
|
||||||
"resize": "",
|
"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": "",
|
"resizeImage": "Voit muuttaa kokoa vapaasti pitämällä SHIFTiä pohjassa, pidä ALT pohjassa muuttaaksesi kokoa keskipisteen ympäri",
|
||||||
"rotate": "",
|
"rotate": "Voit rajoittaa kulman pitämällä SHIFT pohjassa pyörittäessäsi",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Pidä CtrlOrCmd pohjassa ja kaksoisnapsauta tai paina CtrlOrCmd + Enter muokataksesi pisteitä",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Poista piste(et) painamalla delete, monista painamalla CtrlOrCmd+D, tai liikuta raahaamalla",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "Valitse muokattava piste (monivalinta pitämällä SHIFT pohjassa), tai paina Alt ja klikkaa lisätäksesi uusia pisteitä",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "Klikkaa asettaaksesi kuvan, tai klikkaa ja raahaa asettaaksesi sen koon manuaalisesti",
|
||||||
"publishLibrary": "Julkaise oma kirjasto",
|
"publishLibrary": "Julkaise oma kirjasto",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Lisää tekstiä painamalla enter",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Käytä syvävalintaa ja estä raahaus painamalla CtrlOrCmd",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Pidä Alt alaspainettuna, kumotaksesi merkittyjen elementtien poistamisen",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Tämä ominaisuus voidaan todennäköisesti ottaa käyttöön asettamalla \"dom.events.asyncClipboard.clipboardItem\" kohta \"true\":ksi. Vaihtaaksesi selaimen kohdan Firefoxissa, käy \"about:config\" sivulla.",
|
"firefox_clipboard_write": "Tämä ominaisuus voidaan todennäköisesti ottaa käyttöön asettamalla \"dom.events.asyncClipboard.clipboardItem\" kohta \"true\":ksi. Vaihtaaksesi selaimen kohdan Firefoxissa, käy \"about:config\" sivulla.",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Esikatselua ei voitu näyttää",
|
"cannotShowPreview": "Esikatselua ei voitu näyttää",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille <button>virheenseurantajärjestelmässämme.</button> Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.",
|
"openIssueMessage": "Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille <button>virheenseurantajärjestelmässämme.</button> Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.",
|
||||||
"sceneContent": "Piirroksen tiedot:"
|
"sceneContent": "Piirroksen tiedot:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Tai"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "",
|
"desc_intro": "Voit kutsua ihmisiä piirrokseesi tekemään yhteistyötä kanssasi.",
|
||||||
"desc_privacy": "",
|
"desc_privacy": "Älä huoli, istunto käyttää päästä-päähän-salausta, joten mitä tahansa piirrätkin, se pysyy salassa. Edes palvelimemme eivät näe mitä keksit.",
|
||||||
"button_startSession": "Aloita istunto",
|
"button_startSession": "Aloita istunto",
|
||||||
"button_stopSession": "Lopeta istunto",
|
"button_stopSession": "Lopeta istunto",
|
||||||
"desc_inProgressIntro": "Jaettu istunto on nyt käynnissä.",
|
"desc_inProgressIntro": "Jaettu istunto on nyt käynnissä.",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "klikkaa",
|
"click": "klikkaa",
|
||||||
"deepSelect": "Syvävalinta",
|
"deepSelect": "Syvävalinta",
|
||||||
"deepBoxSelect": "Käytä syvävalintaa ja estä raahaus",
|
"deepBoxSelect": "Käytä syvävalintaa ja estä raahaus",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "Kaareva nuoli",
|
"curvedArrow": "Kaareva nuoli",
|
||||||
"curvedLine": "Kaareva viiva",
|
"curvedLine": "Kaareva viiva",
|
||||||
"documentation": "Käyttöohjeet",
|
"documentation": "Käyttöohjeet",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Näytä valinta",
|
"zoomToSelection": "Näytä valinta",
|
||||||
"toggleElementLock": "Lukitse / poista lukitus valinta",
|
"toggleElementLock": "Lukitse / poista lukitus valinta",
|
||||||
"movePageUpDown": "Siirrä sivua ylös/alas",
|
"movePageUpDown": "Siirrä sivua ylös/alas",
|
||||||
"movePageLeftRight": "Siirrä sivua vasemmalle/oikealle",
|
"movePageLeftRight": "Siirrä sivua vasemmalle/oikealle"
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Pyyhi piirtoalue"
|
"title": "Pyyhi piirtoalue"
|
||||||
@@ -482,7 +396,7 @@
|
|||||||
"label": {
|
"label": {
|
||||||
"withBackground": "",
|
"withBackground": "",
|
||||||
"onlySelected": "",
|
"onlySelected": "",
|
||||||
"darkMode": "Tumma tila",
|
"darkMode": "",
|
||||||
"embedScene": "",
|
"embedScene": "",
|
||||||
"scale": "",
|
"scale": "",
|
||||||
"padding": ""
|
"padding": ""
|
||||||
@@ -493,12 +407,12 @@
|
|||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "",
|
"exportToPng": "",
|
||||||
"exportToSvg": "",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "Kopioi PNG leikepöydälle"
|
"copyPngToClipboard": ""
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"exportToPng": "PNG",
|
"exportToPng": "",
|
||||||
"exportToSvg": "SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "Kopioi leikepöydälle"
|
"copyPngToClipboard": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encrypted": {
|
"encrypted": {
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Kulma",
|
"angle": "Kulma",
|
||||||
"shapes": "",
|
"element": "Elementti",
|
||||||
|
"elements": "Elementit",
|
||||||
"height": "Korkeus",
|
"height": "Korkeus",
|
||||||
"scene": "Teos",
|
"scene": "Teos",
|
||||||
"selected": "Valitut",
|
"selected": "Valitut",
|
||||||
"storage": "Tallennustila",
|
"storage": "Tallennustila",
|
||||||
"fullTitle": "",
|
"title": "Tilastoja nörteille",
|
||||||
"title": "",
|
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "Yhteensä",
|
"total": "Yhteensä",
|
||||||
"version": "Versio",
|
"version": "Versio",
|
||||||
"versionCopy": "Klikkaa kopioidaksesi",
|
"versionCopy": "Klikkaa kopioidaksesi",
|
||||||
@@ -527,32 +439,30 @@
|
|||||||
"copyStyles": "Tyylit kopioitiin.",
|
"copyStyles": "Tyylit kopioitiin.",
|
||||||
"copyToClipboard": "Kopioitiin leikepöydälle.",
|
"copyToClipboard": "Kopioitiin leikepöydälle.",
|
||||||
"copyToClipboardAsPng": "Kopioitiin {{exportSelection}} leikepöydälle PNG:nä\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "Kopioitiin {{exportSelection}} leikepöydälle PNG:nä\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Tiedosto tallennettu.",
|
"fileSaved": "Tiedosto tallennettu.",
|
||||||
"fileSavedToFilename": "Tallennettiin kohteeseen {filename}",
|
"fileSavedToFilename": "Tallennettiin kohteeseen {filename}",
|
||||||
"canvas": "piirtoalue",
|
"canvas": "piirtoalue",
|
||||||
"selection": "valinta",
|
"selection": "valinta",
|
||||||
"pasteAsSingleElement": "Käytä {{shortcut}} liittääksesi yhtenä elementtinä,\ntai liittääksesi olemassa olevaan tekstieditoriin",
|
"pasteAsSingleElement": "Käytä {{shortcut}} liittääksesi yhtenä elementtinä,\ntai liittääksesi olemassa olevaan tekstieditoriin",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Läpinäkyvä",
|
"transparent": "Läpinäkyvä",
|
||||||
"black": "Musta",
|
"black": "",
|
||||||
"white": "Valkoinen",
|
"white": "",
|
||||||
"red": "Punainen",
|
"red": "",
|
||||||
"pink": "Pinkki",
|
"pink": "",
|
||||||
"grape": "Rypäle",
|
"grape": "",
|
||||||
"violet": "Violetti",
|
"violet": "",
|
||||||
"gray": "Harmaa",
|
"gray": "",
|
||||||
"blue": "Sininen",
|
"blue": "",
|
||||||
"cyan": "Syaani",
|
"cyan": "",
|
||||||
"teal": "Sinivihreä",
|
"teal": "",
|
||||||
"green": "Vihreä",
|
"green": "",
|
||||||
"yellow": "Keltainen",
|
"yellow": "",
|
||||||
"orange": "Oranssi",
|
"orange": "",
|
||||||
"bronze": "Pronssi"
|
"bronze": ""
|
||||||
},
|
},
|
||||||
"welcomeScreen": {
|
"welcomeScreen": {
|
||||||
"app": {
|
"app": {
|
||||||
@@ -568,35 +478,34 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
"mostUsedCustomColors": "",
|
||||||
"mostUsedCustomColors": "Eniten käytetyt omat värit",
|
"colors": "",
|
||||||
"colors": "Värit",
|
"shades": "",
|
||||||
"shades": "Varjot",
|
"hexCode": "",
|
||||||
"hexCode": "Hex koodi",
|
|
||||||
"noShades": ""
|
"noShades": ""
|
||||||
},
|
},
|
||||||
"overwriteConfirm": {
|
"overwriteConfirm": {
|
||||||
"action": {
|
"action": {
|
||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "Vie kuva",
|
"title": "",
|
||||||
"button": "Vie kuva",
|
"button": "",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "Tallenna levylle",
|
"title": "",
|
||||||
"button": "Tallenna levylle",
|
"button": "",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "",
|
||||||
"button": "Vie Excalidraw+:aan",
|
"button": "",
|
||||||
"description": ""
|
"description": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "Lataa tiedostosta",
|
"title": "",
|
||||||
"button": "Lataa tiedostosta",
|
"button": "",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
@@ -611,54 +520,6 @@
|
|||||||
"button": "",
|
"button": "",
|
||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "",
|
"syntax": "",
|
||||||
"preview": "Esikatsele"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "",
|
|
||||||
"followStatus": "",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Valitse",
|
|
||||||
"confirm": "Vahvista",
|
|
||||||
"close": "Sulje"
|
|
||||||
},
|
|
||||||
"recents": "Viimeksi käytetty",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Hae valikoita, komentoja ja löydä piilotettuja helmiä",
|
|
||||||
"noMatch": "Ei vastaavia komentoja..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Komento ei ole käytettävissä...",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Copier les styles",
|
"copyStyles": "Copier les styles",
|
||||||
"pasteStyles": "Coller les styles",
|
"pasteStyles": "Coller les styles",
|
||||||
"stroke": "Trait",
|
"stroke": "Trait",
|
||||||
"changeStroke": "Changer la couleur du trait",
|
|
||||||
"background": "Arrière-plan",
|
"background": "Arrière-plan",
|
||||||
"changeBackground": "Changer la couleur d'arrière-plan",
|
|
||||||
"fill": "Remplissage",
|
"fill": "Remplissage",
|
||||||
"strokeWidth": "Largeur du contour",
|
"strokeWidth": "Largeur du contour",
|
||||||
"strokeStyle": "Style du trait",
|
"strokeStyle": "Style du trait",
|
||||||
@@ -41,19 +39,11 @@
|
|||||||
"arrowhead_arrow": "Flèche",
|
"arrowhead_arrow": "Flèche",
|
||||||
"arrowhead_bar": "Barre",
|
"arrowhead_bar": "Barre",
|
||||||
"arrowhead_circle": "Cercle",
|
"arrowhead_circle": "Cercle",
|
||||||
"arrowhead_circle_outline": "Cercle (contour)",
|
"arrowhead_circle_outline": "Contour du cercle",
|
||||||
"arrowhead_triangle": "Triangle",
|
"arrowhead_triangle": "Triangle",
|
||||||
"arrowhead_triangle_outline": "Triangle (contour)",
|
"arrowhead_triangle_outline": "Triangle (contour)",
|
||||||
"arrowhead_diamond": "Losange",
|
"arrowhead_diamond": "Losange",
|
||||||
"arrowhead_diamond_outline": "Losange (contour)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "Pied de Corde (un)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "Pied du corbeau (un ou plusieurs)",
|
|
||||||
"more_options": "Plus d'options",
|
|
||||||
"arrowtypes": "Type de flèche",
|
|
||||||
"arrowtype_sharp": "Flèche pointue",
|
|
||||||
"arrowtype_round": "Flèche incurvée",
|
|
||||||
"arrowtype_elbowed": "Flèche coudée",
|
|
||||||
"fontSize": "Taille de la police",
|
"fontSize": "Taille de la police",
|
||||||
"fontFamily": "Police",
|
"fontFamily": "Police",
|
||||||
"addWatermark": "Ajouter \"Réalisé avec Excalidraw\"",
|
"addWatermark": "Ajouter \"Réalisé avec Excalidraw\"",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Utilisé sur la zone de dessin",
|
"canvasColors": "Utilisé sur la zone de dessin",
|
||||||
"canvasBackground": "Arrière-plan du canevas",
|
"canvasBackground": "Arrière-plan du canevas",
|
||||||
"drawingCanvas": "Zone de dessin",
|
"drawingCanvas": "Zone de dessin",
|
||||||
"clearCanvas": "Effacer la zone de dessin",
|
|
||||||
"layers": "Disposition",
|
"layers": "Disposition",
|
||||||
"actions": "Actions",
|
"actions": "Actions",
|
||||||
"language": "Langue",
|
"language": "Langue",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Grouper la sélection",
|
"group": "Grouper la sélection",
|
||||||
"ungroup": "Dégrouper la sélection",
|
"ungroup": "Dégrouper la sélection",
|
||||||
"collaborators": "Collaborateurs",
|
"collaborators": "Collaborateurs",
|
||||||
"toggleGrid": "Afficher/Cacher la grille",
|
"showGrid": "Afficher la grille",
|
||||||
"addToLibrary": "Ajouter à la bibliothèque",
|
"addToLibrary": "Ajouter à la bibliothèque",
|
||||||
"removeFromLibrary": "Supprimer de la bibliothèque",
|
"removeFromLibrary": "Supprimer de la bibliothèque",
|
||||||
"libraryLoadingMessage": "Chargement de la bibliothèque…",
|
"libraryLoadingMessage": "Chargement de la bibliothèque…",
|
||||||
"libraries": "Parcourir les bibliothèques",
|
"libraries": "Parcourir les bibliothèques",
|
||||||
"loadingScene": "Chargement de la scène…",
|
"loadingScene": "Chargement de la scène…",
|
||||||
"loadScene": "Charger une scène depuis un fichier",
|
|
||||||
"align": "Alignement",
|
"align": "Alignement",
|
||||||
"alignTop": "Aligner en haut",
|
"alignTop": "Aligner en haut",
|
||||||
"alignBottom": "Aligner en bas",
|
"alignBottom": "Aligner en bas",
|
||||||
@@ -117,9 +105,7 @@
|
|||||||
"share": "Partager",
|
"share": "Partager",
|
||||||
"showStroke": "Afficher le sélecteur de couleur de trait",
|
"showStroke": "Afficher le sélecteur de couleur de trait",
|
||||||
"showBackground": "Afficher le sélecteur de couleur de fond",
|
"showBackground": "Afficher le sélecteur de couleur de fond",
|
||||||
"showFonts": "Afficher le sélecteur de polices",
|
"toggleTheme": "Changer le thème",
|
||||||
"toggleTheme": "Basculer mode clair/sombre",
|
|
||||||
"theme": "Thème",
|
|
||||||
"personalLib": "Bibliothèque personnelle",
|
"personalLib": "Bibliothèque personnelle",
|
||||||
"excalidrawLib": "Bibliothèque Excalidraw",
|
"excalidrawLib": "Bibliothèque Excalidraw",
|
||||||
"decreaseFontSize": "Diminuer la taille de police",
|
"decreaseFontSize": "Diminuer la taille de police",
|
||||||
@@ -129,21 +115,16 @@
|
|||||||
"createContainerFromText": "Encadrer le texte dans un conteneur",
|
"createContainerFromText": "Encadrer le texte dans un conteneur",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "Modifier le lien",
|
"edit": "Modifier le lien",
|
||||||
"editEmbed": "Editer le lien intégrable",
|
"editEmbed": "Éditer le lien & intégrer",
|
||||||
"create": "Ajouter un lien",
|
"create": "Ajouter un lien",
|
||||||
|
"createEmbed": "Créer un lien & intégrer",
|
||||||
"label": "Lien",
|
"label": "Lien",
|
||||||
"labelEmbed": "Lier & intégrer",
|
"labelEmbed": "Lier & intégrer",
|
||||||
"empty": "Aucun lien défini",
|
"empty": "Aucun lien défini"
|
||||||
"hint": "Tapez ou collez votre lien ici",
|
|
||||||
"goToElement": "Aller à l'élément cible"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Modifier la ligne",
|
"edit": "Modifier la ligne",
|
||||||
"editArrow": "Modifier la flèche"
|
"exit": "Quitter l'éditeur de ligne"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "Briser le polygone",
|
|
||||||
"convertToPolygon": "Convertir en polygone"
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Verrouiller",
|
"lock": "Verrouiller",
|
||||||
@@ -155,48 +136,14 @@
|
|||||||
"sidebarLock": "Maintenir la barre latérale ouverte",
|
"sidebarLock": "Maintenir la barre latérale ouverte",
|
||||||
"selectAllElementsInFrame": "Sélectionner tous les éléments du cadre",
|
"selectAllElementsInFrame": "Sélectionner tous les éléments du cadre",
|
||||||
"removeAllElementsFromFrame": "Supprimer tous les éléments du cadre",
|
"removeAllElementsFromFrame": "Supprimer tous les éléments du cadre",
|
||||||
"eyeDropper": "Choisir la couleur depuis le canevas",
|
"eyeDropper": "Choisir la couleur depuis la toile",
|
||||||
"textToDiagram": "Texte vers diagramme",
|
"textToDiagram": "Texte vers Diagramme",
|
||||||
"prompt": "Demander",
|
"prompt": "Consignes"
|
||||||
"followUs": "Suivez-nous",
|
|
||||||
"discordChat": "Salon Discord",
|
|
||||||
"zoomToFitViewport": "Zoomer pour tenir dans la fenêtre d'affichage",
|
|
||||||
"zoomToFitSelection": "Zoomer pour s'adapter à la sélection",
|
|
||||||
"zoomToFit": "Zoomer pour voir tous les éléments",
|
|
||||||
"installPWA": "Installer Excalidraw localement (PWA)",
|
|
||||||
"autoResize": "Activer le redimensionnement automatique du texte",
|
|
||||||
"imageCropping": "Recadrage de l'image",
|
|
||||||
"unCroppedDimension": "Dimension non recadrée",
|
|
||||||
"copyElementLink": "Copier le lien vers un objet",
|
|
||||||
"linkToElement": "Lien vers un objet",
|
|
||||||
"wrapSelectionInFrame": "Mettre la sélection dans un cadre",
|
|
||||||
"tab": "Onglet",
|
|
||||||
"shapeSwitch": "Changer de forme"
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "Lien vers un objet",
|
|
||||||
"desc": "Cliquez sur une forme sur le canvas ou collez un lien.",
|
|
||||||
"notFound": "L'objet lié n'a pas été trouvé sur le canvas."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Aucun élément n'a encore été ajouté ...",
|
"noItems": "Aucun élément n'a encore été ajouté ...",
|
||||||
"hint_emptyLibrary": "Sélectionnez un élément sur le canevas pour l'ajouter ici ou installez une bibliothèque depuis le dépôt public, ci-dessous.",
|
"hint_emptyLibrary": "Sélectionnez un élément sur le canevas pour l'ajouter ici ou installez une bibliothèque depuis le dépôt public, ci-dessous.",
|
||||||
"hint_emptyPrivateLibrary": "Sélectionnez un élément sur le canevas pour l'ajouter ici.",
|
"hint_emptyPrivateLibrary": "Sélectionnez un élément sur le canevas pour l'ajouter ici."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "Rechercher dans la bibliothèque",
|
|
||||||
"heading": "Correspondance de la bibliothèque",
|
|
||||||
"noResults": "Aucun élément correspondant trouvé...",
|
|
||||||
"clearSearch": "Effacer la recherche"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "Rechercher sur le canevas",
|
|
||||||
"noMatch": "Aucun résultat trouvé...",
|
|
||||||
"singleResult": "résultat",
|
|
||||||
"multipleResults": "résultats",
|
|
||||||
"placeholder": "Rechercher du texte sur la toile...",
|
|
||||||
"frames": "Cadres",
|
|
||||||
"texts": "Textes"
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Réinitialiser le canevas",
|
"clearReset": "Réinitialiser le canevas",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Exporter l'image...",
|
"exportImage": "Exporter l'image...",
|
||||||
"export": "Enregistrer sous...",
|
"export": "Enregistrer sous...",
|
||||||
"copyToClipboard": "Copier dans le presse-papier",
|
"copyToClipboard": "Copier dans le presse-papier",
|
||||||
"copyLink": "",
|
|
||||||
"save": "Enregistrer dans le fichier actuel",
|
"save": "Enregistrer dans le fichier actuel",
|
||||||
"saveAs": "Enregistrer sous",
|
"saveAs": "Enregistrer sous",
|
||||||
"load": "Ouvrir",
|
"load": "Ouvrir",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Plein écran",
|
"fullScreen": "Plein écran",
|
||||||
"darkMode": "Mode sombre",
|
"darkMode": "Mode sombre",
|
||||||
"lightMode": "Mode clair",
|
"lightMode": "Mode clair",
|
||||||
"systemMode": "Mode système",
|
|
||||||
"zenMode": "Mode zen",
|
"zenMode": "Mode zen",
|
||||||
"objectsSnapMode": "Aimanter aux objets",
|
"objectsSnapMode": "Aimanter aux objets",
|
||||||
"exitZenMode": "Quitter le mode zen",
|
"exitZenMode": "Quitter le mode zen",
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"saveLibNames": "Enregistrez et quittez",
|
|
||||||
"clear": "Effacer",
|
"clear": "Effacer",
|
||||||
"remove": "Supprimer",
|
"remove": "Supprimer",
|
||||||
"embed": "Activer/Désactiver l'intégration",
|
"embed": "Activer/Désactiver l'intégration",
|
||||||
"publishLibrary": "Renommer ou publier",
|
"publishLibrary": "Publier",
|
||||||
"submit": "Envoyer",
|
"submit": "Envoyer",
|
||||||
"confirm": "Confirmer",
|
"confirm": "Confirmer",
|
||||||
"embeddableInteractionButton": "Cliquez pour interagir"
|
"embeddableInteractionButton": "Cliquez pour interagir"
|
||||||
@@ -260,8 +204,7 @@
|
|||||||
"resetLibrary": "Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?",
|
"resetLibrary": "Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?",
|
||||||
"removeItemsFromsLibrary": "Supprimer {{count}} élément(s) de la bibliothèque ?",
|
"removeItemsFromsLibrary": "Supprimer {{count}} élément(s) de la bibliothèque ?",
|
||||||
"invalidEncryptionKey": "La clé de chiffrement doit comporter 22 caractères. La collaboration en direct est désactivée.",
|
"invalidEncryptionKey": "La clé de chiffrement doit comporter 22 caractères. La collaboration en direct est désactivée.",
|
||||||
"collabOfflineWarning": "Aucune connexion internet disponible.\nVos modifications ne seront pas enregistrées !",
|
"collabOfflineWarning": "Aucune connexion internet disponible.\nVos modifications ne seront pas enregistrées !"
|
||||||
"localStorageQuotaExceeded": "Quota de stockage du navigateur dépassé. Les modifications ne seront pas enregistrées."
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Type de fichier non supporté.",
|
"unsupportedFileType": "Type de fichier non supporté.",
|
||||||
@@ -269,9 +212,9 @@
|
|||||||
"fileTooBig": "Le fichier est trop volumineux. La taille maximale autorisée est de {{maxSize}}.",
|
"fileTooBig": "Le fichier est trop volumineux. La taille maximale autorisée est de {{maxSize}}.",
|
||||||
"svgImageInsertError": "Impossible d'insérer l'image SVG. Le balisage SVG semble invalide.",
|
"svgImageInsertError": "Impossible d'insérer l'image SVG. Le balisage SVG semble invalide.",
|
||||||
"failedToFetchImage": "Échec de récupération de l'image.",
|
"failedToFetchImage": "Échec de récupération de l'image.",
|
||||||
|
"invalidSVGString": "SVG invalide.",
|
||||||
"cannotResolveCollabServer": "Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.",
|
"cannotResolveCollabServer": "Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.",
|
||||||
"importLibraryError": "Impossible de charger la bibliothèque",
|
"importLibraryError": "Impossible de charger la bibliothèque",
|
||||||
"saveLibraryError": "Impossible d'enregistrer la bibliothèque sur le stockage. Veuillez enregistrer votre bibliothèque dans un fichier localement pour éviter de perdre vos modifications.",
|
|
||||||
"collabSaveFailed": "Impossible d'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.",
|
"collabSaveFailed": "Impossible d'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.",
|
||||||
"collabSaveFailed_sizeExceeded": "Impossible d'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail.",
|
"collabSaveFailed_sizeExceeded": "Impossible d'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail.",
|
||||||
"imageToolNotSupported": "Les images sont désactivées.",
|
"imageToolNotSupported": "Les images sont désactivées.",
|
||||||
@@ -283,7 +226,7 @@
|
|||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "Les éléments intégrés ne peuvent pas être ajoutés à la librairie.",
|
"embeddable": "Les éléments intégrés ne peuvent pas être ajoutés à la librairie.",
|
||||||
"iframe": "Les éléments IFrame ne peuvent pas être ajoutés à la bibliothèque.",
|
"iframe": "",
|
||||||
"image": "Le support pour l'ajout d'images à la librairie arrive bientôt !"
|
"image": "Le support pour l'ajout d'images à la librairie arrive bientôt !"
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "Impossible de coller (impossible de lire le presse-papiers système).",
|
"asyncPasteFailedOnRead": "Impossible de coller (impossible de lire le presse-papiers système).",
|
||||||
@@ -292,7 +235,6 @@
|
|||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Sélection",
|
"selection": "Sélection",
|
||||||
"lasso": "Sélection lasso",
|
|
||||||
"image": "Insérer une image",
|
"image": "Insérer une image",
|
||||||
"rectangle": "Rectangle",
|
"rectangle": "Rectangle",
|
||||||
"diamond": "Losange",
|
"diamond": "Losange",
|
||||||
@@ -304,32 +246,16 @@
|
|||||||
"library": "Bibliothèque",
|
"library": "Bibliothèque",
|
||||||
"lock": "Garder l'outil sélectionné actif après le dessin",
|
"lock": "Garder l'outil sélectionné actif après le dessin",
|
||||||
"penMode": "Mode stylo - évite le toucher",
|
"penMode": "Mode stylo - évite le toucher",
|
||||||
"link": "Ajouter / Mettre à jour un lien pour une forme sélectionnée",
|
"link": "Ajouter/mettre à jour le lien pour une forme sélectionnée",
|
||||||
"eraser": "Gomme",
|
"eraser": "Gomme",
|
||||||
"frame": "Outil de cadre",
|
"frame": "Outil de cadre",
|
||||||
"magicframe": "Modèle en fil de fer vers code",
|
"magicframe": "",
|
||||||
"embeddable": "Intégration Web",
|
"embeddable": "Intégration Web",
|
||||||
"laser": "Pointeur laser",
|
"laser": "Pointeur laser",
|
||||||
"hand": "Mains (outil de déplacement de la vue)",
|
"hand": "Mains (outil de déplacement de la vue)",
|
||||||
"extraTools": "Plus d'outils",
|
"extraTools": "Plus d'outils",
|
||||||
"mermaidToExcalidraw": "De Mermaid à Excalidraw",
|
"mermaidToExcalidraw": "De Mermaid à Excalidraw",
|
||||||
"convertElementType": "Basculer le type de forme"
|
"magicSettings": "Paramètres IA"
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "Rectangle",
|
|
||||||
"diamond": "Losange",
|
|
||||||
"ellipse": "Ellipse",
|
|
||||||
"arrow": "Flèche",
|
|
||||||
"line": "Ligne",
|
|
||||||
"freedraw": "Dessin libre",
|
|
||||||
"text": "Texte",
|
|
||||||
"image": "Image",
|
|
||||||
"group": "Groupe",
|
|
||||||
"frame": "Cadre",
|
|
||||||
"magicframe": "Wireframe à code",
|
|
||||||
"embeddable": "Intégration Web",
|
|
||||||
"selection": "Sélection",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Actions du canevas",
|
"canvasActions": "Actions du canevas",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Formes"
|
"shapes": "Formes"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "{{shortcut}} pour fermer la recherche",
|
"canvasPanning": "Pour déplacer la zone de dessin, maintenez la molette de la souris enfoncée ou la barre d'espace tout en faisant glisser, ou utiliser l'outil main.",
|
||||||
"canvasPanning": "Pour déplacer le canevas, maintenez {{shortcut_1}} ou {{shortcut_2}} enfoncé tout en faisant glisser, ou utilisez l'outil main",
|
|
||||||
"linearElement": "Cliquez pour démarrer plusieurs points, faites glisser pour une seule ligne",
|
"linearElement": "Cliquez pour démarrer plusieurs points, faites glisser pour une seule ligne",
|
||||||
"arrowTool": "Cliquez pour démarrer plusieurs points, faites glisser pour une ligne unique. Appuyez à nouveau sur {{shortcut}} pour changer le type de flèche.",
|
|
||||||
"freeDraw": "Cliquez et faites glissez, relâchez quand vous avez terminé",
|
"freeDraw": "Cliquez et faites glissez, relâchez quand vous avez terminé",
|
||||||
"text": "Astuce : vous pouvez aussi ajouter du texte en double-cliquant n'importe où avec l'outil de sélection",
|
"text": "Astuce : vous pouvez aussi ajouter du texte en double-cliquant n'importe où avec l'outil de sélection",
|
||||||
"embeddable": "Cliquez et glissez pour créer une intégration de site web",
|
"embeddable": "Cliquez et glissez pour créer une intégration de site web",
|
||||||
"text_selected": "Double-cliquez ou appuyez sur {{shortcut}} pour modifier le texte",
|
"text_selected": "Double-cliquez ou appuyez sur ENTRÉE pour modifier le texte",
|
||||||
"text_editing": "Appuyez sur {{shortcut_1}} ou {{shortcut_2}} pour terminer la modification",
|
"text_editing": "Appuyez sur ÉCHAP ou Ctrl/Cmd+ENTRÉE pour terminer l'édition",
|
||||||
"linearElementMulti": "Cliquez sur le dernier point ou appuyez sur {{shortcut_1}} ou {{shortcut_2}} pour terminer",
|
"linearElementMulti": "Cliquez sur le dernier point ou appuyez sur Échap ou Entrée pour terminer",
|
||||||
"lockAngle": "Vous pouvez limiter l'angle en maintenant la touche {{shortcut}} enfoncée",
|
"lockAngle": "Vous pouvez restreindre l'angle en maintenant MAJ",
|
||||||
"resize": "Vous pouvez contraindre les proportions en maintenant {{shortcut_1}} pendant le redimensionnement,\nmaintenez {{shortcut_2}} enfoncé pour redimensionner depuis le centre",
|
"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 {{shortcut_1}},\nmaintenez {{shortcut_2}} enfoncé pour redimensionner depuis le centre",
|
"resizeImage": "Vous pouvez redimensionner librement en maintenant SHIFT,\nmaintenez ALT pour redimensionner depuis le centre",
|
||||||
"rotate": "Vous pouvez contraindre les angles en maintenant {{shortcut}} enfoncé pendant la rotation",
|
"rotate": "Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation",
|
||||||
"lineEditor_info": "Maintenez {{shortcut_1}} et Double-cliquez ou appuyez sur {{shortcut_2}} pour modifier les points",
|
"lineEditor_info": "Maintenez CtrlOrCmd et Double-cliquez ou appuyez sur CtrlOrCmd + Entrée pour modifier les points",
|
||||||
"lineEditor_line_info": "Double-cliquez ou appuyez sur {{shortcut}} pour modifier le texte",
|
"lineEditor_pointSelected": "Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer",
|
||||||
"lineEditor_pointSelected": "Appuyez sur {{shortcut_1}} pour supprimer le(s) point(s),\n{{shortcut_2}} pour dupliquer, ou faites 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",
|
||||||
"lineEditor_nothingSelected": "Sélectionnez un point à éditer (maintenez {{shortcut_1}} enfoncé pour en sélectionner plusieurs),\nou maintenez {{shortcut_2}} et cliquez pour ajouter de nouveaux points",
|
"placeImage": "Cliquez pour placer l'image, ou cliquez et faites glisser pour définir sa taille manuellement",
|
||||||
"publishLibrary": "Publier votre propre bibliothèque",
|
"publishLibrary": "Publier votre propre bibliothèque",
|
||||||
"bindTextToElement": "{{shortcut}} pour ajouter du texte",
|
"bindTextToElement": "Appuyer sur Entrée pour ajouter du texte",
|
||||||
"createFlowchart": "{{shortcut}} pour créer un diagramme",
|
"deepBoxSelect": "Maintenir Ctrl ou Cmd pour sélectionner dans les groupes et empêcher le déplacement",
|
||||||
"deepBoxSelect": "Maintenez {{shortcut}} enfoncé pour sélectionner en profondeur, et pour éviter le glissement",
|
"eraserRevert": "Maintenez Alt enfoncé pour annuler les éléments marqués pour suppression",
|
||||||
"eraserRevert": "Maintenez {{shortcut}} pour annuler les éléments marqués pour suppression",
|
|
||||||
"firefox_clipboard_write": "Cette fonctionnalité devrait pouvoir être activée en définissant l'option \"dom.events.asyncClipboard.clipboard.clipboardItem\" à \"true\". Pour modifier les paramètres du navigateur dans Firefox, visitez la page \"about:config\".",
|
"firefox_clipboard_write": "Cette fonctionnalité devrait pouvoir être activée en définissant l'option \"dom.events.asyncClipboard.clipboard.clipboardItem\" à \"true\". Pour modifier les paramètres du navigateur dans Firefox, visitez la page \"about:config\".",
|
||||||
"disableSnapping": "Maintenez {{shortcut}} pour désactiver l'accrochage",
|
"disableSnapping": "Maintenez CtrlOuCmd pour désactiver l'aimantation"
|
||||||
"enterCropEditor": "Double-cliquez sur l'image ou appuyez sur {{shortcut}} pour recadrer l'image",
|
|
||||||
"leaveCropEditor": "Cliquez à l'extérieur de l'image ou appuyez sur {{shortcut_1}} ou {{shortcut_2}} pour terminer le recadrage"
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Impossible d’afficher l’aperçu",
|
"cannotShowPreview": "Impossible d’afficher l’aperçu",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "Nous avons fait très attention à ne pas inclure les informations de votre scène dans l'erreur. Si votre scène n'est pas privée, veuillez envisager de poursuivre sur notre <button>outil de suivi des bugs.</button> Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.",
|
"openIssueMessage": "Nous avons fait très attention à ne pas inclure les informations de votre scène dans l'erreur. Si votre scène n'est pas privée, veuillez envisager de poursuivre sur notre <button>outil de suivi des bugs.</button> Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.",
|
||||||
"sceneContent": "Contenu de la scène :"
|
"sceneContent": "Contenu de la scène :"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Ou"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Invitez des personnes à collaborer sur votre dessin.",
|
"desc_intro": "Vous pouvez inviter des personnes à collaborer avec vous sur votre scène actuelle.",
|
||||||
"desc_privacy": "Ne vous inquiétez pas, la session est chiffrée de bout en bout et entièrement privée. Même notre serveur ne peut pas voir ce que vous dessinez.",
|
"desc_privacy": "Pas d'inquiétude, la session utilise le chiffrement de bout en bout, donc tout ce que vous dessinez restera privé. Même notre serveur ne pourra voir ce que vous faites.",
|
||||||
"button_startSession": "Démarrer la session",
|
"button_startSession": "Démarrer la session",
|
||||||
"button_stopSession": "Arrêter la session",
|
"button_stopSession": "Arrêter la session",
|
||||||
"desc_inProgressIntro": "La session de collaboration en direct est maintenant en cours.",
|
"desc_inProgressIntro": "La session de collaboration en direct est maintenant en cours.",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "clic",
|
"click": "clic",
|
||||||
"deepSelect": "Sélection dans les groupes",
|
"deepSelect": "Sélection dans les groupes",
|
||||||
"deepBoxSelect": "Sélectionner dans les groupes, et empêcher le déplacement",
|
"deepBoxSelect": "Sélectionner dans les groupes, et empêcher le déplacement",
|
||||||
"createFlowchart": "Créer un diagramme à partir d'un élément",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "Flèche courbée",
|
"curvedArrow": "Flèche courbée",
|
||||||
"curvedLine": "Ligne courbée",
|
"curvedLine": "Ligne courbée",
|
||||||
"documentation": "Documentation",
|
"documentation": "Documentation",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Zoomer sur la sélection",
|
"zoomToSelection": "Zoomer sur la sélection",
|
||||||
"toggleElementLock": "Verrouiller/déverrouiller la sélection",
|
"toggleElementLock": "Verrouiller/déverrouiller la sélection",
|
||||||
"movePageUpDown": "Déplacer la page vers le haut/bas",
|
"movePageUpDown": "Déplacer la page vers le haut/bas",
|
||||||
"movePageLeftRight": "Déplacer la page vers la gauche/droite",
|
"movePageLeftRight": "Déplacer la page vers la gauche/droite"
|
||||||
"cropStart": "Rogner l’image",
|
|
||||||
"cropFinish": "Terminer le recadrage de l'image"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Effacer la zone de dessin"
|
"title": "Effacer la zone de dessin"
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Angle",
|
"angle": "Angle",
|
||||||
"shapes": "Formes",
|
"element": "Élément",
|
||||||
|
"elements": "Éléments",
|
||||||
"height": "Hauteur",
|
"height": "Hauteur",
|
||||||
"scene": "Scène",
|
"scene": "Scène",
|
||||||
"selected": "Sélection",
|
"selected": "Sélection",
|
||||||
"storage": "Stockage",
|
"storage": "Stockage",
|
||||||
"fullTitle": "Propriétés du canevas et des formes",
|
"title": "Stats pour les nerds",
|
||||||
"title": "Propriétés",
|
|
||||||
"generalStats": "Général",
|
|
||||||
"elementProperties": "Propriétés de la forme",
|
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"version": "Version",
|
"version": "Version",
|
||||||
"versionCopy": "Cliquer pour copier",
|
"versionCopy": "Cliquer pour copier",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Styles copiés.",
|
"copyStyles": "Styles copiés.",
|
||||||
"copyToClipboard": "Copié dans le presse-papier.",
|
"copyToClipboard": "Copié dans le presse-papier.",
|
||||||
"copyToClipboardAsPng": "{{exportSelection}} copié dans le presse-papier en PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "{{exportSelection}} copié dans le presse-papier en PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "{{exportSelection}} copié dans le presse-papier en SVG\n({{exportColorScheme}})",
|
|
||||||
"fileSaved": "Fichier enregistré.",
|
"fileSaved": "Fichier enregistré.",
|
||||||
"fileSavedToFilename": "Enregistré sous {filename}",
|
"fileSavedToFilename": "Enregistré sous {filename}",
|
||||||
"canvas": "canevas",
|
"canvas": "canevas",
|
||||||
"selection": "sélection",
|
"selection": "sélection",
|
||||||
"pasteAsSingleElement": "Utiliser {{shortcut}} pour coller comme un seul élément,\nou coller dans un éditeur de texte existant",
|
"pasteAsSingleElement": "Utiliser {{shortcut}} pour coller comme un seul élément,\nou coller dans un éditeur de texte existant",
|
||||||
"unableToEmbed": "Intégrer cet URL n'est actuellement pas autorisé. Ouvrez un ticket sur GitHub pour demander son ajout à la liste blanche",
|
"unableToEmbed": "Intégrer cet URL n'est actuellement pas autorisé. Ouvrez un ticket sur GitHub pour demander son ajout à la liste blanche",
|
||||||
"unrecognizedLinkFormat": "Le lien que vous avez intégré ne correspond pas au format attendu. Veuillez essayer de coller la chaîne d'intégration fournie par le site source",
|
"unrecognizedLinkFormat": "Le lien que vous avez intégré ne correspond pas au format attendu. Veuillez essayer de coller la chaîne d'intégration fournie par le site source"
|
||||||
"elementLinkCopied": "Lien copié dans le presse-papiers"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Transparent",
|
"transparent": "Transparent",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "Couleur ",
|
|
||||||
"mostUsedCustomColors": "Couleurs personnalisées les plus fréquemment utilisées",
|
"mostUsedCustomColors": "Couleurs personnalisées les plus fréquemment utilisées",
|
||||||
"colors": "Couleurs",
|
"colors": "Couleurs",
|
||||||
"shades": "Nuances",
|
"shades": "Nuances",
|
||||||
@@ -609,56 +518,8 @@
|
|||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "De Mermaid à Excalidraw",
|
"title": "De Mermaid à Excalidraw",
|
||||||
"button": "Insérer",
|
"button": "Insérer",
|
||||||
"description": "Actuellement, seuls les diagrammes <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Sequence, </sequenceLink> et <classLink>de classe </classLink>sont pris en charge. Les autres types seront rendus en tant qu'image dans Excalidraw.",
|
"description": "",
|
||||||
"syntax": "Syntaxe Mermaid",
|
"syntax": "Syntaxe Mermaid",
|
||||||
"preview": "Prévisualisation"
|
"preview": "Prévisualisation"
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "Recherche rapide"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "ancien"
|
|
||||||
},
|
|
||||||
"sceneFonts": "Dans cette scène",
|
|
||||||
"availableFonts": "Polices disponibles",
|
|
||||||
"empty": "Aucune police trouvée"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "Aucun utilisateurs trouvé",
|
|
||||||
"hint": {
|
|
||||||
"text": "Cliquez sur l'utilisateur pour le suivre",
|
|
||||||
"followStatus": "Vous suivez actuellement cet utilisateur",
|
|
||||||
"inCall": "L'utilisateur est dans un appel vocal",
|
|
||||||
"micMuted": "Le micro de l'utilisateur est muet",
|
|
||||||
"isSpeaking": "L'utilisateur parle"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "Palette de commandes",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "Sélectionner",
|
|
||||||
"confirm": "Confirmer",
|
|
||||||
"close": "Fermer"
|
|
||||||
},
|
|
||||||
"recents": "Récemment utilisé",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Recherchez dans les menus, les commandes et découvrez des gemmes cachées",
|
|
||||||
"noMatch": "Aucune commande correspondante..."
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "Commande non disponible...",
|
|
||||||
"shortcutHint": "Pour la palette de commandes, utilisez {{shortcut}}"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "Ctrl",
|
|
||||||
"option": "Option",
|
|
||||||
"cmd": "Cmd",
|
|
||||||
"alt": "Alt",
|
|
||||||
"escape": "Échap",
|
|
||||||
"enter": "Entrée",
|
|
||||||
"shift": "Maj",
|
|
||||||
"spacebar": "Espace",
|
|
||||||
"delete": "Supprimer",
|
|
||||||
"mmb": "Clic molette"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"copyAsPng": "Copiar no portapapeis como PNG",
|
"copyAsPng": "Copiar no portapapeis como PNG",
|
||||||
"copyAsSvg": "Copiar no portapapeis como SVG",
|
"copyAsSvg": "Copiar no portapapeis como SVG",
|
||||||
"copyText": "Copia no portapapeis como texto",
|
"copyText": "Copia no portapapeis como texto",
|
||||||
"copySource": "Copiar fonte ao portapapeis",
|
"copySource": "",
|
||||||
"convertToCode": "Converter a código",
|
"convertToCode": "",
|
||||||
"bringForward": "Traer cara adiante",
|
"bringForward": "Traer cara adiante",
|
||||||
"sendToBack": "Enviar cara atrás",
|
"sendToBack": "Enviar cara atrás",
|
||||||
"bringToFront": "Traer á fronte",
|
"bringToFront": "Traer á fronte",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"copyStyles": "Copiar estilo",
|
"copyStyles": "Copiar estilo",
|
||||||
"pasteStyles": "Pegar estilo",
|
"pasteStyles": "Pegar estilo",
|
||||||
"stroke": "Trazo",
|
"stroke": "Trazo",
|
||||||
"changeStroke": "",
|
|
||||||
"background": "Fondo",
|
"background": "Fondo",
|
||||||
"changeBackground": "",
|
|
||||||
"fill": "Recheo",
|
"fill": "Recheo",
|
||||||
"strokeWidth": "Largo do trazo",
|
"strokeWidth": "Largo do trazo",
|
||||||
"strokeStyle": "Estilo do trazo",
|
"strokeStyle": "Estilo do trazo",
|
||||||
@@ -40,20 +38,12 @@
|
|||||||
"arrowhead_none": "Ningunha",
|
"arrowhead_none": "Ningunha",
|
||||||
"arrowhead_arrow": "Frecha",
|
"arrowhead_arrow": "Frecha",
|
||||||
"arrowhead_bar": "Barra",
|
"arrowhead_bar": "Barra",
|
||||||
"arrowhead_circle": "Círculo",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "Círculo (contorno)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "Triángulo",
|
"arrowhead_triangle": "Triángulo",
|
||||||
"arrowhead_triangle_outline": "Triángulo (contorno)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "Diamante",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "Diamante (contorno)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "",
|
|
||||||
"arrowhead_crowfoot_one": "",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "",
|
|
||||||
"more_options": "",
|
|
||||||
"arrowtypes": "",
|
|
||||||
"arrowtype_sharp": "",
|
|
||||||
"arrowtype_round": "",
|
|
||||||
"arrowtype_elbowed": "",
|
|
||||||
"fontSize": "Tamaño da fonte",
|
"fontSize": "Tamaño da fonte",
|
||||||
"fontFamily": "Tipo de fonte",
|
"fontFamily": "Tipo de fonte",
|
||||||
"addWatermark": "Engadir \"Feito con Excalidraw\"",
|
"addWatermark": "Engadir \"Feito con Excalidraw\"",
|
||||||
@@ -82,7 +72,6 @@
|
|||||||
"canvasColors": "Usado en lenzo",
|
"canvasColors": "Usado en lenzo",
|
||||||
"canvasBackground": "Fondo do lenzo",
|
"canvasBackground": "Fondo do lenzo",
|
||||||
"drawingCanvas": "Lenzo de debuxo",
|
"drawingCanvas": "Lenzo de debuxo",
|
||||||
"clearCanvas": "",
|
|
||||||
"layers": "Capas",
|
"layers": "Capas",
|
||||||
"actions": "Accións",
|
"actions": "Accións",
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -95,13 +84,12 @@
|
|||||||
"group": "Agrupar selección",
|
"group": "Agrupar selección",
|
||||||
"ungroup": "Desagrupar selección",
|
"ungroup": "Desagrupar selección",
|
||||||
"collaborators": "Colaboradores",
|
"collaborators": "Colaboradores",
|
||||||
"toggleGrid": "",
|
"showGrid": "Mostrar cuadrícula",
|
||||||
"addToLibrary": "Engadir á biblioteca",
|
"addToLibrary": "Engadir á biblioteca",
|
||||||
"removeFromLibrary": "Eliminar da biblioteca",
|
"removeFromLibrary": "Eliminar da biblioteca",
|
||||||
"libraryLoadingMessage": "Cargando biblioteca…",
|
"libraryLoadingMessage": "Cargando biblioteca…",
|
||||||
"libraries": "Explorar bibliotecas",
|
"libraries": "Explorar bibliotecas",
|
||||||
"loadingScene": "Cargando escena…",
|
"loadingScene": "Cargando escena…",
|
||||||
"loadScene": "",
|
|
||||||
"align": "Aliñamento",
|
"align": "Aliñamento",
|
||||||
"alignTop": "Aliñamento superior",
|
"alignTop": "Aliñamento superior",
|
||||||
"alignBottom": "Aliñamento inferior",
|
"alignBottom": "Aliñamento inferior",
|
||||||
@@ -117,9 +105,7 @@
|
|||||||
"share": "Compartir",
|
"share": "Compartir",
|
||||||
"showStroke": "Mostrar selector de cores do trazo",
|
"showStroke": "Mostrar selector de cores do trazo",
|
||||||
"showBackground": "Mostrar selector de cores do fondo",
|
"showBackground": "Mostrar selector de cores do fondo",
|
||||||
"showFonts": "",
|
"toggleTheme": "Alternar tema",
|
||||||
"toggleTheme": "",
|
|
||||||
"theme": "",
|
|
||||||
"personalLib": "Biblioteca Persoal",
|
"personalLib": "Biblioteca Persoal",
|
||||||
"excalidrawLib": "Biblioteca Excalidraw",
|
"excalidrawLib": "Biblioteca Excalidraw",
|
||||||
"decreaseFontSize": "Diminuír tamaño da fonte",
|
"decreaseFontSize": "Diminuír tamaño da fonte",
|
||||||
@@ -130,20 +116,15 @@
|
|||||||
"link": {
|
"link": {
|
||||||
"edit": "Editar ligazón",
|
"edit": "Editar ligazón",
|
||||||
"editEmbed": "",
|
"editEmbed": "",
|
||||||
"create": "",
|
"create": "Crear ligazón",
|
||||||
|
"createEmbed": "",
|
||||||
"label": "Ligazón",
|
"label": "Ligazón",
|
||||||
"labelEmbed": "",
|
"labelEmbed": "",
|
||||||
"empty": "Non se estableceu un enlace",
|
"empty": ""
|
||||||
"hint": "",
|
|
||||||
"goToElement": ""
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "Editar liña",
|
"edit": "Editar liña",
|
||||||
"editArrow": ""
|
"exit": "Saír do editor de liñas"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "Bloquear",
|
"lock": "Bloquear",
|
||||||
@@ -156,47 +137,13 @@
|
|||||||
"selectAllElementsInFrame": "",
|
"selectAllElementsInFrame": "",
|
||||||
"removeAllElementsFromFrame": "",
|
"removeAllElementsFromFrame": "",
|
||||||
"eyeDropper": "",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "Texto a diagrama",
|
"textToDiagram": "",
|
||||||
"prompt": "",
|
"prompt": ""
|
||||||
"followUs": "Síguenos",
|
|
||||||
"discordChat": "Chat de Discord",
|
|
||||||
"zoomToFitViewport": "",
|
|
||||||
"zoomToFitSelection": "",
|
|
||||||
"zoomToFit": "",
|
|
||||||
"installPWA": "",
|
|
||||||
"autoResize": "",
|
|
||||||
"imageCropping": "",
|
|
||||||
"unCroppedDimension": "",
|
|
||||||
"copyElementLink": "",
|
|
||||||
"linkToElement": "",
|
|
||||||
"wrapSelectionInFrame": "",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "",
|
|
||||||
"desc": "",
|
|
||||||
"notFound": ""
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "Aínda non hai elementos engadidos...",
|
"noItems": "Aínda non hai elementos engadidos...",
|
||||||
"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_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í.",
|
"hint_emptyPrivateLibrary": "Seleccione un elemento do lenzo para engadilo aquí."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "",
|
|
||||||
"noMatch": "",
|
|
||||||
"singleResult": "",
|
|
||||||
"multipleResults": "",
|
|
||||||
"placeholder": "",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "Limpar o lenzo",
|
"clearReset": "Limpar o lenzo",
|
||||||
@@ -204,7 +151,6 @@
|
|||||||
"exportImage": "Exportar imaxe...",
|
"exportImage": "Exportar imaxe...",
|
||||||
"export": "Gardar en...",
|
"export": "Gardar en...",
|
||||||
"copyToClipboard": "Copiar ao portapapeis",
|
"copyToClipboard": "Copiar ao portapapeis",
|
||||||
"copyLink": "",
|
|
||||||
"save": "Gardar no ficheiro actual",
|
"save": "Gardar no ficheiro actual",
|
||||||
"saveAs": "Gardar como",
|
"saveAs": "Gardar como",
|
||||||
"load": "Abrir",
|
"load": "Abrir",
|
||||||
@@ -225,16 +171,14 @@
|
|||||||
"fullScreen": "Pantalla completa",
|
"fullScreen": "Pantalla completa",
|
||||||
"darkMode": "Modo escuro",
|
"darkMode": "Modo escuro",
|
||||||
"lightMode": "Modo claro",
|
"lightMode": "Modo claro",
|
||||||
"systemMode": "",
|
|
||||||
"zenMode": "Modo zen",
|
"zenMode": "Modo zen",
|
||||||
"objectsSnapMode": "",
|
"objectsSnapMode": "",
|
||||||
"exitZenMode": "Saír do modo zen",
|
"exitZenMode": "Saír do modo zen",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "Limpar",
|
"clear": "Limpar",
|
||||||
"remove": "Eliminar",
|
"remove": "Eliminar",
|
||||||
"embed": "",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "Publicar",
|
||||||
"submit": "Enviar",
|
"submit": "Enviar",
|
||||||
"confirm": "Confirmar",
|
"confirm": "Confirmar",
|
||||||
"embeddableInteractionButton": "Faga clic para interactuar"
|
"embeddableInteractionButton": "Faga clic para interactuar"
|
||||||
@@ -260,21 +204,20 @@
|
|||||||
"resetLibrary": "Isto limpará a súa biblioteca. Está seguro?",
|
"resetLibrary": "Isto limpará a súa biblioteca. Está seguro?",
|
||||||
"removeItemsFromsLibrary": "Eliminar {{count}} elemento(s) da biblioteca?",
|
"removeItemsFromsLibrary": "Eliminar {{count}} elemento(s) da biblioteca?",
|
||||||
"invalidEncryptionKey": "A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada.",
|
"invalidEncryptionKey": "A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada.",
|
||||||
"collabOfflineWarning": "Non hai conexión a Internet dispoñible.\nOs teus cambios non serán gardados!",
|
"collabOfflineWarning": "Non hai conexión a Internet dispoñible.\nOs teus cambios non serán gardados!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "Tipo de ficheiro non soportado.",
|
"unsupportedFileType": "Tipo de ficheiro non soportado.",
|
||||||
"imageInsertError": "Non se puido inserir a imaxe. Probe de novo máis tarde...",
|
"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}}.",
|
"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.",
|
"svgImageInsertError": "Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.",
|
||||||
"failedToFetchImage": "Non se puido obter a imaxe.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "SVG inválido.",
|
||||||
"cannotResolveCollabServer": "Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.",
|
"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",
|
"importLibraryError": "Non se puido cargar a biblioteca",
|
||||||
"saveLibraryError": "",
|
|
||||||
"collabSaveFailed": "Non se puido gardar na base de datos. Se o problema persiste, deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.",
|
"collabSaveFailed": "Non se puido gardar na base de datos. Se o problema persiste, deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.",
|
||||||
"collabSaveFailed_sizeExceeded": "Non se puido gardar na base de datos, o lenzo semella demasiado grande. Deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.",
|
"collabSaveFailed_sizeExceeded": "Non se puido gardar na base de datos, o lenzo semella demasiado grande. Deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.",
|
||||||
"imageToolNotSupported": "As imaxes están desactivadas.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "",
|
"line1": "",
|
||||||
"line2": "",
|
"line2": "",
|
||||||
@@ -287,12 +230,11 @@
|
|||||||
"image": ""
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "Non se puido copiar.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": "Non se puido copiar ao portapapeis."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "Selección",
|
"selection": "Selección",
|
||||||
"lasso": "",
|
|
||||||
"image": "Inserir imaxe",
|
"image": "Inserir imaxe",
|
||||||
"rectangle": "Rectángulo",
|
"rectangle": "Rectángulo",
|
||||||
"diamond": "Diamante",
|
"diamond": "Diamante",
|
||||||
@@ -304,7 +246,7 @@
|
|||||||
"library": "Biblioteca",
|
"library": "Biblioteca",
|
||||||
"lock": "Manter a ferramenta seleccionada activa despois de debuxar",
|
"lock": "Manter a ferramenta seleccionada activa despois de debuxar",
|
||||||
"penMode": "Modo lapis - evitar o contacto",
|
"penMode": "Modo lapis - evitar o contacto",
|
||||||
"link": "",
|
"link": "Engadir/ Actualizar ligazón para a forma seleccionada",
|
||||||
"eraser": "Goma de borrar",
|
"eraser": "Goma de borrar",
|
||||||
"frame": "",
|
"frame": "",
|
||||||
"magicframe": "",
|
"magicframe": "",
|
||||||
@@ -313,23 +255,7 @@
|
|||||||
"hand": "Man (ferramenta de desprazamento)",
|
"hand": "Man (ferramenta de desprazamento)",
|
||||||
"extraTools": "Máis ferramentas",
|
"extraTools": "Máis ferramentas",
|
||||||
"mermaidToExcalidraw": "",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "",
|
|
||||||
"diamond": "",
|
|
||||||
"ellipse": "",
|
|
||||||
"arrow": "",
|
|
||||||
"line": "",
|
|
||||||
"freedraw": "",
|
|
||||||
"text": "",
|
|
||||||
"image": "",
|
|
||||||
"group": "",
|
|
||||||
"frame": "",
|
|
||||||
"magicframe": "",
|
|
||||||
"embeddable": "",
|
|
||||||
"selection": "",
|
|
||||||
"iframe": ""
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "Accións do lenzo",
|
"canvasActions": "Accións do lenzo",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "Formas"
|
"shapes": "Formas"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "Para mover o lenzo, manteña pulsada a roda do rato ou a barra de espazo mentres arrastra, ou utilice a ferramenta da man",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "Faga clic para iniciar varios puntos, arrastre para unha sola liña",
|
"linearElement": "Faga clic para iniciar varios puntos, arrastre para unha sola liña",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "Fai clic e arrastra, solta cando acabes",
|
"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": "Consello: tamén podes engadir texto facendo dobre-clic en calquera lugar coa ferramenta de selección",
|
||||||
"embeddable": "Faga clic e arrastre para crear un sitio web embebido",
|
"embeddable": "Faga clic e arrastre para crear un sitio web embebido",
|
||||||
"text_selected": "",
|
"text_selected": "Dobre-clic ou prema ENTER para editar o texto",
|
||||||
"text_editing": "",
|
"text_editing": "Prema Escape ou CtrlOrCmd+ENTER para finalizar a edición",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "Faga clic no último punto ou prema Escape ou Enter para rematar",
|
||||||
"lockAngle": "",
|
"lockAngle": "Pode reducir o ángulo mantendo SHIFT",
|
||||||
"resize": "",
|
"resize": "Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,\nmanteña ALT para axustalo dende o centro",
|
||||||
"resizeImage": "",
|
"resizeImage": "Pode axustar o tamaño libremente mantendo SHIFT,\nmanteña ALT para axustalo dende o centro",
|
||||||
"rotate": "",
|
"rotate": "Podes reducir os ángulos mantendo SHIFT mentres os rotas",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "Manteña pulsado CtrlOrCmd e faga dobre clic ou prema CtrlOrCmd + Enter para editar puntos",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "Prema Suprimir para eliminar o(s) punto(s)\nCtrlOrCmd+D para duplicalos, ou arrastre para movelos",
|
||||||
"lineEditor_pointSelected": "",
|
"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",
|
||||||
"lineEditor_nothingSelected": "",
|
"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",
|
"publishLibrary": "Publica a túa propia biblioteca",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "Prema a tecla enter para engadir texto",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "Manteña pulsado CtrlOrCmd para seleccionar en profundidade e evitar o arrastre",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "Manteña pulsado Alt para reverter os elementos marcados para a súa eliminación",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "Esta función pódese activar establecendo a opción \"dom.events.asyncClipboard.clipboardItem\" a \"true\". Para cambiar as opcións do navegador en Firefox, visita a páxina \"about:config\".",
|
"firefox_clipboard_write": "Esta función pódese activar establecendo a opción \"dom.events.asyncClipboard.clipboardItem\" a \"true\". Para cambiar as opcións do navegador en Firefox, visita a páxina \"about:config\".",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "Non se pode mostrar a vista previa",
|
"cannotShowPreview": "Non se pode mostrar a vista previa",
|
||||||
@@ -378,12 +299,9 @@
|
|||||||
"openIssueMessage": "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 <button>rastrexador de erros.</button> Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.",
|
"openIssueMessage": "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 <button>rastrexador de erros.</button> Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.",
|
||||||
"sceneContent": "Contido da escena:"
|
"sceneContent": "Contido da escena:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "Ou"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "Invita xente a colaborar no teu diagrama.",
|
"desc_intro": "Podes invitar xente a colaborar contigo na túa escena actual.",
|
||||||
"desc_privacy": "",
|
"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_startSession": "Comezar sesión",
|
||||||
"button_stopSession": "Rematar sesión",
|
"button_stopSession": "Rematar sesión",
|
||||||
"desc_inProgressIntro": "A sesión de colaboración en directo está agora en progreso.",
|
"desc_inProgressIntro": "A sesión de colaboración en directo está agora en progreso.",
|
||||||
@@ -410,8 +328,6 @@
|
|||||||
"click": "clic",
|
"click": "clic",
|
||||||
"deepSelect": "Selección en profundidade",
|
"deepSelect": "Selección en profundidade",
|
||||||
"deepBoxSelect": "Selección en profundidade dentro da caixa, evitando o arrastre",
|
"deepBoxSelect": "Selección en profundidade dentro da caixa, evitando o arrastre",
|
||||||
"createFlowchart": "",
|
|
||||||
"navigateFlowchart": "",
|
|
||||||
"curvedArrow": "Frecha curva",
|
"curvedArrow": "Frecha curva",
|
||||||
"curvedLine": "Liña curva",
|
"curvedLine": "Liña curva",
|
||||||
"documentation": "Documentación",
|
"documentation": "Documentación",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "Zoom á selección",
|
"zoomToSelection": "Zoom á selección",
|
||||||
"toggleElementLock": "Bloquear/desbloquear selección",
|
"toggleElementLock": "Bloquear/desbloquear selección",
|
||||||
"movePageUpDown": "Mover páxina cara enriba/abaixo",
|
"movePageUpDown": "Mover páxina cara enriba/abaixo",
|
||||||
"movePageLeftRight": "Mover páxina cara a esquerda/dereita",
|
"movePageLeftRight": "Mover páxina cara a esquerda/dereita"
|
||||||
"cropStart": "",
|
|
||||||
"cropFinish": ""
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "Limpar lenzo"
|
"title": "Limpar lenzo"
|
||||||
@@ -481,14 +395,14 @@
|
|||||||
"header": "Exportar imaxe",
|
"header": "Exportar imaxe",
|
||||||
"label": {
|
"label": {
|
||||||
"withBackground": "Fondo",
|
"withBackground": "Fondo",
|
||||||
"onlySelected": "Só seleccionados",
|
"onlySelected": "",
|
||||||
"darkMode": "Modo escuro",
|
"darkMode": "Modo escuro",
|
||||||
"embedScene": "",
|
"embedScene": "",
|
||||||
"scale": "",
|
"scale": "",
|
||||||
"padding": ""
|
"padding": ""
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "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."
|
"embedScene": ""
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "Exportar a PNG",
|
"exportToPng": "Exportar a PNG",
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "Ángulo",
|
"angle": "Ángulo",
|
||||||
"shapes": "",
|
"element": "Elemento",
|
||||||
|
"elements": "Elementos",
|
||||||
"height": "Alto",
|
"height": "Alto",
|
||||||
"scene": "Escena",
|
"scene": "Escena",
|
||||||
"selected": "Seleccionado",
|
"selected": "Seleccionado",
|
||||||
"storage": "Almacenamento",
|
"storage": "Almacenamento",
|
||||||
"fullTitle": "",
|
"title": "Estadísticas para nerds",
|
||||||
"title": "",
|
|
||||||
"generalStats": "",
|
|
||||||
"elementProperties": "",
|
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"version": "Versión",
|
"version": "Versión",
|
||||||
"versionCopy": "Faga clic para copiar",
|
"versionCopy": "Faga clic para copiar",
|
||||||
@@ -527,15 +439,13 @@
|
|||||||
"copyStyles": "Estilos copiados.",
|
"copyStyles": "Estilos copiados.",
|
||||||
"copyToClipboard": "Copiado ao portapapeis.",
|
"copyToClipboard": "Copiado ao portapapeis.",
|
||||||
"copyToClipboardAsPng": "Copiar {{exportSelection}} ao portapapeis como PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "Copiar {{exportSelection}} ao portapapeis como PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "",
|
|
||||||
"fileSaved": "Ficheiro gardado.",
|
"fileSaved": "Ficheiro gardado.",
|
||||||
"fileSavedToFilename": "Gardado en {filename}",
|
"fileSavedToFilename": "Gardado en {filename}",
|
||||||
"canvas": "lenzo",
|
"canvas": "lenzo",
|
||||||
"selection": "selección",
|
"selection": "selección",
|
||||||
"pasteAsSingleElement": "Usa {{shortcut}} para pegar como un único elemento\nou pega nun editor de texto existente",
|
"pasteAsSingleElement": "Usa {{shortcut}} para pegar como un único elemento\nou pega nun editor de texto existente",
|
||||||
"unableToEmbed": "",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": ""
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "Transparente",
|
"transparent": "Transparente",
|
||||||
@@ -568,7 +478,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
|
||||||
"mostUsedCustomColors": "",
|
"mostUsedCustomColors": "",
|
||||||
"colors": "Cores",
|
"colors": "Cores",
|
||||||
"shades": "",
|
"shades": "",
|
||||||
@@ -608,57 +517,9 @@
|
|||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "",
|
"title": "",
|
||||||
"button": "Inserir",
|
"button": "",
|
||||||
"description": "",
|
"description": "",
|
||||||
"syntax": "",
|
"syntax": "",
|
||||||
"preview": "Vista previa"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": ""
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": ""
|
|
||||||
},
|
|
||||||
"sceneFonts": "",
|
|
||||||
"availableFonts": "",
|
|
||||||
"empty": ""
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "",
|
|
||||||
"hint": {
|
|
||||||
"text": "Fai clic no usuario para seguilo",
|
|
||||||
"followStatus": "Xa estás a seguir a este usuario",
|
|
||||||
"inCall": "",
|
|
||||||
"micMuted": "",
|
|
||||||
"isSpeaking": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "",
|
|
||||||
"confirm": "",
|
|
||||||
"close": ""
|
|
||||||
},
|
|
||||||
"recents": "",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "",
|
|
||||||
"noMatch": ""
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "",
|
|
||||||
"shortcutHint": ""
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,27 @@
|
|||||||
{
|
{
|
||||||
"labels": {
|
"labels": {
|
||||||
"paste": "הדבקה",
|
"paste": "הדבק",
|
||||||
"pasteAsPlaintext": "הדבקה ללא עיצוב",
|
"pasteAsPlaintext": "הדבק ללא עיצוב",
|
||||||
"pasteCharts": "הדבקת תרשימים",
|
"pasteCharts": "הדבק גרפים",
|
||||||
"selectAll": "בחירה בהכול",
|
"selectAll": "בחר הכל",
|
||||||
"multiSelect": "הוספת רכיב לבחירה",
|
"multiSelect": "הוסף רכיב לבחירה",
|
||||||
"moveCanvas": "הזזת הקנבס",
|
"moveCanvas": "הזז את הקנבס",
|
||||||
"cut": "גזירה",
|
"cut": "גזור",
|
||||||
"copy": "העתקה",
|
"copy": "העתק",
|
||||||
"copyAsPng": "העתקה ללוח כ־PNG",
|
"copyAsPng": "העתק ללוח כ PNG",
|
||||||
"copyAsSvg": "העתקה ללוח כ־SVG",
|
"copyAsSvg": "העתק ללוח כ SVG",
|
||||||
"copyText": "העתק ללוח כטקסט",
|
"copyText": "העתק ללוח כטקסט",
|
||||||
"copySource": "העתקת המקור ללוח הגזירים",
|
"copySource": "",
|
||||||
"convertToCode": "המרה לקוד",
|
"convertToCode": "",
|
||||||
"bringForward": "קירוב השכבה",
|
"bringForward": "הבא שכבה קדימה",
|
||||||
"sendToBack": "הרחקה אחורה",
|
"sendToBack": "שלח אחורה",
|
||||||
"bringToFront": "קירוב לחזית",
|
"bringToFront": "העבר לחזית",
|
||||||
"sendBackward": "הרחקה אחורה עד הסוף",
|
"sendBackward": "העבר שכבה אחורה",
|
||||||
"delete": "מחיקה",
|
"delete": "מחק",
|
||||||
"copyStyles": "העתקת סגנון",
|
"copyStyles": "העתק סגנון",
|
||||||
"pasteStyles": "הדבקת סגנונות",
|
"pasteStyles": "הדבק סגנון",
|
||||||
"stroke": "קו מתאר",
|
"stroke": "קו מתאר",
|
||||||
"changeStroke": "החלפת צבע קו מתאר",
|
|
||||||
"background": "רקע",
|
"background": "רקע",
|
||||||
"changeBackground": "החלפת צבע הרקע",
|
|
||||||
"fill": "מילוי",
|
"fill": "מילוי",
|
||||||
"strokeWidth": "עובי קו מתאר",
|
"strokeWidth": "עובי קו מתאר",
|
||||||
"strokeStyle": "סגנון קו המתאר",
|
"strokeStyle": "סגנון קו המתאר",
|
||||||
@@ -40,23 +38,15 @@
|
|||||||
"arrowhead_none": "ללא",
|
"arrowhead_none": "ללא",
|
||||||
"arrowhead_arrow": "חץ",
|
"arrowhead_arrow": "חץ",
|
||||||
"arrowhead_bar": "קצה אנכי",
|
"arrowhead_bar": "קצה אנכי",
|
||||||
"arrowhead_circle": "עיגול",
|
"arrowhead_circle": "",
|
||||||
"arrowhead_circle_outline": "עיגול (קו מתאר)",
|
"arrowhead_circle_outline": "",
|
||||||
"arrowhead_triangle": "משולש",
|
"arrowhead_triangle": "משולש",
|
||||||
"arrowhead_triangle_outline": "משולש (קו מתאר)",
|
"arrowhead_triangle_outline": "",
|
||||||
"arrowhead_diamond": "יהלום",
|
"arrowhead_diamond": "",
|
||||||
"arrowhead_diamond_outline": "יהלום (קו מתאר)",
|
"arrowhead_diamond_outline": "",
|
||||||
"arrowhead_crowfoot_many": "רגל עורב (הרבה)",
|
|
||||||
"arrowhead_crowfoot_one": "רגל עורב (אחת)",
|
|
||||||
"arrowhead_crowfoot_one_or_many": "רגל עורב (אחת או הרבה)",
|
|
||||||
"more_options": "אפשרויות נוספות",
|
|
||||||
"arrowtypes": "סוג החץ",
|
|
||||||
"arrowtype_sharp": "חץ מחודד",
|
|
||||||
"arrowtype_round": "חץ מעוקל",
|
|
||||||
"arrowtype_elbowed": "חץ זוויתי",
|
|
||||||
"fontSize": "גודל גופן",
|
"fontSize": "גודל גופן",
|
||||||
"fontFamily": "גופן",
|
"fontFamily": "גופן",
|
||||||
"addWatermark": "הוספת „נוצר באמצעות Excalidraw”",
|
"addWatermark": "הוסף \"נוצר באמצעות Excalidraw\"",
|
||||||
"handDrawn": "ציור יד",
|
"handDrawn": "ציור יד",
|
||||||
"normal": "רגיל",
|
"normal": "רגיל",
|
||||||
"code": "קוד",
|
"code": "קוד",
|
||||||
@@ -64,86 +54,77 @@
|
|||||||
"medium": "בינוני",
|
"medium": "בינוני",
|
||||||
"large": "גדול",
|
"large": "גדול",
|
||||||
"veryLarge": "גדול מאוד",
|
"veryLarge": "גדול מאוד",
|
||||||
"solid": "אחיד",
|
"solid": "מוצק",
|
||||||
"hachure": "קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה",
|
"hachure": "קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה",
|
||||||
"zigzag": "זיגזג",
|
"zigzag": "זיגזג",
|
||||||
"crossHatch": "קווים מוצלבים",
|
"crossHatch": "קווים מוצלבים שתי וערב",
|
||||||
"thin": "דק",
|
"thin": "דק",
|
||||||
"bold": "מודגש",
|
"bold": "מודגש",
|
||||||
"left": "שמאל",
|
"left": "שמאל",
|
||||||
"center": "מרכז",
|
"center": "מרכז",
|
||||||
"right": "ימין",
|
"right": "ימין",
|
||||||
"extraBold": "מודגש במיוחד",
|
"extraBold": "מודגש במיוחד",
|
||||||
"architect": "אדריכלות",
|
"architect": "ארכיטקט",
|
||||||
"artist": "אמן",
|
"artist": "אמן",
|
||||||
"cartoonist": "קריקטוריסט",
|
"cartoonist": "קריקטוריסט",
|
||||||
"fileTitle": "שם קובץ",
|
"fileTitle": "שם קובץ",
|
||||||
"colorPicker": "בורר צבעים",
|
"colorPicker": "בוחר צבעים",
|
||||||
"canvasColors": "בשימוש בקנבס",
|
"canvasColors": "בשימוש בקנבס",
|
||||||
"canvasBackground": "רקע קנבס",
|
"canvasBackground": "רקע קנבס",
|
||||||
"drawingCanvas": "קנבס ציור",
|
"drawingCanvas": "קנבס ציור",
|
||||||
"clearCanvas": "ניקוי הקנבס",
|
|
||||||
"layers": "שכבות",
|
"layers": "שכבות",
|
||||||
"actions": "פעולות",
|
"actions": "פעולות",
|
||||||
"language": "שפה",
|
"language": "שפה",
|
||||||
"liveCollaboration": "התחלת שיתוף חי…",
|
"liveCollaboration": "התחל שיתוף חי...",
|
||||||
"duplicateSelection": "שכפול",
|
"duplicateSelection": "שכפל",
|
||||||
"untitled": "ללא כותרת",
|
"untitled": "ללא כותרת",
|
||||||
"name": "שם",
|
"name": "שם",
|
||||||
"yourName": "שמך",
|
"yourName": "שמך",
|
||||||
"madeWithExcalidraw": "נוצר באמצעות Excalidraw",
|
"madeWithExcalidraw": "נוצר באמצעות Excalidraw",
|
||||||
"group": "קיבוץ הבחירה",
|
"group": "קבץ",
|
||||||
"ungroup": "פירוק קבוצה",
|
"ungroup": "פרק קבוצה",
|
||||||
"collaborators": "שותפים",
|
"collaborators": "שותפים",
|
||||||
"toggleGrid": "הצגת/הסתרת רשת",
|
"showGrid": "הצג רשת",
|
||||||
"addToLibrary": "הוספה לספרייה",
|
"addToLibrary": "הוסף לספריה",
|
||||||
"removeFromLibrary": "הסרה מהספרייה",
|
"removeFromLibrary": "הסר מספריה",
|
||||||
"libraryLoadingMessage": "הספרייה נטענת…",
|
"libraryLoadingMessage": "טוען ספריה…",
|
||||||
"libraries": "עיון בספריות",
|
"libraries": "עיין בספריות",
|
||||||
"loadingScene": "הסצנה נטענת…",
|
"loadingScene": "טוען תצוגה…",
|
||||||
"loadScene": "טעינת סצנה מקובץ",
|
"align": "יישר",
|
||||||
"align": "יישור",
|
"alignTop": "יישר למעלה",
|
||||||
"alignTop": "יישור למעלה",
|
"alignBottom": "יישר למטה",
|
||||||
"alignBottom": "יישור למטה",
|
"alignLeft": "יישר לשמאל",
|
||||||
"alignLeft": "יישור לשמאל",
|
"alignRight": "יישר לימין",
|
||||||
"alignRight": "יישור לימין",
|
"centerVertically": "מרכז אנכית",
|
||||||
"centerVertically": "מירכוז אנכי",
|
"centerHorizontally": "מרכז אופקית",
|
||||||
"centerHorizontally": "מירכוז אופקי",
|
"distributeHorizontally": "חלוקה אופקית",
|
||||||
"distributeHorizontally": "פיזור אופקי",
|
"distributeVertically": "חלוקה אנכית",
|
||||||
"distributeVertically": "פיזור אנכי",
|
"flipHorizontal": "הפוך אופקית",
|
||||||
"flipHorizontal": "היפוך אופקי",
|
"flipVertical": "הפוך אנכית",
|
||||||
"flipVertical": "היפוך אנכי",
|
|
||||||
"viewMode": "מצב תצוגה",
|
"viewMode": "מצב תצוגה",
|
||||||
"share": "שיתוף",
|
"share": "שתף",
|
||||||
"showStroke": "הצגת בורר צבע מברשת",
|
"showStroke": "הצג בוחר צבע מברשת",
|
||||||
"showBackground": "הצגת בורר צבע רקע",
|
"showBackground": "הצג בוחר צבע רקע",
|
||||||
"showFonts": "הצגת בורר הגופנים",
|
"toggleTheme": "שינוי ערכת העיצוב",
|
||||||
"toggleTheme": "החלפת מצב מואר/חשוך",
|
|
||||||
"theme": "ערכת עיצוב",
|
|
||||||
"personalLib": "ספריה פרטית",
|
"personalLib": "ספריה פרטית",
|
||||||
"excalidrawLib": "הספרייה של Excalidraw",
|
"excalidrawLib": "הספריה של Excalidraw",
|
||||||
"decreaseFontSize": "הקטנת הכתב",
|
"decreaseFontSize": "הקטן את גודל הגופן",
|
||||||
"increaseFontSize": "הגדלת הכתב",
|
"increaseFontSize": "הגדל את גודל הגופן",
|
||||||
"unbindText": "ביטול קיבוע הטקסט",
|
"unbindText": "ביטול קיבוע הטקסט",
|
||||||
"bindText": "קיבוע הטקסט למיכל",
|
"bindText": "קיבוע הטקסט למיכל",
|
||||||
"createContainerFromText": "אריזת טקסט במיכל",
|
"createContainerFromText": "ארוז טקסט במיכל",
|
||||||
"link": {
|
"link": {
|
||||||
"edit": "עריכת קישור",
|
"edit": "עריכת קישור",
|
||||||
"editEmbed": "עריכת קישור מוטמע",
|
"editEmbed": "ערוך קישור ושבץ",
|
||||||
"create": "הוספת קישור",
|
"create": "יצירת קישור",
|
||||||
|
"createEmbed": "צור קישור ושבץ",
|
||||||
"label": "קישור",
|
"label": "קישור",
|
||||||
"labelEmbed": "קישור ושיבוץ",
|
"labelEmbed": "קשר ושבץ",
|
||||||
"empty": "לא נקבע קישור",
|
"empty": "לא נקבע קישור"
|
||||||
"hint": "יש להקליד או להדביק את הקישור שלך כאן",
|
|
||||||
"goToElement": "העברה לפריט היעד"
|
|
||||||
},
|
},
|
||||||
"lineEditor": {
|
"lineEditor": {
|
||||||
"edit": "עריכת קו",
|
"edit": "ערוך קו",
|
||||||
"editArrow": "עריכת חץ"
|
"exit": "צא מעורך הקו"
|
||||||
},
|
|
||||||
"polygon": {
|
|
||||||
"breakPolygon": "",
|
|
||||||
"convertToPolygon": ""
|
|
||||||
},
|
},
|
||||||
"elementLock": {
|
"elementLock": {
|
||||||
"lock": "נעילה",
|
"lock": "נעילה",
|
||||||
@@ -152,102 +133,65 @@
|
|||||||
"unlockAll": "שחרור הכול"
|
"unlockAll": "שחרור הכול"
|
||||||
},
|
},
|
||||||
"statusPublished": "פורסם",
|
"statusPublished": "פורסם",
|
||||||
"sidebarLock": "להשאיר את סרגל הצד פתוח",
|
"sidebarLock": "שמור את סרגל הצד פתוח",
|
||||||
"selectAllElementsInFrame": "בחירת כל הרכיבים במסגרת",
|
"selectAllElementsInFrame": "בחר את כל האלמנטים במסגרת",
|
||||||
"removeAllElementsFromFrame": "הסרת כל הרכיבים מהמסגרת",
|
"removeAllElementsFromFrame": "הסר את כל האלמנטים שבמסגרת",
|
||||||
"eyeDropper": "בחירת צבע מתוך הקנבס",
|
"eyeDropper": "",
|
||||||
"textToDiagram": "טקסט לתרשים",
|
"textToDiagram": "",
|
||||||
"prompt": "בקשה",
|
"prompt": ""
|
||||||
"followUs": "לעקוב אחרינו",
|
|
||||||
"discordChat": "צ׳אט ב־Discord",
|
|
||||||
"zoomToFitViewport": "התאמת התקריב לגודל המסך",
|
|
||||||
"zoomToFitSelection": "להתמקד בחלק הנבחר",
|
|
||||||
"zoomToFit": "להציג את כל הרכיבים",
|
|
||||||
"installPWA": "התקנת Excalidraw לשימוש מקומי (PWA)",
|
|
||||||
"autoResize": "לאפשר התאמה אוטומטית של גודל הכתב",
|
|
||||||
"imageCropping": "חיתוך תמונה",
|
|
||||||
"unCroppedDimension": "ממדים ללא חיתוך",
|
|
||||||
"copyElementLink": "העתקת קישור לפריט",
|
|
||||||
"linkToElement": "קישור לפריט",
|
|
||||||
"wrapSelectionInFrame": "לעטוף את הבחירה במסגרת",
|
|
||||||
"tab": "",
|
|
||||||
"shapeSwitch": ""
|
|
||||||
},
|
|
||||||
"elementLink": {
|
|
||||||
"title": "קישור לפריט",
|
|
||||||
"desc": "יש ללחוץ על צורה בקנבס או להדביק קישור.",
|
|
||||||
"notFound": "פריט מקושר לא נמצא בקנבס."
|
|
||||||
},
|
},
|
||||||
"library": {
|
"library": {
|
||||||
"noItems": "עוד לא הוספת דברים…",
|
"noItems": "עוד לא הוספת דברים...",
|
||||||
"hint_emptyLibrary": "נא לבחור משהו בקנבס כדי להוסיף אותו לכאן, או להתקין ספרייה מהמאגר הציבורי שלמטה.",
|
"hint_emptyLibrary": "בחר משהו בקנבס כדי להוסיף אותו לכאן, או שתתקין ספריה מהספריה הציבורית מטה.",
|
||||||
"hint_emptyPrivateLibrary": "נא לבחור משהו בקנבס כדי להוסיף אותו לכאן.",
|
"hint_emptyPrivateLibrary": "בחר משהו בקנבס כדי להוסיף אותו לכאן."
|
||||||
"search": {
|
|
||||||
"inputPlaceholder": "",
|
|
||||||
"heading": "",
|
|
||||||
"noResults": "",
|
|
||||||
"clearSearch": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"title": "איתור בלוח הציור",
|
|
||||||
"noMatch": "לא נמצאו תוצאות…",
|
|
||||||
"singleResult": "תוצאה",
|
|
||||||
"multipleResults": "תוצאות",
|
|
||||||
"placeholder": "איתור טקסט בלוח הציור…",
|
|
||||||
"frames": "",
|
|
||||||
"texts": ""
|
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"clearReset": "איפוס לוח הציור",
|
"clearReset": "אפס את הקנבאס",
|
||||||
"exportJSON": "ייצוא לקובץ",
|
"exportJSON": "ייצא לקובץ",
|
||||||
"exportImage": "ייצוא התמונה…",
|
"exportImage": "ייצוא התמונה...",
|
||||||
"export": "שמירה אל…",
|
"export": "שמור ל...",
|
||||||
"copyToClipboard": "העתקה ללוח",
|
"copyToClipboard": "העתק ללוח",
|
||||||
"copyLink": "העתקת קישור",
|
"save": "שמור לקובץ נוכחי",
|
||||||
"save": "שמירה לקובץ הנוכחי",
|
|
||||||
"saveAs": "שמירה בשם",
|
"saveAs": "שמירה בשם",
|
||||||
"load": "פתיחה",
|
"load": "פתח",
|
||||||
"getShareableLink": "קבלת קישור לשיתוף",
|
"getShareableLink": "קבל קישור לשיתוף",
|
||||||
"close": "סגירה",
|
"close": "סגור",
|
||||||
"selectLanguage": "בחירת שפה",
|
"selectLanguage": "בחר שפה",
|
||||||
"scrollBackToContent": "גלילה בחזרה לתוכן",
|
"scrollBackToContent": "גלול בחזרה לתוכן",
|
||||||
"zoomIn": "הגדלה",
|
"zoomIn": "הגדל",
|
||||||
"zoomOut": "הקטנה",
|
"zoomOut": "הקטן",
|
||||||
"resetZoom": "איפוס תקריב",
|
"resetZoom": "איפוס זום",
|
||||||
"menu": "תפריט",
|
"menu": "תפריט",
|
||||||
"done": "בוצע",
|
"done": "בוצע",
|
||||||
"edit": "עריכה",
|
"edit": "ערוך",
|
||||||
"undo": "ביטול",
|
"undo": "בטל",
|
||||||
"redo": "ביצוע מחדש",
|
"redo": "בצע מחדש",
|
||||||
"resetLibrary": "איפוס ספרייה",
|
"resetLibrary": "איפוס ספריה",
|
||||||
"createNewRoom": "יצירת חדר חדש",
|
"createNewRoom": "צור חדר חדש",
|
||||||
"fullScreen": "מסך מלא",
|
"fullScreen": "מסך מלא",
|
||||||
"darkMode": "מצב כהה",
|
"darkMode": "מצב כהה",
|
||||||
"lightMode": "מצב בהיר",
|
"lightMode": "מצב בהיר",
|
||||||
"systemMode": "מצב מערכת",
|
"zenMode": "מצב זן",
|
||||||
"zenMode": "מצב ריכוז",
|
"objectsSnapMode": "",
|
||||||
"objectsSnapMode": "הצמדה לעצמים",
|
"exitZenMode": "צא ממצב זן",
|
||||||
"exitZenMode": "יציאה ממצב ריכוז",
|
|
||||||
"cancel": "ביטול",
|
"cancel": "ביטול",
|
||||||
"saveLibNames": "",
|
|
||||||
"clear": "ניקוי",
|
"clear": "ניקוי",
|
||||||
"remove": "הסרה",
|
"remove": "הסר",
|
||||||
"embed": "להציג את ההטמעה",
|
"embed": "",
|
||||||
"publishLibrary": "",
|
"publishLibrary": "פרסום",
|
||||||
"submit": "שליחה",
|
"submit": "שליחה",
|
||||||
"confirm": "אישור",
|
"confirm": "אשר",
|
||||||
"embeddableInteractionButton": "לחיצה לתפעול"
|
"embeddableInteractionButton": ""
|
||||||
},
|
},
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"clearReset": "פעולה זו תנקה את כל לוח הציור. להמשיך?",
|
"clearReset": "פעולה זו תנקה את כל הקנבס. אתה בטוח?",
|
||||||
"couldNotCreateShareableLink": "יצירת קישור לשיתוף נכשלה.",
|
"couldNotCreateShareableLink": "יצירת קישור לשיתוף נכשל.",
|
||||||
"couldNotCreateShareableLinkTooBig": "יצירת קישור לשיתוף נכשלה: הסצנה גדולה מדי",
|
"couldNotCreateShareableLinkTooBig": "יצירת קישור לשיתוף נכשל: התצוגה גדולה מדי",
|
||||||
"couldNotLoadInvalidFile": "טעינת קובץ לא תקין נכשלה",
|
"couldNotLoadInvalidFile": "טעינת קובץ לא תקין נכשלה",
|
||||||
"importBackendFailed": "ייבוא מהמנגנון נכשל.",
|
"importBackendFailed": "ייבוא מהשרת נכשל.",
|
||||||
"cannotExportEmptyCanvas": "לא ניתן לייצא לוח ציור ריק.",
|
"cannotExportEmptyCanvas": "לא ניתן לייצא קנבאס ריק.",
|
||||||
"couldNotCopyToClipboard": "לא ניתן להעתיק ללוח.",
|
"couldNotCopyToClipboard": "לא ניתן היה להעתיק ללוח.",
|
||||||
"decryptFailed": "פענוח הצפנת הנתונים נכשל.",
|
"decryptFailed": "פיענוח ההצפנה של המידע נכשל.",
|
||||||
"uploadedSecurly": "ההעלאה אובטחה באמצעות הצפנה מקצה לקצה, פירוש הדבר שהשרת של Excalidraw וגורמי צד ג׳ לא יכולים לקרוא את התוכן.",
|
"uploadedSecurly": "ההעלאה אובטחה באמצעות הצפנה מקצה לקצה, פירוש הדבר שהשרת של Excalidraw וגורמי צד ג׳ לא יכולים לקרוא את התוכן.",
|
||||||
"loadSceneOverridePrompt": "טעינה של ציור חיצוני תחליף את התוכן הקיים שלך. האם תרצה להמשיך?",
|
"loadSceneOverridePrompt": "טעינה של ציור חיצוני תחליף את התוכן הקיים שלך. האם תרצה להמשיך?",
|
||||||
"collabStopOverridePrompt": "עצירת השיתוף תוביל למחיקת הציור הקודם ששמור מקומית בדפדפן. האם אתה בטוח?\n\n(אם תרצה לשמור את הציור המקומי, סגור את הטאב של הדפדפן במקום.)",
|
"collabStopOverridePrompt": "עצירת השיתוף תוביל למחיקת הציור הקודם ששמור מקומית בדפדפן. האם אתה בטוח?\n\n(אם תרצה לשמור את הציור המקומי, סגור את הטאב של הדפדפן במקום.)",
|
||||||
@@ -260,39 +204,37 @@
|
|||||||
"resetLibrary": "פעולה זו תנקה את כל הספריה שלך. אתה בטוח?",
|
"resetLibrary": "פעולה זו תנקה את כל הספריה שלך. אתה בטוח?",
|
||||||
"removeItemsFromsLibrary": "מחק {{count}} פריט(ים) מהספריה?",
|
"removeItemsFromsLibrary": "מחק {{count}} פריט(ים) מהספריה?",
|
||||||
"invalidEncryptionKey": "מפתח ההצפנה חייב להיות בן 22 תוים. השיתוף החי מנוטרל.",
|
"invalidEncryptionKey": "מפתח ההצפנה חייב להיות בן 22 תוים. השיתוף החי מנוטרל.",
|
||||||
"collabOfflineWarning": "אין חיבור זמין לאינטרנט.\nהשינויים שלך לא ישמרו!",
|
"collabOfflineWarning": "אין חיבור זמין לאינטרנט.\nהשינויים שלך לא ישמרו!"
|
||||||
"localStorageQuotaExceeded": ""
|
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"unsupportedFileType": "סוג הקובץ אינו נתמך.",
|
"unsupportedFileType": "סוג הקובץ אינו נתמך.",
|
||||||
"imageInsertError": "לא ניתן היה להוסיף את התמונה. אנא נסה שוב מאוחר יותר...",
|
"imageInsertError": "לא ניתן היה להוסיף את התמונה. אנא נסה שוב מאוחר יותר...",
|
||||||
"fileTooBig": "הקובץ גדול מדי. הגודל המירבי המותר הינו {{maxSize}}.",
|
"fileTooBig": "הקובץ גדול מדי. הגודל המירבי המותר הינו {{maxSize}}.",
|
||||||
"svgImageInsertError": "לא ניתן היה להוסיף את תמונת ה-SVG. הסימונים בתוך קובץ ה-SVG עשויים להיות שגויים.",
|
"svgImageInsertError": "לא ניתן היה להוסיף את תמונת ה-SVG. הסימונים בתוך קובץ ה-SVG עשויים להיות שגויים.",
|
||||||
"failedToFetchImage": "משיכת התמונה נכשלה.",
|
"failedToFetchImage": "",
|
||||||
|
"invalidSVGString": "SVG שגוי.",
|
||||||
"cannotResolveCollabServer": "לא הצלחתי להתחבר לשרת השיתוף. אנא רענן את הדף ונסה שוב.",
|
"cannotResolveCollabServer": "לא הצלחתי להתחבר לשרת השיתוף. אנא רענן את הדף ונסה שוב.",
|
||||||
"importLibraryError": "לא ניתן היה לטעון את הספריה",
|
"importLibraryError": "לא ניתן היה לטעון את הספריה",
|
||||||
"saveLibraryError": "שמירת הספריה בזיכרון לא הצליחה. יש לשמור את הספריה מקומית כקובץ כדי לוודא שהשינויים לא ילכו לאיבוד.",
|
|
||||||
"collabSaveFailed": "לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.",
|
"collabSaveFailed": "לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.",
|
||||||
"collabSaveFailed_sizeExceeded": "לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.",
|
"collabSaveFailed_sizeExceeded": "לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.",
|
||||||
"imageToolNotSupported": "תמונות מושבתות.",
|
"imageToolNotSupported": "",
|
||||||
"brave_measure_text_error": {
|
"brave_measure_text_error": {
|
||||||
"line1": "נראה שהנכם משתמשים בדפדפן Brave אשר מוגדר<bold>למנוע באופן אגרסיבי חתימה אלקטרונית</bold>.",
|
"line1": "",
|
||||||
"line2": "ההגדרה הזאת יכולה לשבור את<bold>רכיבי הטקסט</bold> בעבודתך.",
|
"line2": "",
|
||||||
"line3": "אנו ממליצים לבטל את ההגדרה הזו. תוכלו ללמוד <link>כאן</link> כיצד לעשות זאת.",
|
"line3": "",
|
||||||
"line4": "אם ביטול ההגדרה אינו מתקן את הצגת רכיבי הטקסט אנא פתחו סוגיה בדף ה<issueLink>גיטהאב</issueLink> או כתבו לנו <discordLink>בדיסקורד</discordLink>"
|
"line4": ""
|
||||||
},
|
},
|
||||||
"libraryElementTypeError": {
|
"libraryElementTypeError": {
|
||||||
"embeddable": "אי אפשר להוסיף רכיבי הטמעה לספרייה.",
|
"embeddable": "",
|
||||||
"iframe": "אי אפשר להוסיף רכיבי מסגרות שיבוץ (IFrame) לספרייה.",
|
"iframe": "",
|
||||||
"image": "תמיכה בהוספת תמונות לספרייה תושק בקרוב!"
|
"image": ""
|
||||||
},
|
},
|
||||||
"asyncPasteFailedOnRead": "לא ניתן להדביק (אי אפשר לקרוא מלוח המערכת).",
|
"asyncPasteFailedOnRead": "",
|
||||||
"asyncPasteFailedOnParse": "לא ניתן להדביק.",
|
"asyncPasteFailedOnParse": "",
|
||||||
"copyToSystemClipboardFailed": "לא ניתן להעתיק ללוח."
|
"copyToSystemClipboardFailed": ""
|
||||||
},
|
},
|
||||||
"toolBar": {
|
"toolBar": {
|
||||||
"selection": "בחירה",
|
"selection": "בחירה",
|
||||||
"lasso": "",
|
|
||||||
"image": "הוספת תמונה",
|
"image": "הוספת תמונה",
|
||||||
"rectangle": "מלבן",
|
"rectangle": "מלבן",
|
||||||
"diamond": "יהלום",
|
"diamond": "יהלום",
|
||||||
@@ -304,32 +246,16 @@
|
|||||||
"library": "ספריה",
|
"library": "ספריה",
|
||||||
"lock": "השאר את הכלי הנבחר פעיל גם לאחר סיום הציור",
|
"lock": "השאר את הכלי הנבחר פעיל גם לאחר סיום הציור",
|
||||||
"penMode": "מצב עט - מנע נגיעה",
|
"penMode": "מצב עט - מנע נגיעה",
|
||||||
"link": "הוספת / עדכון קישור לצורה מסוימת",
|
"link": "הוספה/עדכון קישור של הצורה שנבחרה",
|
||||||
"eraser": "מחק",
|
"eraser": "מחק",
|
||||||
"frame": "כלי מסגרת",
|
"frame": "",
|
||||||
"magicframe": "תרשים קווי מתאר לקוד",
|
"magicframe": "",
|
||||||
"embeddable": "הטמעה באתר",
|
"embeddable": "",
|
||||||
"laser": "סמן לייזר",
|
"laser": "",
|
||||||
"hand": "יד (כלי הזזה)",
|
"hand": "יד (כלי הזזה)",
|
||||||
"extraTools": "כלים נוספים",
|
"extraTools": "",
|
||||||
"mermaidToExcalidraw": "Mermaid ל־Excalidraw",
|
"mermaidToExcalidraw": "",
|
||||||
"convertElementType": ""
|
"magicSettings": ""
|
||||||
},
|
|
||||||
"element": {
|
|
||||||
"rectangle": "מלבן",
|
|
||||||
"diamond": "יהלום",
|
|
||||||
"ellipse": "אליפסה",
|
|
||||||
"arrow": "חץ",
|
|
||||||
"line": "קו",
|
|
||||||
"freedraw": "ציור חופשי",
|
|
||||||
"text": "טקסט",
|
|
||||||
"image": "תמונה",
|
|
||||||
"group": "קבוצה",
|
|
||||||
"frame": "מסגרת",
|
|
||||||
"magicframe": "מתרשים קווי מתאר לקוד",
|
|
||||||
"embeddable": "הטמעה באתר",
|
|
||||||
"selection": "בחירה",
|
|
||||||
"iframe": "IFrame"
|
|
||||||
},
|
},
|
||||||
"headings": {
|
"headings": {
|
||||||
"canvasActions": "פעולות קנבאס",
|
"canvasActions": "פעולות קנבאס",
|
||||||
@@ -337,33 +263,28 @@
|
|||||||
"shapes": "צורות"
|
"shapes": "צורות"
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"dismissSearch": "",
|
"canvasPanning": "כדי להזיז את הקנבס, החזק את גלגל העכבר לחוץ או את מקש הרווח לחוץ תוך כדי גרירה, או השתמש בכלי היד",
|
||||||
"canvasPanning": "",
|
|
||||||
"linearElement": "לחץ להתחלת מספר נקודות, גרור לקו יחיד",
|
"linearElement": "לחץ להתחלת מספר נקודות, גרור לקו יחיד",
|
||||||
"arrowTool": "",
|
|
||||||
"freeDraw": "לחץ וגרור, שחרר כשסיימת",
|
"freeDraw": "לחץ וגרור, שחרר כשסיימת",
|
||||||
"text": "טיפ: אפשר להוסיף טקסט על ידי לחיצה כפולה בכל מקום עם כלי הבחירה",
|
"text": "טיפ: אפשר להוסיף טקסט על ידי לחיצה כפולה בכל מקום עם כלי הבחירה",
|
||||||
"embeddable": "לחצו וגררו כדי ליצור הטמעת אתר",
|
"embeddable": "",
|
||||||
"text_selected": "",
|
"text_selected": "לחץ לחיצה כפולה או הקש על אנטר לעריכת הטקסט",
|
||||||
"text_editing": "",
|
"text_editing": "כדי לסיים את העריכה לחץ על מקש Escape או על Ctrl (Cmd במחשבי אפל) ומקש Enter",
|
||||||
"linearElementMulti": "",
|
"linearElementMulti": "הקלק על הנקודה האחרונה או הקש Escape או Enter לסיום",
|
||||||
"lockAngle": "",
|
"lockAngle": "ניתן להגביל את הזוויות על ידי החזקה של מקש ה- SHIFT",
|
||||||
"resize": "",
|
"resize": "ניתן להגביל פרופורציות על ידי לחיצה על SHIFT תוך כדי שינוי גודל,\nהחזק ALT בשביל לשנות גודל ביחס למרכז",
|
||||||
"resizeImage": "",
|
"resizeImage": "אתה יכול לשנות את הגודל בחופשיות על ידי החזקת מקש SHIFT,\nהחזק את מקש ALT כדי לבצע שינוי גודל מהמרכז",
|
||||||
"rotate": "",
|
"rotate": "ניתן להגביל זוויות על ידי לחיצה על SHIFT תוך כדי סיבוב",
|
||||||
"lineEditor_info": "",
|
"lineEditor_info": "החזק Ctrl / Cmd ובצע לחיצה כפולה או לחץ Ctrl / Cmd + Enter לעריכת נקודות",
|
||||||
"lineEditor_line_info": "",
|
"lineEditor_pointSelected": "לחץ Delete למחיקת נקודה/ות,\nCtrl / Cmd + D לשכפול, או גרור להזזה",
|
||||||
"lineEditor_pointSelected": "",
|
"lineEditor_nothingSelected": "בחר נקודה כדי לערוך (החזק SHIFT לבחירת כמה),\nאו החזק Alt והקלק להוספת נקודות חדשות",
|
||||||
"lineEditor_nothingSelected": "",
|
"placeImage": "הקלק להנחת התמונה, או הקלק וגרור להגדרת הגודל שלו ידנית",
|
||||||
"publishLibrary": "פרסם ספריה משלך",
|
"publishLibrary": "פרסם ספריה משלך",
|
||||||
"bindTextToElement": "",
|
"bindTextToElement": "הקש Enter כדי להוספת טקסט",
|
||||||
"createFlowchart": "",
|
"deepBoxSelect": "החזק Ctrl / Cmd לבחירה עמוקה ולמניעת גרירה",
|
||||||
"deepBoxSelect": "",
|
"eraserRevert": "החזק Alt להחזרת רכיבים מסומנים למחיקה",
|
||||||
"eraserRevert": "",
|
|
||||||
"firefox_clipboard_write": "יכולות זה ניתנת להפעלה על ידי שינוי הדגל של \"dom.events.asyncClipboard.clipboardItem\" למצב \"true\". כדי לשנות את הדגל בדפדפן Firefox, בקר בעמוד ״about:config״.",
|
"firefox_clipboard_write": "יכולות זה ניתנת להפעלה על ידי שינוי הדגל של \"dom.events.asyncClipboard.clipboardItem\" למצב \"true\". כדי לשנות את הדגל בדפדפן Firefox, בקר בעמוד ״about:config״.",
|
||||||
"disableSnapping": "",
|
"disableSnapping": ""
|
||||||
"enterCropEditor": "",
|
|
||||||
"leaveCropEditor": ""
|
|
||||||
},
|
},
|
||||||
"canvasError": {
|
"canvasError": {
|
||||||
"cannotShowPreview": "לא ניתן להראות תצוגה מקדימה",
|
"cannotShowPreview": "לא ניתן להראות תצוגה מקדימה",
|
||||||
@@ -371,19 +292,16 @@
|
|||||||
"canvasTooBigTip": "טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני."
|
"canvasTooBigTip": "טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני."
|
||||||
},
|
},
|
||||||
"errorSplash": {
|
"errorSplash": {
|
||||||
"headingMain": "התעוררה איזו שגיאה. נא לנסות <button>לרענן את העמוד</button>.",
|
"headingMain": "",
|
||||||
"clearCanvasMessage": "אם טעינה מחדש לא עובדת, נסה ",
|
"clearCanvasMessage": "אם טעינה מחדש לא עובדת, נסה ",
|
||||||
"clearCanvasCaveat": " זה יגרום לאובדן העבודה ",
|
"clearCanvasCaveat": " זה יגרום לאובדן העבודה ",
|
||||||
"trackedToSentry": "השגיאה עם המזהה {{eventId}} במעקב במערכת שלך.",
|
"trackedToSentry": "",
|
||||||
"openIssueMessage": "אנו נזהרים מאוד לא להכניס מידע על הסצנה שלך בתוך דיווח התקלה. אם הסצנה אינה פרטית, אנא שקלו לשלוח אותה ל<button>מעקב השגיאות שלנו</button>. אנא הוסיפו בתחתית הבאג מידע על ידי העתקה והדבקה לתוך הסוגיה ב-GitHub.",
|
"openIssueMessage": "",
|
||||||
"sceneContent": "תוכן הקנבאס:"
|
"sceneContent": "תוכן הקנבאס:"
|
||||||
},
|
},
|
||||||
"shareDialog": {
|
|
||||||
"or": "או"
|
|
||||||
},
|
|
||||||
"roomDialog": {
|
"roomDialog": {
|
||||||
"desc_intro": "הזמנת משתתפים לעבודה משותפת.",
|
"desc_intro": "אתה יכול להזמין אנשים לקנבאס הנוכחי שלך לעבודה משותפת.",
|
||||||
"desc_privacy": "אל דאגה, סשן העבודה מוצפן מקצה לקצה והוא פרטי לגמרי. אפילו השרתים שלנו לא יכולים לראות מה ציירתם.",
|
"desc_privacy": "אל דאגה, השיתוף מוצפן מקצה לקצה, כך שכל מה שתצייר ישאר פרטי. אפילו השרתים שלנו לא יוכלו לראות את מה שאתה ממציא.",
|
||||||
"button_startSession": "התחל שיתוף",
|
"button_startSession": "התחל שיתוף",
|
||||||
"button_stopSession": "הפסק שיתוף",
|
"button_stopSession": "הפסק שיתוף",
|
||||||
"desc_inProgressIntro": "שיתוף חי פעיל כרגע.",
|
"desc_inProgressIntro": "שיתוף חי פעיל כרגע.",
|
||||||
@@ -410,16 +328,14 @@
|
|||||||
"click": "קליק",
|
"click": "קליק",
|
||||||
"deepSelect": "בחירה עמוקה",
|
"deepSelect": "בחירה עמוקה",
|
||||||
"deepBoxSelect": "בחירה עמוקה בתוך קופסה ומניעת גרירה",
|
"deepBoxSelect": "בחירה עמוקה בתוך קופסה ומניעת גרירה",
|
||||||
"createFlowchart": "יצירת תרשים זרימה מתוך רכיב רגיל",
|
|
||||||
"navigateFlowchart": "ניווט בתוך תרשים הזרימה",
|
|
||||||
"curvedArrow": "חץ מעוגל",
|
"curvedArrow": "חץ מעוגל",
|
||||||
"curvedLine": "קו מעוגל",
|
"curvedLine": "קו מעוגל",
|
||||||
"documentation": "תיעוד",
|
"documentation": "תיעוד",
|
||||||
"doubleClick": "לחיצה כפולה",
|
"doubleClick": "לחיצה כפולה",
|
||||||
"drag": "גרור",
|
"drag": "גרור",
|
||||||
"editor": "עורך",
|
"editor": "עורך",
|
||||||
"editLineArrowPoints": "עריכת נקודות קו/חץ",
|
"editLineArrowPoints": "",
|
||||||
"editText": "עריכת טקסט / הוספת תווית",
|
"editText": "",
|
||||||
"github": "מצאת בעיה? דווח",
|
"github": "מצאת בעיה? דווח",
|
||||||
"howto": "עקוב אחר המדריכים שלנו",
|
"howto": "עקוב אחר המדריכים שלנו",
|
||||||
"or": "או",
|
"or": "או",
|
||||||
@@ -434,9 +350,7 @@
|
|||||||
"zoomToSelection": "התמקד בבחירה",
|
"zoomToSelection": "התמקד בבחירה",
|
||||||
"toggleElementLock": "נעילה/ביטול הנעילה של הרכיבים הנבחרים",
|
"toggleElementLock": "נעילה/ביטול הנעילה של הרכיבים הנבחרים",
|
||||||
"movePageUpDown": "זוז עמוד למעלה/למטה",
|
"movePageUpDown": "זוז עמוד למעלה/למטה",
|
||||||
"movePageLeftRight": "זוז עמוד שמאלה/ימינה",
|
"movePageLeftRight": "זוז עמוד שמאלה/ימינה"
|
||||||
"cropStart": "חיתוך תמונה",
|
|
||||||
"cropFinish": "סיים לחתוך תמונה"
|
|
||||||
},
|
},
|
||||||
"clearCanvasDialog": {
|
"clearCanvasDialog": {
|
||||||
"title": "ניקוי הקנבס"
|
"title": "ניקוי הקנבס"
|
||||||
@@ -462,9 +376,9 @@
|
|||||||
"required": "נדרש",
|
"required": "נדרש",
|
||||||
"website": "הזינו כתובת URL תקינה"
|
"website": "הזינו כתובת URL תקינה"
|
||||||
},
|
},
|
||||||
"noteDescription": "שלח את הספריה שלך כך שתצורף ל<link>מאגר הספריות הציבורי</link> כך שאנשים נוספים יוכלו להשתמש בה בעבודות שלהם.",
|
"noteDescription": "",
|
||||||
"noteGuidelines": "תחילה הספריה נדרשת לעבור אישור ידני. אנא קראו את <link>הנחיות</link> לפני שאתם לוחצים על שליחה. יש צורך בחשבון GitHub כדי לתקשר ולבצע שינויים אם נדרש, אך אין זה הכרחי לשיתוף הספריה.",
|
"noteGuidelines": "",
|
||||||
"noteLicense": "על ידי לחיצה על שליחה את/ה מסכימ/ה שהספריה תפורסם תחת <link>רישיון MIT</link>, אשר, בקצרה, מאפשר לכל אחד להשתמש בספריה ללא הגבלה.",
|
"noteLicense": "",
|
||||||
"noteItems": "לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:",
|
"noteItems": "לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:",
|
||||||
"atleastOneLibItem": "אנא בחר לפחות פריט אחד מספריה כדי להתחיל",
|
"atleastOneLibItem": "אנא בחר לפחות פריט אחד מספריה כדי להתחיל",
|
||||||
"republishWarning": "הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים."
|
"republishWarning": "הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים."
|
||||||
@@ -478,27 +392,27 @@
|
|||||||
"removeItemsFromLib": "הסר את הפריטים הנבחרים מהספריה"
|
"removeItemsFromLib": "הסר את הפריטים הנבחרים מהספריה"
|
||||||
},
|
},
|
||||||
"imageExportDialog": {
|
"imageExportDialog": {
|
||||||
"header": "ייצוא תמונה",
|
"header": "",
|
||||||
"label": {
|
"label": {
|
||||||
"withBackground": "רקע",
|
"withBackground": "",
|
||||||
"onlySelected": "רק את מה שנבחר",
|
"onlySelected": "",
|
||||||
"darkMode": "מצב כהה",
|
"darkMode": "",
|
||||||
"embedScene": "הטמעת סצנה",
|
"embedScene": "",
|
||||||
"scale": "קנה מידה",
|
"scale": "",
|
||||||
"padding": "ריפוד"
|
"padding": ""
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"embedScene": "הייצוא יבוצע לקובץ מסוג PNG/SVG כדי שהמידע על הסצנה ישמר בו וניתן יהיה לבצע שחזור ממנו.\nיגדיל את גודל הקובץ של הייצוא."
|
"embedScene": ""
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"exportToPng": "ייצוא ל־PNG",
|
"exportToPng": "",
|
||||||
"exportToSvg": "ייצוא ל־SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "העתקת PNG ללוח"
|
"copyPngToClipboard": ""
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"exportToPng": "PNG",
|
"exportToPng": "",
|
||||||
"exportToSvg": "SVG",
|
"exportToSvg": "",
|
||||||
"copyPngToClipboard": "העתקה ללוח"
|
"copyPngToClipboard": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encrypted": {
|
"encrypted": {
|
||||||
@@ -507,15 +421,13 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"angle": "זווית",
|
"angle": "זווית",
|
||||||
"shapes": "צורות",
|
"element": "רכיב",
|
||||||
|
"elements": "רכיבים",
|
||||||
"height": "גובה",
|
"height": "גובה",
|
||||||
"scene": "תצוגה",
|
"scene": "תצוגה",
|
||||||
"selected": "נבחר",
|
"selected": "נבחר",
|
||||||
"storage": "אחסון",
|
"storage": "אחסון",
|
||||||
"fullTitle": "הגדרות הקנבס והצורות",
|
"title": "סטטיסטיקות לחנונים",
|
||||||
"title": "מאפיינים",
|
|
||||||
"generalStats": "כללי",
|
|
||||||
"elementProperties": "מאפייני צורה",
|
|
||||||
"total": "סה״כ",
|
"total": "סה״כ",
|
||||||
"version": "גרסה",
|
"version": "גרסה",
|
||||||
"versionCopy": "לחץ להעתקה",
|
"versionCopy": "לחץ להעתקה",
|
||||||
@@ -527,32 +439,30 @@
|
|||||||
"copyStyles": "סגנונות הועתקו.",
|
"copyStyles": "סגנונות הועתקו.",
|
||||||
"copyToClipboard": "הועתק ללוח.",
|
"copyToClipboard": "הועתק ללוח.",
|
||||||
"copyToClipboardAsPng": "{{exportSelection}} הועתקה ללוח כ-PNG\n({{exportColorScheme}})",
|
"copyToClipboardAsPng": "{{exportSelection}} הועתקה ללוח כ-PNG\n({{exportColorScheme}})",
|
||||||
"copyToClipboardAsSvg": "{{exportSelection}} הועתקה ללוח כ-SVG\n({{exportColorScheme}})",
|
|
||||||
"fileSaved": "קובץ נשמר.",
|
"fileSaved": "קובץ נשמר.",
|
||||||
"fileSavedToFilename": "נשמר לקובץ {filename}",
|
"fileSavedToFilename": "נשמר לקובץ {filename}",
|
||||||
"canvas": "קנבאס",
|
"canvas": "קנבאס",
|
||||||
"selection": "בחירה",
|
"selection": "בחירה",
|
||||||
"pasteAsSingleElement": "השתמש ב- {{shortcut}} כדי להדביק כפריט יחיד,\nאו הדבק לתוך עורך טקסט קיים",
|
"pasteAsSingleElement": "השתמש ב- {{shortcut}} כדי להדביק כפריט יחיד,\nאו הדבק לתוך עורך טקסט קיים",
|
||||||
"unableToEmbed": "הטמעת כתובת הרשת הזו אינה מותרת לעת עתה. העלו סוגיה ב-GitHub כדי לבקש שכתובת זו תכנס לרשימה המותרת",
|
"unableToEmbed": "",
|
||||||
"unrecognizedLinkFormat": "הקישור שהוטמע אינו בפורמט המצופה. אנא נסו להדביק מחדש את מחרוזת ההטמעה מהאתר המבוקש",
|
"unrecognizedLinkFormat": ""
|
||||||
"elementLinkCopied": "קישור הועתק ללוח"
|
|
||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"transparent": "שקוף",
|
"transparent": "שקוף",
|
||||||
"black": "שחור",
|
"black": "",
|
||||||
"white": "לבן",
|
"white": "",
|
||||||
"red": "אדום",
|
"red": "",
|
||||||
"pink": "ורוד",
|
"pink": "",
|
||||||
"grape": "ענבים",
|
"grape": "",
|
||||||
"violet": "סגול",
|
"violet": "",
|
||||||
"gray": "אפור",
|
"gray": "",
|
||||||
"blue": "כחול",
|
"blue": "",
|
||||||
"cyan": "ציאן",
|
"cyan": "",
|
||||||
"teal": "ירוק-כחול",
|
"teal": "",
|
||||||
"green": "ירוק",
|
"green": "",
|
||||||
"yellow": "צהוב",
|
"yellow": "",
|
||||||
"orange": "כתום",
|
"orange": "",
|
||||||
"bronze": "ברונזה"
|
"bronze": ""
|
||||||
},
|
},
|
||||||
"welcomeScreen": {
|
"welcomeScreen": {
|
||||||
"app": {
|
"app": {
|
||||||
@@ -568,97 +478,48 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"colorPicker": {
|
"colorPicker": {
|
||||||
"color": "",
|
"mostUsedCustomColors": "",
|
||||||
"mostUsedCustomColors": "הצבעים המותאמים הכי נפוצים",
|
"colors": "",
|
||||||
"colors": "צבעים",
|
"shades": "",
|
||||||
"shades": "הצללות",
|
"hexCode": "",
|
||||||
"hexCode": "קוד הקסדצימלי",
|
"noShades": ""
|
||||||
"noShades": "אין הצללות זמינות לצבע הזה"
|
|
||||||
},
|
},
|
||||||
"overwriteConfirm": {
|
"overwriteConfirm": {
|
||||||
"action": {
|
"action": {
|
||||||
"exportToImage": {
|
"exportToImage": {
|
||||||
"title": "ייצוא כתמונה",
|
"title": "",
|
||||||
"button": "ייצוא כתמונה",
|
"button": "",
|
||||||
"description": "ייצוא נתוני הסצנה כתמונה אותה אפשר לייבא בהמשך."
|
"description": ""
|
||||||
},
|
},
|
||||||
"saveToDisk": {
|
"saveToDisk": {
|
||||||
"title": "שמירה לכונן",
|
"title": "",
|
||||||
"button": "שמירה לכונן",
|
"button": "",
|
||||||
"description": "ייצוא נתוני הסצנה לקובץ אותו אפשר לייבא בהמשך."
|
"description": ""
|
||||||
},
|
},
|
||||||
"excalidrawPlus": {
|
"excalidrawPlus": {
|
||||||
"title": "Excalidraw+",
|
"title": "",
|
||||||
"button": "ייצוא ל־Excalidraw+",
|
"button": "",
|
||||||
"description": "שמירת הסצנה לסביבת העבודה שלך ב־+Excalidraw."
|
"description": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"loadFromFile": {
|
"loadFromFile": {
|
||||||
"title": "טעינה מקובץ",
|
"title": "",
|
||||||
"button": "טעינה מקובץ",
|
"button": "",
|
||||||
"description": "טעינת הקובץ <bold>תחליף את התוכן הקיים</bold>.<br></br>אתם יכולים לגבות את העבודה שלכם תחילה בעזרת האפשרויות שלהלן."
|
"description": ""
|
||||||
},
|
},
|
||||||
"shareableLink": {
|
"shareableLink": {
|
||||||
"title": "טעינה מקישור",
|
"title": "",
|
||||||
"button": "החלפת התוכן שלי",
|
"button": "",
|
||||||
"description": "טעינת הקובץ <bold>תחליף את התוכן הקיים</bold>.<br></br>אתם יכולים לגבות את העבודה שלכם תחילה בעזרת האפשרויות שלהלן."
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mermaid": {
|
"mermaid": {
|
||||||
"title": "Mermaid ל־Excalidraw",
|
"title": "",
|
||||||
"button": "הוספה",
|
"button": "",
|
||||||
"description": "לעת עתה נתמכים רק <flowchartLink>תרשימי זרימה</flowchartLink>, <sequenceLink>תהליכים</sequenceLink>, <classLink>ודיאגרמת מחלקה</classLink>. שאר הסוגים ייוצרו כתמונות ב-Excalidraw.",
|
"description": "",
|
||||||
"syntax": "תחביר Mermaid",
|
"syntax": "",
|
||||||
"preview": "תצוגה מקדימה"
|
"preview": ""
|
||||||
},
|
|
||||||
"quickSearch": {
|
|
||||||
"placeholder": "חיפוש מהיר"
|
|
||||||
},
|
|
||||||
"fontList": {
|
|
||||||
"badge": {
|
|
||||||
"old": "ישן"
|
|
||||||
},
|
|
||||||
"sceneFonts": "בסצינה הנוכחית",
|
|
||||||
"availableFonts": "הפונטים הקיימים",
|
|
||||||
"empty": "לא נמצאו פונטים"
|
|
||||||
},
|
|
||||||
"userList": {
|
|
||||||
"empty": "לא נמצאו משתמשים",
|
|
||||||
"hint": {
|
|
||||||
"text": "יש ללחוץ על משתמש כדי לעקוב",
|
|
||||||
"followStatus": "המשתמש ברשימת המעקב שלך",
|
|
||||||
"inCall": "המשתמש בשיחה קולית",
|
|
||||||
"micMuted": "המיקרופון של המשתמש מושתק",
|
|
||||||
"isSpeaking": "המשתמש מדבר"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commandPalette": {
|
|
||||||
"title": "לוח פקודות",
|
|
||||||
"shortcuts": {
|
|
||||||
"select": "בחירה",
|
|
||||||
"confirm": "אישור",
|
|
||||||
"close": "סגירה"
|
|
||||||
},
|
|
||||||
"recents": "בשימוש לאחרונה",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "תפריטי חיפוש, פקודות ואבני חן נעלמות",
|
|
||||||
"noMatch": "אין פקודות תואמות…"
|
|
||||||
},
|
|
||||||
"itemNotAvailable": "הפקודה לא זמינה…",
|
|
||||||
"shortcutHint": "ללוח פקודות, יש להשתמש ב־{{shortcut}}"
|
|
||||||
},
|
|
||||||
"keys": {
|
|
||||||
"ctrl": "",
|
|
||||||
"option": "",
|
|
||||||
"cmd": "",
|
|
||||||
"alt": "",
|
|
||||||
"escape": "",
|
|
||||||
"enter": "",
|
|
||||||
"shift": "",
|
|
||||||
"spacebar": "",
|
|
||||||
"delete": "",
|
|
||||||
"mmb": ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user