diff --git a/.github/workflows/publish-docker.yml b/.github/workflows/publish-docker.yml index 3602bb660..a4a8a4c5f 100644 --- a/.github/workflows/publish-docker.yml +++ b/.github/workflows/publish-docker.yml @@ -12,24 +12,14 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - images: | - excalidraw/excalidraw - tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v3 with: context: . push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + tags: excalidraw/excalidraw:latest diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx index 262681895..cdd5ea5a4 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx @@ -16,7 +16,6 @@ function App() { className="custom-footer" onClick={() => alert("This is dummy footer")} > - {" "} custom footer diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx index 8fbf228df..2494df108 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx @@ -14,8 +14,7 @@ function App() { Item1 window.alert("Item2")}> - {" "} - Item 2{" "} + Item 2 @@ -93,7 +92,6 @@ function App() { style={{ height: "2rem" }} onClick={() => window.alert("custom menu item")} > - {" "} custom item diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx index ca329e3e6..6531e29ec 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx @@ -3,7 +3,7 @@ ## renderTopRightUI
-  (isMobile: boolean, appState:{" "}
+  (isMobile: boolean, appState:
   
     AppState
   
@@ -29,8 +29,7 @@ function App() {
               }}
               onClick={() => window.alert("This is dummy top right UI")}
             >
-              {" "}
-              Click me{" "}
+              Click me
             
           );
         }}
@@ -55,8 +54,7 @@ function App() {
        (
           

- {" "} - Dummy stats will be shown here{" "} + Dummy stats will be shown here

)} /> @@ -105,8 +103,7 @@ function App() { return (
<% if (process.env.REACT_APP_DISABLE_TRACKING !== 'true') { %> + + + + <% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %> - <% } %> - - <% } %> @@ -245,5 +228,17 @@

Excalidraw

+ + + diff --git a/src/actions/actionElementLock.test.tsx b/src/actions/actionElementLock.test.tsx new file mode 100644 index 000000000..19db5e325 --- /dev/null +++ b/src/actions/actionElementLock.test.tsx @@ -0,0 +1,68 @@ +import { Excalidraw } from "../packages/excalidraw/index"; +import { queryByTestId, fireEvent } from "@testing-library/react"; +import { render } from "../tests/test-utils"; +import { Pointer, UI } from "../tests/helpers/ui"; +import { API } from "../tests/helpers/api"; + +const { h } = window; +const mouse = new Pointer("mouse"); + +describe("element locking", () => { + it("should not show unlockAllElements action in contextMenu if no elements locked", async () => { + await render(); + + mouse.rightClickAt(0, 0); + + const item = queryByTestId(UI.queryContextMenu()!, "unlockAllElements"); + expect(item).toBe(null); + }); + + it("should unlock all elements and select them when using unlockAllElements action in contextMenu", async () => { + await render( + , + ); + + mouse.rightClickAt(0, 0); + + expect(Object.keys(h.state.selectedElementIds).length).toBe(0); + expect(h.elements.map((el) => el.locked)).toEqual([true, true, false]); + + const item = queryByTestId(UI.queryContextMenu()!, "unlockAllElements"); + expect(item).not.toBe(null); + + fireEvent.click(item!.querySelector("button")!); + + expect(h.elements.map((el) => el.locked)).toEqual([false, false, false]); + // should select the unlocked elements + expect(h.state.selectedElementIds).toEqual({ + [h.elements[0].id]: true, + [h.elements[1].id]: true, + }); + }); +}); diff --git a/src/actions/actionToggleLock.ts b/src/actions/actionElementLock.ts similarity index 53% rename from src/actions/actionToggleLock.ts rename to src/actions/actionElementLock.ts index c44bd5700..922a5fae3 100644 --- a/src/actions/actionToggleLock.ts +++ b/src/actions/actionElementLock.ts @@ -5,8 +5,11 @@ import { getSelectedElements } from "../scene"; import { arrayToMap } from "../utils"; import { register } from "./register"; -export const actionToggleLock = register({ - name: "toggleLock", +const shouldLock = (elements: readonly ExcalidrawElement[]) => + elements.every((el) => !el.locked); + +export const actionToggleElementLock = register({ + name: "toggleElementLock", trackEvent: { category: "element" }, perform: (elements, appState) => { const selectedElements = getSelectedElements(elements, appState, true); @@ -15,20 +18,21 @@ export const actionToggleLock = register({ return false; } - const operation = getOperation(selectedElements); + const nextLockState = shouldLock(selectedElements); const selectedElementsMap = arrayToMap(selectedElements); - const lock = operation === "lock"; return { elements: elements.map((element) => { if (!selectedElementsMap.has(element.id)) { return element; } - return newElementWith(element, { locked: lock }); + return newElementWith(element, { locked: nextLockState }); }), appState: { ...appState, - selectedLinearElement: lock ? null : appState.selectedLinearElement, + selectedLinearElement: nextLockState + ? null + : appState.selectedLinearElement, }, commitToHistory: true, }; @@ -41,7 +45,7 @@ export const actionToggleLock = register({ : "labels.elementLock.lock"; } - return getOperation(selected) === "lock" + return shouldLock(selected) ? "labels.elementLock.lockAll" : "labels.elementLock.unlockAll"; }, @@ -55,6 +59,31 @@ export const actionToggleLock = register({ }, }); -const getOperation = ( - elements: readonly ExcalidrawElement[], -): "lock" | "unlock" => (elements.some((el) => !el.locked) ? "lock" : "unlock"); +export const actionUnlockAllElements = register({ + name: "unlockAllElements", + trackEvent: { category: "canvas" }, + viewMode: false, + predicate: (elements) => { + return elements.some((element) => element.locked); + }, + perform: (elements, appState) => { + const lockedElements = elements.filter((el) => el.locked); + + return { + elements: elements.map((element) => { + if (element.locked) { + return newElementWith(element, { locked: false }); + } + return element; + }), + appState: { + ...appState, + selectedElementIds: Object.fromEntries( + lockedElements.map((el) => [el.id, true]), + ), + }, + commitToHistory: true, + }; + }, + contextItemLabel: "labels.elementLock.unlockAll", +}); diff --git a/src/actions/index.ts b/src/actions/index.ts index eea4faf7d..9b53f8173 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -84,5 +84,5 @@ export { actionToggleZenMode } from "./actionToggleZenMode"; export { actionToggleStats } from "./actionToggleStats"; export { actionUnbindText, actionBindText } from "./actionBoundText"; export { actionLink } from "../element/Hyperlink"; -export { actionToggleLock } from "./actionToggleLock"; +export { actionToggleElementLock } from "./actionElementLock"; export { actionToggleLinearEditor } from "./actionLinearEditor"; diff --git a/src/actions/shortcuts.ts b/src/actions/shortcuts.ts index 68e0d82cd..de7563cf4 100644 --- a/src/actions/shortcuts.ts +++ b/src/actions/shortcuts.ts @@ -34,7 +34,7 @@ export type ShortcutName = | "flipHorizontal" | "flipVertical" | "hyperlink" - | "toggleLock" + | "toggleElementLock" > | "saveScene" | "imageExport"; @@ -80,7 +80,7 @@ const shortcutMap: Record = { flipVertical: [getShortcutKey("Shift+V")], viewMode: [getShortcutKey("Alt+R")], hyperlink: [getShortcutKey("CtrlOrCmd+K")], - toggleLock: [getShortcutKey("CtrlOrCmd+Shift+L")], + toggleElementLock: [getShortcutKey("CtrlOrCmd+Shift+L")], }; export type CustomShortcutName = string; diff --git a/src/actions/types.ts b/src/actions/types.ts index 4ae6a577f..ce3e811a2 100644 --- a/src/actions/types.ts +++ b/src/actions/types.ts @@ -120,7 +120,8 @@ export type ActionName = | "unbindText" | "hyperlink" | "bindText" - | "toggleLock" + | "unlockAllElements" + | "toggleElementLock" | "toggleLinearEditor" | "toggleEraserTool" | "toggleHandTool" diff --git a/src/analytics.ts b/src/analytics.ts index 1e9a429b6..e952bc680 100644 --- a/src/analytics.ts +++ b/src/analytics.ts @@ -20,9 +20,20 @@ export const trackEvent = ( }); } - // MATOMO event tracking _paq must be same as the one in index.html - if (window._paq) { - window._paq.push(["trackEvent", category, action, label, value]); + if (window.sa_event) { + window.sa_event(action, { + category, + label, + value, + }); + } + + if (window.fathom) { + window.fathom.trackEvent(action, { + category, + label, + value, + }); } } catch (error) { console.error("error during analytics", error); diff --git a/src/appState.ts b/src/appState.ts index 50ce41658..0dca566a6 100644 --- a/src/appState.ts +++ b/src/appState.ts @@ -58,7 +58,7 @@ export const getDefaultAppState = (): Omit< fileHandle: null, gridSize: null, isBindingEnabled: true, - isSidebarDocked: false, + defaultSidebarDockedPreference: false, isLoading: false, isResizing: false, isRotating: false, @@ -152,7 +152,11 @@ const APP_STATE_STORAGE_CONF = (< gridSize: { browser: true, export: true, server: true }, height: { browser: false, export: false, server: false }, isBindingEnabled: { browser: false, export: false, server: false }, - isSidebarDocked: { browser: true, export: false, server: false }, + defaultSidebarDockedPreference: { + browser: true, + export: false, + server: false, + }, isLoading: { browser: false, export: false, server: false }, isResizing: { browser: false, export: false, server: false }, isRotating: { browser: false, export: false, server: false }, diff --git a/src/clients.ts b/src/clients.ts index 9e1e6e144..94ffd7a62 100644 --- a/src/clients.ts +++ b/src/clients.ts @@ -20,9 +20,13 @@ export const getClientColors = (clientId: string, appState: AppState) => { }; }; -export const getClientInitials = (userName?: string | null) => { - if (!userName?.trim()) { - return "?"; - } - return userName.trim()[0].toUpperCase(); +/** + * returns first char, capitalized + */ +export const getNameInitial = (name?: string | null) => { + // first char can be a surrogate pair, hence using codePointAt + const firstCodePoint = name?.trim()?.codePointAt(0); + return ( + firstCodePoint ? String.fromCodePoint(firstCodePoint) : "?" + ).toUpperCase(); }; diff --git a/src/components/Actions.tsx b/src/components/Actions.tsx index 2a26ba3cc..dbf63fd9e 100644 --- a/src/components/Actions.tsx +++ b/src/components/Actions.tsx @@ -14,7 +14,7 @@ import { hasText, } from "../scene"; import { SHAPES } from "../shapes"; -import { AppState, Zoom } from "../types"; +import { UIAppState, Zoom } from "../types"; import { capitalizeString, isTransparent, @@ -29,19 +29,20 @@ import { trackEvent } from "../analytics"; import { hasBoundTextElement } from "../element/typeChecks"; import clsx from "clsx"; import { actionToggleZenMode } from "../actions"; -import "./Actions.scss"; import { Tooltip } from "./Tooltip"; import { shouldAllowVerticalAlign, suppportsHorizontalAlign, } from "../element/textElement"; +import "./Actions.scss"; + export const SelectedShapeActions = ({ appState, elements, renderAction, }: { - appState: AppState; + appState: UIAppState; elements: readonly ExcalidrawElement[]; renderAction: ActionManager["renderAction"]; }) => { @@ -217,10 +218,10 @@ export const ShapesSwitcher = ({ appState, }: { canvas: HTMLCanvasElement | null; - activeTool: AppState["activeTool"]; - setAppState: React.Component["setState"]; + activeTool: UIAppState["activeTool"]; + setAppState: React.Component["setState"]; onImageAction: (data: { pointerType: PointerType | null }) => void; - appState: AppState; + appState: UIAppState; }) => ( <> {SHAPES.map(({ value, icon, key, numericKey, fillable }, index) => { diff --git a/src/components/App.tsx b/src/components/App.tsx index 3d4a95b81..0d917f3a0 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -33,7 +33,7 @@ import { actionBindText, actionUngroup, actionLink, - actionToggleLock, + actionToggleElementLock, actionToggleLinearEditor, } from "../actions"; import { createRedoAction, createUndoAction } from "../actions/actionHistory"; @@ -59,6 +59,7 @@ import { ELEMENT_TRANSLATE_AMOUNT, ENV, EVENT, + EXPORT_IMAGE_TYPES, GRID_SIZE, IMAGE_MIME_TYPES, IMAGE_RENDER_TIMEOUT, @@ -82,7 +83,7 @@ import { VERTICAL_ALIGN, ZOOM_STEP, } from "../constants"; -import { loadFromBlob } from "../data"; +import { exportCanvas, loadFromBlob } from "../data"; import Library, { distributeLibraryItemsOnSquareGrid } from "../data/library"; import { restore, restoreElements } from "../data/restore"; import { @@ -210,6 +211,8 @@ import { PointerDownState, SceneData, Device, + SidebarName, + SidebarTabName, } from "../types"; import { debounce, @@ -235,6 +238,7 @@ import { getShortcutKey, isTransparent, easeToValuesRAF, + muteFSAbortError, } from "../utils"; import { ContextMenu, @@ -259,6 +263,7 @@ import { generateIdFromFile, getDataURL, getFileFromEvent, + isImageFileHandle, isSupportedImageFile, loadSceneOrLibraryFromBlob, normalizeFile, @@ -298,6 +303,7 @@ import { isLocalLink, } from "../element/Hyperlink"; import { shouldShowBoundingBox } from "../element/transformHandles"; +import { actionUnlockAllElements } from "../actions/actionElementLock"; import { Fonts } from "../scene/Fonts"; import { actionPaste } from "../actions/actionClipboard"; import { @@ -309,6 +315,9 @@ import { activeConfirmDialogAtom } from "./ActiveConfirmDialog"; import { actionWrapTextInContainer } from "../actions/actionBoundText"; import BraveMeasureTextError from "./BraveMeasureTextError"; +const AppContext = React.createContext(null!); +const AppPropsContext = React.createContext(null!); + const deviceContextInitialValue = { isSmScreen: false, isMobile: false, @@ -350,6 +359,8 @@ const ExcalidrawActionManagerContext = React.createContext( ); ExcalidrawActionManagerContext.displayName = "ExcalidrawActionManagerContext"; +export const useApp = () => useContext(AppContext); +export const useAppProps = () => useContext(AppPropsContext); export const useDevice = () => useContext(DeviceContext); export const useExcalidrawContainer = () => useContext(ExcalidrawContainerContext); @@ -410,7 +421,7 @@ class App extends React.Component { private nearestScrollableContainer: HTMLElement | Document | undefined; public library: AppClassProperties["library"]; public libraryItemsFromStorage: LibraryItems | undefined; - private id: string; + public id: string; private history: History; private excalidrawContainerValue: { container: HTMLDivElement | null; @@ -448,7 +459,7 @@ class App extends React.Component { width: window.innerWidth, height: window.innerHeight, showHyperlinkPopup: false, - isSidebarDocked: false, + defaultSidebarDockedPreference: false, }; this.id = nanoid(); @@ -487,7 +498,7 @@ class App extends React.Component { setActiveTool: this.setActiveTool, setCursor: this.setCursor, resetCursor: this.resetCursor, - toggleMenu: this.toggleMenu, + toggleSidebar: this.toggleSidebar, } as const; if (typeof excalidrawRef === "function") { excalidrawRef(api); @@ -607,101 +618,92 @@ class App extends React.Component { this.props.handleKeyboardGlobally ? undefined : this.onKeyDown } > - - - - - - - - this.addElementsFromPasteOrLibrary({ - elements, - position: "center", - files: null, - }) - } - langCode={getLanguage().code} - renderTopRightUI={renderTopRightUI} - renderCustomStats={renderCustomStats} - renderCustomSidebar={this.props.renderSidebar} - showExitZenModeBtn={ - typeof this.props?.zenModeEnabled === "undefined" && - this.state.zenModeEnabled - } - libraryReturnUrl={this.props.libraryReturnUrl} - UIOptions={this.props.UIOptions} - focusContainer={this.focusContainer} - library={this.library} - id={this.id} - onImageAction={this.onImageAction} - renderWelcomeScreen={ - !this.state.isLoading && - this.state.showWelcomeScreen && - this.state.activeTool.type === "selection" && - !this.scene.getElementsIncludingDeleted().length - } + + + + + + + - {this.props.children} - -
-
- {selectedElement.length === 1 && - !this.state.contextMenu && - this.state.showHyperlinkPopup && ( - + - )} - {this.state.toast !== null && ( - this.setToast(null)} - duration={this.state.toast.duration} - closable={this.state.toast.closable} - /> - )} - {this.state.contextMenu && ( - - )} -
{this.renderCanvas()}
- - {" "} - - - - + actionManager={this.actionManager} + elements={this.scene.getNonDeletedElements()} + onLockToggle={this.toggleLock} + onPenModeToggle={this.togglePenMode} + onHandToolToggle={this.onHandToolToggle} + langCode={getLanguage().code} + renderTopRightUI={renderTopRightUI} + renderCustomStats={renderCustomStats} + showExitZenModeBtn={ + typeof this.props?.zenModeEnabled === "undefined" && + this.state.zenModeEnabled + } + UIOptions={this.props.UIOptions} + onImageAction={this.onImageAction} + onExportImage={this.onExportImage} + renderWelcomeScreen={ + !this.state.isLoading && + this.state.showWelcomeScreen && + this.state.activeTool.type === "selection" && + !this.scene.getElementsIncludingDeleted().length + } + > + {this.props.children} +
+
+
+ {selectedElement.length === 1 && + !this.state.contextMenu && + this.state.showHyperlinkPopup && ( + + )} + {this.state.toast !== null && ( + this.setToast(null)} + duration={this.state.toast.duration} + closable={this.state.toast.closable} + /> + )} + {this.state.contextMenu && ( + + )} +
{this.renderCanvas()}
+ + + + + + + +
); } public focusContainer: AppClassProperties["focusContainer"] = () => { - if (this.props.autoFocus) { - this.excalidrawContainerRef.current?.focus(); - } + this.excalidrawContainerRef.current?.focus(); }; public getSceneElementsIncludingDeleted = () => { @@ -712,6 +714,45 @@ class App extends React.Component { return this.scene.getNonDeletedElements(); }; + public onInsertElements = (elements: readonly ExcalidrawElement[]) => { + this.addElementsFromPasteOrLibrary({ + elements, + position: "center", + files: null, + }); + }; + + public onExportImage = async ( + type: keyof typeof EXPORT_IMAGE_TYPES, + elements: readonly NonDeletedExcalidrawElement[], + ) => { + trackEvent("export", type, "ui"); + const fileHandle = await exportCanvas( + type, + elements, + this.state, + this.files, + { + exportBackground: this.state.exportBackground, + name: this.state.name, + viewBackgroundColor: this.state.viewBackgroundColor, + }, + ) + .catch(muteFSAbortError) + .catch((error) => { + console.error(error); + this.setState({ errorMessage: error.message }); + }); + + if ( + this.state.exportEmbedScene && + fileHandle && + isImageFileHandle(fileHandle) + ) { + this.setState({ fileHandle }); + } + }; + private syncActionResult = withBatchedUpdates( (actionResult: ActionResult) => { if (this.unmounted || actionResult === false) { @@ -981,7 +1022,7 @@ class App extends React.Component { this.scene.addCallback(this.onSceneUpdated); this.addEventListeners(); - if (this.excalidrawContainerRef.current) { + if (this.props.autoFocus && this.excalidrawContainerRef.current) { this.focusContainer(); } @@ -1709,7 +1750,7 @@ class App extends React.Component { openSidebar: this.state.openSidebar && this.device.canDeviceFitSidebar && - this.state.isSidebarDocked + this.state.defaultSidebarDockedPreference ? this.state.openSidebar : null, selectedElementIds: newElements.reduce( @@ -2048,30 +2089,24 @@ class App extends React.Component { /** * @returns whether the menu was toggled on or off */ - public toggleMenu = ( - type: "library" | "customSidebar", - force?: boolean, - ): boolean => { - if (type === "customSidebar" && !this.props.renderSidebar) { - console.warn( - `attempting to toggle "customSidebar", but no "props.renderSidebar" is defined`, - ); - return false; + public toggleSidebar = ({ + name, + tab, + force, + }: { + name: SidebarName; + tab?: SidebarTabName; + force?: boolean; + }): boolean => { + let nextName; + if (force === undefined) { + nextName = this.state.openSidebar?.name === name ? null : name; + } else { + nextName = force ? name : null; } + this.setState({ openSidebar: nextName ? { name: nextName, tab } : null }); - if (type === "library" || type === "customSidebar") { - let nextValue; - if (force === undefined) { - nextValue = this.state.openSidebar === type ? null : type; - } else { - nextValue = force ? type : null; - } - this.setState({ openSidebar: nextValue }); - - return !!nextValue; - } - - return false; + return !!nextName; }; private updateCurrentCursorPosition = withBatchedUpdates( @@ -6406,6 +6441,7 @@ class App extends React.Component { copyText, CONTEXT_MENU_SEPARATOR, actionSelectAll, + actionUnlockAllElements, CONTEXT_MENU_SEPARATOR, actionToggleGridMode, actionToggleZenMode, @@ -6452,7 +6488,7 @@ class App extends React.Component { actionToggleLinearEditor, actionLink, actionDuplicateSelection, - actionToggleLock, + actionToggleElementLock, CONTEXT_MENU_SEPARATOR, actionDeleteSelected, ]; diff --git a/src/components/Avatar.tsx b/src/components/Avatar.tsx index 57a7eec26..20dc7b9f2 100644 --- a/src/components/Avatar.tsx +++ b/src/components/Avatar.tsx @@ -1,7 +1,7 @@ import "./Avatar.scss"; import React, { useState } from "react"; -import { getClientInitials } from "../clients"; +import { getNameInitial } from "../clients"; type AvatarProps = { onClick: (e: React.MouseEvent) => void; @@ -12,7 +12,7 @@ type AvatarProps = { }; export const Avatar = ({ color, onClick, name, src }: AvatarProps) => { - const shortName = getClientInitials(name); + const shortName = getNameInitial(name); const [error, setError] = useState(false); const loadImg = !error && src; const style = loadImg ? undefined : { background: color }; diff --git a/src/components/BraveMeasureTextError.tsx b/src/components/BraveMeasureTextError.tsx index 8a4a71e4f..1932d7a29 100644 --- a/src/components/BraveMeasureTextError.tsx +++ b/src/components/BraveMeasureTextError.tsx @@ -1,39 +1,40 @@ -import { t } from "../i18n"; +import Trans from "./Trans"; + const BraveMeasureTextError = () => { return (

- {t("errors.brave_measure_text_error.start")}   - - {t("errors.brave_measure_text_error.aggressive_block_fingerprint")} - {" "} - {t("errors.brave_measure_text_error.setting_enabled")}. -
-
- {t("errors.brave_measure_text_error.break")}{" "} - - {t("errors.brave_measure_text_error.text_elements")} - {" "} - {t("errors.brave_measure_text_error.in_your_drawings")}. + {el}} + />

- {t("errors.brave_measure_text_error.strongly_recommend")}{" "} - - {" "} - {t("errors.brave_measure_text_error.steps")} - {" "} - {t("errors.brave_measure_text_error.how")}. + {el}} + />

- {t("errors.brave_measure_text_error.disable_setting")}{" "} - - {t("errors.brave_measure_text_error.issue")} - {" "} - {t("errors.brave_measure_text_error.write")}{" "} - - {t("errors.brave_measure_text_error.discord")} - - . + ( + + {el} + + )} + /> +

+

+ ( + + {el} + + )} + discordLink={(el) => {el}.} + />

); diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 3303c3ebf..bf548d72f 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -1,8 +1,12 @@ +import clsx from "clsx"; +import { composeEventHandlers } from "../utils"; import "./Button.scss"; interface ButtonProps extends React.HTMLAttributes { type?: "button" | "submit" | "reset"; onSelect: () => any; + /** whether button is in active state */ + selected?: boolean; children: React.ReactNode; className?: string; } @@ -15,18 +19,18 @@ interface ButtonProps extends React.HTMLAttributes { export const Button = ({ type = "button", onSelect, + selected, children, className = "", ...rest }: ButtonProps) => { return ( - )} -
- )} + {PinIcon} + + + )} + +
); }; -const [Context, Component] = withUpstreamOverride(_SidebarHeader); - -/** @private */ -export const SidebarHeaderComponents = { Context, Component }; +SidebarHeader.displayName = "SidebarHeader"; diff --git a/src/components/Sidebar/SidebarTab.tsx b/src/components/Sidebar/SidebarTab.tsx new file mode 100644 index 000000000..741a69fd1 --- /dev/null +++ b/src/components/Sidebar/SidebarTab.tsx @@ -0,0 +1,18 @@ +import * as RadixTabs from "@radix-ui/react-tabs"; +import { SidebarTabName } from "../../types"; + +export const SidebarTab = ({ + tab, + children, + ...rest +}: { + tab: SidebarTabName; + children: React.ReactNode; +} & React.HTMLAttributes) => { + return ( + + {children} + + ); +}; +SidebarTab.displayName = "SidebarTab"; diff --git a/src/components/Sidebar/SidebarTabTrigger.tsx b/src/components/Sidebar/SidebarTabTrigger.tsx new file mode 100644 index 000000000..cf25f7024 --- /dev/null +++ b/src/components/Sidebar/SidebarTabTrigger.tsx @@ -0,0 +1,26 @@ +import * as RadixTabs from "@radix-ui/react-tabs"; +import { SidebarTabName } from "../../types"; + +export const SidebarTabTrigger = ({ + children, + tab, + onSelect, + ...rest +}: { + children: React.ReactNode; + tab: SidebarTabName; + onSelect?: React.ReactEventHandler | undefined; +} & Omit, "onSelect">) => { + return ( + + + + ); +}; +SidebarTabTrigger.displayName = "SidebarTabTrigger"; diff --git a/src/components/Sidebar/SidebarTabTriggers.tsx b/src/components/Sidebar/SidebarTabTriggers.tsx new file mode 100644 index 000000000..0be187b76 --- /dev/null +++ b/src/components/Sidebar/SidebarTabTriggers.tsx @@ -0,0 +1,16 @@ +import * as RadixTabs from "@radix-ui/react-tabs"; + +export const SidebarTabTriggers = ({ + children, + ...rest +}: { children: React.ReactNode } & Omit< + React.RefAttributes, + "onSelect" +>) => { + return ( + + {children} + + ); +}; +SidebarTabTriggers.displayName = "SidebarTabTriggers"; diff --git a/src/components/Sidebar/SidebarTabs.tsx b/src/components/Sidebar/SidebarTabs.tsx new file mode 100644 index 000000000..a681b5ee5 --- /dev/null +++ b/src/components/Sidebar/SidebarTabs.tsx @@ -0,0 +1,36 @@ +import * as RadixTabs from "@radix-ui/react-tabs"; +import { useUIAppState } from "../../context/ui-appState"; +import { useExcalidrawSetAppState } from "../App"; + +export const SidebarTabs = ({ + children, + ...rest +}: { + children: React.ReactNode; +} & Omit, "onSelect">) => { + const appState = useUIAppState(); + const setAppState = useExcalidrawSetAppState(); + + if (!appState.openSidebar) { + return null; + } + + const { name } = appState.openSidebar; + + return ( + + setAppState((state) => ({ + ...state, + openSidebar: { ...state.openSidebar, name, tab }, + })) + } + {...rest} + > + {children} + + ); +}; +SidebarTabs.displayName = "SidebarTabs"; diff --git a/src/components/Sidebar/SidebarTrigger.scss b/src/components/Sidebar/SidebarTrigger.scss new file mode 100644 index 000000000..5aeef52eb --- /dev/null +++ b/src/components/Sidebar/SidebarTrigger.scss @@ -0,0 +1,34 @@ +@import "../../css/variables.module"; + +.excalidraw { + .sidebar-trigger { + @include outlineButtonStyles; + + background-color: var(--island-bg-color); + + width: auto; + height: var(--lg-button-size); + + display: flex; + align-items: center; + gap: 0.5rem; + + line-height: 0; + + font-size: 0.75rem; + letter-spacing: 0.4px; + + svg { + width: var(--lg-icon-size); + height: var(--lg-icon-size); + } + } + + .default-sidebar-trigger .sidebar-trigger__label { + display: none; + + @media screen and (min-width: 1024px) { + display: block; + } + } +} diff --git a/src/components/Sidebar/SidebarTrigger.tsx b/src/components/Sidebar/SidebarTrigger.tsx new file mode 100644 index 000000000..711432818 --- /dev/null +++ b/src/components/Sidebar/SidebarTrigger.tsx @@ -0,0 +1,45 @@ +import { useExcalidrawSetAppState } from "../App"; +import { SidebarTriggerProps } from "./common"; +import { useUIAppState } from "../../context/ui-appState"; +import clsx from "clsx"; + +import "./SidebarTrigger.scss"; + +export const SidebarTrigger = ({ + name, + tab, + icon, + title, + children, + onToggle, + className, + style, +}: SidebarTriggerProps) => { + const setAppState = useExcalidrawSetAppState(); + const appState = useUIAppState(); + + return ( + + ); +}; +SidebarTrigger.displayName = "SidebarTrigger"; diff --git a/src/components/Sidebar/common.ts b/src/components/Sidebar/common.ts index 97c72b5d3..c7161bd17 100644 --- a/src/components/Sidebar/common.ts +++ b/src/components/Sidebar/common.ts @@ -1,23 +1,41 @@ import React from "react"; +import { AppState, SidebarName, SidebarTabName } from "../../types"; + +export type SidebarTriggerProps = { + name: SidebarName; + tab?: SidebarTabName; + icon?: JSX.Element; + children?: React.ReactNode; + title?: string; + className?: string; + onToggle?: (open: boolean) => void; + style?: React.CSSProperties; +}; export type SidebarProps

= { + name: SidebarName; children: React.ReactNode; /** - * Called on sidebar close (either by user action or by the editor). + * Called on sidebar open/close or tab change. + */ + onStateChange?: (state: AppState["openSidebar"]) => void; + /** + * supply alongside `docked` prop in order to make the Sidebar user-dockable */ - onClose?: () => void | boolean; - /** if not supplied, sidebar won't be dockable */ onDock?: (docked: boolean) => void; docked?: boolean; - initialDockedState?: boolean; - dockable?: boolean; className?: string; + // NOTE sidebars we use internally inside the editor must have this flag set. + // It indicates that this sidebar should have lower precedence over host + // sidebars, if both are open. + /** @private internal */ + __fallback?: boolean; } & P; export type SidebarPropsContextValue = Pick< SidebarProps, - "onClose" | "onDock" | "docked" | "dockable" ->; + "onDock" | "docked" +> & { onCloseRequest: () => void; shouldRenderDockButton: boolean }; export const SidebarPropsContext = - React.createContext({}); + React.createContext({} as SidebarPropsContextValue); diff --git a/src/components/Stats.tsx b/src/components/Stats.tsx index 8aad76026..eb2b93e7e 100644 --- a/src/components/Stats.tsx +++ b/src/components/Stats.tsx @@ -3,14 +3,14 @@ import { getCommonBounds } from "../element/bounds"; import { NonDeletedExcalidrawElement } from "../element/types"; import { t } from "../i18n"; import { getTargetElements } from "../scene"; -import { AppState, ExcalidrawProps } from "../types"; +import { ExcalidrawProps, UIAppState } from "../types"; import { CloseIcon } from "./icons"; import { Island } from "./Island"; import "./Stats.scss"; export const Stats = (props: { - appState: AppState; - setAppState: React.Component["setState"]; + appState: UIAppState; + setAppState: React.Component["setState"]; elements: readonly NonDeletedExcalidrawElement[]; onClose: () => void; renderCustomStats: ExcalidrawProps["renderCustomStats"]; diff --git a/src/components/TopErrorBoundary.tsx b/src/components/TopErrorBoundary.tsx index ce81ec092..d465514f1 100644 --- a/src/components/TopErrorBoundary.tsx +++ b/src/components/TopErrorBoundary.tsx @@ -1,6 +1,7 @@ import React from "react"; import * as Sentry from "@sentry/browser"; import { t } from "../i18n"; +import Trans from "./Trans"; interface TopErrorBoundaryState { hasError: boolean; @@ -74,25 +75,31 @@ export class TopErrorBoundary extends React.Component<

- {t("errorSplash.headingMain_pre")} - + ( + + )} + />
- {t("errorSplash.clearCanvasMessage")} - + ( + + )} + />
@@ -106,16 +113,17 @@ export class TopErrorBoundary extends React.Component<
- {t("errorSplash.trackedToSentry_pre")} - {this.state.sentryEventId} - {t("errorSplash.trackedToSentry_post")} + {t("errorSplash.trackedToSentry", { + eventId: this.state.sentryEventId, + })}
- {t("errorSplash.openIssueMessage_pre")} - - {t("errorSplash.openIssueMessage_post")} + ( + + )} + />
diff --git a/src/components/Trans.test.tsx b/src/components/Trans.test.tsx new file mode 100644 index 000000000..e3e9a462a --- /dev/null +++ b/src/components/Trans.test.tsx @@ -0,0 +1,67 @@ +import { render } from "@testing-library/react"; + +import fallbackLangData from "../locales/en.json"; + +import Trans from "./Trans"; + +describe("Test ", () => { + it("should translate the the strings correctly", () => { + //@ts-ignore + fallbackLangData.transTest = { + key1: "Hello {{audience}}", + key2: "Please click the button to continue.", + key3: "Please click {{location}} to continue.", + key4: "Please click {{location}} to continue.", + key5: "Please click the button to continue.", + }; + + const { getByTestId } = render( + <> +
+ +
+
+ {el}} + /> +
+
+ {el}} + location="the button" + /> +
+
+ {el}} + location="the button" + bold={(el) => {el}} + /> +
+
+ {el}} + /> +
+ , + ); + + expect(getByTestId("test1").innerHTML).toEqual("Hello world"); + expect(getByTestId("test2").innerHTML).toEqual( + `Please click the button to continue.`, + ); + expect(getByTestId("test3").innerHTML).toEqual( + `Please click the button to continue.`, + ); + expect(getByTestId("test4").innerHTML).toEqual( + `Please click the button to continue.`, + ); + expect(getByTestId("test5").innerHTML).toEqual( + `Please click the button to continue.`, + ); + }); +}); diff --git a/src/components/Trans.tsx b/src/components/Trans.tsx new file mode 100644 index 000000000..189cda23c --- /dev/null +++ b/src/components/Trans.tsx @@ -0,0 +1,169 @@ +import React from "react"; + +import { useI18n } from "../i18n"; + +// Used for splitting i18nKey into tokens in Trans component +// Example: +// "Please click {{location}} to continue.".split(SPLIT_REGEX).filter(Boolean) +// produces +// ["Please ", "", "click ", "{{location}}", "", " to continue."] +const SPLIT_REGEX = /({{[\w-]+}})|(<[\w-]+>)|(<\/[\w-]+>)/g; +// Used for extracting "location" from "{{location}}" +const KEY_REGEXP = /{{([\w-]+)}}/; +// Used for extracting "link" from "" +const TAG_START_REGEXP = /<([\w-]+)>/; +// Used for extracting "link" from "" +const TAG_END_REGEXP = /<\/([\w-]+)>/; + +const getTransChildren = ( + format: string, + props: { + [key: string]: React.ReactNode | ((el: React.ReactNode) => React.ReactNode); + }, +): React.ReactNode[] => { + const stack: { name: string; children: React.ReactNode[] }[] = [ + { + name: "", + children: [], + }, + ]; + + format + .split(SPLIT_REGEX) + .filter(Boolean) + .forEach((match) => { + const tagStartMatch = match.match(TAG_START_REGEXP); + const tagEndMatch = match.match(TAG_END_REGEXP); + const keyMatch = match.match(KEY_REGEXP); + + if (tagStartMatch !== null) { + // The match is . Set the tag name as the name if it's one of the + // props, e.g. for "Please click the button to continue" + // tagStartMatch[1] = "link" and props contain "link" then it will be + // pushed to stack. + const name = tagStartMatch[1]; + if (props.hasOwnProperty(name)) { + stack.push({ + name, + children: [], + }); + } else { + console.warn( + `Trans: missed to pass in prop ${name} for interpolating ${format}`, + ); + } + } else if (tagEndMatch !== null) { + // If tag end match is found, this means we need to replace the content with + // its actual value in prop e.g. format = "Please click the + // button to continue", tagEndMatch is for "", stack last item name = + // "link" and props.link = (el) => {el} then its prop value will be + // pushed to "link"'s children so on DOM when rendering it's rendered as + // click the button + const name = tagEndMatch[1]; + if (name === stack[stack.length - 1].name) { + const item = stack.pop()!; + const itemChildren = React.createElement( + React.Fragment, + {}, + ...item.children, + ); + const fn = props[item.name]; + if (typeof fn === "function") { + stack[stack.length - 1].children.push(fn(itemChildren)); + } + } else { + console.warn( + `Trans: unexpected end tag ${match} for interpolating ${format}`, + ); + } + } else if (keyMatch !== null) { + // The match is for {{key}}. Check if the key is present in props and set + // the prop value as children of last stack item e.g. format = "Hello + // {{name}}", key = "name" and props.name = "Excalidraw" then its prop + // value will be pushed to "name"'s children so it's rendered on DOM as + // "Hello Excalidraw" + const name = keyMatch[1]; + if (props.hasOwnProperty(name)) { + stack[stack.length - 1].children.push(props[name] as React.ReactNode); + } else { + console.warn( + `Trans: key ${name} not in props for interpolating ${format}`, + ); + } + } else { + // If none of cases match means we just need to push the string + // to stack eg - "Hello {{name}} Whats up?" "Hello", "Whats up" will be pushed + stack[stack.length - 1].children.push(match); + } + }); + + if (stack.length !== 1) { + console.warn(`Trans: stack not empty for interpolating ${format}`); + } + + return stack[0].children; +}; + +/* +Trans component is used for translating JSX. + +```json +{ + "example1": "Hello {{audience}}", + "example2": "Please click the button to continue.", + "example3": "Please click {{location}} to continue.", + "example4": "Please click {{location}} to continue.", +} +``` + +```jsx + + + {el}} +/> + + {el}} + location="the button" +/> + + {el}} + location="the button" + bold={(el) => {el}} +/> +``` + +Output: + +```html +Hello world +Please click the button to continue. +Please click the button to continue. +Please click the button to continue. +``` +*/ +const Trans = ({ + i18nKey, + children, + ...props +}: { + i18nKey: string; + [key: string]: React.ReactNode | ((el: React.ReactNode) => React.ReactNode); +}) => { + const { t } = useI18n(); + + // This is needed to avoid unique key error in list which gets rendered from getTransChildren + return React.createElement( + React.Fragment, + {}, + ...getTransChildren(t(i18nKey), props), + ); +}; + +export default Trans; diff --git a/src/components/__snapshots__/App.test.tsx.snap b/src/components/__snapshots__/App.test.tsx.snap index b36d678cd..2cdf4bb8b 100644 --- a/src/components/__snapshots__/App.test.tsx.snap +++ b/src/components/__snapshots__/App.test.tsx.snap @@ -5,59 +5,46 @@ exports[`Test should show error modal when using brave and measureText AP data-testid="brave-measure-text-error" >

- Looks like you are using Brave browser with the -   + Looks like you are using Brave browser with the Aggressively Block Fingerprinting - - setting enabled - . -
-
- This could result in breaking the - + setting enabled. +

+

+ This could result in breaking the Text Elements - - in your drawings - . + in your drawings.

- We strongly recommend disabling this setting. You can follow - + We strongly recommend disabling this setting. You can follow - these steps - - on how to do so - . + on how to do so.

- If disabling this setting doesn't fix the display of text elements, please open an - + If disabling this setting doesn't fix the display of text elements, please open an issue - - on our GitHub, or write us on - + on our GitHub, or write us on Discord + . - .

`; diff --git a/src/components/context/tunnels.ts b/src/components/context/tunnels.ts deleted file mode 100644 index 981fcb0ad..000000000 --- a/src/components/context/tunnels.ts +++ /dev/null @@ -1,32 +0,0 @@ -import React from "react"; -import tunnel from "@dwelle/tunnel-rat"; - -type Tunnel = ReturnType; - -type TunnelsContextValue = { - mainMenuTunnel: Tunnel; - welcomeScreenMenuHintTunnel: Tunnel; - welcomeScreenToolbarHintTunnel: Tunnel; - welcomeScreenHelpHintTunnel: Tunnel; - welcomeScreenCenterTunnel: Tunnel; - footerCenterTunnel: Tunnel; - jotaiScope: symbol; -}; - -export const TunnelsContext = React.createContext(null!); - -export const useTunnels = () => React.useContext(TunnelsContext); - -export const useInitializeTunnels = () => { - return React.useMemo((): TunnelsContextValue => { - return { - mainMenuTunnel: tunnel(), - welcomeScreenMenuHintTunnel: tunnel(), - welcomeScreenToolbarHintTunnel: tunnel(), - welcomeScreenHelpHintTunnel: tunnel(), - welcomeScreenCenterTunnel: tunnel(), - footerCenterTunnel: tunnel(), - jotaiScope: Symbol(), - }; - }, []); -}; diff --git a/src/components/dropdownMenu/DropdownMenuContent.tsx b/src/components/dropdownMenu/DropdownMenuContent.tsx index 8ec2b6e63..3c50d474c 100644 --- a/src/components/dropdownMenu/DropdownMenuContent.tsx +++ b/src/components/dropdownMenu/DropdownMenuContent.tsx @@ -1,4 +1,4 @@ -import { useOutsideClickHook } from "../../hooks/useOutsideClick"; +import { useOutsideClick } from "../../hooks/useOutsideClick"; import { Island } from "../Island"; import { useDevice } from "../App"; @@ -24,7 +24,7 @@ const MenuContent = ({ style?: React.CSSProperties; }) => { const device = useDevice(); - const menuRef = useOutsideClickHook(() => { + const menuRef = useOutsideClick(() => { onClickOutside?.(); }); diff --git a/src/components/dropdownMenu/DropdownMenuTrigger.tsx b/src/components/dropdownMenu/DropdownMenuTrigger.tsx index 100cef0ea..d9d3f799e 100644 --- a/src/components/dropdownMenu/DropdownMenuTrigger.tsx +++ b/src/components/dropdownMenu/DropdownMenuTrigger.tsx @@ -1,5 +1,6 @@ import clsx from "clsx"; -import { useDevice, useExcalidrawAppState } from "../App"; +import { useUIAppState } from "../../context/ui-appState"; +import { useDevice } from "../App"; const MenuTrigger = ({ className = "", @@ -10,7 +11,7 @@ const MenuTrigger = ({ children: React.ReactNode; onToggle: () => void; }) => { - const appState = useExcalidrawAppState(); + const appState = useUIAppState(); const device = useDevice(); const classNames = clsx( `dropdown-menu-button ${className}`, diff --git a/src/components/footer/Footer.tsx b/src/components/footer/Footer.tsx index 788462b86..173ea451a 100644 --- a/src/components/footer/Footer.tsx +++ b/src/components/footer/Footer.tsx @@ -1,7 +1,6 @@ import clsx from "clsx"; import { actionShortcuts } from "../../actions"; import { ActionManager } from "../../actions/manager"; -import { AppState } from "../../types"; import { ExitZenModeAction, FinalizeAction, @@ -9,10 +8,11 @@ import { ZoomActions, } from "../Actions"; import { useDevice } from "../App"; -import { useTunnels } from "../context/tunnels"; +import { useTunnels } from "../../context/tunnels"; import { HelpButton } from "../HelpButton"; import { Section } from "../Section"; import Stack from "../Stack"; +import { UIAppState } from "../../types"; const Footer = ({ appState, @@ -20,12 +20,12 @@ const Footer = ({ showExitZenModeBtn, renderWelcomeScreen, }: { - appState: AppState; + appState: UIAppState; actionManager: ActionManager; showExitZenModeBtn: boolean; renderWelcomeScreen: boolean; }) => { - const { footerCenterTunnel, welcomeScreenHelpHintTunnel } = useTunnels(); + const { FooterCenterTunnel, WelcomeScreenHelpHintTunnel } = useTunnels(); const device = useDevice(); const showFinalize = @@ -70,14 +70,14 @@ const Footer = ({
- +
- {renderWelcomeScreen && } + {renderWelcomeScreen && } actionManager.executeAction(actionShortcuts)} /> diff --git a/src/components/footer/FooterCenter.tsx b/src/components/footer/FooterCenter.tsx index 90f0f96c5..55a0fb998 100644 --- a/src/components/footer/FooterCenter.tsx +++ b/src/components/footer/FooterCenter.tsx @@ -1,13 +1,13 @@ import clsx from "clsx"; -import { useExcalidrawAppState } from "../App"; -import { useTunnels } from "../context/tunnels"; +import { useTunnels } from "../../context/tunnels"; import "./FooterCenter.scss"; +import { useUIAppState } from "../../context/ui-appState"; const FooterCenter = ({ children }: { children?: React.ReactNode }) => { - const { footerCenterTunnel } = useTunnels(); - const appState = useExcalidrawAppState(); + const { FooterCenterTunnel } = useTunnels(); + const appState = useUIAppState(); return ( - +
{ > {children}
-
+
); }; diff --git a/src/components/hoc/withInternalFallback.tsx b/src/components/hoc/withInternalFallback.tsx index 4ad61a11e..581a1874f 100644 --- a/src/components/hoc/withInternalFallback.tsx +++ b/src/components/hoc/withInternalFallback.tsx @@ -1,32 +1,46 @@ import { atom, useAtom } from "jotai"; import React, { useLayoutEffect } from "react"; -import { useTunnels } from "../context/tunnels"; +import { useTunnels } from "../../context/tunnels"; export const withInternalFallback = ( componentName: string, Component: React.FC

, ) => { - const counterAtom = atom(0); + const renderAtom = atom(0); // flag set on initial render to tell the fallback component to skip the // render until mount counter are initialized. This is because the counter // is initialized in an effect, and thus we could end rendering both // components at the same time until counter is initialized. let preferHost = false; + let counter = 0; + const WrapperComponent: React.FC< P & { __fallback?: boolean; } > = (props) => { const { jotaiScope } = useTunnels(); - const [counter, setCounter] = useAtom(counterAtom, jotaiScope); + const [, setRender] = useAtom(renderAtom, jotaiScope); useLayoutEffect(() => { - setCounter((counter) => counter + 1); + setRender((c) => { + const next = c + 1; + counter = next; + + return next; + }); return () => { - setCounter((counter) => counter - 1); + setRender((c) => { + const next = c - 1; + counter = next; + if (!next) { + preferHost = false; + } + return next; + }); }; - }, [setCounter]); + }, [setRender]); if (!props.__fallback) { preferHost = true; diff --git a/src/components/hoc/withUpstreamOverride.tsx b/src/components/hoc/withUpstreamOverride.tsx deleted file mode 100644 index acbc800b3..000000000 --- a/src/components/hoc/withUpstreamOverride.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React, { - useMemo, - useContext, - useLayoutEffect, - useState, - createContext, -} from "react"; - -export const withUpstreamOverride = (Component: React.ComponentType

) => { - type ContextValue = [boolean, React.Dispatch>]; - - const DefaultComponentContext = createContext([ - false, - () => {}, - ]); - - const ComponentContext: React.FC<{ children: React.ReactNode }> = ({ - children, - }) => { - const [isRenderedUpstream, setIsRenderedUpstream] = useState(false); - const contextValue: ContextValue = useMemo( - () => [isRenderedUpstream, setIsRenderedUpstream], - [isRenderedUpstream], - ); - - return ( - - {children} - - ); - }; - - const DefaultComponent = ( - props: P & { - // indicates whether component should render when not rendered upstream - /** @private internal */ - __isFallback?: boolean; - }, - ) => { - const [isRenderedUpstream, setIsRenderedUpstream] = useContext( - DefaultComponentContext, - ); - - useLayoutEffect(() => { - if (!props.__isFallback) { - setIsRenderedUpstream(true); - return () => setIsRenderedUpstream(false); - } - }, [props.__isFallback, setIsRenderedUpstream]); - - if (props.__isFallback && isRenderedUpstream) { - return null; - } - - return ; - }; - if (Component.name) { - DefaultComponent.displayName = `${Component.name}_upstreamOverrideWrapper`; - ComponentContext.displayName = `${Component.name}_upstreamOverrideContextWrapper`; - } - - return [ComponentContext, DefaultComponent] as const; -}; diff --git a/src/components/live-collaboration/LiveCollaborationTrigger.tsx b/src/components/live-collaboration/LiveCollaborationTrigger.tsx index 87f696d85..3111680cb 100644 --- a/src/components/live-collaboration/LiveCollaborationTrigger.tsx +++ b/src/components/live-collaboration/LiveCollaborationTrigger.tsx @@ -3,9 +3,9 @@ import { usersIcon } from "../icons"; import { Button } from "../Button"; import clsx from "clsx"; -import { useExcalidrawAppState } from "../App"; import "./LiveCollaborationTrigger.scss"; +import { useUIAppState } from "../../context/ui-appState"; const LiveCollaborationTrigger = ({ isCollaborating, @@ -15,7 +15,7 @@ const LiveCollaborationTrigger = ({ isCollaborating: boolean; onSelect: () => void; } & React.ButtonHTMLAttributes) => { - const appState = useExcalidrawAppState(); + const appState = useUIAppState(); return ( ", + "clearCanvasMessage": "Ако презареждането не работи, опитайте ", "clearCanvasCaveat": " Това ще доведе до загуба на работа ", - "trackedToSentry_pre": "Грешката с идентификатор ", - "trackedToSentry_post": " беше проследен в нашата система.", - "openIssueMessage_pre": "Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата ", - "openIssueMessage_button": "тракер за грешки.", - "openIssueMessage_post": " Моля, включете информация по-долу, като я копирате и добавите в GitHub.", + "trackedToSentry": "Грешката с идентификатор {{eventId}} беше проследен в нашата система.", + "openIssueMessage": "Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата Моля, включете информация по-долу, като я копирате и добавите в GitHub.", "sceneContent": "Съдържание на сцената:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/bn-BD.json b/src/locales/bn-BD.json index a5d9dec0f..d652c1ebc 100644 --- a/src/locales/bn-BD.json +++ b/src/locales/bn-BD.json @@ -1,7 +1,7 @@ { "labels": { "paste": "পেস্ট করুন", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "প্লেইনটেক্সট হিসাবে পেস্ট করুন", "pasteCharts": "চার্ট পেস্ট করুন", "selectAll": "সবটা সিলেক্ট করুন", "multiSelect": "একাধিক সিলেক্ট করুন", @@ -54,6 +54,7 @@ "veryLarge": "অনেক বড়", "solid": "দৃঢ়", "hachure": "ভ্রুলেখা", + "zigzag": "আঁকাবাঁকা", "crossHatch": "ক্রস হ্যাচ", "thin": "পাতলা", "bold": "পুরু", @@ -72,7 +73,7 @@ "layers": "মাত্রা", "actions": "ক্রিয়া", "language": "ভাষা", - "liveCollaboration": "", + "liveCollaboration": "সরাসরি পারস্পরিক সহযোগিতা...", "duplicateSelection": "সদৃশ সিলেক্ট", "untitled": "অনামী", "name": "নাম", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "বিশেষ্য: দূরতম উপাদানগুলোকে একটু কাছাকাছি নিয়ে যাওয়ার চেষ্টা করুন।" }, "errorSplash": { - "headingMain_pre": "একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন ", - "headingMain_button": "পৃষ্ঠাটি পুনরায় লোড করার।", - "clearCanvasMessage": "যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন ", - "clearCanvasMessage_button": "ক্যানভাস পরিষ্কার করার।", + "headingMain": "একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন ", + "clearCanvasMessage": "যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন ", "clearCanvasCaveat": " এর ফলে কাজের ক্ষতি হবে ", - "trackedToSentry_pre": "ত্রুটি ", - "trackedToSentry_post": " আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।", - "openIssueMessage_pre": "আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন ", - "openIssueMessage_button": "ত্রুটি ইতিবৃত্ত।", - "openIssueMessage_post": " অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।", + "trackedToSentry": "ত্রুটি {{eventId}} আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।", + "openIssueMessage": "আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।", "sceneContent": "দৃশ্য বিষয়বস্তু:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/ca-ES.json b/src/locales/ca-ES.json index ae45e764d..02bb253d5 100644 --- a/src/locales/ca-ES.json +++ b/src/locales/ca-ES.json @@ -54,6 +54,7 @@ "veryLarge": "Molt gran", "solid": "Sòlid", "hachure": "Ratlletes", + "zigzag": "", "crossHatch": "Ratlletes creuades", "thin": "Fi", "bold": "Negreta", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Consell: proveu d’acostar una mica els elements més allunyats." }, "errorSplash": { - "headingMain_pre": "S'ha produït un error. Proveu ", - "headingMain_button": "recarregar la pàgina.", - "clearCanvasMessage": "Si la recàrrega no funciona, proveu ", - "clearCanvasMessage_button": "esborrar el llenç.", + "headingMain": "S'ha produït un error. Proveu ", + "clearCanvasMessage": "Si la recàrrega no funciona, proveu ", "clearCanvasCaveat": " Això resultarà en la pèrdua de feina ", - "trackedToSentry_pre": "L'error amb l'identificador ", - "trackedToSentry_post": " s'ha rastrejat en el nostre sistema.", - "openIssueMessage_pre": "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 ", - "openIssueMessage_button": "rastrejador d'errors.", - "openIssueMessage_post": " Incloeu la informació a continuació copiant i enganxant a GitHub Issues.", + "trackedToSentry": "L'error amb l'identificador {{eventId}} s'ha rastrejat en el nostre sistema.", + "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 Incloeu la informació a continuació copiant i enganxant a GitHub Issues.", "sceneContent": "Contingut de l'escena:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Requerit", "website": "Introduïu una URL vàlida" }, - "noteDescription": { - "pre": "Envieu la vostra biblioteca perquè sigui inclosa al ", - "link": "repositori públic", - "post": "per tal que altres persones puguin fer-ne ús en els seus dibuixos." - }, - "noteGuidelines": { - "pre": "La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les ", - "link": "directrius", - "post": " abans d'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible." - }, - "noteLicense": { - "pre": "Quan l'envieu, accepteu que la biblioteca sigui publicada sota la ", - "link": "llicència MIT, ", - "post": "que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions." - }, + "noteDescription": "Envieu la vostra biblioteca perquè sigui inclosa al repositori públicper tal que altres persones puguin fer-ne ús en els seus dibuixos.", + "noteGuidelines": "La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les directrius abans d'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible.", + "noteLicense": "Quan l'envieu, accepteu que la biblioteca sigui publicada sota la llicència MIT, que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions.", "noteItems": "Cada element de la biblioteca ha de tenir el seu propi nom per tal que sigui filtrable. S'hi inclouran els elements següents:", "atleastOneLibItem": "Si us plau, seleccioneu si més no un element de la biblioteca per a començar", "republishWarning": "Nota: alguns dels elements seleccionats s'han marcat com a publicats/enviats. Només hauríeu de reenviar elements quan actualitzeu una biblioteca existent." }, "publishSuccessDialog": { "title": "Biblioteca enviada", - "content": "Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l'estat", - "link": "aquí" + "content": "Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l'estataquí" }, "confirmDialog": { "resetLibrary": "Restableix la biblioteca", diff --git a/src/locales/cs-CZ.json b/src/locales/cs-CZ.json index d57a8837d..3ab4827b7 100644 --- a/src/locales/cs-CZ.json +++ b/src/locales/cs-CZ.json @@ -54,6 +54,7 @@ "veryLarge": "Velmi velké", "solid": "Plný", "hachure": "", + "zigzag": "", "crossHatch": "", "thin": "Tenký", "bold": "Tlustý", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", + "headingMain": "", "clearCanvasMessage": "", - "clearCanvasMessage_button": "", "clearCanvasCaveat": "", - "trackedToSentry_pre": "Chyba identifikátoru ", - "trackedToSentry_post": " byl zaznamenán v našem systému.", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "Chyba identifikátoru {{eventId}} byl zaznamenán v našem systému.", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Povinné", "website": "Zadejte platnou URL adresu" }, - "noteDescription": { - "pre": "Odešlete svou knihovnu, pro zařazení do ", - "link": "veřejného úložiště knihoven", - "post": ", odkud ji budou moci při kreslení využít i ostatní uživatelé." - }, - "noteGuidelines": { - "pre": "Knihovna musí být nejdříve ručně schválena. Přečtěte si prosím ", - "link": "pokyny", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "Odešlete svou knihovnu, pro zařazení do veřejného úložiště knihoven, odkud ji budou moci při kreslení využít i ostatní uživatelé.", + "noteGuidelines": "Knihovna musí být nejdříve ručně schválena. Přečtěte si prosím pokyny", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "Knihovna byla odeslána", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/da-DK.json b/src/locales/da-DK.json index c8b5ad6e3..15801ed4d 100644 --- a/src/locales/da-DK.json +++ b/src/locales/da-DK.json @@ -54,6 +54,7 @@ "veryLarge": "Meget stor", "solid": "Solid", "hachure": "Skravering", + "zigzag": "", "crossHatch": "Krydsskravering", "thin": "Tynd", "bold": "Fed", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", + "headingMain": "", "clearCanvasMessage": "", - "clearCanvasMessage_button": "", "clearCanvasCaveat": "", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": " Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.", + "trackedToSentry": "", + "openIssueMessage": " Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.", "sceneContent": "Scene indhold:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/de-DE.json b/src/locales/de-DE.json index bdf30a371..f28dc123b 100644 --- a/src/locales/de-DE.json +++ b/src/locales/de-DE.json @@ -54,6 +54,7 @@ "veryLarge": "Sehr groß", "solid": "Deckend", "hachure": "Schraffiert", + "zigzag": "Zickzack", "crossHatch": "Kreuzschraffiert", "thin": "Dünn", "bold": "Fett", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "Sieht so aus, als ob du den Brave Browser benutzt mit der", - "aggressive_block_fingerprint": "\"Fingerprinting aggressiv blockieren\"", - "setting_enabled": "Einstellung aktiviert", - "break": "Dies könnte zur inkorrekten Darstellung der", - "text_elements": "Textelemente", - "in_your_drawings": "in deinen Zeichnungen führen", - "strongly_recommend": "Wir empfehlen dringend, diese Einstellung zu deaktivieren. Du kannst", - "steps": "diesen Schritten entsprechend", - "how": "folgen", - "disable_setting": " Wenn die Deaktivierung dieser Einstellung nicht zu einer korrekten Textdarstellung führt, öffne bitte einen", - "issue": "Issue", - "write": "auf GitHub, oder schreibe uns auf", - "discord": "Discord" + "line1": "Sieht so aus, als ob Du den Brave-Browser verwendest und die aggressive Blockierung von Fingerabdrücken aktiviert hast.", + "line2": "Dies könnte dazu führen, dass die Textelemente in Ihren Zeichnungen zerstört werden.", + "line3": "Wir empfehlen dringend, diese Einstellung zu deaktivieren. Dazu kannst Du diesen Schritten folgen.", + "line4": "Wenn die Deaktivierung dieser Einstellung die fehlerhafte Anzeige von Textelementen nicht behebt, öffne bitte ein Ticket auf unserem GitHub oder schreibe uns auf Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tipp: Schiebe die am weitesten entfernten Elemente ein wenig näher zusammen." }, "errorSplash": { - "headingMain_pre": "Es ist ein Fehler aufgetreten. Versuche ", - "headingMain_button": "die Seite neu zu laden.", - "clearCanvasMessage": "Wenn das Neuladen nicht funktioniert, versuche ", - "clearCanvasMessage_button": "die Zeichenfläche zu löschen.", + "headingMain": "Es ist ein Fehler aufgetreten. Versuche ", + "clearCanvasMessage": "Wenn das Neuladen nicht funktioniert, versuche ", "clearCanvasCaveat": " Dies wird zum Verlust von Daten führen ", - "trackedToSentry_pre": "Der Fehler mit der Kennung ", - "trackedToSentry_post": " wurde in unserem System registriert.", - "openIssueMessage_pre": "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 ", - "openIssueMessage_button": "Bug-Tracker.", - "openIssueMessage_post": " Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).", + "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 . Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).", "sceneContent": "Zeichnungsinhalt:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Erforderlich", "website": "Gültige URL eingeben" }, - "noteDescription": { - "pre": "Sende deine Bibliothek ein, um in die ", - "link": "öffentliche Bibliotheks-Repository aufgenommen zu werden", - "post": "damit andere Nutzer sie in ihren Zeichnungen verwenden können." - }, - "noteGuidelines": { - "pre": "Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die ", - "link": "Richtlinien", - "post": " vor dem Absenden. Du benötigst ein GitHub-Konto, um zu kommunizieren und Änderungen vorzunehmen, falls erforderlich, aber es ist nicht unbedingt erforderlich." - }, - "noteLicense": { - "pre": "Mit dem Absenden stimmst du zu, dass die Bibliothek unter der ", - "link": "MIT-Lizenz, ", - "post": "die zusammengefasst beinhaltet, dass jeder sie ohne Einschränkungen nutzen kann." - }, + "noteDescription": "Sende deine Bibliothek ein, um in die öffentliche Bibliotheks-Repository aufgenommen zu werdendamit andere Nutzer sie in ihren Zeichnungen verwenden können.", + "noteGuidelines": "Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die Richtlinien 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 MIT-Lizenz, 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" + "content": "Vielen Dank {{authorName}}. Deine Bibliothek wurde zur Überprüfung eingereicht. Du kannst den Status verfolgenhier" }, "confirmDialog": { "resetLibrary": "Bibliothek zurücksetzen", diff --git a/src/locales/el-GR.json b/src/locales/el-GR.json index 888c39568..ddd6af340 100644 --- a/src/locales/el-GR.json +++ b/src/locales/el-GR.json @@ -54,6 +54,7 @@ "veryLarge": "Πολύ μεγάλο", "solid": "Συμπαγής", "hachure": "Εκκόλαψη", + "zigzag": "", "crossHatch": "Διασταυρούμενη εκκόλαψη", "thin": "Λεπτή", "bold": "Έντονη", @@ -207,19 +208,10 @@ "collabSaveFailed": "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.", "collabSaveFailed_sizeExceeded": "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.", "brave_measure_text_error": { - "start": "Φαίνεται ότι χρησιμοποιείτε το Brave browser με το", - "aggressive_block_fingerprint": "Αποκλεισμός \"Δακτυλικών Αποτυπωμάτων\"", - "setting_enabled": "ρύθμιση ενεργοποιημένη", - "break": "Αυτό θα μπορούσε να σπάσει το", - "text_elements": "Στοιχεία Κειμένου", - "in_your_drawings": "στα σχέδιά σας", - "strongly_recommend": "Συνιστούμε να απενεργοποιήσετε αυτή τη ρύθμιση. Μπορείτε να ακολουθήσετε", - "steps": "αυτά τα βήματα", - "how": "για το πώς να το κάνετε", - "disable_setting": " Εάν η απενεργοποίηση αυτής της ρύθμισης δεν διορθώνει την εμφάνιση των στοιχείων κειμένου, παρακαλώ ανοίξτε ένα", - "issue": "πρόβλημα", - "write": "στο GitHub, ή γράψτε μας στο", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Συμβουλή: προσπαθήστε να μετακινήσετε τα πιο απομακρυσμένα στοιχεία λίγο πιο κοντά μαζί." }, "errorSplash": { - "headingMain_pre": "Συνέβη κάποιο σφάλμα. Προσπάθησε ", - "headingMain_button": "φόρτωσε ξανά την σελίδα.", - "clearCanvasMessage": "Εάν το παραπάνω δεν δουλέψει, προσπάθησε ", - "clearCanvasMessage_button": "καθαρίσετε τον κανβά.", + "headingMain": "Συνέβη κάποιο σφάλμα. Προσπάθησε ", + "clearCanvasMessage": "Εάν το παραπάνω δεν δουλέψει, προσπάθησε ", "clearCanvasCaveat": " Αυτό θα προκαλέσει απώλεια της δουλειάς σου ", - "trackedToSentry_pre": "Το σφάλμα με αναγνωριστικό ", - "trackedToSentry_post": " παρακολουθήθηκε στο σύστημά μας.", - "openIssueMessage_pre": "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας ", - "openIssueMessage_button": "ανιχνευτής σφαλμάτων.", - "openIssueMessage_post": " Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.", + "trackedToSentry": "Το σφάλμα με αναγνωριστικό {{eventId}} παρακολουθήθηκε στο σύστημά μας.", + "openIssueMessage": "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.", "sceneContent": "Περιεχόμενο σκηνής:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Απαιτείται", "website": "Εισάγετε μια έγκυρη διεύθυνση URL" }, - "noteDescription": { - "pre": "Υποβάλετε τη βιβλιοθήκη σας για να συμπεριληφθεί στο ", - "link": "δημόσιο αποθετήριο βιβλιοθήκης", - "post": "ώστε να χρησιμοποιηθεί από άλλα άτομα στα σχέδιά τους." - }, - "noteGuidelines": { - "pre": "Η βιβλιοθήκη πρέπει πρώτα να εγκριθεί χειροκίνητα. Παρακαλώ διαβάστε τους ", - "link": "οδηγίες", - "post": " πριν την υποβολή. Θα χρειαστείτε έναν λογαριασμό GitHub για την επικοινωνία και για να προβείτε σε αλλαγές εφ' όσον χρειαστεί, αλλά δεν είναι αυστηρή απαίτηση." - }, - "noteLicense": { - "pre": "Με την υποβολή, συμφωνείτε ότι η βιβλιοθήκη θα δημοσιευθεί υπό την ", - "link": "Άδεια MIT, ", - "post": "που εν συντομία σημαίνει ότι ο καθένας μπορεί να τα χρησιμοποιήσει χωρίς περιορισμούς." - }, + "noteDescription": "Υποβάλετε τη βιβλιοθήκη σας για να συμπεριληφθεί στο δημόσιο αποθετήριο βιβλιοθήκηςώστε να χρησιμοποιηθεί από άλλα άτομα στα σχέδιά τους.", + "noteGuidelines": "Η βιβλιοθήκη πρέπει πρώτα να εγκριθεί χειροκίνητα. Παρακαλώ διαβάστε τους οδηγίες πριν την υποβολή. Θα χρειαστείτε έναν λογαριασμό GitHub για την επικοινωνία και για να προβείτε σε αλλαγές εφ' όσον χρειαστεί, αλλά δεν είναι αυστηρή απαίτηση.", + "noteLicense": "Με την υποβολή, συμφωνείτε ότι η βιβλιοθήκη θα δημοσιευθεί υπό την Άδεια MIT, που εν συντομία σημαίνει ότι ο καθένας μπορεί να τα χρησιμοποιήσει χωρίς περιορισμούς.", "noteItems": "Κάθε αντικείμενο της βιβλιοθήκης πρέπει να έχει το δικό του όνομα ώστε να μπορεί να φιλτραριστεί. Θα συμπεριληφθούν τα ακόλουθα αντικείμενα βιβλιοθήκης:", "atleastOneLibItem": "Παρακαλώ επιλέξτε τουλάχιστον ένα αντικείμενο βιβλιοθήκης για να ξεκινήσετε", "republishWarning": "Σημείωση: μερικά από τα επιλεγμένα αντικέιμενα έχουν ήδη επισημανθεί ως δημοσιευμένα/υποβεβλημένα. Θα πρέπει να υποβάλετε αντικείμενα εκ νέου μόνο για να ενημερώσετε μία ήδη υπάρχουσα βιβλιοθήκη ή υποβολή." }, "publishSuccessDialog": { "title": "Η βιβλιοθήκη υποβλήθηκε", - "content": "Ευχαριστούμε {{authorName}}. Η βιβλιοθήκη σας έχει υποβληθεί για αξιολόγηση. Μπορείτε να παρακολουθείτε τη διαδικασία", - "link": "εδώ" + "content": "Ευχαριστούμε {{authorName}}. Η βιβλιοθήκη σας έχει υποβληθεί για αξιολόγηση. Μπορείτε να παρακολουθείτε τη διαδικασίαεδώ" }, "confirmDialog": { "resetLibrary": "Καθαρισμός βιβλιοθήκης", diff --git a/src/locales/en.json b/src/locales/en.json index 187f8c24e..acf829bc1 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -209,19 +209,10 @@ "collabSaveFailed": "Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.", "collabSaveFailed_sizeExceeded": "Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.", "brave_measure_text_error": { - "start": "Looks like you are using Brave browser with the", - "aggressive_block_fingerprint": "Aggressively Block Fingerprinting", - "setting_enabled": "setting enabled", - "break": "This could result in breaking the", - "text_elements": "Text Elements", - "in_your_drawings": "in your drawings", - "strongly_recommend": "We strongly recommend disabling this setting. You can follow", - "steps": "these steps", - "how": "on how to do so", - "disable_setting": " If disabling this setting doesn't fix the display of text elements, please open an", - "issue": "issue", - "write": "on our GitHub, or write us on", - "discord": "Discord" + "line1": "Looks like you are using Brave browser with the Aggressively Block Fingerprinting setting enabled.", + "line2": "This could result in breaking the Text Elements in your drawings.", + "line3": "We strongly recommend disabling this setting. You can follow these steps on how to do so.", + "line4": "If disabling this setting doesn't fix the display of text elements, please open an issue on our GitHub, or write us on Discord" } }, "toolBar": { @@ -274,16 +265,11 @@ "canvasTooBigTip": "Tip: try moving the farthest elements a bit closer together." }, "errorSplash": { - "headingMain_pre": "Encountered an error. Try ", - "headingMain_button": "reloading the page.", - "clearCanvasMessage": "If reloading doesn't work, try ", - "clearCanvasMessage_button": "clearing the canvas.", + "headingMain": "Encountered an error. Try .", + "clearCanvasMessage": "If reloading doesn't work, try .", "clearCanvasCaveat": " This will result in loss of work ", - "trackedToSentry_pre": "The error with identifier ", - "trackedToSentry_post": " was tracked on our system.", - "openIssueMessage_pre": "We were very cautious not to include your scene information on the error. If your scene is not private, please consider following up on our ", - "openIssueMessage_button": "bug tracker.", - "openIssueMessage_post": " Please include information below by copying and pasting into the GitHub issue.", + "trackedToSentry": "The error with identifier {{eventId}} was tracked on our system.", + "openIssueMessage": "We were very cautious not to include your scene information on the error. If your scene is not private, please consider following up on our . Please include information below by copying and pasting into the GitHub issue.", "sceneContent": "Scene content:" }, "roomDialog": { @@ -363,29 +349,16 @@ "required": "Required", "website": "Enter a valid URL" }, - "noteDescription": { - "pre": "Submit your library to be included in the ", - "link": "public library repository", - "post": "for other people to use in their drawings." - }, - "noteGuidelines": { - "pre": "The library needs to be manually approved first. Please read the ", - "link": "guidelines", - "post": " before submitting. You will need a GitHub account to communicate and make changes if requested, but it is not strictly required." - }, - "noteLicense": { - "pre": "By submitting, you agree the library will be published under the ", - "link": "MIT License, ", - "post": "which in short means anyone can use them without restrictions." - }, + "noteDescription": "Submit your library to be included in the public library repository for other people to use in their drawings.", + "noteGuidelines": "The library needs to be manually approved first. Please read the guidelines before submitting. You will need a GitHub account to communicate and make changes if requested, but it is not strictly required.", + "noteLicense": "By submitting, you agree the library will be published under the MIT License, which in short means anyone can use them without restrictions.", "noteItems": "Each library item must have its own name so it's filterable. The following library items will be included:", "atleastOneLibItem": "Please select at least one library item to get started", "republishWarning": "Note: some of the selected items are marked as already published/submitted. You should only resubmit items when updating an existing library or submission." }, "publishSuccessDialog": { "title": "Library submitted", - "content": "Thank you {{authorName}}. Your library has been submitted for review. You can track the status", - "link": "here" + "content": "Thank you {{authorName}}. Your library has been submitted for review. You can track the status here" }, "confirmDialog": { "resetLibrary": "Reset library", diff --git a/src/locales/es-ES.json b/src/locales/es-ES.json index 67a110293..594efb663 100644 --- a/src/locales/es-ES.json +++ b/src/locales/es-ES.json @@ -54,6 +54,7 @@ "veryLarge": "Muy grande", "solid": "Sólido", "hachure": "Folleto", + "zigzag": "Zigzag", "crossHatch": "Rayado transversal", "thin": "Fino", "bold": "Grueso", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "ajuste activado", - "break": "Esto podría resultar en romper los", - "text_elements": "Elementos de texto", - "in_your_drawings": "en tus dibujos", - "strongly_recommend": "Recomendamos desactivar esta configuración. Puedes seguir", - "steps": "estos pasos", - "how": "sobre cómo hacerlo", - "disable_setting": " Si deshabilitar esta opción no arregla la visualización de elementos de texto, por favor abre un", - "issue": "issue", - "write": "en GitHub, o escríbenos en", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Sugerencia: intenta acercar un poco más los elementos más lejanos." }, "errorSplash": { - "headingMain_pre": "Se encontró un error. Intente ", - "headingMain_button": "recargando la página.", - "clearCanvasMessage": "Si la recarga no funciona, intente ", - "clearCanvasMessage_button": "limpiando el lienzo.", + "headingMain": "Se encontró un error. Intente ", + "clearCanvasMessage": "Si la recarga no funciona, intente ", "clearCanvasCaveat": " Esto provocará la pérdida de su trabajo ", - "trackedToSentry_pre": "El error con el identificador ", - "trackedToSentry_post": " fue rastreado en nuestro sistema.", - "openIssueMessage_pre": "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 ", - "openIssueMessage_button": "rastreador de errores.", - "openIssueMessage_post": " Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.", + "trackedToSentry": "El error con el identificador {{eventId}} fue rastreado en nuestro sistema.", + "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 Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.", "sceneContent": "Contenido de la escena:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "doble clic", "drag": "arrastrar", "editor": "Editor", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Editar puntos de línea/flecha", + "editText": "Editar texto / añadir etiqueta", "github": "¿Ha encontrado un problema? Envíelo", "howto": "Siga nuestras guías", "or": "o", @@ -361,29 +348,16 @@ "required": "Requerido", "website": "Introduce una URL válida" }, - "noteDescription": { - "pre": "Envía tu biblioteca para ser incluida en el ", - "link": "repositorio de librería pública", - "post": "para que otras personas utilicen en sus dibujos." - }, - "noteGuidelines": { - "pre": "La biblioteca debe ser aprobada manualmente primero. Por favor, lea la ", - "link": "pautas", - "post": " antes de enviar. Necesitará una cuenta de GitHub para comunicarse y hacer cambios si se solicita, pero no es estrictamente necesario." - }, - "noteLicense": { - "pre": "Al enviar, usted acepta que la biblioteca se publicará bajo el ", - "link": "Licencia MIT ", - "post": "que en breve significa que cualquiera puede utilizarlos sin restricciones." - }, + "noteDescription": "Envía tu biblioteca para ser incluida en el repositorio de librería públicapara que otras personas utilicen en sus dibujos.", + "noteGuidelines": "La biblioteca debe ser aprobada manualmente primero. Por favor, lea la pautas antes de enviar. Necesitará una cuenta de GitHub para comunicarse y hacer cambios si se solicita, pero no es estrictamente necesario.", + "noteLicense": "Al enviar, usted acepta que la biblioteca se publicará bajo el Licencia MIT que en breve significa que cualquiera puede utilizarlos sin restricciones.", "noteItems": "Cada elemento de la biblioteca debe tener su propio nombre para que sea filtrable. Los siguientes elementos de la biblioteca serán incluidos:", "atleastOneLibItem": "Por favor, seleccione al menos un elemento de la biblioteca para empezar", "republishWarning": "Nota: algunos de los elementos seleccionados están marcados como ya publicados/enviados. Sólo debería volver a enviar elementos cuando se actualice una biblioteca o envío." }, "publishSuccessDialog": { "title": "Biblioteca enviada", - "content": "Gracias {{authorName}}. Su biblioteca ha sido enviada para ser revisada. Puede seguir el estado", - "link": "aquí" + "content": "Gracias {{authorName}}. Su biblioteca ha sido enviada para ser revisada. Puede seguir el estadoaquí" }, "confirmDialog": { "resetLibrary": "Reiniciar biblioteca", diff --git a/src/locales/eu-ES.json b/src/locales/eu-ES.json index 1aec330cb..a3fd66cf0 100644 --- a/src/locales/eu-ES.json +++ b/src/locales/eu-ES.json @@ -54,6 +54,7 @@ "veryLarge": "Oso handia", "solid": "Solidoa", "hachure": "Itzalduna", + "zigzag": "", "crossHatch": "Marraduna", "thin": "Mehea", "bold": "Lodia", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "Brave nabigatzailea erabiltzen ari zarela dirudi", - "aggressive_block_fingerprint": "Aggressively Block Fingerprinting", - "setting_enabled": "ezarpena gaituta", - "break": "Honek honen haustea eragin dezake", - "text_elements": "Testu-elementuak", - "in_your_drawings": "zure marrazkietan", - "strongly_recommend": "Ezarpen hau desgaitzea gomendatzen dugu. Jarrai dezakezu", - "steps": "urrats hauek", - "how": "jakiteko nola egin", - "disable_setting": " Ezarpen hau desgaitzeak testu-elementuen bistaratzea konpontzen ez badu, ireki", - "issue": "eskaera (issue) bat", - "write": "gure Github-en edo idatz iezaguzu", - "discord": "Discord-en" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Aholkua: saiatu urrunen dauden elementuak pixka bat hurbiltzen." }, "errorSplash": { - "headingMain_pre": "Errore bat aurkitu da. Saiatu ", - "headingMain_button": "orria birkargatzen.", - "clearCanvasMessage": "Birkargatzea ez bada burutzen, saiatu ", - "clearCanvasMessage_button": "oihala garbitzen.", + "headingMain": "Errore bat aurkitu da. Saiatu ", + "clearCanvasMessage": "Birkargatzea ez bada burutzen, saiatu ", "clearCanvasCaveat": " Honen ondorioz lana galduko da ", - "trackedToSentry_pre": "Identifikatzailearen errorea ", - "trackedToSentry_post": " gure sistemak behatu du.", - "openIssueMessage_pre": "Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure ", - "openIssueMessage_button": "erroreen jarraipena egitea.", - "openIssueMessage_post": " Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.", + "trackedToSentry": "Identifikatzailearen errorea {{eventId}} gure sistemak behatu du.", + "openIssueMessage": "Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.", "sceneContent": "Eszenaren edukia:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Beharrezkoa", "website": "Sartu baliozko URL bat" }, - "noteDescription": { - "pre": "Bidali zure liburutegira sartu ahal izateko ", - "link": "zure liburutegiko biltegian", - "post": "beste jendeak bere marrazkietan erabili ahal izateko." - }, - "noteGuidelines": { - "pre": "Liburutegia eskuz onartu behar da. Irakurri ", - "link": "gidalerroak", - "post": " bidali aurretik. GitHub kontu bat edukitzea komeni da komunikatzeko eta aldaketak egin ahal izateko, baina ez da guztiz beharrezkoa." - }, - "noteLicense": { - "pre": "Bidaltzen baduzu, onartzen duzu liburutegia ", - "link": "MIT lizentziarekin argitaratuko dela, ", - "post": "zeinak, laburbilduz, esan nahi du edozeinek erabiltzen ahal duela murrizketarik gabe." - }, + "noteDescription": "Bidali zure liburutegira sartu ahal izateko zure liburutegiko biltegianbeste jendeak bere marrazkietan erabili ahal izateko.", + "noteGuidelines": "Liburutegia eskuz onartu behar da. Irakurri gidalerroak bidali aurretik. GitHub kontu bat edukitzea komeni da komunikatzeko eta aldaketak egin ahal izateko, baina ez da guztiz beharrezkoa.", + "noteLicense": "Bidaltzen baduzu, onartzen duzu liburutegia MIT lizentziarekin argitaratuko dela, zeinak, laburbilduz, esan nahi du edozeinek erabiltzen ahal duela murrizketarik gabe.", "noteItems": "Liburutegiko elementu bakoitzak bere izena eduki behar du iragazi ahal izateko. Liburutegiko hurrengo elementuak barne daude:", "atleastOneLibItem": "Hautatu gutxienez liburutegiko elementu bat gutxienez hasi ahal izateko", "republishWarning": "Oharra: hautatutako elementu batzuk dagoeneko argitaratuta/bidalita bezala markatuta daude. Elementuak berriro bidali behar dituzu lehendik dagoen liburutegi edo bidalketa eguneratzen duzunean." }, "publishSuccessDialog": { "title": "Liburutegia bidali da", - "content": "Eskerrik asko {{authorName}}. Zure liburutegia bidali da berrikustera. Jarraitu dezakezu haren egoera", - "link": "hemen" + "content": "Eskerrik asko {{authorName}}. Zure liburutegia bidali da berrikustera. Jarraitu dezakezu haren egoerahemen" }, "confirmDialog": { "resetLibrary": "Leheneratu liburutegia", diff --git a/src/locales/fa-IR.json b/src/locales/fa-IR.json index 44cf7ae00..cf793845d 100644 --- a/src/locales/fa-IR.json +++ b/src/locales/fa-IR.json @@ -1,7 +1,7 @@ { "labels": { "paste": "جای گذاری", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "جای‌گذاری به عنوان متن ساده", "pasteCharts": "قراردادن نمودارها", "selectAll": "انتخاب همه", "multiSelect": "یک ایتم به انتخاب شده ها اضافه کنید.", @@ -54,6 +54,7 @@ "veryLarge": "بسیار بزرگ", "solid": "توپر", "hachure": "هاشور", + "zigzag": "زیگزاگ", "crossHatch": "هاشور متقاطع", "thin": "نازک", "bold": "ضخیم", @@ -110,7 +111,7 @@ "increaseFontSize": "افزایش دادن اندازه فونت", "unbindText": "بازکردن نوشته", "bindText": "بستن نوشته", - "createContainerFromText": "", + "createContainerFromText": "متن را در یک جایگاه بپیچید", "link": { "edit": "ویرایش لینک", "create": "ایجاد پیوند", @@ -194,7 +195,7 @@ "resetLibrary": "ین کار کل صفحه را پاک میکند. آیا مطمئنید?", "removeItemsFromsLibrary": "حذف {{count}} آیتم(ها) از کتابخانه?", "invalidEncryptionKey": "کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.", - "collabOfflineWarning": "" + "collabOfflineWarning": "اتصال به اینترنت در دسترس نیست.\nتغییرات شما ذخیره نمی شود!" }, "errors": { "unsupportedFileType": "نوع فایل پشتیبانی نشده.", @@ -204,22 +205,13 @@ "invalidSVGString": "SVG نادرست.", "cannotResolveCollabServer": "به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.", "importLibraryError": "داده‌ها بارگذاری نشدند", - "collabSaveFailed": "", - "collabSaveFailed_sizeExceeded": "", + "collabSaveFailed": "در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.", + "collabSaveFailed_sizeExceeded": "در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "به نظر می‌رسد از مرورگر Brave با تنظیم مسدود کردن شدید اثرانگشت استفاده می‌کنید.", + "line2": "این می تواند منجر به شکستن عناصر متن در نقاشی های شما شود.", + "line3": "اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار می‌توانید این مراحل را دنبال کنید.", + "line4": "اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک مشکل را در GitHub ما باز کنید یا برای ما در Discord بنویسید." } }, "toolBar": { @@ -237,7 +229,7 @@ "penMode": "حالت قلم - جلوگیری از تماس", "link": "افزودن/به‌روزرسانی پیوند برای شکل انتخابی", "eraser": "پاک کن", - "hand": "" + "hand": "دست (ابزار پانینگ)" }, "headings": { "canvasActions": "عملیات روی بوم", @@ -245,7 +237,7 @@ "shapes": "شکل‌ها" }, "hints": { - "canvasPanning": "", + "canvasPanning": "برای حرکت دادن بوم، چرخ ماوس یا فاصله را در حین کشیدن نگه دارید یا از ابزار دستی استفاده کنید", "linearElement": "برای چند نقطه کلیک و برای یک خط بکشید", "freeDraw": "کلیک کنید و بکشید و وقتی کار تمام شد رها کنید", "text": "نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید", @@ -256,7 +248,7 @@ "resize": "می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید", "resizeImage": "با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،\nبرای تغییر اندازه از مرکز، ALT را نگه دارید", "rotate": "با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید", - "lineEditor_info": "", + "lineEditor_info": "CtrlOrCmd را نگه دارید و دوبار کلیک کنید یا CtrlOrCmd + Enter را فشار دهید تا نقاط را ویرایش کنید.", "lineEditor_pointSelected": "برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید", "lineEditor_nothingSelected": "یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،\nیا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید", "placeImage": "برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود", @@ -264,7 +256,7 @@ "bindTextToElement": "برای افزودن اینتر را بزنید", "deepBoxSelect": "CtrlOrCmd را برای انتخاب عمیق و جلوگیری از کشیدن نگه دارید", "eraserRevert": "Alt را نگه دارید تا عناصر علامت گذاری شده برای حذف برگردند", - "firefox_clipboard_write": "" + "firefox_clipboard_write": "احتمالاً می‌توان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه \"about:config\" دیدن کنید." }, "canvasError": { "cannotShowPreview": "پیش نمایش نشان داده نمی شود", @@ -272,16 +264,11 @@ "canvasTooBigTip": "نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید." }, "errorSplash": { - "headingMain_pre": "با مشکلی مواجه شدیم. این را امتحان کنید ", - "headingMain_button": "در حال بازنشانی صفحه.", + "headingMain": "", "clearCanvasMessage": "اگر بازنشانی صفحه مشکل را حل نکرد این را امتحان کنید ", - "clearCanvasMessage_button": "در حال تمیز کردن بوم", "clearCanvasCaveat": " این باعث میشود کارهای شما ذخیره نشود ", - "trackedToSentry_pre": "خطا در شناسه ", - "trackedToSentry_post": " در سیستم ما رهگیری شد.", - "openIssueMessage_pre": "ما خیلی محتاط هستیم که اطلاعات شما را در خطا قرار ندهیم. با این حال اگر اطلاعات شما خصوصی نیست لطفا پیگیری کنید ", - "openIssueMessage_button": "پیگیری اشکالات.", - "openIssueMessage_post": " لطفا اطلاعات زیر را با کپی کردن در صفحه مشکلات GitHub بگذارید.", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "محتوای صحنه:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "دابل کلیک", "drag": "کشیدن", "editor": "ویرایشگر", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "نقاط خط/پیکان را ویرایش کنید", + "editText": "ویرایش متن / افزودن برچسب", "github": "اشکالی می بینید؟ گزارش دهید", "howto": "راهنمای ما را دنبال کنید", "or": "یا", @@ -334,8 +321,8 @@ "zoomToFit": "بزرگنمایی برای دیدن تمام آیتم ها", "zoomToSelection": "بزرگنمایی قسمت انتخاب شده", "toggleElementLock": "قفل/بازکردن انتخاب شده ها", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "حرکت صفحه به بالا/پایین", + "movePageLeftRight": "حرکت صفحه به چپ/راست" }, "clearCanvasDialog": { "title": "پاک کردن بوم" @@ -361,29 +348,16 @@ "required": "لازم", "website": "وارد کردن آدرس درست" }, - "noteDescription": { - "pre": "کتابخانه خود را ارسال کنید تا در آن گنجانده شود ", - "link": "مخزن کتابخانه عمومی", - "post": "تا افراد دیگر در نقاشی های خود از آن استفاده کنند." - }, - "noteGuidelines": { - "pre": "کتابخانه باید ابتدا به صورت دستی تایید شود. لطفاً بخوانید ", - "link": "دستورالعمل‌ها", - "post": " قبل از ارسال برای برقراری ارتباط و ایجاد تغییرات در صورت درخواست، به یک حساب GitHub نیاز دارید، اما به شدت الزامی نیست." - }, - "noteLicense": { - "pre": "با ارسال، موافقت می کنید که کتابخانه تحت عنوان منتشر شود ", - "link": "پروانهٔ MIT ", - "post": "که به طور خلاصه به این معنی است که هر کسی می تواند بدون محدودیت از آنها استفاده کند." - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:", "atleastOneLibItem": "لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید", "republishWarning": "توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام به‌روزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید." }, "publishSuccessDialog": { "title": "کتابخانه ارسال شد", - "content": "تشکر از شما {{authorName}}. کتابخانه شما برای بررسی ارسال شده است. می توانید وضعیت را پیگیری کنید", - "link": "اینجا" + "content": "تشکر از شما {{authorName}}. کتابخانه شما برای بررسی ارسال شده است. می توانید وضعیت را پیگیری کنید" }, "confirmDialog": { "resetLibrary": "تنظیم مجدد کتابخانه", @@ -417,7 +391,7 @@ "fileSavedToFilename": "ذخیره در {filename}", "canvas": "بوم", "selection": "انتخاب", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،\nیا در یک ویرایشگر متن موجود جایگذاری کنید" }, "colors": { "ffffff": "سفید", @@ -468,15 +442,15 @@ }, "welcomeScreen": { "app": { - "center_heading": "", - "center_heading_plus": "", - "menuHint": "" + "center_heading": "تمام داده های شما به صورت محلی در مرورگر شما ذخیره می شود.", + "center_heading_plus": "آیا می‌خواهید به جای آن به Excalidraw+ بروید؟", + "menuHint": "خروجی، ترجیحات، زبان ها، ..." }, "defaults": { - "menuHint": "", - "center_heading": "", - "toolbarHint": "", - "helpHint": "" + "menuHint": "خروجی، ترجیحات، وبیشتر ...", + "center_heading": "نمودارها .ساخته شده. ساده.", + "toolbarHint": "ابزاری را انتخاب کنید و نقاشی را شروع کنید!", + "helpHint": "میانبرها و راهنما" } } } diff --git a/src/locales/fi-FI.json b/src/locales/fi-FI.json index e0701f2d2..399876265 100644 --- a/src/locales/fi-FI.json +++ b/src/locales/fi-FI.json @@ -54,6 +54,7 @@ "veryLarge": "Erittäin suuri", "solid": "Yhtenäinen", "hachure": "Vinoviivoitus", + "zigzag": "", "crossHatch": "Ristiviivoitus", "thin": "Ohut", "bold": "Lihavoitu", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Vinkki: yritä siirtää kaukaisimpia elementtejä hieman lähemmäs toisiaan." }, "errorSplash": { - "headingMain_pre": "Tapahtui virhe. Yritä ", - "headingMain_button": "sivun lataamista uudelleen.", - "clearCanvasMessage": "Mikäli sivun lataaminen uudelleen ei auta, yritä ", - "clearCanvasMessage_button": "tyhjentää piirtoalue.", + "headingMain": "Tapahtui virhe. Yritä ", + "clearCanvasMessage": "Mikäli sivun lataaminen uudelleen ei auta, yritä ", "clearCanvasCaveat": " Tämä johtaa työn menetykseen ", - "trackedToSentry_pre": "Virhe tunnisteella ", - "trackedToSentry_post": " tallennettiin järjestelmäämme.", - "openIssueMessage_pre": "Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille ", - "openIssueMessage_button": "virheenseurantajärjestelmässämme.", - "openIssueMessage_post": " Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.", + "trackedToSentry": "Virhe tunnisteella {{eventId}} tallennettiin järjestelmäämme.", + "openIssueMessage": "Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.", "sceneContent": "Piirroksen tiedot:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Pakollinen", "website": "Syötä oikeamuotoinen URL-osoite" }, - "noteDescription": { - "pre": "Lähetä kirjastosi, jotta se voidaan sisällyttää ", - "link": "julkisessa kirjastolistauksessa", - "post": "muiden käyttöön omissa piirrustuksissaan." - }, - "noteGuidelines": { - "pre": "Kirjasto on ensin hyväksyttävä manuaalisesti. Ole hyvä ja lue ", - "link": "ohjeet", - "post": " ennen lähettämistä. Tarvitset GitHub-tilin, jotta voit viestiä ja tehdä muutoksia pyydettäessä, mutta se ei ole ehdottoman välttämätöntä." - }, - "noteLicense": { - "pre": "Lähettämällä hyväksyt että kirjasto julkaistaan ", - "link": "MIT-lisenssin ", - "post": "alla, mikä lyhyesti antaa muiden käyttää sitä ilman rajoituksia." - }, + "noteDescription": "Lähetä kirjastosi, jotta se voidaan sisällyttää julkisessa kirjastolistauksessamuiden käyttöön omissa piirrustuksissaan.", + "noteGuidelines": "Kirjasto on ensin hyväksyttävä manuaalisesti. Ole hyvä ja lue ohjeet ennen lähettämistä. Tarvitset GitHub-tilin, jotta voit viestiä ja tehdä muutoksia pyydettäessä, mutta se ei ole ehdottoman välttämätöntä.", + "noteLicense": "Lähettämällä hyväksyt että kirjasto julkaistaan MIT-lisenssin alla, mikä lyhyesti antaa muiden käyttää sitä ilman rajoituksia.", "noteItems": "Jokaisella kirjaston kohteella on oltava oma nimensä suodatusta varten. Seuraavat kirjaston kohteet sisältyvät:", "atleastOneLibItem": "Valitse vähintään yksi kirjaston kohde aloittaaksesi", "republishWarning": "Huom! Osa valituista kohteista on merkitty jo julkaistu/lähetetyiksi. Lähetä kohteita uudelleen vain päivitettäessä olemassa olevaa kirjastoa tai ehdotusta." }, "publishSuccessDialog": { "title": "Kirjasto lähetetty", - "content": "Kiitos {{authorName}}. Kirjastosi on lähetetty tarkistettavaksi. Voit seurata sen tilaa", - "link": "täällä" + "content": "Kiitos {{authorName}}. Kirjastosi on lähetetty tarkistettavaksi. Voit seurata sen tilaatäällä" }, "confirmDialog": { "resetLibrary": "Tyhjennä kirjasto", diff --git a/src/locales/fr-FR.json b/src/locales/fr-FR.json index 49135c3b6..b97f2c285 100644 --- a/src/locales/fr-FR.json +++ b/src/locales/fr-FR.json @@ -54,6 +54,7 @@ "veryLarge": "Très grande", "solid": "Solide", "hachure": "Hachures", + "zigzag": "", "crossHatch": "Hachures croisées", "thin": "Fine", "bold": "Épaisse", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "Il semble que vous utilisiez le navigateur Brave avec le", - "aggressive_block_fingerprint": "blocage d'empreinte agressif", - "setting_enabled": "activé", - "break": "Ceci pourrait avoir pour conséquence de « casser » les", - "text_elements": "éléments texte", - "in_your_drawings": "dans vos dessins", - "strongly_recommend": "Nous recommandons fortement de désactiver ce paramètre. Vous pouvez suivre", - "steps": "ces étapes", - "how": "sur la manière de procéder", - "disable_setting": " Si la désactivation de ce paramètre ne résout pas l'affichage des éléments texte, veuillez ouvrir un", - "issue": "ticket", - "write": "sur notre GitHub, ou nous écrire sur", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Astuce : essayez de rapprocher un peu les éléments les plus éloignés." }, "errorSplash": { - "headingMain_pre": "Une erreur est survenue. Essayez ", - "headingMain_button": "de recharger la page.", - "clearCanvasMessage": "Si le rechargement ne résout pas l'erreur, essayez ", - "clearCanvasMessage_button": "effacement du canevas.", + "headingMain": "Une erreur est survenue. Essayez ", + "clearCanvasMessage": "Si le rechargement ne résout pas l'erreur, essayez ", "clearCanvasCaveat": " Cela entraînera une perte du travail ", - "trackedToSentry_pre": "L'erreur avec l'identifiant ", - "trackedToSentry_post": " a été enregistrée dans notre système.", - "openIssueMessage_pre": "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 ", - "openIssueMessage_button": "outil de suivi des bugs.", - "openIssueMessage_post": " Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.", + "trackedToSentry": "L'erreur avec l'identifiant {{eventId}} a été enregistrée dans notre système.", + "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 Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.", "sceneContent": "Contenu de la scène :" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "double-clic", "drag": "glisser", "editor": "Éditeur", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Modifier les points de ligne/flèche", + "editText": "Modifier le texte / ajouter un libellé", "github": "Problème trouvé ? Soumettre", "howto": "Suivez nos guides", "or": "ou", @@ -361,29 +348,16 @@ "required": "Requis", "website": "Entrer une URL valide" }, - "noteDescription": { - "pre": "Soumets ta bibliothèque pour l'inclure au ", - "link": "dépôt de bibliothèque publique", - "post": "pour permettre son utilisation par autrui dans leurs dessins." - }, - "noteGuidelines": { - "pre": "La bibliothèque doit d'abord être approuvée manuellement. Veuillez lire les ", - "link": "lignes directrices", - "post": " avant de la soumettre. Vous aurez besoin d'un compte GitHub pour communiquer et apporter des modifications si demandé, mais ce n'est pas obligatoire." - }, - "noteLicense": { - "pre": "En soumettant, vous acceptez que la bibliothèque soit publiée sous la ", - "link": "Licence MIT, ", - "post": "ce qui en gros signifie que tout le monde peut l'utiliser sans restrictions." - }, + "noteDescription": "Soumets ta bibliothèque pour l'inclure au dépôt de bibliothèque publiquepour permettre son utilisation par autrui dans leurs dessins.", + "noteGuidelines": "La bibliothèque doit d'abord être approuvée manuellement. Veuillez lire les lignes directrices avant de la soumettre. Vous aurez besoin d'un compte GitHub pour communiquer et apporter des modifications si demandé, mais ce n'est pas obligatoire.", + "noteLicense": "En soumettant, vous acceptez que la bibliothèque soit publiée sous la Licence MIT, ce qui en gros signifie que tout le monde peut l'utiliser sans restrictions.", "noteItems": "Chaque élément de la bibliothèque doit avoir son propre nom afin qu'il soit filtrable. Les éléments de bibliothèque suivants seront inclus :", "atleastOneLibItem": "Veuillez sélectionner au moins un élément de bibliothèque pour commencer", "republishWarning": "Remarque : certains des éléments sélectionnés sont marqués comme étant déjà publiés/soumis. Vous devez uniquement resoumettre des éléments lors de la mise à jour d'une bibliothèque ou d'une soumission existante." }, "publishSuccessDialog": { "title": "Bibliothèque soumise", - "content": "Merci {{authorName}}. Votre bibliothèque a été soumise pour examen. Vous pouvez suivre le statut", - "link": "ici" + "content": "Merci {{authorName}}. Votre bibliothèque a été soumise pour examen. Vous pouvez suivre le statutici" }, "confirmDialog": { "resetLibrary": "Réinitialiser la bibliothèque", diff --git a/src/locales/gl-ES.json b/src/locales/gl-ES.json index 5571f3f15..602ddac17 100644 --- a/src/locales/gl-ES.json +++ b/src/locales/gl-ES.json @@ -54,6 +54,7 @@ "veryLarge": "Moi grande", "solid": "Sólido", "hachure": "Folleto", + "zigzag": "", "crossHatch": "Raiado transversal", "thin": "Estreito", "bold": "Groso", @@ -207,19 +208,10 @@ "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.", "brave_measure_text_error": { - "start": "Semella que estás usando o navegador Brave coa opción", - "aggressive_block_fingerprint": "Aggressively Block Fingerprinting", - "setting_enabled": "activada", - "break": "Isto podería provocar unha ruptura dos", - "text_elements": "Elementos de Texto", - "in_your_drawings": "nos seus debuxos", - "strongly_recommend": "Recomendámoslle encarecidamente que desactive esa opción. Pode seguir", - "steps": "estes pasos", - "how": "sobre como facelo", - "disable_setting": " Se ao desactivar esta opción non se arranxa o problema ao mostrar os elementos de texto, por favor abra unha", - "issue": "issue", - "write": "no noso GitHub, ou escríbenos ao", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Consello: Probe a acercar un pouco os elementos máis afastados." }, "errorSplash": { - "headingMain_pre": "Atopouse un erro. Probe ", - "headingMain_button": "recargando a páxina.", - "clearCanvasMessage": "Se recargar non funcionou, probe ", - "clearCanvasMessage_button": "limpando o lenzo.", + "headingMain": "Atopouse un erro. Probe ", + "clearCanvasMessage": "Se recargar non funcionou, probe ", "clearCanvasCaveat": " Isto resultará nunha perda do seu traballo ", - "trackedToSentry_pre": "O erro con identificador ", - "trackedToSentry_post": " foi rastrexado no noso sistema.", - "openIssueMessage_pre": "Fomos moi cautelosos de non incluír a información da súa escena no erro. Se a súa escena non é privada, por favor, considere o seguimento do noso ", - "openIssueMessage_button": "rastrexador de erros.", - "openIssueMessage_post": " Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.", + "trackedToSentry": "O erro con identificador {{eventId}} foi rastrexado no noso sistema.", + "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 Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.", "sceneContent": "Contido da escena:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Obrigatorio", "website": "Introduza unha URL válida" }, - "noteDescription": { - "pre": "Envíe a súa biblioteca para que sexa incluída no ", - "link": "repositorio público de bibliotecas", - "post": "para que outra xente a poida usar nos seus debuxos." - }, - "noteGuidelines": { - "pre": "A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as ", - "link": "normas", - "post": " antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario." - }, - "noteLicense": { - "pre": "Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a ", - "link": "Licenza MIT, ", - "post": "o cal significa que, en resumo, calquera pode usalo sen restricións." - }, + "noteDescription": "Envíe a súa biblioteca para que sexa incluída no repositorio público de bibliotecaspara que outra xente a poida usar nos seus debuxos.", + "noteGuidelines": "A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as normas antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario.", + "noteLicense": "Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a Licenza MIT, o cal significa que, en resumo, calquera pode usalo sen restricións.", "noteItems": "Cada elemento da biblioteca debe ter o seu nome propio para que se poida filtrar. Os seguintes elementos da biblioteca serán incluídos:", "atleastOneLibItem": "Por favor seleccione polo menos un elemento da biblioteca para comezar", "republishWarning": "Nota: algúns dos elementos seleccionados están marcados como xa publicados/enviados. Só deberías reenviar elementos cando se actualice unha biblioteca ou envío." }, "publishSuccessDialog": { "title": "Biblioteca enviada", - "content": "Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estado", - "link": "aquí" + "content": "Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estadoaquí" }, "confirmDialog": { "resetLibrary": "Restablecer biblioteca", diff --git a/src/locales/he-IL.json b/src/locales/he-IL.json index 810fc1776..567a96825 100644 --- a/src/locales/he-IL.json +++ b/src/locales/he-IL.json @@ -54,6 +54,7 @@ "veryLarge": "גדול מאוד", "solid": "מוצק", "hachure": "קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה", + "zigzag": "", "crossHatch": "קווים מוצלבים שתי וערב", "thin": "דק", "bold": "מודגש", @@ -207,19 +208,10 @@ "collabSaveFailed": "לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.", "collabSaveFailed_sizeExceeded": "לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.", "brave_measure_text_error": { - "start": "נראה שאתה משתמש בדפדפן Brave עם ה-", - "aggressive_block_fingerprint": "חסימת Fingerprinting אגרסיבית", - "setting_enabled": "ההגדרה מופעלת", - "break": "זה יכול לגרום לבעיה ב-", - "text_elements": "רכיבי טקסט", - "in_your_drawings": "בציורים שלך", - "strongly_recommend": "אנו ממליצים בחום לנטרל את ההגדרה הזו. אתה יכול לעקוב", - "steps": "הצעדים הבאים", - "how": "כיצד לעשות את זה", - "disable_setting": " אם נטרול ההגדרה לא מתקן את תצוגת רכיבי הטקסט, אנא פתח", - "issue": "בעיה", - "write": "ב- GitHub שלנו, או כתוב לנו ב-", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני." }, "errorSplash": { - "headingMain_pre": "אירעה שגיאה. נסה ", - "headingMain_button": "טוען את העמוד מחדש.", + "headingMain": "", "clearCanvasMessage": "אם טעינה מחדש לא עובדת, נסה ", - "clearCanvasMessage_button": "מנקה את הקנבאס.", "clearCanvasCaveat": " זה יגרום לאובדן העבודה ", - "trackedToSentry_pre": "השגיאה עם מזהה ", - "trackedToSentry_post": " נמצאה במערכת שלנו.", - "openIssueMessage_pre": "נזהרנו מאוד שלא לכלול מידע מהקנבאס שלך בשגיאה. אם המידע בקנבאס אינו אישי, שקול לבצע מעקב אחר הטיפול שלנו ", - "openIssueMessage_button": "מעקב באגים.", - "openIssueMessage_post": " בבקשה כלול את המידע מטה באמצעות העתקתה שלו, והדבקה שלו ב- GitHub Issue.", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "תוכן הקנבאס:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "נדרש", "website": "הזינו כתובת URL תקינה" }, - "noteDescription": { - "pre": "הגש את הספריה שלך להכללתה ב ", - "link": "מאגר הספריה הציבורית", - "post": "לשימושם של אנשים אחרים בציורים שלהם." - }, - "noteGuidelines": { - "pre": "הספריה צריכה לקבל אישור ידני קודם לכן. אנא קרא את ", - "link": "הנחיות", - "post": " לפני השליחה. אתה תצטרך לחשבון GitHub כדי לתקשר ולבצע שינויים אם תתבקש, אבל זה לא דרישה הכרחית." - }, - "noteLicense": { - "pre": "על ידי שליחה, אתה מסכים שהסיפריה תפורסם תחת ה- ", - "link": "רישיון MIT, ", - "post": "שאומר בקצרה, שכל אחד יכול לעשות בהם שימוש ללא מגבלות." - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:", "atleastOneLibItem": "אנא בחר לפחות פריט אחד מספריה כדי להתחיל", "republishWarning": "הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים." }, "publishSuccessDialog": { "title": "הספריה הוגשה", - "content": "תודה {{authorName}}. הספריה שלך נשלחה לבחינה. תוכל לעקוב אחרי סטטוס הפרסום", - "link": "כאן" + "content": "תודה {{authorName}}. הספריה שלך נשלחה לבחינה. תוכל לעקוב אחרי סטטוס הפרסום" }, "confirmDialog": { "resetLibrary": "איפוס ספריה", diff --git a/src/locales/hi-IN.json b/src/locales/hi-IN.json index 77d6dae2d..1c1978bbd 100644 --- a/src/locales/hi-IN.json +++ b/src/locales/hi-IN.json @@ -54,6 +54,7 @@ "veryLarge": "बहुत बड़ा", "solid": "दृढ़", "hachure": "हैशूर", + "zigzag": "तेढ़ी मेढ़ी", "crossHatch": "क्रॉस हैच", "thin": "पतला", "bold": "मोटा", @@ -207,19 +208,10 @@ "collabSaveFailed": "किसी कारण वश अंदरूनी डेटाबेस में सहेजा नहीं जा सका। यदि समस्या बनी रहती है, तो किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।", "collabSaveFailed_sizeExceeded": "लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।", "brave_measure_text_error": { - "start": "ऐसा लगता है कि आप ब्रेव ब्राउज़र का उपयोग कर रहे है, उसके साथ", - "aggressive_block_fingerprint": "उग्रतापूर्वक उंगलियों के निशान रोकने की", - "setting_enabled": "सेटिंग सक्रिय की गई है।", - "break": "इसके परिणाम स्वरूम टूट सकता है यह", - "text_elements": "मूल पाठ अवयव टूट सकते हैं", - "in_your_drawings": "आपके चित्र में उपस्थित", - "strongly_recommend": "हमारा शशक्त अनुरोध इस सेटिंग्स को अक्षम करने का है. आप", - "steps": "इन दिए हुए स्टेप्स को अनुकरीत करके देख सकते है कि", - "how": "ये कैसे करे", - "disable_setting": " यदि इन सेटिंग्स को निष्क्रिय करने पर भी, पाठ्य दिखना ठीक न हो तो", - "issue": "समस्या", - "write": "हमारे \"GitHub\" पर, अथवा", - "discord": "\"Discord\" पर लिख सकते हैं." + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "कैनवास बहुत बड़ा टिप" }, "errorSplash": { - "headingMain_pre": "एक त्रुटि का सामना करना पड़ा। प्रयत्न ", - "headingMain_button": "इस पृष्ठ को पुनः लोड करें", - "clearCanvasMessage": "यदि पुनः लोड करना काम नहीं करता है, तो प्रयास करें ", - "clearCanvasMessage_button": "कैनवास साफ करना।", + "headingMain": "एक त्रुटि का सामना करना पड़ा। प्रयत्न ", + "clearCanvasMessage": "यदि पुनः लोड करना काम नहीं करता है, तो प्रयास करें ", "clearCanvasCaveat": " इससे काम का नुकसान होगा ", - "trackedToSentry_pre": "पहचानकर्ता के साथ त्रुटि ", - "trackedToSentry_post": " हमारे सिस्टम पर नज़र रखी गई थी।", - "openIssueMessage_pre": "हम बहुत सतर्क थे कि त्रुटि पर आपकी दृश्य जानकारी शामिल न करें। यदि आपका दृश्य निजी नहीं है, तो कृपया हमारे बारे में विचार करें ", - "openIssueMessage_button": "बग ट्रैकर", - "openIssueMessage_post": " कृपया GitHub मुद्दे को कॉपी और पेस्ट करके नीचे दी गई जानकारी शामिल करें।", + "trackedToSentry": "पहचानकर्ता के साथ त्रुटि {{eventId}} हमारे सिस्टम पर नज़र रखी गई थी।", + "openIssueMessage": "हम बहुत सतर्क थे कि त्रुटि पर आपकी दृश्य जानकारी शामिल न करें। यदि आपका दृश्य निजी नहीं है, तो कृपया हमारे बारे में विचार करें कृपया GitHub मुद्दे को कॉपी और पेस्ट करके नीचे दी गई जानकारी शामिल करें।", "sceneContent": "दृश्य सामग्री:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "मान्य URL प्रविष्ट करें" }, - "noteDescription": { - "pre": "संग्रह सम्मिलित करने हेतु प्रस्तुत करें ", - "link": "सार्वजनिक संग्रहालय", - "post": "अन्य वक्तियों को उनके चित्रकारी में उपयोग के लिये" - }, - "noteGuidelines": { - "pre": "संग्रह को पहले स्वीकृति आवश्यक कृपया यह पढ़ें ", - "link": "दिशा-निर्देश", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "संग्रह सम्मिलित करने हेतु प्रस्तुत करें सार्वजनिक संग्रहालयअन्य वक्तियों को उनके चित्रकारी में उपयोग के लिये", + "noteGuidelines": "संग्रह को पहले स्वीकृति आवश्यक कृपया यह पढ़ें दिशा-निर्देश", + "noteLicense": "जमा करके, आप सहमत हैं कि संग्रहण को MIT लाइसेंस के तहत प्रकाशित किया जाएगा, जिसका संक्षिप्त अर्थ है कि कोई भी बिना किसी प्रतिबंध के उनका उपयोग कर सकता है।", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "टिप्पणी: कुछ चुने हुवे आइटम पहले ही प्रकाशित/प्रस्तुत किए जा चुके हैं। किसी प्रकाशित संग्रह को अद्यतन करते समय या पहले से प्रस्तुत आइटम को पुन्हा प्रस्तुत करते समय, आप बस उसे केवल अद्यतन करें ।" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "{{authorName}} धन्यवाद. आपका संग्रहण समीक्षा के लिए दर्ज हो चुका है. समीक्षा स्थिति यहाँजान सकते हैं." }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/hu-HU.json b/src/locales/hu-HU.json index d514520ed..a54dde9f6 100644 --- a/src/locales/hu-HU.json +++ b/src/locales/hu-HU.json @@ -54,6 +54,7 @@ "veryLarge": "Nagyon nagy", "solid": "Kitöltött", "hachure": "Vonalkázott", + "zigzag": "", "crossHatch": "Keresztcsíkozott", "thin": "Vékony", "bold": "Félkövér", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tipp: próbáld meg a legtávolabbi elemeket közelebb hozni egy máshoz." }, "errorSplash": { - "headingMain_pre": "Hiba történt. Próbáld ", - "headingMain_button": "újratölteni az oldalt.", - "clearCanvasMessage": "Ha az újratöltés nem működik, próbáld ", - "clearCanvasMessage_button": "letörölni a vászont.", + "headingMain": "Hiba történt. Próbáld ", + "clearCanvasMessage": "Ha az újratöltés nem működik, próbáld ", "clearCanvasCaveat": " Ezzel az eddigi munka elveszik ", - "trackedToSentry_pre": "A hibakód azonosítóval ", - "trackedToSentry_post": " nyomon van követve a rendszerünkben.", - "openIssueMessage_pre": "Vigyáztunk arra, hogy a jelenthez tartozó információ ne jelenjen meg a hibaüzenetben. Ha a jeleneted nem bizalmas, kérjük add hozzá a ", - "openIssueMessage_button": "hibakövető rendszerünkhöz.", - "openIssueMessage_post": " Kérjük, másolja be az alábbi információkat a GitHub problémába.", + "trackedToSentry": "A hibakód azonosítóval {{eventId}} nyomon van követve a rendszerünkben.", + "openIssueMessage": "Vigyáztunk arra, hogy a jelenthez tartozó információ ne jelenjen meg a hibaüzenetben. Ha a jeleneted nem bizalmas, kérjük add hozzá a Kérjük, másolja be az alábbi információkat a GitHub problémába.", "sceneContent": "Jelenet tartalma:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Kötelező", "website": "Adj meg egy érvényes URL-t" }, - "noteDescription": { - "pre": "Küld be könyvtáradat, hogy bekerüljön a ", - "link": "nyilvános könyvtár tárolóba", - "post": "hogy mások is felhasználhassák a rajzaikban." - }, - "noteGuidelines": { - "pre": "A könyvtárat először manuálisan kell jóváhagyni. Kérjük, olvassa el a ", - "link": "segédletet", - "post": " benyújtása előtt. Szüksége lesz egy GitHub-fiókra a kommunikációhoz és a módosításokhoz, ha kérik, de ez nem feltétlenül szükséges." - }, - "noteLicense": { - "pre": "A beküldéssel elfogadja, hogy a könyvtár a következő alatt kerül közzétételre ", - "link": "MIT Licensz ", - "post": "ami röviden azt jelenti, hogy bárki korlátozás nélkül használhatja őket." - }, + "noteDescription": "Küld be könyvtáradat, hogy bekerüljön a nyilvános könyvtár tárolóbahogy mások is felhasználhassák a rajzaikban.", + "noteGuidelines": "A könyvtárat először manuálisan kell jóváhagyni. Kérjük, olvassa el a segédletet benyújtása előtt. Szüksége lesz egy GitHub-fiókra a kommunikációhoz és a módosításokhoz, ha kérik, de ez nem feltétlenül szükséges.", + "noteLicense": "A beküldéssel elfogadja, hogy a könyvtár a következő alatt kerül közzétételre MIT Licensz ami röviden azt jelenti, hogy bárki korlátozás nélkül használhatja őket.", "noteItems": "Minden könyvtárelemnek saját nevével kell rendelkeznie, hogy szűrhető legyen. A következő könyvtári tételek kerülnek bele:", "atleastOneLibItem": "A kezdéshez válassz ki legalább egy könyvtári elemet", "republishWarning": "" }, "publishSuccessDialog": { "title": "A könyvtár beküldve", - "content": "Köszönjük {{authorName}}. Könyvtáradat elküldtük felülvizsgálatra. Nyomon követheted az állapotot", - "link": "itt" + "content": "Köszönjük {{authorName}}. Könyvtáradat elküldtük felülvizsgálatra. Nyomon követheted az állapototitt" }, "confirmDialog": { "resetLibrary": "Könyvtár alaphelyzetbe állítása", diff --git a/src/locales/id-ID.json b/src/locales/id-ID.json index 01b510fcd..bb83459dc 100644 --- a/src/locales/id-ID.json +++ b/src/locales/id-ID.json @@ -54,6 +54,7 @@ "veryLarge": "Sangat besar", "solid": "Padat", "hachure": "Garis-garis", + "zigzag": "", "crossHatch": "Asiran silang", "thin": "Lembut", "bold": "Tebal", @@ -207,19 +208,10 @@ "collabSaveFailed": "Tidak dapat menyimpan ke dalam basis data server. Jika masih berlanjut, Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.", "collabSaveFailed_sizeExceeded": "Tidak dapat menyimpan ke dalam basis data server, tampaknya ukuran kanvas terlalu besar. Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.", "brave_measure_text_error": { - "start": "Sepertinya kamu menggunakan browser Brave dengan", - "aggressive_block_fingerprint": "", - "setting_enabled": "pengaturan diaktifkan", - "break": "", - "text_elements": "Elemen Teks", - "in_your_drawings": "dalam gambar anda", - "strongly_recommend": "Kami sangat menyarankan untuk mematikan pengaturan ini. Kamu dapat mengikuti", - "steps": "langkah-langkah ini", - "how": "dalam bagaimana melakukan itu", - "disable_setting": " Jika pengaturan ini dimatikan tidak mengatasi masalah tampilan dari elemen teks, silahkan buka", - "issue": "isu", - "write": "di GitHub kami, atau tulis kami di", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tip: coba pindahkan elemen-terjauh lebih dekat bersama." }, "errorSplash": { - "headingMain_pre": "Mengalami sebuah kesalahan. Cobalah ", - "headingMain_button": "muat ulang halaman.", - "clearCanvasMessage": "Jika memuat ulang tidak bekerja, cobalah ", - "clearCanvasMessage_button": "bersihkan canvas.", + "headingMain": "Mengalami sebuah kesalahan. Cobalah ", + "clearCanvasMessage": "Jika memuat ulang tidak bekerja, cobalah ", "clearCanvasCaveat": " Ini akan menghasilkan hilangnya pekerjaan ", - "trackedToSentry_pre": "Kesalahan dengan pengidentifikasi ", - "trackedToSentry_post": " dilacak di sistem kami.", - "openIssueMessage_pre": "Kami sangat berhati-hati untuk tidak menyertakan informasi pemandangan Anda pada kesalahan. Jika pemandangan Anda tidak bersifat pribadi, mohon pertimbangkan menindak lanjut pada ", - "openIssueMessage_button": "pelacak bug.", - "openIssueMessage_post": " Mohon sertakan informasi dibawah ini dengan menyalin dan menempelkan di Github issue.", + "trackedToSentry": "Kesalahan dengan pengidentifikasi {{eventId}} dilacak di sistem kami.", + "openIssueMessage": "Kami sangat berhati-hati untuk tidak menyertakan informasi pemandangan Anda pada kesalahan. Jika pemandangan Anda tidak bersifat pribadi, mohon pertimbangkan menindak lanjut pada Mohon sertakan informasi dibawah ini dengan menyalin dan menempelkan di Github issue.", "sceneContent": "Pemandangan konten:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Dibutuhkan", "website": "Masukkan URL valid" }, - "noteDescription": { - "pre": "Kirimkan pustaka Anda untuk disertakan di ", - "link": "repositori pustaka publik", - "post": "untuk orang lain menggunakannya dalam gambar mereka." - }, - "noteGuidelines": { - "pre": "Pustaka butuh disetujui secara manual terlebih dahulu. Baca ", - "link": "pedoman", - "post": " sebelum mengirim. Anda butuh akun GitHub untuk berkomunikasi dan membuat perubahan jika dibutuhkan, tetapi tidak wajib dibutukan." - }, - "noteLicense": { - "pre": "Dengan mengkirimkannya, Anda setuju pustaka akan diterbitkan dibawah ", - "link": "Lisensi MIT, ", - "post": "yang artinya siapa pun dapat menggunakannya tanpa batasan." - }, + "noteDescription": "Kirimkan pustaka Anda untuk disertakan di repositori pustaka publikuntuk orang lain menggunakannya dalam gambar mereka.", + "noteGuidelines": "Pustaka butuh disetujui secara manual terlebih dahulu. Baca pedoman sebelum mengirim. Anda butuh akun GitHub untuk berkomunikasi dan membuat perubahan jika dibutuhkan, tetapi tidak wajib dibutukan.", + "noteLicense": "Dengan mengkirimkannya, Anda setuju pustaka akan diterbitkan dibawah Lisensi MIT, yang artinya siapa pun dapat menggunakannya tanpa batasan.", "noteItems": "Setiap item pustaka harus memiliki nama, sehingga bisa disortir. Item pustaka di bawah ini akan dimasukan:", "atleastOneLibItem": "Pilih setidaknya satu item pustaka untuk mulai", "republishWarning": "Catatan: beberapa item yang dipilih telah ditandai sebagai sudah dipublikasikan/diserahkan. Anda hanya dapat menyerahkan kembali item-item ketika memperbarui pustaka atau pengumpulan." }, "publishSuccessDialog": { "title": "Pustaka telah dikirm", - "content": "Terima kasih {{authorName}}. pustaka Anda telah diserahkan untuk ditinjau ulang. Anda dapat cek statusnya", - "link": "di sini" + "content": "Terima kasih {{authorName}}. pustaka Anda telah diserahkan untuk ditinjau ulang. Anda dapat cek statusnyadi sini" }, "confirmDialog": { "resetLibrary": "Reset pustaka", diff --git a/src/locales/it-IT.json b/src/locales/it-IT.json index 8380fd8e5..12d215623 100644 --- a/src/locales/it-IT.json +++ b/src/locales/it-IT.json @@ -54,6 +54,7 @@ "veryLarge": "Molto grande", "solid": "Pieno", "hachure": "Tratteggio obliquo", + "zigzag": "Zig zag", "crossHatch": "Tratteggio incrociato", "thin": "Sottile", "bold": "Grassetto", @@ -207,19 +208,10 @@ "collabSaveFailed": "Impossibile salvare nel database di backend. Se i problemi persistono, dovresti salvare il tuo file localmente per assicurarti di non perdere il tuo lavoro.", "collabSaveFailed_sizeExceeded": "Impossibile salvare nel database di backend, la tela sembra essere troppo grande. Dovresti salvare il file localmente per assicurarti di non perdere il tuo lavoro.", "brave_measure_text_error": { - "start": "Sembra che tu stia usando il browser Brave con il", - "aggressive_block_fingerprint": "Blocco Aggressivamente Impronte Digitali", - "setting_enabled": "impostazioni abilitate", - "break": "Questo potrebbe portare a rompere gli", - "text_elements": "Elementi Di Testo", - "in_your_drawings": "nei tuoi disegni", - "strongly_recommend": "Si consiglia vivamente di disabilitare questa impostazione. È possibile seguire", - "steps": "questi passaggi", - "how": "su come fare", - "disable_setting": " Se la disabilitazione di questa impostazione non corregge la visualizzazione degli elementi di testo, apri un", - "issue": "problema", - "write": "sul nostro GitHub, o scrivici su", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Suggerimento: prova a spostare gli elementi più lontani più vicini tra loro." }, "errorSplash": { - "headingMain_pre": "Si è verificato un errore. Provare ", - "headingMain_button": "ricaricando la pagina.", - "clearCanvasMessage": "Se ricaricare non funziona, prova ", - "clearCanvasMessage_button": "pulire la tela.", + "headingMain": "Si è verificato un errore. Provare ", + "clearCanvasMessage": "Se ricaricare non funziona, prova ", "clearCanvasCaveat": " Questo risulterà nella perdita del lavoro ", - "trackedToSentry_pre": "L'errore con identificativo ", - "trackedToSentry_post": " è stato tracciato nel nostro sistema.", - "openIssueMessage_pre": "Siamo stati molto cauti nel non includere informazioni della scena nell'errore. Se la tua scena non è privata, ti preghiamo di considerare la sua inclusione nel nostro ", - "openIssueMessage_button": "bug tracker.", - "openIssueMessage_post": " Per favore includi le informazioni riportate qui sotto copiandole e incollandole nella issue di GitHub.", + "trackedToSentry": "L'errore con identificativo {{eventId}} è stato tracciato nel nostro sistema.", + "openIssueMessage": "Siamo stati molto cauti nel non includere informazioni della scena nell'errore. Se la tua scena non è privata, ti preghiamo di considerare la sua inclusione nel nostro Per favore includi le informazioni riportate qui sotto copiandole e incollandole nella issue di GitHub.", "sceneContent": "Contenuto della scena:" }, "roomDialog": { @@ -319,7 +306,7 @@ "doubleClick": "doppio-click", "drag": "trascina", "editor": "Editor", - "editLineArrowPoints": "", + "editLineArrowPoints": "Modifica punti linea/freccia", "editText": "Modifica testo / aggiungi etichetta", "github": "Trovato un problema? Segnalalo", "howto": "Segui le nostre guide", @@ -361,29 +348,16 @@ "required": "Obbligatorio", "website": "Inserisci un URL valido" }, - "noteDescription": { - "pre": "Invia la tua libreria da includere nella ", - "link": "repository della libreria pubblica", - "post": "perché sia usata da altri nei loro disegni." - }, - "noteGuidelines": { - "pre": "La libreria dev'esser prima approvata manualmente. Sei pregato di leggere le ", - "link": "linee guida", - "post": " prima di inviarla. Necessiterai di un profilo di GitHub per comunicare ed effettuare modifiche se richiesto, ma non è strettamente necessario." - }, - "noteLicense": { - "pre": "Inviando, acconsenti che la libreria sarà pubblicata sotto la ", - "link": "Licenza MIT, ", - "post": "che in breve significa che chiunque possa usarla senza restrizioni." - }, + "noteDescription": "Invia la tua libreria da includere nella repository della libreria pubblicaperché sia usata da altri nei loro disegni.", + "noteGuidelines": "La libreria dev'esser prima approvata manualmente. Sei pregato di leggere le linee guida prima di inviarla. Necessiterai di un profilo di GitHub per comunicare ed effettuare modifiche se richiesto, ma non è strettamente necessario.", + "noteLicense": "Inviando, acconsenti che la libreria sarà pubblicata sotto la Licenza MIT, che in breve significa che chiunque possa usarla senza restrizioni.", "noteItems": "Ogni elemento della libreria deve avere il proprio nome, così che sia filtrabile. Gli elementi della seguente libreria saranno inclusi:", "atleastOneLibItem": "Sei pregato di selezionare almeno un elemento della libreria per iniziare", "republishWarning": "Nota: alcuni degli elementi selezionati sono contrassegnati come già pubblicati/presentati. È necessario reinviare gli elementi solo quando si aggiorna una libreria o una presentazione esistente." }, "publishSuccessDialog": { "title": "Libreria inviata", - "content": "Grazie {{authorName}}. La tua libreria è stata inviata per la revisione. Puoi monitorarne lo stato", - "link": "qui" + "content": "Grazie {{authorName}}. La tua libreria è stata inviata per la revisione. Puoi monitorarne lo statoqui" }, "confirmDialog": { "resetLibrary": "Ripristina la libreria", diff --git a/src/locales/ja-JP.json b/src/locales/ja-JP.json index 53333aea3..fd4f2c2c7 100644 --- a/src/locales/ja-JP.json +++ b/src/locales/ja-JP.json @@ -54,6 +54,7 @@ "veryLarge": "特大", "solid": "ベタ塗り", "hachure": "斜線", + "zigzag": "", "crossHatch": "網掛け", "thin": "細", "bold": "太字", @@ -207,19 +208,10 @@ "collabSaveFailed": "バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。", "collabSaveFailed_sizeExceeded": "キャンバスが大きすぎるため、バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "設定が有効化されました", - "break": "", - "text_elements": "テキスト要素", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "ヒント: 最も遠い要素をもう少し近づけてみてください。" }, "errorSplash": { - "headingMain_pre": "エラーが発生しました。もう一度やり直してください。 ", - "headingMain_button": "ページを再読み込みする。", - "clearCanvasMessage": "再読み込みがうまくいかない場合は、 ", - "clearCanvasMessage_button": "キャンバスを消去しています", + "headingMain": "エラーが発生しました。もう一度やり直してください。 ", + "clearCanvasMessage": "再読み込みがうまくいかない場合は、 ", "clearCanvasCaveat": " これにより作業が失われます ", - "trackedToSentry_pre": "識別子のエラー ", - "trackedToSentry_post": " が我々のシステムで追跡されました。", - "openIssueMessage_pre": "エラーに関するシーン情報を含めないように非常に慎重に設定しました。もしあなたのシーンがプライベートでない場合は、私たちのフォローアップを検討してください。 ", - "openIssueMessage_button": "バグ報告", - "openIssueMessage_post": " GitHub のIssueに以下の情報をコピーして貼り付けてください。", + "trackedToSentry": "識別子のエラー {{eventId}} が我々のシステムで追跡されました。", + "openIssueMessage": "エラーに関するシーン情報を含めないように非常に慎重に設定しました。もしあなたのシーンがプライベートでない場合は、私たちのフォローアップを検討してください。 GitHub のIssueに以下の情報をコピーして貼り付けてください。", "sceneContent": "シーンの内容:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "必須項目", "website": "有効な URL を入力してください" }, - "noteDescription": { - "pre": "以下に含めるライブラリを提出してください ", - "link": "公開ライブラリのリポジトリ", - "post": "他の人が作図に使えるようにするためです" - }, - "noteGuidelines": { - "pre": "最初にライブラリを手動で承認する必要があります。次をお読みください ", - "link": "ガイドライン", - "post": " 送信する前に、GitHubアカウントが必要になりますが、必須ではありません。" - }, - "noteLicense": { - "pre": "提出することにより、ライブラリが次の下で公開されることに同意します: ", - "link": "MIT ライセンス ", - "post": "つまり誰でも制限なく使えるということです" - }, + "noteDescription": "以下に含めるライブラリを提出してください 公開ライブラリのリポジトリ他の人が作図に使えるようにするためです", + "noteGuidelines": "最初にライブラリを手動で承認する必要があります。次をお読みください ガイドライン 送信する前に、GitHubアカウントが必要になりますが、必須ではありません。", + "noteLicense": "提出することにより、ライブラリが次の下で公開されることに同意します: MIT ライセンス つまり誰でも制限なく使えるということです", "noteItems": "各ライブラリ項目は、フィルタリングのために独自の名前を持つ必要があります。以下のライブラリアイテムが含まれます:", "atleastOneLibItem": "開始するには少なくとも1つのライブラリ項目を選択してください", "republishWarning": "注意: 選択された項目の中には、すでに公開/投稿済みと表示されているものがあります。既存のライブラリや投稿を更新する場合のみ、アイテムを再投稿してください。" }, "publishSuccessDialog": { "title": "ライブラリを送信しました", - "content": "{{authorName}} さん、ありがとうございます。あなたのライブラリはレビューのために提出されました。状況を追跡できます。", - "link": "こちら" + "content": "{{authorName}} さん、ありがとうございます。あなたのライブラリはレビューのために提出されました。状況を追跡できます。こちら" }, "confirmDialog": { "resetLibrary": "ライブラリをリセット", diff --git a/src/locales/kaa.json b/src/locales/kaa.json new file mode 100644 index 000000000..6a2c194cf --- /dev/null +++ b/src/locales/kaa.json @@ -0,0 +1,456 @@ +{ + "labels": { + "paste": "", + "pasteAsPlaintext": "", + "pasteCharts": "", + "selectAll": "Barlıǵın tańlaw", + "multiSelect": "", + "moveCanvas": "", + "cut": "", + "copy": "Kóshirip alıw", + "copyAsPng": "", + "copyAsSvg": "", + "copyText": "", + "bringForward": "", + "sendToBack": "", + "bringToFront": "", + "sendBackward": "", + "delete": "Óshiriw", + "copyStyles": "", + "pasteStyles": "", + "stroke": "", + "background": "", + "fill": "", + "strokeWidth": "", + "strokeStyle": "", + "strokeStyle_solid": "", + "strokeStyle_dashed": "", + "strokeStyle_dotted": "", + "sloppiness": "", + "opacity": "", + "textAlign": "", + "edges": "", + "sharp": "", + "round": "", + "arrowheads": "", + "arrowhead_none": "", + "arrowhead_arrow": "", + "arrowhead_bar": "", + "arrowhead_dot": "", + "arrowhead_triangle": "", + "fontSize": "Shrift ólshemi", + "fontFamily": "", + "onlySelected": "", + "withBackground": "", + "exportEmbedScene": "", + "exportEmbedScene_details": "", + "addWatermark": "", + "handDrawn": "", + "normal": "", + "code": "", + "small": "", + "medium": "", + "large": "", + "veryLarge": "", + "solid": "", + "hachure": "", + "zigzag": "", + "crossHatch": "", + "thin": "", + "bold": "", + "left": "", + "center": "", + "right": "", + "extraBold": "", + "architect": "", + "artist": "", + "cartoonist": "", + "fileTitle": "Fayl ataması", + "colorPicker": "", + "canvasColors": "", + "canvasBackground": "", + "drawingCanvas": "", + "layers": "", + "actions": "Háreketler", + "language": "Til", + "liveCollaboration": "", + "duplicateSelection": "Nusqa", + "untitled": "", + "name": "Ataması", + "yourName": "Atıńız", + "madeWithExcalidraw": "", + "group": "", + "ungroup": "", + "collaborators": "", + "showGrid": "", + "addToLibrary": "Kitapxanaǵa qosıw", + "removeFromLibrary": "Kitapxanadan alıp taslaw", + "libraryLoadingMessage": "Kitapxana júklenbekte…", + "libraries": "Kitapxanalardı kóriw", + "loadingScene": "", + "align": "", + "alignTop": "", + "alignBottom": "", + "alignLeft": "", + "alignRight": "", + "centerVertically": "", + "centerHorizontally": "", + "distributeHorizontally": "", + "distributeVertically": "", + "flipHorizontal": "", + "flipVertical": "", + "viewMode": "Kóriw rejimi", + "toggleExportColorScheme": "", + "share": "Bólisiw", + "showStroke": "", + "showBackground": "", + "toggleTheme": "", + "personalLib": "", + "excalidrawLib": "", + "decreaseFontSize": "", + "increaseFontSize": "", + "unbindText": "", + "bindText": "", + "createContainerFromText": "", + "link": { + "edit": "Siltemeni ózgertiw", + "create": "Siltemeni jaratıw", + "label": "Silteme" + }, + "lineEditor": { + "edit": "", + "exit": "" + }, + "elementLock": { + "lock": "Qulıplaw", + "unlock": "Qulıptan shıǵarıw", + "lockAll": "Barlıǵın qulıplaw", + "unlockAll": "Barlıǵın qulıptan shıǵarıw" + }, + "statusPublished": "", + "sidebarLock": "" + }, + "library": { + "noItems": "", + "hint_emptyLibrary": "", + "hint_emptyPrivateLibrary": "" + }, + "buttons": { + "clearReset": "", + "exportJSON": "", + "exportImage": "", + "export": "", + "exportToPng": "", + "exportToSvg": "", + "copyToClipboard": "Almasıw buferine kóshirip alındı", + "copyPngToClipboard": "", + "scale": "", + "save": "", + "saveAs": "", + "load": "Ashıw", + "getShareableLink": "", + "close": "Jabıw", + "selectLanguage": "Tildi tańlaw", + "scrollBackToContent": "", + "zoomIn": "", + "zoomOut": "", + "resetZoom": "", + "menu": "Menyu", + "done": "Tayın", + "edit": "Ózgertiw", + "undo": "", + "redo": "", + "resetLibrary": "", + "createNewRoom": "", + "fullScreen": "Tolıq ekran", + "darkMode": "Qarańǵı tema", + "lightMode": "Jaqtı tema", + "zenMode": "", + "exitZenMode": "", + "cancel": "Biykarlaw", + "clear": "Tazalaw", + "remove": "Óshiriw", + "publishLibrary": "", + "submit": "Jiberiw", + "confirm": "Tastıyıqlaw" + }, + "alerts": { + "clearReset": "", + "couldNotCreateShareableLink": "", + "couldNotCreateShareableLinkTooBig": "", + "couldNotLoadInvalidFile": "", + "importBackendFailed": "", + "cannotExportEmptyCanvas": "", + "couldNotCopyToClipboard": "Almasıw buferine kóshirip alıw ámelge aspadı.", + "decryptFailed": "", + "uploadedSecurly": "", + "loadSceneOverridePrompt": "", + "collabStopOverridePrompt": "", + "errorAddingToLibrary": "", + "errorRemovingFromLibrary": "", + "confirmAddLibrary": "", + "imageDoesNotContainScene": "", + "cannotRestoreFromImage": "", + "invalidSceneUrl": "", + "resetLibrary": "", + "removeItemsFromsLibrary": "", + "invalidEncryptionKey": "", + "collabOfflineWarning": "" + }, + "errors": { + "unsupportedFileType": "", + "imageInsertError": "", + "fileTooBig": "", + "svgImageInsertError": "", + "invalidSVGString": "Jaramsız SVG.", + "cannotResolveCollabServer": "", + "importLibraryError": "Kitapxananı júklew ámelge aspadı", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "", + "brave_measure_text_error": { + "line1": "", + "line2": "", + "line3": "", + "line4": "" + } + }, + "toolBar": { + "selection": "", + "image": "Súwret qoyıw", + "rectangle": "", + "diamond": "", + "ellipse": "", + "arrow": "", + "line": "Sızıq", + "freedraw": "Sızıw", + "text": "Tekst", + "library": "Kitapxana", + "lock": "", + "penMode": "", + "link": "", + "eraser": "Óshirgish", + "hand": "" + }, + "headings": { + "canvasActions": "", + "selectedShapeActions": "", + "shapes": "" + }, + "hints": { + "canvasPanning": "", + "linearElement": "", + "freeDraw": "", + "text": "", + "text_selected": "", + "text_editing": "", + "linearElementMulti": "", + "lockAngle": "", + "resize": "", + "resizeImage": "", + "rotate": "", + "lineEditor_info": "", + "lineEditor_pointSelected": "", + "lineEditor_nothingSelected": "", + "placeImage": "", + "publishLibrary": "", + "bindTextToElement": "", + "deepBoxSelect": "", + "eraserRevert": "", + "firefox_clipboard_write": "" + }, + "canvasError": { + "cannotShowPreview": "", + "canvasTooBig": "", + "canvasTooBigTip": "" + }, + "errorSplash": { + "headingMain": "", + "clearCanvasMessage": "", + "clearCanvasCaveat": "", + "trackedToSentry": "", + "openIssueMessage": "", + "sceneContent": "" + }, + "roomDialog": { + "desc_intro": "", + "desc_privacy": "", + "button_startSession": "", + "button_stopSession": "", + "desc_inProgressIntro": "", + "desc_shareLink": "", + "desc_exitSession": "", + "shareTitle": "" + }, + "errorDialog": { + "title": "Qátelik" + }, + "exportDialog": { + "disk_title": "", + "disk_details": "", + "disk_button": "", + "link_title": "", + "link_details": "", + "link_button": "", + "excalidrawplus_description": "", + "excalidrawplus_button": "Eksportlaw", + "excalidrawplus_exportError": "" + }, + "helpDialog": { + "blog": "", + "click": "basıw", + "deepSelect": "", + "deepBoxSelect": "", + "curvedArrow": "", + "curvedLine": "", + "documentation": "Hújjetshilik", + "doubleClick": "", + "drag": "", + "editor": "", + "editLineArrowPoints": "", + "editText": "", + "github": "", + "howto": "", + "or": "yamasa", + "preventBinding": "", + "tools": "Ásbaplar", + "shortcuts": "", + "textFinish": "", + "textNewLine": "", + "title": "Járdem", + "view": "Kóriw", + "zoomToFit": "", + "zoomToSelection": "", + "toggleElementLock": "", + "movePageUpDown": "", + "movePageLeftRight": "" + }, + "clearCanvasDialog": { + "title": "" + }, + "publishDialog": { + "title": "", + "itemName": "", + "authorName": "Avtor atı", + "githubUsername": "GitHub paydalanıwshı atı", + "twitterUsername": "Twitter paydalanıwshı atı", + "libraryName": "Kitapxana ataması", + "libraryDesc": "", + "website": "Veb-sayt", + "placeholder": { + "authorName": "", + "libraryName": "", + "libraryDesc": "", + "githubHandle": "", + "twitterHandle": "", + "website": "" + }, + "errors": { + "required": "", + "website": "" + }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", + "noteItems": "", + "atleastOneLibItem": "", + "republishWarning": "" + }, + "publishSuccessDialog": { + "title": "", + "content": "" + }, + "confirmDialog": { + "resetLibrary": "", + "removeItemsFromLib": "" + }, + "encrypted": { + "tooltip": "", + "link": "" + }, + "stats": { + "angle": "", + "element": "", + "elements": "", + "height": "", + "scene": "Saxna", + "selected": "Tańlandı", + "storage": "", + "title": "", + "total": "", + "version": "Versiya", + "versionCopy": "Kóshirip alıw ushın basıń", + "versionNotAvailable": "", + "width": "" + }, + "toast": { + "addedToLibrary": "", + "copyStyles": "", + "copyToClipboard": "", + "copyToClipboardAsPng": "", + "fileSaved": "Fayl saqlandı.", + "fileSavedToFilename": "{filename} saqlandı", + "canvas": "", + "selection": "", + "pasteAsSingleElement": "" + }, + "colors": { + "ffffff": "Aq", + "f8f9fa": "", + "f1f3f5": "", + "fff5f5": "Qızıl 0", + "fff0f6": "", + "f8f0fc": "", + "f3f0ff": "", + "edf2ff": "", + "e7f5ff": "Kók", + "e3fafc": "", + "e6fcf5": "Piruza 0", + "ebfbee": "", + "f4fce3": "", + "fff9db": "Sarı 0", + "fff4e6": "Qızǵılt sarı 0", + "transparent": "", + "ced4da": "", + "868e96": "", + "fa5252": "Qızıl 6", + "e64980": "", + "be4bdb": "", + "7950f2": "", + "4c6ef5": "", + "228be6": "Kók 6", + "15aabf": "", + "12b886": "Piruza 6", + "40c057": "Jasıl 6", + "82c91e": "", + "fab005": "Sarı 6", + "fd7e14": "", + "000000": "Qara", + "343a40": "", + "495057": "", + "c92a2a": "Qızıl 9", + "a61e4d": "Qızǵılt 9", + "862e9c": "", + "5f3dc4": "", + "364fc7": "", + "1864ab": "Kók 9", + "0b7285": "", + "087f5b": "", + "2b8a3e": "Jasıl 9", + "5c940d": "", + "e67700": "Sarı 9", + "d9480f": "Qızǵılt sarı 9" + }, + "welcomeScreen": { + "app": { + "center_heading": "", + "center_heading_plus": "", + "menuHint": "Eksportlaw, sazlawlar, tiller, ..." + }, + "defaults": { + "menuHint": "Eksportlaw, sazlawlar hám basqa...", + "center_heading": "", + "toolbarHint": "", + "helpHint": "" + } + } +} diff --git a/src/locales/kab-KAB.json b/src/locales/kab-KAB.json index ba6a3de7e..56e82d102 100644 --- a/src/locales/kab-KAB.json +++ b/src/locales/kab-KAB.json @@ -54,6 +54,7 @@ "veryLarge": "Meqqer aṭas", "solid": "Aččuran", "hachure": "Azerreg", + "zigzag": "", "crossHatch": "Azerreg anmidag", "thin": "Arqaq", "bold": "Azuran", @@ -207,19 +208,10 @@ "collabSaveFailed": "Ulamek asekles deg uzadur n yisefka deg ugilal. Ma ikemmel wugur, isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.", "collabSaveFailed_sizeExceeded": "Ulamek asekles deg uzadur n yisefka deg ugilal, taɣzut n usuneɣ tettban-d temqer aṭas. Isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.", "brave_measure_text_error": { - "start": "Ittban-d am wakken tsseqdaceḍ iminig Brave akked", - "aggressive_block_fingerprint": "", - "setting_enabled": "yermed", - "break": "Ayagi yezmer ad d-iseglu s truẓi n", - "text_elements": "Iferdisen iḍrisen", - "in_your_drawings": "deg wunuɣen-inek", - "strongly_recommend": "", - "steps": "isurifen-agi", - "how": "", - "disable_setting": "", - "issue": "", - "write": "di GitHub inek neɣ aru-yaɣ-d di", - "discord": "" + "line1": "", + "line2": "Ayagi yezmer ad d-iglu s truẓi nIferdisen n uḍrisdeg wunuɣen-inek.", + "line3": "Ad k-nsemter ad tsexsiḍ aɣewwar-agi. Tzemreḍ ad tḍefreḍisurifen-agi ɣef wamek ara txedmeḍ.", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tixidest: eɛreḍ ad tesqerbeḍ ciṭ iferdisen yembaɛaden." }, "errorSplash": { - "headingMain_pre": "Teḍra-d tuccḍa. Eɛreḍ ", - "headingMain_button": "asali n usebter tikkelt-nniḍen.", - "clearCanvasMessage": "Ma yella tulsa n usali ur tefri ara ugur, eɛreḍ ", - "clearCanvasMessage_button": "asfaḍ n teɣzut n usuneɣ.", + "headingMain": "Teḍra-d tuccḍa. Eɛreḍ ", + "clearCanvasMessage": "Ma yella tulsa n usali ur tefri ara ugur, eɛreḍ ", "clearCanvasCaveat": " Ayagi ad d-iglu s usṛuḥu n umahil ", - "trackedToSentry_pre": "Tuccḍa akked umesmagi ", - "trackedToSentry_post": " tettwasekles deg unagraw-nneɣ.", - "openIssueMessage_pre": "Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ ", - "openIssueMessage_button": "afecku n weḍfar n yibugen.", - "openIssueMessage_post": " Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.", + "trackedToSentry": "Tuccḍa akked umesmagi {{eventId}} tettwasekles deg unagraw-nneɣ.", + "openIssueMessage": "Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.", "sceneContent": "Agbur n usayes:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "ssit snat n tikkal", "drag": "zuɣer", "editor": "Amaẓrag", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Ẓreg tinqiḍin n yizirig/taneccabt", + "editText": "Ẓreg aḍris/rnu tabzimt", "github": "Tufiḍ-d ugur? Azen-aɣ-d", "howto": "Ḍfer imniren-nneɣ", "or": "neɣ", @@ -361,29 +348,16 @@ "required": "Yettwasra", "website": "Sekcem URL ameɣtu" }, - "noteDescription": { - "pre": "Azen tamkarḍit-inek•inem akken ad teddu di ", - "link": "akaram azayez n temkarḍit", - "post": "i yimdanen-nniḍen ara isqedcen deg wunuɣen-nnsen." - }, - "noteGuidelines": { - "pre": "Tamkarḍit teḥwaǧ ad tettwaqbel s ufus qbel. Ma ulac uɣilif ɣer ", - "link": "iwellihen", - "post": " send ad tazneḍ. Tesriḍ amiḍan n GitHub akken ad tmmeslayeḍ yerna ad tgeḍ ibeddilen ma yelaq, maca mačči d ayen yettwaḥetmen." - }, - "noteLicense": { - "pre": "Mi tuzneḍ ad tqebleḍ akken tamkarḍit ad d-teffeɣ s ", - "link": "Turagt MIT, ", - "post": "ayen yebɣan ad d-yini belli yal yiwen izmer ad ten-iseqdec war tilist." - }, + "noteDescription": "Azen tamkarḍit-inek•inem akken ad teddu di akaram azayez n temkarḍiti yimdanen-nniḍen ara isqedcen deg wunuɣen-nnsen.", + "noteGuidelines": "Tamkarḍit teḥwaǧ ad tettwaqbel s ufus qbel. Ma ulac uɣilif ɣer iwellihen send ad tazneḍ. Tesriḍ amiḍan n GitHub akken ad tmmeslayeḍ yerna ad tgeḍ ibeddilen ma yelaq, maca mačči d ayen yettwaḥetmen.", + "noteLicense": "Mi tuzneḍ ad tqebleḍ akken tamkarḍit ad d-teffeɣ s Turagt MIT, ayen yebɣan ad d-yini belli yal yiwen izmer ad ten-iseqdec war tilist.", "noteItems": "Yal aferdis n temkarḍit isefk ad isɛu isem-is i yiman-is akken ad yili wamek ara yettusizdeg. Iferdisen-agi n temkarḍit ad ddun:", "atleastOneLibItem": "Ma ulac uɣilif fern ma drus yiwen n uferdis n temkarḍit akken ad tebduḍ", "republishWarning": "Tamawt: kra n yiferdisen yettwafernen ttwacerḍen ffeɣen-d/ttwaznen. Isefk ad talseḍ tuzzna n yiferdisen anagar mi ara tleqqemeḍ tamkarḍit neɣ tuzzna yellan." }, "publishSuccessDialog": { "title": "Tamkarḍit tettwazen", - "content": "Tanemmirt-ik•im {{authorName}}. Tamkarḍit-inek•inem tettwazen i weselken. Tzemreḍ ad tḍefreḍ aẓayer", - "link": "dagi" + "content": "Tanemmirt-ik•im {{authorName}}. Tamkarḍit-inek•inem tettwazen i weselken. Tzemreḍ ad tḍefreḍ aẓayerdagi" }, "confirmDialog": { "resetLibrary": "Ales awennez n temkarḍit", @@ -468,15 +442,15 @@ }, "welcomeScreen": { "app": { - "center_heading": "", + "center_heading": "Akk isefka-inek•inem ttwakelsen s wudem adigan deg yiminig-inek•inem.", "center_heading_plus": "Tebɣiḍ ad tedduḍ ɣer Excalidraw+ deg umḍiq?", "menuHint": "Asifeḍ, ismenyifen, tutlayin, ..." }, "defaults": { "menuHint": "Asifeḍ, ismenyifen, d wayen-nniḍen...", "center_heading": "", - "toolbarHint": "", - "helpHint": "" + "toolbarHint": "Fren afecku tebduḍ asuneɣ!", + "helpHint": "Inegzumen akked tallelt" } } } diff --git a/src/locales/kk-KZ.json b/src/locales/kk-KZ.json index 97a9063fa..3718c7767 100644 --- a/src/locales/kk-KZ.json +++ b/src/locales/kk-KZ.json @@ -54,6 +54,7 @@ "veryLarge": "Өте үлкен", "solid": "", "hachure": "", + "zigzag": "", "crossHatch": "", "thin": "", "bold": "", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", + "headingMain": "", "clearCanvasMessage": "", - "clearCanvasMessage_button": "", "clearCanvasCaveat": "", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/km-KH.json b/src/locales/km-KH.json new file mode 100644 index 000000000..c0558015b --- /dev/null +++ b/src/locales/km-KH.json @@ -0,0 +1,456 @@ +{ + "labels": { + "paste": "", + "pasteAsPlaintext": "", + "pasteCharts": "", + "selectAll": "", + "multiSelect": "", + "moveCanvas": "", + "cut": "", + "copy": "", + "copyAsPng": "", + "copyAsSvg": "", + "copyText": "", + "bringForward": "", + "sendToBack": "", + "bringToFront": "", + "sendBackward": "", + "delete": "", + "copyStyles": "", + "pasteStyles": "", + "stroke": "", + "background": "", + "fill": "", + "strokeWidth": "", + "strokeStyle": "", + "strokeStyle_solid": "", + "strokeStyle_dashed": "", + "strokeStyle_dotted": "", + "sloppiness": "", + "opacity": "", + "textAlign": "", + "edges": "", + "sharp": "", + "round": "", + "arrowheads": "", + "arrowhead_none": "", + "arrowhead_arrow": "", + "arrowhead_bar": "", + "arrowhead_dot": "", + "arrowhead_triangle": "", + "fontSize": "", + "fontFamily": "", + "onlySelected": "", + "withBackground": "", + "exportEmbedScene": "", + "exportEmbedScene_details": "", + "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": "", + "layers": "", + "actions": "", + "language": "", + "liveCollaboration": "", + "duplicateSelection": "", + "untitled": "", + "name": "", + "yourName": "", + "madeWithExcalidraw": "", + "group": "", + "ungroup": "", + "collaborators": "", + "showGrid": "", + "addToLibrary": "", + "removeFromLibrary": "", + "libraryLoadingMessage": "", + "libraries": "", + "loadingScene": "", + "align": "", + "alignTop": "", + "alignBottom": "", + "alignLeft": "", + "alignRight": "", + "centerVertically": "", + "centerHorizontally": "", + "distributeHorizontally": "", + "distributeVertically": "", + "flipHorizontal": "", + "flipVertical": "", + "viewMode": "", + "toggleExportColorScheme": "", + "share": "", + "showStroke": "", + "showBackground": "", + "toggleTheme": "", + "personalLib": "", + "excalidrawLib": "", + "decreaseFontSize": "", + "increaseFontSize": "", + "unbindText": "", + "bindText": "", + "createContainerFromText": "", + "link": { + "edit": "", + "create": "", + "label": "" + }, + "lineEditor": { + "edit": "", + "exit": "" + }, + "elementLock": { + "lock": "", + "unlock": "", + "lockAll": "", + "unlockAll": "" + }, + "statusPublished": "", + "sidebarLock": "" + }, + "library": { + "noItems": "", + "hint_emptyLibrary": "", + "hint_emptyPrivateLibrary": "" + }, + "buttons": { + "clearReset": "", + "exportJSON": "", + "exportImage": "", + "export": "", + "exportToPng": "", + "exportToSvg": "", + "copyToClipboard": "", + "copyPngToClipboard": "", + "scale": "", + "save": "", + "saveAs": "", + "load": "", + "getShareableLink": "", + "close": "", + "selectLanguage": "", + "scrollBackToContent": "", + "zoomIn": "", + "zoomOut": "", + "resetZoom": "", + "menu": "", + "done": "", + "edit": "", + "undo": "", + "redo": "", + "resetLibrary": "", + "createNewRoom": "", + "fullScreen": "", + "darkMode": "", + "lightMode": "", + "zenMode": "", + "exitZenMode": "", + "cancel": "", + "clear": "", + "remove": "", + "publishLibrary": "", + "submit": "", + "confirm": "" + }, + "alerts": { + "clearReset": "", + "couldNotCreateShareableLink": "", + "couldNotCreateShareableLinkTooBig": "", + "couldNotLoadInvalidFile": "", + "importBackendFailed": "", + "cannotExportEmptyCanvas": "", + "couldNotCopyToClipboard": "", + "decryptFailed": "", + "uploadedSecurly": "", + "loadSceneOverridePrompt": "", + "collabStopOverridePrompt": "", + "errorAddingToLibrary": "", + "errorRemovingFromLibrary": "", + "confirmAddLibrary": "", + "imageDoesNotContainScene": "", + "cannotRestoreFromImage": "", + "invalidSceneUrl": "", + "resetLibrary": "", + "removeItemsFromsLibrary": "", + "invalidEncryptionKey": "", + "collabOfflineWarning": "" + }, + "errors": { + "unsupportedFileType": "", + "imageInsertError": "", + "fileTooBig": "", + "svgImageInsertError": "", + "invalidSVGString": "", + "cannotResolveCollabServer": "", + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "", + "brave_measure_text_error": { + "line1": "", + "line2": "", + "line3": "", + "line4": "" + } + }, + "toolBar": { + "selection": "", + "image": "", + "rectangle": "", + "diamond": "", + "ellipse": "", + "arrow": "", + "line": "", + "freedraw": "", + "text": "", + "library": "", + "lock": "", + "penMode": "", + "link": "", + "eraser": "", + "hand": "" + }, + "headings": { + "canvasActions": "", + "selectedShapeActions": "", + "shapes": "" + }, + "hints": { + "canvasPanning": "", + "linearElement": "", + "freeDraw": "", + "text": "", + "text_selected": "", + "text_editing": "", + "linearElementMulti": "", + "lockAngle": "", + "resize": "", + "resizeImage": "", + "rotate": "", + "lineEditor_info": "", + "lineEditor_pointSelected": "", + "lineEditor_nothingSelected": "", + "placeImage": "", + "publishLibrary": "", + "bindTextToElement": "", + "deepBoxSelect": "", + "eraserRevert": "", + "firefox_clipboard_write": "" + }, + "canvasError": { + "cannotShowPreview": "", + "canvasTooBig": "", + "canvasTooBigTip": "" + }, + "errorSplash": { + "headingMain": "", + "clearCanvasMessage": "", + "clearCanvasCaveat": "", + "trackedToSentry": "", + "openIssueMessage": "", + "sceneContent": "" + }, + "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": "", + "curvedArrow": "", + "curvedLine": "", + "documentation": "", + "doubleClick": "", + "drag": "", + "editor": "", + "editLineArrowPoints": "", + "editText": "", + "github": "", + "howto": "", + "or": "", + "preventBinding": "", + "tools": "", + "shortcuts": "", + "textFinish": "", + "textNewLine": "", + "title": "", + "view": "", + "zoomToFit": "", + "zoomToSelection": "", + "toggleElementLock": "", + "movePageUpDown": "", + "movePageLeftRight": "" + }, + "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": "" + }, + "encrypted": { + "tooltip": "", + "link": "" + }, + "stats": { + "angle": "", + "element": "", + "elements": "", + "height": "", + "scene": "", + "selected": "", + "storage": "", + "title": "", + "total": "", + "version": "", + "versionCopy": "", + "versionNotAvailable": "", + "width": "" + }, + "toast": { + "addedToLibrary": "", + "copyStyles": "", + "copyToClipboard": "", + "copyToClipboardAsPng": "", + "fileSaved": "", + "fileSavedToFilename": "", + "canvas": "", + "selection": "", + "pasteAsSingleElement": "" + }, + "colors": { + "ffffff": "", + "f8f9fa": "", + "f1f3f5": "", + "fff5f5": "", + "fff0f6": "", + "f8f0fc": "", + "f3f0ff": "", + "edf2ff": "", + "e7f5ff": "", + "e3fafc": "", + "e6fcf5": "កាប់ស្តាំង ០", + "ebfbee": "បៃតង ០", + "f4fce3": "បៃតងខ្ចី ០", + "fff9db": "លឿង ០", + "fff4e6": "ទឹកក្រូច ០", + "transparent": "ថ្លាមើលធ្លុះ", + "ced4da": "ប្រផេះ ៤", + "868e96": "ប្រផេះ ៦", + "fa5252": "ក្រហម ៦", + "e64980": "ផ្កាឈូក ៦", + "be4bdb": "ស្វាយចាស់ ៦", + "7950f2": "ស្វាយ​ ៦", + "4c6ef5": "ខៀវចាស់ ៦", + "228be6": "ខៀវ ៦", + "15aabf": "ខៀវខ្ចី ៦", + "12b886": "កាប់ស្តាំង ៦", + "40c057": "បៃតង ៦", + "82c91e": "បៃតងខ្ចី ៦", + "fab005": "លឿង ៦", + "fd7e14": "ទឹកក្រូច ៦", + "000000": "ខ្មៅ", + "343a40": "ប្រផេះ ៨", + "495057": "ប្រផេះ ៧", + "c92a2a": "ក្រហម​ ៩", + "a61e4d": "ផ្កាឈូក ៩", + "862e9c": "ស្វាយចាស់ ៩", + "5f3dc4": "ស្វាយ ៩", + "364fc7": "ខៀវចាស់ ៩", + "1864ab": "ខៀវ ៩", + "0b7285": "ខៀវខ្ចី ៩", + "087f5b": "កាប់ស្តាំង ៩", + "2b8a3e": "បៃតង ៩", + "5c940d": "បៃតងខ្ចី ៩", + "e67700": "លឿង ៩", + "d9480f": "ទឹកក្រូច ៩" + }, + "welcomeScreen": { + "app": { + "center_heading": "ទិន្នន័យទាំងអស់របស់អ្នក ត្រូវបានរក្សាទុកនៅក្នុង browser របស់អ្នក ។", + "center_heading_plus": "តើ​អ្នក​ចង់​ទៅ Excalidraw+ ​វិញ ឬ មែន?", + "menuHint": "នាំចេញ ចំណូលចិត្ត ភាសា ..." + }, + "defaults": { + "menuHint": "ការនាំចេញ ចំណូលចិត្ត និង ច្រើនទៀត...", + "center_heading": "ងាយស្រួល ។ ធ្វើ ។​ ដ្យាក្រាម ។", + "toolbarHint": "ជ្រើសរើសឧបករណ៍មួយ និង ចាប់ផ្តើមគូរ!", + "helpHint": "ផ្លូវកាត់ &​ ជំនួយ" + } + } +} diff --git a/src/locales/ko-KR.json b/src/locales/ko-KR.json index f170e4cbf..20bdd4306 100644 --- a/src/locales/ko-KR.json +++ b/src/locales/ko-KR.json @@ -54,6 +54,7 @@ "veryLarge": "매우 크게", "solid": "단색", "hachure": "평행선", + "zigzag": "지그재그", "crossHatch": "교차선", "thin": "얇게", "bold": "굵게", @@ -207,19 +208,10 @@ "collabSaveFailed": "데이터베이스에 저장하지 못했습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.", "collabSaveFailed_sizeExceeded": "데이터베이스에 저장하지 못했습니다. 캔버스가 너무 큰 거 같습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.", "brave_measure_text_error": { - "start": "귀하께서는", - "aggressive_block_fingerprint": "강력한 지문 차단", - "setting_enabled": "설정이 활성화된 Brave browser를 사용하고 계신 것 같습니다", - "break": "이 기능으로 인해 화이트보드의", - "text_elements": "텍스트 요소들이", - "in_your_drawings": "손상될 수 있습니다", - "strongly_recommend": "해당 기능을 설정에서 비활성화하는 것을 강력히 권장 드립니다. 비활성화 방법에 대해서는", - "steps": "이 게시글을", - "how": "참고해주세요.", - "disable_setting": " 만약 이 설정을 껐음에도 텍스트 요소들이 올바르게 표시되지 않는다면, 저희", - "issue": "Github에 이슈를", - "write": "올려주시거나", - "discord": "Discord에 제보해주세요" + "line1": "귀하께서는 강력한 지문 차단 설정이 활성화된 Brave browser를 사용하고 계신 것 같습니다.", + "line2": "이 기능으로 인해 화이트보드의 텍스트 요소들이 손상될 수 있습니다.", + "line3": "저희는 해당 기능을 비활성화하는 것을 강력히 권장 드립니다. 비활성화 방법에 대해서는 이 게시글을 참고해주세요.", + "line4": "만약 이 설정을 껐음에도 텍스트 요소들이 올바르게 표시되지 않는다면, 저희 Github에 이슈를 올려주시거나 Discord로 알려주세요." } }, "toolBar": { @@ -256,7 +248,7 @@ "resize": "SHIFT 키를 누르면서 조정하면 크기의 비율이 제한됩니다.\nALT를 누르면서 조정하면 중앙을 기준으로 크기를 조정합니다.", "resizeImage": "SHIFT를 눌러서 자유롭게 크기를 변경하거나,\nALT를 눌러서 중앙을 고정하고 크기를 변경하기", "rotate": "SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.", - "lineEditor_info": "포인트를 편집하려면 Ctrl/Cmd을 누르고 더블 클릭을 하거나 Ctrl/Cmd + Enter를 누르세요", + "lineEditor_info": "꼭짓점을 수정하려면 CtrlOrCmd 키를 누르고 더블 클릭을 하거나 CtrlOrCmd + Enter를 누르세요.", "lineEditor_pointSelected": "Delete 키로 꼭짓점을 제거하거나,\nCtrlOrCmd+D 로 복제하거나, 드래그 해서 이동시키기", "lineEditor_nothingSelected": "꼭짓점을 선택해서 수정하거나 (SHIFT를 눌러서 여러개 선택),\nAlt를 누르고 클릭해서 새로운 꼭짓점 추가하기", "placeImage": "클릭해서 이미지를 배치하거나, 클릭하고 드래그해서 사이즈를 조정하기", @@ -272,16 +264,11 @@ "canvasTooBigTip": "팁: 멀리 있는 요소들을 좀 더 가까이로 붙여 보세요." }, "errorSplash": { - "headingMain_pre": "오류가 발생했습니다. ", - "headingMain_button": "페이지 새로고침", - "clearCanvasMessage": "새로고침으로 해결되지 않을 경우, ", - "clearCanvasMessage_button": "캔버스 비우기", + "headingMain": "오류가 발생했습니다. ", + "clearCanvasMessage": "새로고침으로 해결되지 않을 경우, ", "clearCanvasCaveat": " 작업 내용을 잃게 됩니다 ", - "trackedToSentry_pre": "오류 ", - "trackedToSentry_post": " 가 시스템에서 발견되었습니다.", - "openIssueMessage_pre": "저희는 화면 정보를 오류에 포함하지 않도록 매우 주의하고 있습니다. 혹시 화면에 민감한 내용이 없다면 이곳에 업로드를 고려해주세요.", - "openIssueMessage_button": "버그 트래커", - "openIssueMessage_post": " 아래 정보를 GitHub 이슈에 복사 및 붙여넣기해 주세요.", + "trackedToSentry": "오류 {{eventId}} 가 시스템에서 발견되었습니다.", + "openIssueMessage": "저희는 화면 정보를 오류에 포함하지 않도록 매우 주의하고 있습니다. 혹시 화면에 민감한 내용이 없다면 이곳에 업로드를 고려해주세요. 아래 정보를 GitHub 이슈에 복사 및 붙여넣기해 주세요.", "sceneContent": "화면 내용:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "더블 클릭", "drag": "드래그", "editor": "에디터", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "직선 / 화살표 꼭짓점 수정", + "editText": "텍스트 수정 / 라벨 추가", "github": "문제 제보하기", "howto": "가이드 참고하기", "or": "또는", @@ -361,29 +348,16 @@ "required": "필수사항", "website": "유효한 URL을 입력하세요" }, - "noteDescription": { - "pre": "당신의 라이브러리를 제출하여 ", - "link": "공개 라이브러리 저장소", - "post": "에서 다른 사람들의 그림에 사용할 수 있도록 하세요." - }, - "noteGuidelines": { - "pre": "라이브러리는 먼저 수동으로 승인되어야 합니다. 제출하기 전에 ", - "link": "가이드라인", - "post": "을 먼저 읽어보세요. 의견을 공유하거나 변경사항을 만들기 위해선 GitHub 계정이 필요하지만, 반드시 필요하진 않습니다." - }, - "noteLicense": { - "pre": "제출함으로써, 당신은 라이브러리가 ", - "link": "MIT 라이선스 ", - "post": "하에 배포됨을, 즉 아무나 제약 없이 사용할 수 있음에 동의합니다." - }, + "noteDescription": "당신의 라이브러리를 제출하여 공개 라이브러리 저장소에서 다른 사람들의 그림에 사용할 수 있도록 하세요.", + "noteGuidelines": "라이브러리는 먼저 수동으로 승인되어야 합니다. 제출하기 전에 가이드라인을 먼저 읽어보세요. 의견을 공유하거나 변경사항을 만들기 위해선 GitHub 계정이 필요하지만, 반드시 필요하진 않습니다.", + "noteLicense": "제출함으로써, 당신은 라이브러리가 MIT 라이선스 하에 배포됨을, 즉 아무나 제약 없이 사용할 수 있음에 동의합니다.", "noteItems": "각각의 라이브러리는 분류할 수 있도록 고유한 이름을 가져야 합니다. 다음의 라이브러리 항목이 포함됩니다:", "atleastOneLibItem": "최소한 하나의 라이브러리를 선택해주세요", "republishWarning": "참고: 선택된 항목의 일부는 이미 제출/게시되었습니다. 기존의 라이브러리나 제출물을 업데이트하는 경우에만 제출하세요." }, "publishSuccessDialog": { "title": "라이브러리 제출됨", - "content": "{{authorName}}님 감사합니다. 당신의 라이브러리가 심사를 위해 제출되었습니다. 진행 상황을 다음의 링크에서 확인할 수 있습니다.", - "link": "여기" + "content": "{{authorName}}님 감사합니다. 당신의 라이브러리가 심사를 위해 제출되었습니다. 진행 상황을여기에서 확인하실 수 있습니다." }, "confirmDialog": { "resetLibrary": "라이브러리 리셋", diff --git a/src/locales/ku-TR.json b/src/locales/ku-TR.json index 76b5086e8..1e2afe444 100644 --- a/src/locales/ku-TR.json +++ b/src/locales/ku-TR.json @@ -1,7 +1,7 @@ { "labels": { "paste": "دانانەوە", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "دایبنێ وەک دەقی سادە", "pasteCharts": "دانانەوەی خشتەکان", "selectAll": "دیاریکردنی هەموو", "multiSelect": "زیادکردنی بۆ دیاریکراوەکان", @@ -54,6 +54,7 @@ "veryLarge": "زۆر گه‌وره‌", "solid": "سادە", "hachure": "هاچور", + "zigzag": "زیگزاگ", "crossHatch": "کرۆس هاتچ", "thin": "تەنک", "bold": "تۆخ", @@ -110,7 +111,7 @@ "increaseFontSize": "زایدکردنی قەبارەی فۆنت", "unbindText": "دەقەکە جیابکەرەوە", "bindText": "دەقەکە ببەستەوە بە کۆنتەینەرەکەوە", - "createContainerFromText": "", + "createContainerFromText": "دەق لە چوارچێوەیەکدا بپێچە", "link": { "edit": "دەستکاریکردنی بەستەر", "create": "دروستکردنی بەستەر", @@ -194,7 +195,7 @@ "resetLibrary": "ئەمە کتێبخانەکەت خاوێن دەکاتەوە. ئایا دڵنیایت?", "removeItemsFromsLibrary": "سڕینەوەی {{count}} ئایتم(ەکان) لە کتێبخانە؟", "invalidEncryptionKey": "کلیلی رەمزاندن دەبێت لە 22 پیت بێت. هاوکاری ڕاستەوخۆ لە کارخراوە.", - "collabOfflineWarning": "" + "collabOfflineWarning": "هێڵی ئینتەرنێت بەردەست نییە.\n گۆڕانکارییەکانت سەیڤ ناکرێن!" }, "errors": { "unsupportedFileType": "جۆری فایلی پشتگیری نەکراو.", @@ -204,22 +205,13 @@ "invalidSVGString": "ئێس ڤی جی نادروستە.", "cannotResolveCollabServer": "ناتوانێت پەیوەندی بکات بە سێرڤەری کۆلاب. تکایە لاپەڕەکە دووبارە باربکەوە و دووبارە هەوڵ بدەوە.", "importLibraryError": "نەیتوانی کتێبخانە بار بکات", - "collabSaveFailed": "", - "collabSaveFailed_sizeExceeded": "", + "collabSaveFailed": "نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت. ئەگەر کێشەکان بەردەوام بوون، پێویستە فایلەکەت لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.", + "collabSaveFailed_sizeExceeded": "نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت، پێدەچێت تابلۆکە زۆر گەورە بێت. پێویستە فایلەکە لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "وادیارە وێبگەڕی Brave بەکاردەهێنیت و ڕێکخستنی Aggressively Block Fingerprinting ـت چالاک کردووە.", + "line2": "ئەمە ئەکرێ ببێتە هۆی تێکدانی دانە دەقییەکان لە وێنەکێشانەکانتدا.", + "line3": "ئێمە بە توندی پێشنیاری لەکارخستنی ئەم ڕێکخستنە دەکەین. بۆ لە کارخستنی دەتوانیت بەم هەنگاوانەدا بڕۆیت.", + "line4": "ئەگەر لەکارخستنی ئەم ڕێکخستنە نەبوە هۆی چاککردنەوەی پێشاندانی دانە دەقییەکان، تکایە کێشەیەک بکەرەوە لەسەر گیتهەبەکەمان، یان بۆمان بنوسە لەسەر دیسکۆرد" } }, "toolBar": { @@ -237,7 +229,7 @@ "penMode": "شێوازی قەڵەم - دەست لێدان ڕابگرە", "link": "زیادکردن/ نوێکردنەوەی لینک بۆ شێوەی دیاریکراو", "eraser": "سڕەر", - "hand": "" + "hand": "دەست (ئامرازی پانکردن)" }, "headings": { "canvasActions": "کردارەکانی تابلۆ", @@ -245,7 +237,7 @@ "shapes": "شێوەکان" }, "hints": { - "canvasPanning": "", + "canvasPanning": "بۆ جوڵاندنی تابلۆ، ویلی ماوسەکەت یان دوگمەی سپەیس بگرە لەکاتی ڕاکێشاندە، یانیش ئامرازی دەستەکە بەکاربهێنە", "linearElement": "کرتە بکە بۆ دەستپێکردنی چەند خاڵێک، ڕایبکێشە بۆ یەک هێڵ", "freeDraw": "کرتە بکە و ڕایبکێشە، کاتێک تەواو بوویت دەست هەڵگرە", "text": "زانیاری: هەروەها دەتوانیت دەق زیادبکەیت بە دوو کرتەکردن لە هەر شوێنێک لەگەڵ ئامڕازی دەستنیشانکردن", @@ -256,7 +248,7 @@ "resize": "دەتوانیت ڕێژەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی گۆڕینی قەبارەدا،\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە", "resizeImage": "دەتوانیت بە ئازادی قەبارە بگۆڕیت بە ڕاگرتنی SHIFT،\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە", "rotate": "دەتوانیت گۆشەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی سوڕانەوەدا", - "lineEditor_info": "", + "lineEditor_info": "یان Ctrl یان Cmd بگرە و دوانە کلیک بکە یانیش پەنجە بنێ بە Ctrl یان Cmd + ئینتەر بۆ دەستکاریکردنی خاڵەکان", "lineEditor_pointSelected": "بۆ لابردنی خاڵەکان Delete دابگرە، Ctrl Cmd+D بکە بۆ لەبەرگرتنەوە، یان بۆ جووڵە ڕاکێشان بکە", "lineEditor_nothingSelected": "خاڵێک هەڵبژێرە بۆ دەستکاریکردن (SHIFT ڕابگرە بۆ هەڵبژاردنی چەندین)،\nیان Alt ڕابگرە و کلیک بکە بۆ زیادکردنی خاڵە نوێیەکان", "placeImage": "کلیک بکە بۆ دانانی وێنەکە، یان کلیک بکە و ڕایبکێشە بۆ ئەوەی قەبارەکەی بە دەستی دابنێیت", @@ -264,7 +256,7 @@ "bindTextToElement": "بۆ زیادکردنی دەق enter بکە", "deepBoxSelect": "CtrlOrCmd ڕابگرە بۆ هەڵبژاردنی قووڵ، و بۆ ڕێگریکردن لە ڕاکێشان", "eraserRevert": "بۆ گەڕاندنەوەی ئەو توخمانەی کە بۆ سڕینەوە نیشانە کراون، Alt ڕابگرە", - "firefox_clipboard_write": "" + "firefox_clipboard_write": "ئەم تایبەتمەندییە بە ئەگەرێکی زۆرەوە دەتوانرێت چالاک بکرێت بە ڕێکخستنی ئاڵای \"dom.events.asyncClipboard.clipboardItem\" بۆ \"true\". بۆ گۆڕینی ئاڵاکانی وێبگەڕ لە فایەرفۆکسدا، سەردانی لاپەڕەی \"about:config\" بکە." }, "canvasError": { "cannotShowPreview": "ناتوانرێ پێشبینین پیشان بدرێت", @@ -272,16 +264,11 @@ "canvasTooBigTip": "زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک لە یەکتر نزیک بکەوە." }, "errorSplash": { - "headingMain_pre": "تووشی هەڵەیەک بوو. هەوڵ بدە ", - "headingMain_button": "دووبارە بارکردنی لاپەڕەکە.", - "clearCanvasMessage": "ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە ", - "clearCanvasMessage_button": "خاوێنکردنەوەی تابلۆکە.", + "headingMain": "تووشی هەڵەیەک بوو. هەوڵ بدە ", + "clearCanvasMessage": "ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە ", "clearCanvasCaveat": " ئەمە دەبێتە هۆی لەدەستدانی ئەوەی کە کردوتە ", - "trackedToSentry_pre": "هەڵەکە لەگەڵ ناسێنەری ", - "trackedToSentry_post": " لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.", - "openIssueMessage_pre": "ئێمە زۆر وریا بووین کە زانیارییەکانی دیمەنەکەت لەسەر هەڵەکە نەخەینەڕوو. ئەگەر دیمەنەکەت تایبەت نییە، تکایە بیر لە بەدواداچوون بکەنەوە بۆ ئێمە ", - "openIssueMessage_button": "شوێنپێهەڵگری هەڵە.", - "openIssueMessage_post": " تکایە ئەم زانیارییانەی خوارەوە کۆپی بکە و لە بەشی کێشەکانی Github دایبنێ.", + "trackedToSentry": "هەڵەکە لەگەڵ ناسێنەری {{eventId}} لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.", + "openIssueMessage": "ئێمە زۆر وریا بووین کە زانیارییەکانی دیمەنەکەت لەسەر هەڵەکە نەخەینەڕوو. ئەگەر دیمەنەکەت تایبەت نییە، تکایە بیر لە بەدواداچوون بکەنەوە بۆ ئێمە تکایە ئەم زانیارییانەی خوارەوە کۆپی بکە و لە بەشی کێشەکانی Github دایبنێ.", "sceneContent": "پێکهاتەی ناو دیمەنەکە:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "دوو گرتە", "drag": "راکێشان", "editor": "دەستکاریکەر", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "دەستکاری خاڵەکانی هێڵ/تیر بکە", + "editText": "دەستکاری دەق بکە / لەیبڵێک زیاد بکە", "github": "کێشەیەکت دۆزیەوە؟ پێشکەشکردن", "howto": "شوێن ڕینماییەکانمان بکەوە", "or": "یان", @@ -334,8 +321,8 @@ "zoomToFit": "زووم بکە بۆ ئەوەی لەگەڵ هەموو توخمەکاندا بگونجێت", "zoomToSelection": "زووم بکە بۆ دەستنیشانکراوەکان", "toggleElementLock": "قفڵ/کردنەوەی دەستنیشانکراوەکان", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "لاپەڕەکە بجوڵێنە بۆ سەرەوە/خوارەوە", + "movePageLeftRight": "لاپەڕەکە بجوڵێنە بۆ چەپ/ڕاست" }, "clearCanvasDialog": { "title": "تابلۆکە خاوێن بکەرەوە" @@ -361,29 +348,16 @@ "required": "داواکراوە", "website": "URLێکی دروست تێبنووسە" }, - "noteDescription": { - "pre": "کتێبخانەکەت بنێرە بۆ ئەوەی بخرێتە ناو ", - "link": "کۆگای کتێبخانەی گشتی", - "post": "بۆ ئەوەی کەسانی تر لە وێنەکێشانەکانیاندا بەکاری بهێنن." - }, - "noteGuidelines": { - "pre": "کتێبخانەکە پێویستە سەرەتا بە دەست پەسەند بکرێت. تکایە بفەرمو بە خوێندنەوەی ", - "link": "ڕێنماییەکان", - "post": " پێش پێشکەشکردن. پێویستت بە ئەژمێری GitHub دەبێت بۆ پەیوەندیکردن و گۆڕانکاری ئەگەر داوای لێکرا، بەڵام بە توندی پێویست نییە." - }, - "noteLicense": { - "pre": "بە پێشکەشکردن، تۆ ڕەزامەندیت لەسەر بڵاوکردنەوەی کتێبخانەکە بەپێی ", - "link": "مۆڵەتی MIT، ", - "post": "کە بە کورتی مانای ئەوەیە کە هەرکەسێک دەتوانێت بە بێ سنوور بەکاری بهێنێت" - }, + "noteDescription": "کتێبخانەکەت بنێرە بۆ ئەوەی بخرێتە ناو کۆگای کتێبخانەی گشتیبۆ ئەوەی کەسانی تر لە وێنەکێشانەکانیاندا بەکاری بهێنن.", + "noteGuidelines": "کتێبخانەکە پێویستە سەرەتا بە دەست پەسەند بکرێت. تکایە بفەرمو بە خوێندنەوەی ڕێنماییەکان پێش پێشکەشکردن. پێویستت بە ئەژمێری GitHub دەبێت بۆ پەیوەندیکردن و گۆڕانکاری ئەگەر داوای لێکرا، بەڵام بە توندی پێویست نییە.", + "noteLicense": "بە پێشکەشکردن، تۆ ڕەزامەندیت لەسەر بڵاوکردنەوەی کتێبخانەکە بەپێی مۆڵەتی MIT، کە بە کورتی مانای ئەوەیە کە هەرکەسێک دەتوانێت بە بێ سنوور بەکاری بهێنێت", "noteItems": "هەر شتێکی کتێبخانە دەبێت ناوی تایبەتی خۆی هەبێت بۆ ئەوەی بتوانرێت فلتەر بکرێت. ئەم بابەتانەی کتێبخانانەی خوارەوە لەخۆدەگرێت:", "atleastOneLibItem": "تکایە بەلایەنی کەمەوە یەک بڕگەی کتێبخانە دیاریبکە بۆ دەستپێکردن", "republishWarning": "تێبینی: هەندێک لە ئایتمە دیاریکراوەکان نیشانکراون وەک ئەوەی پێشتر بڵاوکراونەتەوە/نێردراون. تەنها پێویستە شتەکان دووبارە پێشکەش بکەیتەوە لە کاتی نوێکردنەوەی کتێبخانەیەکی هەبوو یان پێشکەشکردن." }, "publishSuccessDialog": { "title": "کتێبخانە پێشکەش کرا", - "content": "سوپاس {{authorName}}. کتێبخانەکەت پێشکەش کراوە بۆ پێداچوونەوە. دەتوانیت بەدواداچوون بۆ دۆخەکە بکەیت", - "link": "لێرە" + "content": "سوپاس {{authorName}}. کتێبخانەکەت پێشکەش کراوە بۆ پێداچوونەوە. دەتوانیت بەدواداچوون بۆ دۆخەکە بکەیتلێرە" }, "confirmDialog": { "resetLibrary": "ڕێکخستنەوەی کتێبخانە", @@ -417,7 +391,7 @@ "fileSavedToFilename": "هەڵگیراوە بۆ {filename}", "canvas": "تابلۆ", "selection": "دەستنیشانکراوەکان", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "بۆ دانانەوە وەکو یەک توخم یان دانانەوە بۆ نێو دەسکاریکەرێکی دەق کە بوونی هەیە {{shortcut}} بەکاربهێنە" }, "colors": { "ffffff": "سپی", @@ -468,15 +442,15 @@ }, "welcomeScreen": { "app": { - "center_heading": "", - "center_heading_plus": "", - "menuHint": "" + "center_heading": "هەموو داتاکانت لە ناوخۆی وێنگەڕەکەتدا پاشەکەوت کراوە.", + "center_heading_plus": "ویستت بڕۆیت بۆ Excalidraw+?", + "menuHint": "هەناردەکردن، ڕێکخستنەکان، زمانەکان، ..." }, "defaults": { - "menuHint": "", - "center_heading": "", - "toolbarHint": "", - "helpHint": "" + "menuHint": "هەناردەکردن، ڕێکخستنەکان، و زیاتر...", + "center_heading": "دایاگرامەکان. ئاسان. کراون.", + "toolbarHint": "ئامرازێک هەڵبگرە و دەستبکە بە کێشان!", + "helpHint": "قەدبڕەکان و یارمەتی" } } } diff --git a/src/locales/lt-LT.json b/src/locales/lt-LT.json index d80739f09..20ce45a5e 100644 --- a/src/locales/lt-LT.json +++ b/src/locales/lt-LT.json @@ -54,6 +54,7 @@ "veryLarge": "Labai didelis", "solid": "", "hachure": "", + "zigzag": "", "crossHatch": "", "thin": "Plonas", "bold": "Pastorintas", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", + "headingMain": "", "clearCanvasMessage": "", - "clearCanvasMessage_button": "", "clearCanvasCaveat": "", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Privalomas", "website": "Įveskite teisingą nuorodą (URL)" }, - "noteDescription": { - "pre": "Pateik savo biblioteką, jog ji galėtų būti įtraukta į ", - "link": "", - "post": "jog kiti žmonės galėtų tai naudoti savo piešiniuose." - }, - "noteGuidelines": { - "pre": "Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti ", - "link": "gairės", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "MIT licencija, ", - "post": "" - }, + "noteDescription": "Pateik savo biblioteką, jog ji galėtų būti įtraukta į jog kiti žmonės galėtų tai naudoti savo piešiniuose.", + "noteGuidelines": "Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti gairės", + "noteLicense": "MIT licencija, ", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "Biblioteka pateikta", - "content": "Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būseną", - "link": "čia" + "content": "Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būsenąčia" }, "confirmDialog": { "resetLibrary": "Atstatyti biblioteką", diff --git a/src/locales/lv-LV.json b/src/locales/lv-LV.json index 4a311f7cd..c8c90d426 100644 --- a/src/locales/lv-LV.json +++ b/src/locales/lv-LV.json @@ -54,6 +54,7 @@ "veryLarge": "Ļoti liels", "solid": "Pilns", "hachure": "Svītrots", + "zigzag": "Zigzaglīnija", "crossHatch": "Šķērssvītrots", "thin": "Šaurs", "bold": "Trekns", @@ -110,7 +111,7 @@ "increaseFontSize": "Palielināt fonta izmēru", "unbindText": "Atdalīt tekstu", "bindText": "Piesaistīt tekstu figūrai", - "createContainerFromText": "", + "createContainerFromText": "Ietilpināt tekstu figurā", "link": { "edit": "Rediģēt saiti", "create": "Izveidot saiti", @@ -194,7 +195,7 @@ "resetLibrary": "Šī funkcija iztukšos bibliotēku. Vai turpināt?", "removeItemsFromsLibrary": "Vai izņemt {{count}} vienumu(s) no bibliotēkas?", "invalidEncryptionKey": "Šifrēšanas atslēgai jābūt 22 simbolus garai. Tiešsaistes sadarbība ir izslēgta.", - "collabOfflineWarning": "" + "collabOfflineWarning": "Nav pieejams interneta pieslēgums.\nJūsu izmaiņas netiks saglabātas!" }, "errors": { "unsupportedFileType": "Neatbalstīts datnes veids.", @@ -207,19 +208,10 @@ "collabSaveFailed": "Darbs nav saglabāts datubāzē. Ja problēma turpinās, saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.", "collabSaveFailed_sizeExceeded": "Darbs nav saglabāts datubāzē, šķiet, ka tāfele ir pārāk liela. Saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -237,7 +229,7 @@ "penMode": "Pildspalvas režīms – novērst pieskaršanos", "link": "Pievienot/rediģēt atlasītās figūras saiti", "eraser": "Dzēšgumija", - "hand": "" + "hand": "Roka (panoramēšanas rīks)" }, "headings": { "canvasActions": "Tāfeles darbības", @@ -245,7 +237,7 @@ "shapes": "Formas" }, "hints": { - "canvasPanning": "", + "canvasPanning": "Lai bīdītu tāfeli, turiet nospiestu ritināšanas vai atstarpes taustiņu, vai izmanto rokas rīku", "linearElement": "Klikšķiniet, lai sāktu zīmēt vairākus punktus; velciet, lai zīmētu līniju", "freeDraw": "Spiediet un velciet; atlaidiet, kad pabeidzat", "text": "Ieteikums: lai pievienotu tekstu, varat arī jebkur dubultklikšķināt ar atlases rīku", @@ -264,7 +256,7 @@ "bindTextToElement": "Spiediet ievades taustiņu, lai pievienotu tekstu", "deepBoxSelect": "Turient nospiestu Ctrl vai Cmd, lai atlasītu dziļumā un lai nepieļautu objektu pavilkšanu", "eraserRevert": "Turiet Alt, lai noņemtu elementus no dzēsšanas atlases", - "firefox_clipboard_write": "" + "firefox_clipboard_write": "Šis iestatījums var tikt ieslēgts ar \"dom.events.asyncClipboard.clipboardItem\" marķieri pārslēgtu uz \"true\". Lai mainītu pārlūka marķierus Firefox, apmeklē \"about:config\" lapu." }, "canvasError": { "cannotShowPreview": "Nevar rādīt priekšskatījumu", @@ -272,16 +264,11 @@ "canvasTooBigTip": "Ieteikums: mēģiniet satuvināt pašus tālākos elementus." }, "errorSplash": { - "headingMain_pre": "Notikusi kļūda. Mēģiniet ", - "headingMain_button": "pārlādēt lapu.", - "clearCanvasMessage": "Ja pārlādēšana nestrādā, mēģiniet ", - "clearCanvasMessage_button": "notīrot tāfeli.", + "headingMain": "Notikusi kļūda. Mēģiniet ", + "clearCanvasMessage": "Ja pārlādēšana nestrādā, mēģiniet ", "clearCanvasCaveat": " Tas novedīs pie darba zaudēšanas ", - "trackedToSentry_pre": "Kļūda ar kodu ", - "trackedToSentry_post": " tika noteikta mūsu sistēmā.", - "openIssueMessage_pre": "Mēs uzmanījāmies, lai neiekļautu jūsu ainas informāciju šajā kļūdā. Ja jūsu aina nav privāta, lūdzu ziņojiet par šo kļūdu mūsu ", - "openIssueMessage_button": "kļūdu uzskaitē.", - "openIssueMessage_post": " Lūdzu, miniet sekojošo informāciju to kopējot un ielīmējot jūsu ziņojumā platformā GitHub.", + "trackedToSentry": "Kļūda ar kodu {{eventId}} tika noteikta mūsu sistēmā.", + "openIssueMessage": "Mēs uzmanījāmies, lai neiekļautu jūsu ainas informāciju šajā kļūdā. Ja jūsu aina nav privāta, lūdzu ziņojiet par šo kļūdu mūsu Lūdzu, miniet sekojošo informāciju to kopējot un ielīmējot jūsu ziņojumā platformā GitHub.", "sceneContent": "Ainas saturs:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "dubultklikšķis", "drag": "vilkt", "editor": "Redaktors", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Rediģēt līniju/bultu punktus", + "editText": "Rediģēt tekstu/pievienot birku", "github": "Sastapāt kļūdu? Ziņot", "howto": "Sekojiet mūsu instrukcijām", "or": "vai", @@ -361,29 +348,16 @@ "required": "Obligāts", "website": "Ievadiet derīgu URL" }, - "noteDescription": { - "pre": "Iesniegt savu bibliotēku iekļaušanai ", - "link": "publiskajā bibliotēku datubāzē", - "post": ", lai citi to varētu izmantot savos zīmējumos." - }, - "noteGuidelines": { - "pre": "Šai bibliotēkai vispirms jātiek manuāli apstiprinātai. Lūdzu, izlasiet ", - "link": "norādījumus", - "post": " pirms iesniegšanas. Jums vajadzēs GitHub kontu, lai sazinātos un veiktu izmaiņas, ja tādas būs pieprasītas, bet tas nav absolūti nepieciešams." - }, - "noteLicense": { - "pre": "Iesniedzot bibliotēku, jūs piekrītat tās publicēšanai saskaņā ar ", - "link": "MIT Licenci, ", - "post": "kas īsumā nozīmē, ka jebkurš to varēs izmantot bez ierobežojumiem." - }, + "noteDescription": "Iesniegt savu bibliotēku iekļaušanai publiskajā bibliotēku datubāzē, lai citi to varētu izmantot savos zīmējumos.", + "noteGuidelines": "Šai bibliotēkai vispirms jātiek manuāli apstiprinātai. Lūdzu, izlasiet norādījumus pirms iesniegšanas. Jums vajadzēs GitHub kontu, lai sazinātos un veiktu izmaiņas, ja tādas būs pieprasītas, bet tas nav absolūti nepieciešams.", + "noteLicense": "Iesniedzot bibliotēku, jūs piekrītat tās publicēšanai saskaņā ar MIT Licenci, kas īsumā nozīmē, ka jebkurš to varēs izmantot bez ierobežojumiem.", "noteItems": "Katram bibliotēkas vienumam jābūt savam nosaukumam, lai to varētu atrast filtrējot. Tiks iekļauti sekojošie bibliotēkas vienumi:", "atleastOneLibItem": "Lūdzu, atlasiet vismaz vienu bibliotēkas vienumu, lai sāktu darbu", "republishWarning": "Ievēro: daži no atzīmētajiem objektiem jau atzīmēti kā publicēti vai iesniegti publicēšanai. Tos vajadzētu atkārtoti iesniegt tikai tad, ja vēlies labot esošo bibliotēku." }, "publishSuccessDialog": { "title": "Bibliotēka iesniegta", - "content": "Paldies, {{authorName}}! Jūsu bibliotēka iesniegta izskatīšanai. Jūs varat izsekot iesnieguma statusam", - "link": "šeit" + "content": "Paldies, {{authorName}}! Jūsu bibliotēka iesniegta izskatīšanai. Jūs varat izsekot iesnieguma statusamšeit" }, "confirmDialog": { "resetLibrary": "Atiestatīt bibliotēku", @@ -468,15 +442,15 @@ }, "welcomeScreen": { "app": { - "center_heading": "", - "center_heading_plus": "", - "menuHint": "" + "center_heading": "Visi jūsu dati tiek glabāti uz vietas jūsu pārlūkā.", + "center_heading_plus": "Vai tā vietā vēlies doties uz Excalidraw+?", + "menuHint": "Eksportēšana, iestatījumi, valodas..." }, "defaults": { - "menuHint": "", - "center_heading": "", - "toolbarHint": "", - "helpHint": "" + "menuHint": "Eksportēšana, iestatījumi un vēl...", + "center_heading": "Diagrammas. Izveidotas. Vienkārši.", + "toolbarHint": "Izvēlies rīku un sāc zīmēt!", + "helpHint": "Īsceļi un palīdzība" } } } diff --git a/src/locales/mr-IN.json b/src/locales/mr-IN.json index 4f58009c9..85e346d08 100644 --- a/src/locales/mr-IN.json +++ b/src/locales/mr-IN.json @@ -54,6 +54,7 @@ "veryLarge": "फार मोठं", "solid": "भरीव", "hachure": "हैशूर रेखांकन", + "zigzag": "वाकडी तिकड़ी", "crossHatch": "आडव्या रेघा", "thin": "पातळ", "bold": "जाड", @@ -207,19 +208,10 @@ "collabSaveFailed": "काही कारणा निमित्त आतल्या डेटाबेसमध्ये जतन करू शकत नाही। समस्या तशिस राहिल्यास, तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही तुमची फाइल स्थानिक जतन करावी.", "collabSaveFailed_sizeExceeded": "लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।\n\nबॅकएंड डेटाबेसमध्ये जतन करू शकत नाही, कॅनव्हास खूप मोठा असल्याचे दिसते. तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही फाइल स्थानिक पातळीवर जतन करावी.", "brave_measure_text_error": { - "start": "असं वाटते की तुम्हीं \"Brave\" \"Browser\" वापरत आहात, त्या बरोबार", - "aggressive_block_fingerprint": "बोटांचे ठसे उग्रतेने थाम्बवाचे", - "setting_enabled": "सेटिंग्स सक्रिय केले आहेत", - "break": "ह्या कारणानिं", - "text_elements": "पाठ अवयव तुटु शकतात", - "in_your_drawings": "तुमच्या चित्रिकराणतले", - "strongly_recommend": "आमचा ज़ोरदार सल्ला असा कि सेटिंग्स निष्क्रिय करावे. तुम्हीं", - "steps": "ह्या स्टेप्स", - "how": "घेउ शकतात", - "disable_setting": " जर सेटिंग्स निष्क्रिय करून पाठ्य दिसणे ठीक नसेल होत तर", - "issue": "मुद्दा", - "write": "आमच्या Github वर, किव्हा आम्हाला", - "discord": "\"Discord\" वर लिहां" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "टीप: दूर चा तत्व थोडं जवळ आणण्याचा प्रयत्न करावा." }, "errorSplash": { - "headingMain_pre": "त्रुटि आली. परत प्रयत्न करा ", - "headingMain_button": "ह्या पानाला पुनः लोड करा.", - "clearCanvasMessage": "रीलोडिंग होत नसल्यास, परत प्रयत्न करा ", - "clearCanvasMessage_button": "पटल स्वच्छ करित आहे.", + "headingMain": "त्रुटि आली. परत प्रयत्न करा ", + "clearCanvasMessage": "रीलोडिंग होत नसल्यास, परत प्रयत्न करा ", "clearCanvasCaveat": " त्यामुळे केलेल्या कामाचे नुकसान होईल ", - "trackedToSentry_pre": "त्रुटि क्रमांक के साथ त्रुटि ", - "trackedToSentry_post": " आमच्या प्रणाली नी निरीक्षण केले होते.", - "openIssueMessage_pre": "त्रुटीत तुमची दृश्य माहिती समाविष्ट न करण्यासाठी आम्ही खूप सावध होतो. तुमचा सीन खाजगी नसल्यास, कृपया आम्हाला पुढ च्या कारवाई साठी सम्पर्क साधा ", - "openIssueMessage_button": "त्रुटि व्यवस्थापन.", - "openIssueMessage_post": " कृपया गिटहब समस्येमध्ये कॉपी आणि पेस्ट करून खालिल माहिती समाविष्ट करा.", + "trackedToSentry": "त्रुटि क्रमांक के साथ त्रुटि {{eventId}} आमच्या प्रणाली नी निरीक्षण केले होते.", + "openIssueMessage": "त्रुटीत तुमची दृश्य माहिती समाविष्ट न करण्यासाठी आम्ही खूप सावध होतो. तुमचा सीन खाजगी नसल्यास, कृपया आम्हाला पुढ च्या कारवाई साठी सम्पर्क साधा कृपया गिटहब समस्येमध्ये कॉपी आणि पेस्ट करून खालिल माहिती समाविष्ट करा.", "sceneContent": "दृश्य विषय:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "आवश्यक आहे", "website": "वैध यू-आर-एल द्या" }, - "noteDescription": { - "pre": "समाविष्ट करण्या साठी तुमचा संग्रह ह्याचात जमा करा ", - "link": "सार्वजनिक संग्रहाचे कोठार", - "post": "इतर लोकांना त्यांच्या रेखाचित्रांमधे वापरण्यासाठी." - }, - "noteGuidelines": { - "pre": "संग्रहाला आधी स्वहस्ते स्वीकृती मिळणे आवश्यक आहे. कृपया हे वाचा ", - "link": "मार्गदर्शक तत्त्वे", - "post": " जमा करण्या पूर्वी, तुमच्या जवळ एक गिटहब खाते असणे आवश्यक आहे जे संवादा साठी आणिक बदल करण्या साठी लागेल, तरी हे सर्व अगदी आवश्यक नाही आहे." - }, - "noteLicense": { - "pre": "जमा करताना तुम्हीं सहमति दाखवतात आहे की संग्रह ह्याचा खाली प्रकाशित होईल ", - "link": "एम-आइ-टी परवाना, ", - "post": "ज्याचा थोडक्यात अर्थ कोणीही निर्बंधांशिवाय वापरू शकतो." - }, + "noteDescription": "समाविष्ट करण्या साठी तुमचा संग्रह ह्याचात जमा करा सार्वजनिक संग्रहाचे कोठारइतर लोकांना त्यांच्या रेखाचित्रांमधे वापरण्यासाठी.", + "noteGuidelines": "संग्रहाला आधी स्वहस्ते स्वीकृती मिळणे आवश्यक आहे. कृपया हे वाचा मार्गदर्शक तत्त्वे जमा करण्या पूर्वी, तुमच्या जवळ एक गिटहब खाते असणे आवश्यक आहे जे संवादा साठी आणिक बदल करण्या साठी लागेल, तरी हे सर्व अगदी आवश्यक नाही आहे.", + "noteLicense": "जमा करताना तुम्हीं सहमति दाखवतात आहे की संग्रह ह्याचा खाली प्रकाशित होईल एम-आइ-टी परवाना, ज्याचा थोडक्यात अर्थ कोणीही निर्बंधांशिवाय वापरू शकतो.", "noteItems": "प्रतैक संग्रहाचे नाव, नीट शोधनासाठी, असणे आवश्यक आहे. खाली दिलेल्या वस्तु समाविष्ट केल्या जातील:", "atleastOneLibItem": "सुरु करण्यासाठी, कृपया करून, कमित कमी एक वस्तु तरी निवडा", "republishWarning": "टीप: काही निवडक आयटम आधीच प्रकाशित/प्रस्तुत केलेले आहेत. विद्यमान लायब्ररी किंवा प्रस्तुतित आयटम अद्यावित करताना तुम्ही फक्त तो पुन्हा प्रस्तुत करा." }, "publishSuccessDialog": { "title": "संग्रह जमा केला", - "content": "धन्यवाद {{authorName}}. आपला संग्रह पुनरावलोकना साठी जमा झाला आहे. तुम्हीं स्थिति सारखी तपासू सकता", - "link": "इकडे" + "content": "धन्यवाद {{authorName}}. आपला संग्रह पुनरावलोकना साठी जमा झाला आहे. तुम्हीं स्थिति सारखी तपासू सकताइकडे" }, "confirmDialog": { "resetLibrary": "संग्रह पुनर्स्थित करा", diff --git a/src/locales/my-MM.json b/src/locales/my-MM.json index efc874218..50f8bb560 100644 --- a/src/locales/my-MM.json +++ b/src/locales/my-MM.json @@ -54,6 +54,7 @@ "veryLarge": "ပိုကြီး", "solid": "အပြည့်", "hachure": "မျဉ်းစောင်း", + "zigzag": "", "crossHatch": "ဇကာကွက်", "thin": "ပါး", "bold": "ထူ", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "မှတ်ချက်။ ။ဝေးကွာနေသော ပုံများ၊ စာများအား ပိုမိုနီးကပ်အောင်ရွှေ့ကြည့်ပါ။" }, "errorSplash": { - "headingMain_pre": "ချို့ယွင်းမှုဖြစ်ပေါ်ခဲ့သဖြင့် ထပ်မံကြိုးစားကြည့်ရန် ", - "headingMain_button": "စာမျက်နှာအား အသစ်ပြန်လည်ရယူပါ။", - "clearCanvasMessage": "အသစ်ပြန်လည်မရယူနိုင်ပါက ထပ်မံကြိုးစားကြည့်ရန်", - "clearCanvasMessage_button": "ကားချပ်အား ရှင်းလင်းပါ။", + "headingMain": "ချို့ယွင်းမှုဖြစ်ပေါ်ခဲ့သဖြင့် ထပ်မံကြိုးစားကြည့်ရန် ", + "clearCanvasMessage": "အသစ်ပြန်လည်မရယူနိုင်ပါက ထပ်မံကြိုးစားကြည့်ရန်", "clearCanvasCaveat": " ရေးဆွဲထားသည်များ ဆုံးရှုံးနိုင်သည် ", - "trackedToSentry_pre": "ချို့ယွင်းမှုသတ်မှတ်ချက် ", - "trackedToSentry_post": " အားစနစ်အတွင်းခြေရာကောက်ပြီးပါပြီ။", - "openIssueMessage_pre": "ချို့ယွင်းမှုမှတ်တမ်းတွင် အရေးကြီးအချက်အလက်များပါဝင်မှုမရှိစေရန်အထူးသတိပြုပါသည်။ မပါဝင်ပါက ဆက်လက်ဆောင်ရွက်ရန် ", - "openIssueMessage_button": "ချို့ယွင်းမှုအားခြေရာကောက်ပါ။", - "openIssueMessage_post": " အောက်ပါအချက်အလက်များအား Github တွင် Issue အနေဖြင့်ဖြည့်သွင်းဖော်ပြပေးပါ။", + "trackedToSentry": "ချို့ယွင်းမှုသတ်မှတ်ချက် {{eventId}} အားစနစ်အတွင်းခြေရာကောက်ပြီးပါပြီ။", + "openIssueMessage": "ချို့ယွင်းမှုမှတ်တမ်းတွင် အရေးကြီးအချက်အလက်များပါဝင်မှုမရှိစေရန်အထူးသတိပြုပါသည်။ မပါဝင်ပါက ဆက်လက်ဆောင်ရွက်ရန် အောက်ပါအချက်အလက်များအား Github တွင် Issue အနေဖြင့်ဖြည့်သွင်းဖော်ပြပေးပါ။", "sceneContent": "မြင်ကွင်းပါအချက်အလက်။ ။" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/nb-NO.json b/src/locales/nb-NO.json index 27e717d2a..66b197317 100644 --- a/src/locales/nb-NO.json +++ b/src/locales/nb-NO.json @@ -54,6 +54,7 @@ "veryLarge": "Svært stor", "solid": "Helfarge", "hachure": "Skravert", + "zigzag": "Sikk-sakk", "crossHatch": "Krysskravert", "thin": "Tynn", "bold": "Tykk", @@ -207,19 +208,10 @@ "collabSaveFailed": "Kan ikke lagre i backend-databasen. Hvis problemer vedvarer, bør du lagre filen lokalt for å sikre at du ikke mister arbeidet.", "collabSaveFailed_sizeExceeded": "Kunne ikke lagre til backend-databasen, lerretet ser ut til å være for stort. Du bør lagre filen lokalt for å sikre at du ikke mister arbeidet ditt.", "brave_measure_text_error": { - "start": "Ser ut som du bruker Brave nettleser med", - "aggressive_block_fingerprint": "Blokker fingeravtrykk aggressivt", - "setting_enabled": "innstilling aktivert", - "break": "Dette kan føre til at den bryter", - "text_elements": "Tekstelementer", - "in_your_drawings": "i tegningene dine", - "strongly_recommend": "Vi anbefaler på det sterkeste å deaktivere denne innstillingen. Du kan følge dette", - "steps": "disse trinnene", - "how": "om hvordan det skal gjøres", - "disable_setting": " Hvis deaktivering av denne innstillingen ikke fikser visningen av tekstelementer, kan du åpne en", - "issue": "sak", - "write": "på vår GitHub, eller skriv oss på", - "discord": "Discord" + "line1": "Ser ut som om du bruker Brave nettleser med Aggressivt Block Finger -innstillingen aktivert.", + "line2": "Dette kan resultere i å bryte tekst-elementene i tegningene.", + "line3": "Vi anbefaler på det sterkeste å deaktivere denne innstillingen. Du kan følge disse trinnene om hvordan du gjør det.", + "line4": "Hvis deaktivering av denne innstillingen ikke fikser visningen av tekstelementer, vennligst åpne en sak på vår GitHub, eller skriv oss på Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tips: Prøv å flytte de ytterste elementene litt tettere sammen." }, "errorSplash": { - "headingMain_pre": "En feil oppsto. Prøv ", - "headingMain_button": "å laste siden på nytt.", - "clearCanvasMessage": "Om ny sidelasting ikke fungerer, prøv ", - "clearCanvasMessage_button": "å tømme lerretet.", + "headingMain": "En feil oppsto. Prøv ", + "clearCanvasMessage": "Om ny sidelasting ikke fungerer, prøv ", "clearCanvasCaveat": " Dette vil føre til tap av arbeid ", - "trackedToSentry_pre": "Feilen med identifikator ", - "trackedToSentry_post": " ble logget i vårt system.", - "openIssueMessage_pre": "Vi er veldig nøye med å ikke inkludere dine scene-opplysninger i feilen. Hvis din scene ikke er privat, vurder å følge opp i vårt ", - "openIssueMessage_button": "feilrapporteringssystem.", - "openIssueMessage_post": " Ta med opplysningene nedenfor ved å kopiere og lime inn i GitHub-saken.", + "trackedToSentry": "Feilen med identifikator {{eventId}} ble logget i vårt system.", + "openIssueMessage": "Vi er veldig nøye med å ikke inkludere dine scene-opplysninger i feilen. Hvis din scene ikke er privat, vurder å følge opp i vårt Ta med opplysningene nedenfor ved å kopiere og lime inn i GitHub-saken.", "sceneContent": "Scene-innhold:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Påkrevd", "website": "Angi en gyldig nettadresse" }, - "noteDescription": { - "pre": "Send inn biblioteket ditt som skal inkluderes i ", - "link": "kildekode for offentlig bibliotek", - "post": "for andre å bruke dem i tegninger." - }, - "noteGuidelines": { - "pre": "Biblioteket må godkjennes manuelt først. Les ", - "link": "retningslinjene", - "post": " før innsending. Du vil trenge en GitHub-konto for å kommunisere og gjøre endringer hvis ønsket, men det er ikke påkrevd." - }, - "noteLicense": { - "pre": "Ved å sende inn godtar du at biblioteket blir publisert under ", - "link": "MIT-lisens, ", - "post": "som kortfattet betyr at andre kan bruke dem uten begrensninger." - }, + "noteDescription": "Send inn biblioteket ditt som skal inkluderes i kildekode for offentlig bibliotekfor andre å bruke dem i tegninger.", + "noteGuidelines": "Biblioteket må godkjennes manuelt først. Les retningslinjene før innsending. Du vil trenge en GitHub-konto for å kommunisere og gjøre endringer hvis ønsket, men det er ikke påkrevd.", + "noteLicense": "Ved å sende inn godtar du at biblioteket blir publisert under MIT-lisens, som kortfattet betyr at andre kan bruke dem uten begrensninger.", "noteItems": "Hvert bibliotek må ha sitt eget navn, så det er filtrerbart. Følgende bibliotekselementer vil bli inkludert:", "atleastOneLibItem": "Vennligst velg minst ett bibliotek for å komme i gang", "republishWarning": "Merk: noen av de valgte elementene er merket som allerede publisert/sendt. Du bør kun sende inn elementer på nytt når du oppdaterer et eksisterende bibliotek eller innlevering." }, "publishSuccessDialog": { "title": "Bibliotek innsendt", - "content": "Takk {{authorName}}. Ditt bibliotek har blitt sendt inn for gjennomgang. Du kan spore statusen", - "link": "her" + "content": "Takk {{authorName}}. Ditt bibliotek har blitt sendt inn for gjennomgang. Du kan spore statusenher" }, "confirmDialog": { "resetLibrary": "Nullstill bibliotek", diff --git a/src/locales/nl-NL.json b/src/locales/nl-NL.json index 7c2bb105b..e94b89f0e 100644 --- a/src/locales/nl-NL.json +++ b/src/locales/nl-NL.json @@ -54,6 +54,7 @@ "veryLarge": "Zeer groot", "solid": "Ingekleurd", "hachure": "Arcering", + "zigzag": "", "crossHatch": "Tweemaal gearceerd", "thin": "Dun", "bold": "Vet", @@ -207,19 +208,10 @@ "collabSaveFailed": "Kan niet opslaan in de backend database. Als de problemen blijven bestaan, moet u het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.", "collabSaveFailed_sizeExceeded": "Kan de backend database niet opslaan, het canvas lijkt te groot te zijn. U moet het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.", "brave_measure_text_error": { - "start": "Het ziet er uit dat u de Brave browser gebruikt met de", - "aggressive_block_fingerprint": "", - "setting_enabled": "instelling ingeschakeld", - "break": "Dit kan leiden tot het breken van de", - "text_elements": "Tekst Elementen", - "in_your_drawings": "in je tekeningen", - "strongly_recommend": "We raden u ten zeerste aan deze instelling uit te schakelen. U kunt dit volgen", - "steps": "deze stappen", - "how": "over hoe dit te doen", - "disable_setting": " Indien het uitschakelen van deze instelling de weergave van tekst elementen niet wijzigt, open dan een", - "issue": "probleem", - "write": "", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tip: beweeg de verste elementen iets dichter bij elkaar." }, "errorSplash": { - "headingMain_pre": "Fout opgetreden. Probeer ", - "headingMain_button": "de pagina opnieuw laden.", - "clearCanvasMessage": "Als herladen niet werkt, probeer ", - "clearCanvasMessage_button": "het canvas te wissen.", + "headingMain": "Fout opgetreden. Probeer ", + "clearCanvasMessage": "Als herladen niet werkt, probeer ", "clearCanvasCaveat": " Dit zal leiden tot verlies van je werk ", - "trackedToSentry_pre": "De fout met ID ", - "trackedToSentry_post": " was gevolgd op ons systeem.", - "openIssueMessage_pre": "We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze ", - "openIssueMessage_button": "bugtracker.", - "openIssueMessage_post": " Kopieer de informatie hieronder naar de GitHub issue.", + "trackedToSentry": "De fout met ID {{eventId}} was gevolgd op ons systeem.", + "openIssueMessage": "We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze Kopieer de informatie hieronder naar de GitHub issue.", "sceneContent": "Scène-inhoud:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Vereist", "website": "Vul een geldige URL in" }, - "noteDescription": { - "pre": "", - "link": "openbare repository", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "richtlijnen", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "MIT-licentie, ", - "post": "" - }, + "noteDescription": "openbare repository", + "noteGuidelines": "richtlijnen", + "noteLicense": "MIT-licentie, ", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "Bibliotheek ingediend", - "content": "", - "link": "Hier" + "content": "Hier" }, "confirmDialog": { "resetLibrary": "Reset bibliotheek", diff --git a/src/locales/nn-NO.json b/src/locales/nn-NO.json index 1733b84c4..755101171 100644 --- a/src/locales/nn-NO.json +++ b/src/locales/nn-NO.json @@ -54,6 +54,7 @@ "veryLarge": "Svært stor", "solid": "Solid", "hachure": "Skravert", + "zigzag": "", "crossHatch": "Krysskravert", "thin": "Tynn", "bold": "Tjukk", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tips: prøv å flytte elementa som er lengst frå kvarandre, litt nærare kvarandre." }, "errorSplash": { - "headingMain_pre": "Ein feil oppstod. Prøv ", - "headingMain_button": "å laste sida på nytt.", - "clearCanvasMessage": "Om ny sidelasting ikkje fungerer, prøv ", - "clearCanvasMessage_button": "å tømme lerretet.", + "headingMain": "Ein feil oppstod. Prøv ", + "clearCanvasMessage": "Om ny sidelasting ikkje fungerer, prøv ", "clearCanvasCaveat": " Dette vil føre til tap av arbeid ", - "trackedToSentry_pre": "Feilen med identifikator ", - "trackedToSentry_post": " vart logga i systemet vårt.", - "openIssueMessage_pre": "Vi er veldig nøye med å ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere å følge opp i ", - "openIssueMessage_button": "feilrapporteringssystemet vårt.", - "openIssueMessage_post": " Ta med opplysingane nedanfor ved å kopiere og lime inn i GitHub-saka.", + "trackedToSentry": "Feilen med identifikator {{eventId}} vart logga i systemet vårt.", + "openIssueMessage": "Vi er veldig nøye med å ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere å følge opp i Ta med opplysingane nedanfor ved å kopiere og lime inn i GitHub-saka.", "sceneContent": "Scene-innhald:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Kravt", "website": "Fyll inn ein gyldig URL" }, - "noteDescription": { - "pre": "Send inn biblioteket ditt til inkludering i ", - "link": "den offentlege bibliotek-kjeldekoda", - "post": "slik at andre kan bruke det i teikningane deira." - }, - "noteGuidelines": { - "pre": "Biblioteket må godkjennast manuelt fyrst. Ver vennleg å lese ", - "link": "retningslinjene", - "post": " før du sender inn. Du kjem til å trenge ein GitHub-konto for å kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt." - }, - "noteLicense": { - "pre": "Ved å sende inn godkjenner du at biblioteket vert publisert under ", - "link": "MIT-lisensen, ", - "post": "som kort sagt betyr at kven som helst kan bruke det utan avgrensingar." - }, + "noteDescription": "Send inn biblioteket ditt til inkludering i den offentlege bibliotek-kjeldekodaslik at andre kan bruke det i teikningane deira.", + "noteGuidelines": "Biblioteket må godkjennast manuelt fyrst. Ver vennleg å lese retningslinjene før du sender inn. Du kjem til å trenge ein GitHub-konto for å kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt.", + "noteLicense": "Ved å sende inn godkjenner du at biblioteket vert publisert under MIT-lisensen, som kort sagt betyr at kven som helst kan bruke det utan avgrensingar.", "noteItems": "Kvart bibliotekselement må ha eit eige namn, slik at det er mogleg å filtrere. Dei følgande bibliotekselementa blir inkludert:", "atleastOneLibItem": "Ver vennleg å markere minst eitt bibliotekselement for å starte", "republishWarning": "" }, "publishSuccessDialog": { "title": "Bibliotek innsendt", - "content": "Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr på status", - "link": "her" + "content": "Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr på statusher" }, "confirmDialog": { "resetLibrary": "Tilbakestill bibliotek", diff --git a/src/locales/oc-FR.json b/src/locales/oc-FR.json index a9ca70a84..a15c33b93 100644 --- a/src/locales/oc-FR.json +++ b/src/locales/oc-FR.json @@ -54,6 +54,7 @@ "veryLarge": "Gradassa", "solid": "Solide", "hachure": "Raia", + "zigzag": "", "crossHatch": "Raia crosada", "thin": "Fin", "bold": "Espés", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Astúcia : ensajatz de sarrar los elements mai alonhats." }, "errorSplash": { - "headingMain_pre": "Una error s’es producha. Ensajatz ", - "headingMain_button": "recargament de la pagina.", - "clearCanvasMessage": "Se recargar fonciona pas, ensajatz ", - "clearCanvasMessage_button": "d’escafar los canabasses.", + "headingMain": "Una error s’es producha. Ensajatz ", + "clearCanvasMessage": "Se recargar fonciona pas, ensajatz ", "clearCanvasCaveat": " Menarà a una pèrda del trabalh ", - "trackedToSentry_pre": "Error amb l’identificant ", - "trackedToSentry_post": " es estada enregistrada sus nòstre sistèma.", - "openIssueMessage_pre": "Èrem plan prudents per inclure pas d’informacions de la scèna vòstra sus l’error. Se vòstra scèna es pas privada, volgatz considerar de perseguir sus nòstre ", - "openIssueMessage_button": "traçadors d’avarias.", - "openIssueMessage_post": " Volgatz inclure las informacions çai-jos en las copiant e pegant a l’issue GitHub.", + "trackedToSentry": "Error amb l’identificant {{eventId}} es estada enregistrada sus nòstre sistèma.", + "openIssueMessage": "Èrem plan prudents per inclure pas d’informacions de la scèna vòstra sus l’error. Se vòstra scèna es pas privada, volgatz considerar de perseguir sus nòstre Volgatz inclure las informacions çai-jos en las copiant e pegant a l’issue GitHub.", "sceneContent": "Contengut de la scèna :" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Requerit", "website": "Picatz una URL valida" }, - "noteDescription": { - "pre": "Enviatz vòstra bibliotèca per èsser compresa al ", - "link": "repertòri public de bibliotèca", - "post": "per que los autres l’utilizen dins lor dessenhs." - }, - "noteGuidelines": { - "pre": "Qualqu’un deu aprovar la bibliotèca manualament per començar. Volgatz legir las ", - "link": "linhas directrises", - "post": " abans de sometre. Vos farà mestièr un compte GitHub per comunicar e realizar de modificacions se demandadas, mas es pas complètament obligatòri." - }, - "noteLicense": { - "pre": "En sometent, acceptatz que la bibliotèca siá publicada sota la ", - "link": "Licéncia MIT, ", - "post": "que significa en brèu que qual que siá pòt l’utilizar sens cap de restriccion." - }, + "noteDescription": "Enviatz vòstra bibliotèca per èsser compresa al repertòri public de bibliotècaper que los autres l’utilizen dins lor dessenhs.", + "noteGuidelines": "Qualqu’un deu aprovar la bibliotèca manualament per començar. Volgatz legir las linhas directrises abans de sometre. Vos farà mestièr un compte GitHub per comunicar e realizar de modificacions se demandadas, mas es pas complètament obligatòri.", + "noteLicense": "En sometent, acceptatz que la bibliotèca siá publicada sota la Licéncia MIT, que significa en brèu que qual que siá pòt l’utilizar sens cap de restriccion.", "noteItems": "Cada element de bibliotèca deu aver un nom pròpri per èsser filtrable. Los elements de bibliotèca seguentas seràn incluses :", "atleastOneLibItem": "Volgatz seleccionar almens un element de bibliotèca per començar", "republishWarning": "Nòta : d’unes elements seleccionats son marcats ja coma publicats/enviats. Deuriatz sonque tornar enviar los elements pendent l’actualizacion d’una bibliotèca existenta o un mandadís." }, "publishSuccessDialog": { "title": "Bibliotèca somesa", - "content": "Mercés {{authorName}}. Vòstre bibliotèca es estada somesa per repassa. Podètz seguir l’avançament", - "link": "aquí" + "content": "Mercés {{authorName}}. Vòstre bibliotèca es estada somesa per repassa. Podètz seguir l’avançamentaquí" }, "confirmDialog": { "resetLibrary": "Reïnicializar la bibliotèca", diff --git a/src/locales/pa-IN.json b/src/locales/pa-IN.json index 31c11ceb8..06ae1c178 100644 --- a/src/locales/pa-IN.json +++ b/src/locales/pa-IN.json @@ -1,7 +1,7 @@ { "labels": { "paste": "ਪੇਸਟ ਕਰੋ", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "ਸਾਦੇ ਪਾਠ ਵਜੋਂ ਪੇਸਟ ਕਰੋ", "pasteCharts": "ਚਾਰਟ ਪੇਸਟ ਕਰੋ", "selectAll": "ਸਾਰੇ ਚੁਣੋ", "multiSelect": "ਐਲੀਮੈਂਟ ਨੂੰ ਚੋਣ ਵਿੱਚ ਜੋੜੋ", @@ -10,7 +10,7 @@ "copy": "ਕਾਪੀ ਕਰੋ", "copyAsPng": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕਰੋ", "copyAsSvg": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ SVG ਵਜੋਂ ਕਾਪੀ ਕਰੋ", - "copyText": "", + "copyText": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਪਾਠ ਵਜੋਂ ਕਾਪੀ ਕਰੋ", "bringForward": "ਅੱਗੇ ਲਿਆਓ", "sendToBack": "ਸਭ ਤੋਂ ਪਿੱਛੇ ਭੇਜੋ", "bringToFront": "ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ", @@ -54,6 +54,7 @@ "veryLarge": "ਬਹੁਤ ਵੱਡਾ", "solid": "ਠੋਸ", "hachure": "ਤਿਰਛੀਆਂ ਗਰਿੱਲਾਂ", + "zigzag": "", "crossHatch": "ਜਾਲੀ", "thin": "ਪਤਲੀ", "bold": "ਮੋਟੀ", @@ -72,7 +73,7 @@ "layers": "ਪਰਤਾਂ", "actions": "ਕਾਰਵਾਈਆਂ", "language": "ਭਾਸ਼ਾ", - "liveCollaboration": "", + "liveCollaboration": "ਲਾਇਵ ਸਹਿਯੋਗ...", "duplicateSelection": "ਡੁਪਲੀਕੇਟ ਬਣਾਓ", "untitled": "ਬੇ-ਸਿਰਨਾਵਾਂ", "name": "ਨਾਂ", @@ -108,37 +109,37 @@ "excalidrawLib": "ਐਕਸਕਲੀਡਰਾਅ ਲਾਇਬ੍ਰੇਰੀ", "decreaseFontSize": "ਫੌਂਟ ਦਾ ਅਕਾਰ ਘਟਾਓ", "increaseFontSize": "ਫੌਂਟ ਦਾ ਅਕਾਰ ਵਧਾਓ", - "unbindText": "", + "unbindText": "ਪਾਠ ਨੂੰ ਵੱਖ ਕਰੋ", "bindText": "ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਨਾਲ ਬੰਨ੍ਹੋ", - "createContainerFromText": "", + "createContainerFromText": "ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਇਕੱਠਾ ਕਰੋ", "link": { "edit": "ਕੜੀ ਸੋਧੋ", "create": "ਕੜੀ ਬਣਾਓ", "label": "ਕੜੀ" }, "lineEditor": { - "edit": "", - "exit": "" + "edit": "ਪੰਕਤੀ ਸੋਧੋ", + "exit": "ਪੰਕਤੀ ਸੋਧਕ 'ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" }, "elementLock": { - "lock": "", - "unlock": "", - "lockAll": "", - "unlockAll": "" + "lock": "ਲਾਕ ਕਰੋ", + "unlock": "ਅਨਲਾਕ ਕਰੋ", + "lockAll": "ਸਭ ਲਾਕ ਕਰੋ", + "unlockAll": "ਸਭ ਅਨਲਾਕ ਕਰੋ" }, - "statusPublished": "", - "sidebarLock": "" + "statusPublished": "ਪ੍ਰਕਾਸ਼ਤ ਹੈ", + "sidebarLock": "ਸਾਈਡਬਾਰ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖੋ" }, "library": { - "noItems": "", + "noItems": "ਹਾਲੇ ਤੱਕ ਕੋਈ ਚੀਜ ਜੋੜੀ ਨਹੀਂ ਗਈ...", "hint_emptyLibrary": "", "hint_emptyPrivateLibrary": "" }, "buttons": { "clearReset": "ਕੈਨਵਸ ਰੀਸੈੱਟ ਕਰੋ", "exportJSON": "ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", - "exportImage": "", - "export": "", + "exportImage": "ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ...", + "export": "ਇਸ ਵਿੱਚ ਸਾਂਭੋ...", "exportToPng": "PNG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", "exportToSvg": "SVG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", "copyToClipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ", @@ -146,7 +147,7 @@ "scale": "ਪੈਮਾਇਸ਼", "save": "ਮੌਜੂਦਾ ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ", "saveAs": "ਇਸ ਵਜੋਂ ਸਾਂਭੋ", - "load": "", + "load": "ਖੋਲ੍ਹੋ", "getShareableLink": "ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਲਵੋ", "close": "ਬੰਦ ਕਰੋ", "selectLanguage": "ਭਾਸ਼ਾ ਚੁਣੋ", @@ -180,7 +181,7 @@ "couldNotLoadInvalidFile": "ਨਜਾਇਜ਼ ਫਾਈਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕੇ", "importBackendFailed": "ਬੈਕਐੱਨਡ ਤੋਂ ਆਯਾਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹੇ।", "cannotExportEmptyCanvas": "ਖਾਲੀ ਕੈਨਵਸ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ।", - "couldNotCopyToClipboard": "", + "couldNotCopyToClipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।", "decryptFailed": "ਡਾਟਾ ਡੀਕਰਿਪਟ ਨਹੀਂ ਕਰ ਸਕੇ।", "uploadedSecurly": "ਅੱਪਲੋਡ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤੀ ਹੋਈ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ Excalidraw ਸਰਵਰ ਅਤੇ ਤੀਜੀ ਧਿਰ ਦੇ ਬੰਦੇ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹ ਨਹੀਂ ਸਕਦੇ।", "loadSceneOverridePrompt": "ਬਾਹਰੀ ਡਰਾਇੰਗ ਨੂੰ ਲੋਡ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਸਮੱਗਰੀ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?", @@ -197,29 +198,20 @@ "collabOfflineWarning": "" }, "errors": { - "unsupportedFileType": "", - "imageInsertError": "", - "fileTooBig": "", + "unsupportedFileType": "ਫਾਈਲ ਦੀ ਕਿਸਮ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।", + "imageInsertError": "ਚਿੱਤਰ ਸ਼ਾਮਲ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ...", + "fileTooBig": "ਫਾਈਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ। ਵੱਧ-ਤੋਂ-ਵੱਧ ਪ੍ਰਵਾਨਤ ਅਕਾਰ {{maxSize}} ਹੈ।", "svgImageInsertError": "", "invalidSVGString": "SVG ਨਜਾਇਜ਼ ਹੈ।", "cannotResolveCollabServer": "", - "importLibraryError": "", + "importLibraryError": "ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ", "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "ਨੁਸਖਾ: ਸਭ ਤੋਂ ਦੂਰ ਸਥਿੱਤ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਨੇੜੇ ਲਿਆ ਕੇ ਦੇਖੋ।" }, "errorSplash": { - "headingMain_pre": "ਗਲਤੀ ਹੋਈ। ਇਹ ਕਰਕੇ ਦੇਖੋ ", - "headingMain_button": "ਪੰਨਾ ਮੁੜ-ਲੋਡ ਕਰੋ।", - "clearCanvasMessage": "ਜੇ ਮੁੜ-ਲੋਡ ਕਰਨਾ ਕੰਮ ਨਾ ਕਰੇ, ਤਾਂ ਇਹ ਕਰਕੇ ਦੇਖੋ ", - "clearCanvasMessage_button": "ਕੈਨਵਸ ਸਾਫ ਕਰੋ।", + "headingMain": "ਗਲਤੀ ਹੋਈ। ਇਹ ਕਰਕੇ ਦੇਖੋ ", + "clearCanvasMessage": "ਜੇ ਮੁੜ-ਲੋਡ ਕਰਨਾ ਕੰਮ ਨਾ ਕਰੇ, ਤਾਂ ਇਹ ਕਰਕੇ ਦੇਖੋ ", "clearCanvasCaveat": " ਇਹ ਸਾਰਾ ਕੰਮ ਗਵਾ ਦੇਵੇਗਾ ", - "trackedToSentry_pre": "ਗਲਤੀ ਸੂਚਕ ", - "trackedToSentry_post": " ਸਾਡੇ ਸਿਸਟਮ 'ਤੇ ਟਰੈਕ ਕੀਤਾ ਗਿਆ ਸੀ।", - "openIssueMessage_pre": "ਅਸੀਂ ਬੜੇ ਸਾਵਧਾਨ ਸੀ ਕਿ ਗਲਤੀ ਵਿੱਚ ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਨਾ ਕਰੀਏ। ਜੇ ਤੁਹਾਡਾ ਦ੍ਰਿਸ਼ ਨਿੱਜੀ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ 'ਤੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ ", - "openIssueMessage_button": "ਬੱਗ ਟਰੈਕਰ।", - "openIssueMessage_post": "ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਗਿੱਟਹੱਬ ਮੁੱਦੇ ਵਿੱਚ ਪੇਸਟ ਕਰਕੇ ਸ਼ਾਮਲ ਕਰੋ ਜੀ।", + "trackedToSentry": "ਗਲਤੀ ਸੂਚਕ {{eventId}} ਸਾਡੇ ਸਿਸਟਮ 'ਤੇ ਟਰੈਕ ਕੀਤਾ ਗਿਆ ਸੀ।", + "openIssueMessage": "ਅਸੀਂ ਬੜੇ ਸਾਵਧਾਨ ਸੀ ਕਿ ਗਲਤੀ ਵਿੱਚ ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਨਾ ਕਰੀਏ। ਜੇ ਤੁਹਾਡਾ ਦ੍ਰਿਸ਼ ਨਿੱਜੀ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ 'ਤੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਗਿੱਟਹੱਬ ਮੁੱਦੇ ਵਿੱਚ ਪੇਸਟ ਕਰਕੇ ਸ਼ਾਮਲ ਕਰੋ ਜੀ।", "sceneContent": "ਦ੍ਰਿਸ਼ ਦੀ ਸਮੱਗਰੀ:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "ਲੋੜੀਂਦਾ", "website": "ਜਾਇਜ਼ URL ਭਰੋ" }, - "noteDescription": { - "pre": "", - "link": "ਜਨਤਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਰਿਪਾਜ਼ੀਟਰੀ", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "MIT ਲਾਇਸੈਂਸ, ", - "post": "" - }, + "noteDescription": "ਜਨਤਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਰਿਪਾਜ਼ੀਟਰੀ", + "noteGuidelines": "ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼", + "noteLicense": "MIT ਲਾਇਸੈਂਸ, ", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "ਇੱਥੇ" + "content": "ਇੱਥੇ" }, "confirmDialog": { "resetLibrary": "ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ", diff --git a/src/locales/percentages.json b/src/locales/percentages.json index b28b6c259..b80dce1b4 100644 --- a/src/locales/percentages.json +++ b/src/locales/percentages.json @@ -1,53 +1,55 @@ { "ar-SA": 89, - "bg-BG": 52, - "bn-BD": 57, - "ca-ES": 96, - "cs-CZ": 72, - "da-DK": 31, + "bg-BG": 54, + "bn-BD": 60, + "ca-ES": 97, + "cs-CZ": 74, + "da-DK": 33, "de-DE": 100, - "el-GR": 98, + "el-GR": 97, "en": 100, - "es-ES": 99, - "eu-ES": 99, - "fa-IR": 91, - "fi-FI": 96, - "fr-FR": 99, - "gl-ES": 99, - "he-IL": 99, - "hi-IN": 73, - "hu-HU": 85, - "id-ID": 98, - "it-IT": 99, - "ja-JP": 97, - "kab-KAB": 93, - "kk-KZ": 19, - "ko-KR": 99, - "ku-TR": 91, - "lt-LT": 61, - "lv-LV": 93, - "mr-IN": 100, + "es-ES": 98, + "eu-ES": 98, + "fa-IR": 98, + "fi-FI": 97, + "fr-FR": 98, + "gl-ES": 98, + "he-IL": 96, + "hi-IN": 72, + "hu-HU": 86, + "id-ID": 97, + "it-IT": 98, + "ja-JP": 98, + "kaa": 21, + "kab-KAB": 95, + "kk-KZ": 20, + "km-KH": 10, + "ko-KR": 100, + "ku-TR": 100, + "lt-LT": 63, + "lv-LV": 98, + "mr-IN": 98, "my-MM": 40, "nb-NO": 100, - "nl-NL": 92, - "nn-NO": 86, - "oc-FR": 94, - "pa-IN": 79, - "pl-PL": 87, - "pt-BR": 96, - "pt-PT": 99, + "nl-NL": 93, + "nn-NO": 87, + "oc-FR": 96, + "pa-IN": 88, + "pl-PL": 89, + "pt-BR": 97, + "pt-PT": 98, "ro-RO": 100, - "ru-RU": 96, + "ru-RU": 100, "si-LK": 8, - "sk-SK": 99, + "sk-SK": 100, "sl-SI": 100, - "sv-SE": 99, - "ta-IN": 90, - "th-TH": 39, - "tr-TR": 98, - "uk-UA": 93, - "vi-VN": 52, - "zh-CN": 99, - "zh-HK": 25, + "sv-SE": 100, + "ta-IN": 92, + "th-TH": 41, + "tr-TR": 96, + "uk-UA": 100, + "vi-VN": 57, + "zh-CN": 100, + "zh-HK": 26, "zh-TW": 100 } diff --git a/src/locales/pl-PL.json b/src/locales/pl-PL.json index 1abaa038f..047e5ec6b 100644 --- a/src/locales/pl-PL.json +++ b/src/locales/pl-PL.json @@ -54,6 +54,7 @@ "veryLarge": "Bardzo duży", "solid": "Pełne", "hachure": "Linie", + "zigzag": "", "crossHatch": "Zakreślone", "thin": "Cienkie", "bold": "Pogrubione", @@ -207,19 +208,10 @@ "collabSaveFailed": "Nie udało się zapisać w bazie danych. Jeśli problemy nie ustąpią, zapisz plik lokalnie, aby nie utracić swojej pracy.", "collabSaveFailed_sizeExceeded": "Nie udało się zapisać w bazie danych — dokument jest za duży. Zapisz plik lokalnie, aby nie utracić swojej pracy.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "problem", - "write": "na naszym GitHubie lub napisz do nas na", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Wskazówka: spróbuj nieco zbliżyć najdalej wysunięte elementy." }, "errorSplash": { - "headingMain_pre": "Wystąpił błąd. Spróbuj ", - "headingMain_button": "odświeżyć stronę.", - "clearCanvasMessage": "Jeśli odświeżenie strony nie zadziałało, spróbuj ", - "clearCanvasMessage_button": "usunąć wszystko z dokumentu.", + "headingMain": "Wystąpił błąd. Spróbuj ", + "clearCanvasMessage": "Jeśli odświeżenie strony nie zadziałało, spróbuj ", "clearCanvasCaveat": " Pamiętaj tylko, że spowoduje to utratę całej twojej pracy ", - "trackedToSentry_pre": "Błąd o identyfikatorze ", - "trackedToSentry_post": " został zaraportowany w naszym systemie.", - "openIssueMessage_pre": "Szanujemy twoją prywatność i raport nie zawierał żadnych danych dotyczących tego nad czym pracowałeś, natomiast jeżeli jesteś w stanie podzielić się tym nad czym pracowałeś, prosimy o dodatkowy raport poprzez ", - "openIssueMessage_button": "nasze narzędzie do raportowania błędów.", - "openIssueMessage_post": " Prosimy o dołączenie poniższej informacji poprzez skopiowanie jej i umieszczenie jej w zgłoszeniu na portalu GitHub.", + "trackedToSentry": "Błąd o identyfikatorze {{eventId}} został zaraportowany w naszym systemie.", + "openIssueMessage": "Szanujemy twoją prywatność i raport nie zawierał żadnych danych dotyczących tego nad czym pracowałeś, natomiast jeżeli jesteś w stanie podzielić się tym nad czym pracowałeś, prosimy o dodatkowy raport poprzez Prosimy o dołączenie poniższej informacji poprzez skopiowanie jej i umieszczenie jej w zgłoszeniu na portalu GitHub.", "sceneContent": "Zawartość dokumentu:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Wymagane", "website": "Wprowadź prawidłowy adres URL" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "dla innych osób do wykorzystania w swoich rysunkach." - }, - "noteGuidelines": { - "pre": "Biblioteka musi być najpierw zatwierdzona ręcznie. Przeczytaj ", - "link": "wytyczne", - "post": "" - }, - "noteLicense": { - "pre": "Wysyłając zgadzasz się, że biblioteka zostanie opublikowana pod ", - "link": "Licencja MIT, ", - "post": "w skrócie, każdy może z nich korzystać bez ograniczeń." - }, + "noteDescription": "dla innych osób do wykorzystania w swoich rysunkach.", + "noteGuidelines": "Biblioteka musi być najpierw zatwierdzona ręcznie. Przeczytaj wytyczne", + "noteLicense": "Wysyłając zgadzasz się, że biblioteka zostanie opublikowana pod Licencja MIT, w skrócie, każdy może z nich korzystać bez ograniczeń.", "noteItems": "", "atleastOneLibItem": "Proszę wybrać co najmniej jeden element biblioteki, by rozpocząć", "republishWarning": "" }, "publishSuccessDialog": { "title": "Biblioteka została przesłana", - "content": "Dziękujemy {{authorName}}. Twoja biblioteka została przesłana do sprawdzenia. Możesz śledzić jej stan", - "link": "tutaj" + "content": "Dziękujemy {{authorName}}. Twoja biblioteka została przesłana do sprawdzenia. Możesz śledzić jej stantutaj" }, "confirmDialog": { "resetLibrary": "Zresetuj Bibliotekę", diff --git a/src/locales/pt-BR.json b/src/locales/pt-BR.json index d790c5db5..bf4f7d445 100644 --- a/src/locales/pt-BR.json +++ b/src/locales/pt-BR.json @@ -54,6 +54,7 @@ "veryLarge": "Muito grande", "solid": "Sólido", "hachure": "Hachura", + "zigzag": "", "crossHatch": "Hachura cruzada", "thin": "Fino", "bold": "Espesso", @@ -207,19 +208,10 @@ "collabSaveFailed": "Não foi possível salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.", "collabSaveFailed_sizeExceeded": "Não foi possível salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Dica: tente aproximar um pouco os elementos mais distantes." }, "errorSplash": { - "headingMain_pre": "Foi encontrado um erro. Tente ", - "headingMain_button": "recarregar a página.", - "clearCanvasMessage": "Se recarregar a página não funcionar, tente ", - "clearCanvasMessage_button": "limpando a tela.", + "headingMain": "Foi encontrado um erro. Tente ", + "clearCanvasMessage": "Se recarregar a página não funcionar, tente ", "clearCanvasCaveat": " Isso resultará em perda de trabalho ", - "trackedToSentry_pre": "O erro com o identificador ", - "trackedToSentry_post": " foi rastreado no nosso sistema.", - "openIssueMessage_pre": "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso ", - "openIssueMessage_button": "rastreador de bugs.", - "openIssueMessage_post": " Por favor, inclua informações abaixo, copiando e colando para a issue do GitHub.", + "trackedToSentry": "O erro com o identificador {{eventId}} foi rastreado no nosso sistema.", + "openIssueMessage": "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando para a issue do GitHub.", "sceneContent": "Conteúdo da cena:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Obrigatório", "website": "Informe uma URL válida" }, - "noteDescription": { - "pre": "Envie sua biblioteca para ser incluída no ", - "link": "repositório de biblioteca pública", - "post": "para outras pessoas usarem em seus desenhos." - }, - "noteGuidelines": { - "pre": "A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o ", - "link": "orientações", - "post": " antes de enviar. Você precisará de uma conta do GitHub para se comunicar e fazer alterações quando solicitado, mas não é estritamente necessário." - }, - "noteLicense": { - "pre": "Ao enviar, você concorda que a biblioteca será publicada sob a ", - "link": "Licença MIT, ", - "post": "o que, em suma, significa que qualquer pessoa pode utilizá-los sem restrições." - }, + "noteDescription": "Envie sua biblioteca para ser incluída no repositório de biblioteca públicapara outras pessoas usarem em seus desenhos.", + "noteGuidelines": "A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o orientações antes de enviar. Você precisará de uma conta do GitHub para se comunicar e fazer alterações quando solicitado, mas não é estritamente necessário.", + "noteLicense": "Ao enviar, você concorda que a biblioteca será publicada sob a Licença MIT, o que, em suma, significa que qualquer pessoa pode utilizá-los sem restrições.", "noteItems": "Cada item da biblioteca deve ter seu próprio nome para que seja filtrável. Os seguintes itens da biblioteca serão incluídos:", "atleastOneLibItem": "Por favor, selecione pelo menos um item da biblioteca para começar", "republishWarning": "Nota: alguns dos itens selecionados estão marcados como já publicado/enviado. Você só deve reenviar itens ao atualizar uma biblioteca existente ou submissão." }, "publishSuccessDialog": { "title": "Biblioteca enviada", - "content": "Obrigado {{authorName}}. Sua biblioteca foi enviada para análise. Você pode acompanhar o status", - "link": "aqui" + "content": "Obrigado {{authorName}}. Sua biblioteca foi enviada para análise. Você pode acompanhar o statusaqui" }, "confirmDialog": { "resetLibrary": "Redefinir biblioteca", diff --git a/src/locales/pt-PT.json b/src/locales/pt-PT.json index 7ce28f00f..0070d162c 100644 --- a/src/locales/pt-PT.json +++ b/src/locales/pt-PT.json @@ -54,6 +54,7 @@ "veryLarge": "Muito grande", "solid": "Sólido", "hachure": "Eclosão", + "zigzag": "ziguezague", "crossHatch": "Sombreado", "thin": "Fino", "bold": "Espesso", @@ -207,19 +208,10 @@ "collabSaveFailed": "Não foi possível guardar na base de dados de backend. Se os problemas persistirem, guarde o ficheiro localmente para garantir que não perde o seu trabalho.", "collabSaveFailed_sizeExceeded": "Não foi possível guardar na base de dados de backend, o ecrã parece estar muito grande. Deve guardar o ficheiro localmente para garantir que não perde o seu trabalho.", "brave_measure_text_error": { - "start": "Parece que está a usar o navegador Brave com o", - "aggressive_block_fingerprint": "Bloqueio Agressivo via Impressão Digital", - "setting_enabled": "activo", - "break": "Isso pode desconfigurar os", - "text_elements": "Elementos de Texto", - "in_your_drawings": "nos seus desenhos", - "strongly_recommend": "Recomendamos fortemente a desactivação desta configuração. Pode seguir", - "steps": "os seguintes passos", - "how": "para saber como o fazer", - "disable_setting": " Se desactivar esta configuração não consertar a exibição de elementos de texto, por favor, abra um", - "issue": "problema", - "write": "no nosso GitHub ou então escreva-nos no", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Dica: tente aproximar um pouco os elementos mais distantes." }, "errorSplash": { - "headingMain_pre": "Foi encontrado um erro. Tente ", - "headingMain_button": "recarregar a página.", - "clearCanvasMessage": "Se a recarga não funcionar, tente ", - "clearCanvasMessage_button": "a limpar a área de desenho.", + "headingMain": "Foi encontrado um erro. Tente ", + "clearCanvasMessage": "Se a recarga não funcionar, tente ", "clearCanvasCaveat": " Isso resultará em perda de trabalho ", - "trackedToSentry_pre": "O erro com o identificador ", - "trackedToSentry_post": " foi rastreado no nosso sistema.", - "openIssueMessage_pre": "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso ", - "openIssueMessage_button": "rastreador de bugs.", - "openIssueMessage_post": " Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.", + "trackedToSentry": "O erro com o identificador {{eventId}} foi rastreado no nosso sistema.", + "openIssueMessage": "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.", "sceneContent": "Conteúdo da cena:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "clique duplo", "drag": "arrastar", "editor": "Editor", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Editar pontos de linha/seta", + "editText": "Editar texto / adicionar etiqueta", "github": "Encontrou algum problema? Informe-nos", "howto": "Siga os nossos guias", "or": "ou", @@ -361,29 +348,16 @@ "required": "Obrigatório", "website": "Introduza um URL válido" }, - "noteDescription": { - "pre": "Envie a sua biblioteca para ser incluída no ", - "link": "repositório de bibliotecas públicas", - "post": "para outras pessoas a poderem usar nos seus próprios desenhos." - }, - "noteGuidelines": { - "pre": "A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia ", - "link": "orientações", - "post": " antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária." - }, - "noteLicense": { - "pre": "Ao enviar, concorda que a biblioteca será publicada sob a ", - "link": "Licença MIT, ", - "post": "o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições." - }, + "noteDescription": "Envie a sua biblioteca para ser incluída no repositório de bibliotecas públicaspara outras pessoas a poderem usar nos seus próprios desenhos.", + "noteGuidelines": "A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia orientações antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária.", + "noteLicense": "Ao enviar, concorda que a biblioteca será publicada sob a Licença MIT, o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições.", "noteItems": "Cada item da biblioteca deve ter o seu próprio nome para que este seja pesquisável com filtros. Os seguintes itens da biblioteca serão incluídos:", "atleastOneLibItem": "Por favor, seleccione pelo menos um item da biblioteca para começar", "republishWarning": "Nota: alguns dos itens seleccionados estão marcados como já publicados/enviados. Só deve reenviar itens ao actualizar uma biblioteca existente ou submissão." }, "publishSuccessDialog": { "title": "Biblioteca enviada", - "content": "Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o status", - "link": "aqui" + "content": "Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o statusaqui" }, "confirmDialog": { "resetLibrary": "Repor a biblioteca", diff --git a/src/locales/ro-RO.json b/src/locales/ro-RO.json index a0e3b5883..1f478f36a 100644 --- a/src/locales/ro-RO.json +++ b/src/locales/ro-RO.json @@ -54,6 +54,7 @@ "veryLarge": "Foarte mare", "solid": "Plină", "hachure": "Hașură", + "zigzag": "Zigzag", "crossHatch": "Hașură transversală", "thin": "Subțire", "bold": "Îngroșată", @@ -207,19 +208,10 @@ "collabSaveFailed": "Nu s-a putut salva în baza de date la nivel de server. Dacă problemele persistă, ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.", "collabSaveFailed_sizeExceeded": "Nu s-a putut salva în baza de date la nivel de server, întrucât se pare că pânza este prea mare. Ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.", "brave_measure_text_error": { - "start": "Se pare că folosești navigatorul Brave cu", - "aggressive_block_fingerprint": "setarea „Blocați amprentarea” în modul strict", - "setting_enabled": "activată", - "break": "Acest lucru ar putea duce la întreruperea", - "text_elements": "elementelor de text", - "in_your_drawings": "din desenele tale", - "strongly_recommend": "Recomandăm insistent dezactivarea acestei setări. Poți urma", - "steps": "acești pași", - "how": "pentru efectuarea procedurii", - "disable_setting": " Dacă dezactivarea acestei setări nu remediază afișarea elementelor de text, deschide", - "issue": "un tichet cu probleme", - "write": "pe pagina noastră de GitHub sau scrie-ne pe", - "discord": "Discord" + "line1": "Se pare că folosești navigatorul Brave cu opțiunea strictă pentru blocarea amprentării.", + "line2": "Acest lucru poate duce la întreruperea elementelor text din desene.", + "line3": "Îți recomandăm ferm să dezactivezi această setare. Poți urma acești pași pentru a face acest lucru.", + "line4": "Dacă dezactivarea acestei setări nu duce la remedierea afișării elementelor text, deschide un tichet de problemă pe pagina noastră de GitHub sau scrie-ne pe Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Sfat: încearcă să apropii puțin mai mult elementele cele mai îndepărtate." }, "errorSplash": { - "headingMain_pre": "A apărut o eroare. Încearcă ", - "headingMain_button": "să reîncarci pagina.", - "clearCanvasMessage": "Dacă reîncărcarea nu funcționează, încearcă ", - "clearCanvasMessage_button": "să golești pânza.", + "headingMain": "A apărut o eroare. Încearcă .", + "clearCanvasMessage": "Dacă reîncărcarea nu funcționează, încearcă .", "clearCanvasCaveat": " Acest lucru va duce la pierderea progresului ", - "trackedToSentry_pre": "Eroarea cu identificatorul ", - "trackedToSentry_post": " a fost urmărită în sistemul nostru.", - "openIssueMessage_pre": "Am luat măsuri de precauție pentru a nu include informații despre scenă în eroare. Dacă scena nu este privată, te rugăm să ne oferi mai multe informații în ", - "openIssueMessage_button": "monitorul nostru pentru erori.", - "openIssueMessage_post": " Te rugăm să incluzi informațiile de mai jos prin copierea și lipirea în problema GitHub.", + "trackedToSentry": "Eroarea cu identificatorul {{eventId}} a fost urmărită în sistemul nostru.", + "openIssueMessage": "Am luat măsuri de precauție pentru a nu include informații despre scenă în eroare. Dacă scena nu este privată, oferă-ne mai multe informații în . Include informațiile de mai jos copiindu-le și lipindu-le în tichetul cu problemă de pe GitHub.", "sceneContent": "Conținutul scenei:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Obligatoriu", "website": "Introdu un URL valid" }, - "noteDescription": { - "pre": "Trimite-ți biblioteca pentru fi inclus în ", - "link": "depozitul de biblioteci publice", - "post": "pentru utilizarea de către alte persoane în desenele lor." - }, - "noteGuidelines": { - "pre": "Biblioteca trebuie aprobată manual. Citește ", - "link": "orientările", - "post": " înainte de trimitere. Vei avea nevoie de un cont GitHub pentru a comunica și efectua modificări, dacă este cazul, însă nu este strict necesar." - }, - "noteLicense": { - "pre": "Prin trimiterea bibliotecii, ești de acord că aceasta va fi publicată sub ", - "link": "Licența MIT, ", - "post": "care, pe scurt, înseamnă că oricine o poate folosi fără restricții." - }, + "noteDescription": "Trimite-ți biblioteca pentru a fi inclusă în depozitul de biblioteci publice în vederea utilizării de către alte persoane în desenele lor.", + "noteGuidelines": "Biblioteca trebuie aprobată manual mai întâi. Citește orientările înainte de trimitere. Vei avea nevoie de un cont GitHub pentru a comunica și efectua modificări, dacă este cazul, însă nu este strict necesar.", + "noteLicense": "Prin trimiterea bibliotecii, ești de acord că aceasta va fi publicată sub Licența MIT, care, pe scurt, înseamnă că oricine o poate folosi fără restricții.", "noteItems": "Fiecare element din bibliotecă trebuie să aibă propriul nume astfel încât să fie filtrabil. Următoarele elemente din bibliotecă vor fi incluse:", "atleastOneLibItem": "Selectează cel puțin un element din bibliotecă pentru a începe", "republishWarning": "Observație: unele dintre elementele selectate sunt marcate ca fiind deja publicate/trimise. Ar trebui să retrimiți elemente numai atunci când actualizezi o trimitere sau o bibliotecă existentă." }, "publishSuccessDialog": { "title": "Bibliotecă trimisă", - "content": "Îți mulțumim, {{authorName}}. Biblioteca ta a fost trimisă spre revizuire. Poți urmări starea", - "link": "aici" + "content": "Îți mulțumim, {{authorName}}. Biblioteca a fost trimisă spre revizuire. Poți urmări starea aici" }, "confirmDialog": { "resetLibrary": "Resetare bibliotecă", diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index d4030897c..c4680a7f6 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -54,6 +54,7 @@ "veryLarge": "Очень большой", "solid": "Однотонная", "hachure": "Штрихованная", + "zigzag": "Зигзаг", "crossHatch": "Перекрестная", "thin": "Тонкая", "bold": "Жирная", @@ -110,7 +111,7 @@ "increaseFontSize": "Увеличить шрифт", "unbindText": "Отвязать текст", "bindText": "Привязать текст к контейнеру", - "createContainerFromText": "", + "createContainerFromText": "Поместить текст в контейнер", "link": { "edit": "Редактировать ссылку", "create": "Создать ссылку", @@ -207,19 +208,10 @@ "collabSaveFailed": "Не удалось сохранить в базу данных. Если проблема повторится, нужно будет сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.", "collabSaveFailed_sizeExceeded": "Не удалось сохранить в базу данных. Похоже, что холст слишком большой. Нужно сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "Похоже, вы используете браузер Brave с включенной опцией Агрессивно блокировать отслеживание.", + "line2": "Это может привести к поломке Текстовых объектов на рисунке.", + "line3": "Мы настоятельно рекомендуем отключить эту настройку. Для этого нужно выполнить эти шаги.", + "line4": "Если отключение этой настройки не исправит отображение текстовых объектов, создайте issue на нашем GitHub или напишите нам в Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Совет: попробуйте сблизить элементы рисунка." }, "errorSplash": { - "headingMain_pre": "Возникла ошибка. Попробуйте ", - "headingMain_button": "перезагрузить страницу.", - "clearCanvasMessage": "Если перезагрузка страницы не помогла, попробуйте ", - "clearCanvasMessage_button": "очистить холст.", + "headingMain": "Возникла ошибка. Попробуйте ", + "clearCanvasMessage": "Если перезагрузка страницы не помогла, попробуйте ", "clearCanvasCaveat": " Текущая работа будет утеряна ", - "trackedToSentry_pre": "Ошибка с идентификатором ", - "trackedToSentry_post": " отслеживается в нашей системе.", - "openIssueMessage_pre": "Для безопасности информация о вашей сцене не включена в ошибку. Если в сцене нет ничего конфиденциального, пожалуйста следуйте нашим ", - "openIssueMessage_button": "баг трекере.", - "openIssueMessage_post": " Пожалуйста, приложите информацию ниже, скопировав и вставив её, в issue GitHub.", + "trackedToSentry": "Ошибка с идентификатором {{eventId}} отслеживается в нашей системе.", + "openIssueMessage": "Для безопасности информация о вашей сцене не включена в ошибку. Если в сцене нет ничего конфиденциального, пожалуйста следуйте нашим Пожалуйста, приложите информацию ниже, скопировав и вставив её, в issue GitHub.", "sceneContent": "Содержание сцены:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "двойной клик", "drag": "перетащить", "editor": "Редактор", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Редактировать концы линий/стрелок", + "editText": "Редактировать текст / добавить метку", "github": "Нашли проблему? Отправьте", "howto": "Следуйте нашим инструкциям", "or": "или", @@ -361,29 +348,16 @@ "required": "Обязательно", "website": "Введите допустимый URL-адрес" }, - "noteDescription": { - "pre": "Отправить вашу библиотеку для включения в ", - "link": "хранилище публичных библиотек", - "post": ", чтобы другие люди могли использовать объекты из вашей библиотеки в своих рисунках." - }, - "noteGuidelines": { - "pre": "Библиотека должна быть подтверждена вручную. Пожалуйста, прочтите ", - "link": "рекомендации", - "post": " перед отправкой. Вам понадобится учетная запись GitHub, чтобы общаться и вносить изменения при необходимости, но это не обязательно." - }, - "noteLicense": { - "pre": "Выполняя отправку, вы соглашаетесь с тем, что библиотека будет опубликована под ", - "link": "лицензией MIT, ", - "post": ", что, вкратце, означает, что каждый может использовать её без ограничений." - }, + "noteDescription": "Отправить вашу библиотеку для включения в хранилище публичных библиотек, чтобы другие люди могли использовать объекты из вашей библиотеки в своих рисунках.", + "noteGuidelines": "Библиотека должна быть подтверждена вручную. Пожалуйста, прочтите рекомендации перед отправкой. Вам понадобится учетная запись GitHub, чтобы общаться и вносить изменения при необходимости, но это не обязательно.", + "noteLicense": "Выполняя отправку, вы соглашаетесь с тем, что библиотека будет опубликована под лицензией MIT, , что, вкратце, означает, что каждый может использовать её без ограничений.", "noteItems": "Каждый объект в библиотеке должен иметь свое собственное имя, чтобы по нему можно было фильтровать. Следующие объекты библиотеки будут включены:", "atleastOneLibItem": "Пожалуйста, выберите хотя бы один объект в библиотеке, чтобы начать", "republishWarning": "Примечание: некоторые из выбранных элементов помечены как уже опубликованные/отправленные. Вы должны повторно отправить элементы только при обновлении существующей библиотеки или сдаче работы." }, "publishSuccessDialog": { "title": "Библиотека отправлена", - "content": "Благодарим вас, {{authorName}}. Ваша библиотека была отправлена на проверку. Вы можете отслеживать статус", - "link": "здесь" + "content": "Благодарим вас, {{authorName}}. Ваша библиотека была отправлена на проверку. Вы можете отслеживать статусздесь" }, "confirmDialog": { "resetLibrary": "Сброс библиотеки", diff --git a/src/locales/si-LK.json b/src/locales/si-LK.json index b84ad567f..60a3d2f1f 100644 --- a/src/locales/si-LK.json +++ b/src/locales/si-LK.json @@ -54,6 +54,7 @@ "veryLarge": "ඉතා විශාල", "solid": "විශාල", "hachure": "මධ්‍යම", + "zigzag": "", "crossHatch": "", "thin": "කෙට්ටු", "bold": "තද", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", + "headingMain": "", "clearCanvasMessage": "", - "clearCanvasMessage_button": "", "clearCanvasCaveat": "", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/sk-SK.json b/src/locales/sk-SK.json index d6322ac1c..4e97ba73e 100644 --- a/src/locales/sk-SK.json +++ b/src/locales/sk-SK.json @@ -54,6 +54,7 @@ "veryLarge": "Veľmi veľké", "solid": "Plná", "hachure": "Šrafovaná", + "zigzag": "Cik-cak", "crossHatch": "Mriežkovaná", "thin": "Tenká", "bold": "Hrubá", @@ -207,19 +208,10 @@ "collabSaveFailed": "Uloženie do databázy sa nepodarilo. Ak tento problém pretrváva uložte si váš súbor lokálne aby ste nestratili vašu prácu.", "collabSaveFailed_sizeExceeded": "Uloženie do databázy sa nepodarilo, pretože veľkosť plátna je príliš veľká. Uložte si váš súbor lokálne aby ste nestratili vašu prácu.", "brave_measure_text_error": { - "start": "Vyzerá to, že používate prehliadač Brave s", - "aggressive_block_fingerprint": "agresívnym blokovaním sledovania", - "setting_enabled": "zapnutým", - "break": "Toto môže znemožniť používanie", - "text_elements": "textových prvkov", - "in_your_drawings": "vo vašich kresbách", - "strongly_recommend": "Odporúčame vypnutie tohto nastavenia. Postupuje podľa", - "steps": "týchto krokov", - "how": "pre jeho vypnutie", - "disable_setting": " Ak sa vypnutím tohto nastavenia problém zobrazenia textových prvkov neodstráni, prosím vytvorte", - "issue": "issue", - "write": "na našom Github-e alebo nám to oznámte na", - "discord": "Discord" + "line1": "Vyzerá to, že používate prehliadač Brave so zapnutým nastavením pre agresívne blokovanie.", + "line2": "To môže spôsobiť nesprávne zobrazenie textových prvkov vo vašej kresbe.", + "line3": "Dôrazne odporúčame vypnutie toho nastavenia. Môžete tak spraviť vykonaním týchto krokov.", + "line4": "Ak vypnutie toho nastavenia nevyrieši problém so zobrazením textových prvkov, prosím ohláste problém na našom GitHub-e alebo nám napíšte na náš Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tip: skúste presunúť najvzdialenejšie prvky bližšie k sebe." }, "errorSplash": { - "headingMain_pre": "Nastala chyba. Vyskúšajte ", - "headingMain_button": "obnoviť stránku.", - "clearCanvasMessage": "Ak obnovenie stránky nepomáha, vyskúšajte ", - "clearCanvasMessage_button": "vyčistiť plátno.", + "headingMain": "Nastala chyba. Vyskúšajte ", + "clearCanvasMessage": "Ak obnovenie stránky nepomáha, vyskúšajte ", "clearCanvasCaveat": " To bude mať za následok stratu práce ", - "trackedToSentry_pre": "Chyba s identifikátorom ", - "trackedToSentry_post": " bola zaznamenaná v našom systéme.", - "openIssueMessage_pre": "Boli sme veľmi opatrní, aby informácie vašej scény neboli v chybe zaznamenané. Ak vaša scéna nie je súkromná, prosím zvážte pokračovanie na naše ", - "openIssueMessage_button": "hlásenie chýb.", - "openIssueMessage_post": " Prosím zahrňte informácie nižšie pomocou kopírovania a prilepenia do GitHub issue.", + "trackedToSentry": "Chyba s identifikátorom {{eventId}} bola zaznamenaná v našom systéme.", + "openIssueMessage": "Boli sme veľmi opatrní, aby informácie vašej scény neboli v chybe zaznamenané. Ak vaša scéna nie je súkromná, prosím zvážte pokračovanie na naše Prosím zahrňte informácie nižšie pomocou kopírovania a prilepenia do GitHub issue.", "sceneContent": "Obsah scény:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "dvojklik", "drag": "potiahnutie", "editor": "Editovanie", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Editácia bodov čiary/šípky", + "editText": "Editácia textu / pridanie štítku", "github": "Objavili ste problém? Nahláste ho", "howto": "Postupujte podľa naších návodov", "or": "alebo", @@ -361,29 +348,16 @@ "required": "Povinné", "website": "Zadajte platnú adresu URL" }, - "noteDescription": { - "pre": "Uverejnite vašu knižnicu vo ", - "link": "verejnom zozname knižníc", - "post": "aby ju aj ostatní mohli použiť v ich náčrtoch." - }, - "noteGuidelines": { - "pre": "Knižnica musí byť najprv manuálne schválená. Prosím prečítajte si ", - "link": "pokyny", - "post": " pred uverejnením. Budete potrebovať Github účet na komunikáciu a vykonanie zmien, ak budú potrebné, avšak nie je to úplne povinné." - }, - "noteLicense": { - "pre": "Potvrdením súhlasíte, že knižnica bude zverejnená s ", - "link": "MIT licenciou, ", - "post": "čo v skratke znamená, že ju môže použiť hocikto bez obmedzení." - }, + "noteDescription": "Uverejnite vašu knižnicu vo verejnom zozname knižnícaby ju aj ostatní mohli použiť v ich náčrtoch.", + "noteGuidelines": "Knižnica musí byť najprv manuálne schválená. Prosím prečítajte si pokyny pred uverejnením. Budete potrebovať Github účet na komunikáciu a vykonanie zmien, ak budú potrebné, avšak nie je to úplne povinné.", + "noteLicense": "Potvrdením súhlasíte, že knižnica bude zverejnená s MIT licenciou, čo v skratke znamená, že ju môže použiť hocikto bez obmedzení.", "noteItems": "Každá položka v knižnici musí mať svoje vlastné meno, aby sa dala vyhľadať. Súčasťou knižnice budú nasledujúce položky:", "atleastOneLibItem": "Začnite prosím zvolením aspoň jednej položky z knižnice", "republishWarning": "Poznámka: Niektoré z vybraných položiek sú už označené ako zverejnené. Ich znovu uverejnenie by ste mali vykovať iba vtedy ak aktualizujete už existujúcu knižnicu alebo požiadavku na uverejnenie." }, "publishSuccessDialog": { "title": "Knižnica uverejnená", - "content": "Ďakujeme vám {{authorName}}. Vaša knižnica bola uverejnená na posúdenie. Stav môžete skontrolovať", - "link": "tu" + "content": "Ďakujeme vám {{authorName}}. Vaša knižnica bola uverejnená na posúdenie. Stav môžete skontrolovaťtu" }, "confirmDialog": { "resetLibrary": "Obnoviť knižnicu", diff --git a/src/locales/sl-SI.json b/src/locales/sl-SI.json index 57199c813..1b5957384 100644 --- a/src/locales/sl-SI.json +++ b/src/locales/sl-SI.json @@ -54,6 +54,7 @@ "veryLarge": "Zelo velika", "solid": "Polno", "hachure": "Šrafura", + "zigzag": "Cikcak", "crossHatch": "Križno", "thin": "Tanko", "bold": "Krepko", @@ -207,19 +208,10 @@ "collabSaveFailed": "Ni bilo mogoče shraniti v zaledno bazo podatkov. Če se težave nadaljujejo, shranite datoteko lokalno, da ne boste izgubili svojega dela.", "collabSaveFailed_sizeExceeded": "Ni bilo mogoče shraniti v zaledno bazo podatkov, zdi se, da je platno preveliko. Datoteko shranite lokalno, da ne izgubite svojega dela.", "brave_measure_text_error": { - "start": "Videti je, da uporabljate brskalnik Brave z omogočeno nastavitvijo", - "aggressive_block_fingerprint": "Agresivno blokiranje prstnih odtisov", - "setting_enabled": " ", - "break": "To bi lahko povzročilo motnje v obnašanju", - "text_elements": "besedilnih elementov", - "in_your_drawings": "v vaših risbah", - "strongly_recommend": "Močno priporočamo, da onemogočite to nastavitev. Sledite", - "steps": "tem korakom,", - "how": "kako to storiti", - "disable_setting": " Če onemogočanje te nastavitve ne popravi prikaza besedilnih elementov, odprite", - "issue": "vprašanje", - "write": "na našem GitHubu ali nam pišite na", - "discord": "Discord" + "line1": "Videti je, da uporabljate brskalnik Brave z omogočeno nastavitvijo Agresivno blokiranje prstnih odtisov.", + "line2": "To bi lahko povzročilo motnje v obnašanju besedilnih elementov v vaših risbah.", + "line3": "Močno priporočamo, da onemogočite to nastavitev. Sledite tem korakom, kako to storiti.", + "line4": "Če onemogočanje te nastavitve ne popravi prikaza besedilnih elementov, odprite vprašanje na našem GitHubu ali nam pišite na Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Nasvet: poskusite premakniti najbolj oddaljene elemente nekoliko bližje skupaj." }, "errorSplash": { - "headingMain_pre": "Prišlo je do napake. Poskusite ", - "headingMain_button": "ponovno naložiti stran.", - "clearCanvasMessage": "Če ponovno nalaganje ne deluje, poskusite ", - "clearCanvasMessage_button": "počistiti platno.", + "headingMain": "Prišlo je do napake. Poskusite ", + "clearCanvasMessage": "Če ponovno nalaganje ne deluje, poskusite ", "clearCanvasCaveat": " To bo povzročilo izgubo dela ", - "trackedToSentry_pre": "Napaka z identifikatorjem ", - "trackedToSentry_post": " smo zabeležili v naš sistem.", - "openIssueMessage_pre": "Zelo smo bili previdni, da v podatke o napaki nismo vključili vaših podatkov o sceni. Če vaša scena ni zasebna, vas prosimo, da napišete več podrobnosti na našem ", - "openIssueMessage_button": "sledilniku hroščev.", - "openIssueMessage_post": " Prosimo, vključite spodnje informacije tako, da jih kopirate in prilepite v GitHub vprašanje.", + "trackedToSentry": "Napaka z identifikatorjem {{eventId}} smo zabeležili v naš sistem.", + "openIssueMessage": "Zelo smo bili previdni, da v podatke o napaki nismo vključili vaših podatkov o sceni. Če vaša scena ni zasebna, vas prosimo, da napišete več podrobnosti na našem Prosimo, vključite spodnje informacije tako, da jih kopirate in prilepite v GitHub vprašanje.", "sceneContent": "Vsebina scene:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Obvezno", "website": "Vnesite veljaven URL" }, - "noteDescription": { - "pre": "Predložite svojo knjižnico, da bo vključena v ", - "link": "javno skladišče knjižnic,", - "post": "da jih drugi lahko uporabljajo v svojih risbah." - }, - "noteGuidelines": { - "pre": "Knjižnica mora biti najprej ročno odobrena. Prosimo vas, da pred oddajanjem preberete naše ", - "link": "smernice.", - "post": "Za komunikacijo in spreminjanje po potrebi boste potrebovali račun GitHub, vendar to ni obvezno." - }, - "noteLicense": { - "pre": "Z oddajo se strinjate, da bo knjižnica objavljena pod ", - "link": "licenco MIT, ", - "post": "kar na kratko pomeni, da jo lahko kdorkoli uporablja brez omejitev." - }, + "noteDescription": "Predložite svojo knjižnico, da bo vključena v javno skladišče knjižnic,da jih drugi lahko uporabljajo v svojih risbah.", + "noteGuidelines": "Knjižnica mora biti najprej ročno odobrena. Prosimo vas, da pred oddajanjem preberete naše smernice.Za komunikacijo in spreminjanje po potrebi boste potrebovali račun GitHub, vendar to ni obvezno.", + "noteLicense": "Z oddajo se strinjate, da bo knjižnica objavljena pod licenco MIT, kar na kratko pomeni, da jo lahko kdorkoli uporablja brez omejitev.", "noteItems": "Vsak element knjižnice mora imeti svoje ime, tako da ga je mogoče filtrirati. Vključeni bodo naslednji elementi knjižnice:", "atleastOneLibItem": "Za začetek izberite vsaj en element knjižnice", "republishWarning": "Opomba: nekateri izbrani predmeti so označeni kot že objavljeni/oddani. Elemente lahko znova oddate samo, ko posodabljate obstoječo knjižnico ali oddajo." }, "publishSuccessDialog": { "title": "Knjižnica oddana", - "content": "{{authorName}}, hvala. Vaša knjižnica je bila poslana v pregled. Stanje lahko spremljate", - "link": "tukaj" + "content": "{{authorName}}, hvala. Vaša knjižnica je bila poslana v pregled. Stanje lahko spremljatetukaj" }, "confirmDialog": { "resetLibrary": "Ponastavi knjižnico", diff --git a/src/locales/sv-SE.json b/src/locales/sv-SE.json index d0392b119..a3d98d7a7 100644 --- a/src/locales/sv-SE.json +++ b/src/locales/sv-SE.json @@ -54,6 +54,7 @@ "veryLarge": "Mycket stor", "solid": "Solid", "hachure": "Skraffering", + "zigzag": "Sicksack", "crossHatch": "Skraffera med kors", "thin": "Tunn", "bold": "Fet", @@ -207,19 +208,10 @@ "collabSaveFailed": "Det gick inte att spara i backend-databasen. Om problemen kvarstår bör du spara filen lokalt för att se till att du inte förlorar ditt arbete.", "collabSaveFailed_sizeExceeded": "Det gick inte att spara till backend-databasen, whiteboarden verkar vara för stor. Du bör spara filen lokalt för att du inte ska förlora ditt arbete.", "brave_measure_text_error": { - "start": "Det ser ut som att du använder webbläsaren Brave med", - "aggressive_block_fingerprint": "Blockera \"Fingerprinting\" aggressivt", - "setting_enabled": "inställningen aktiverad", - "break": "Detta kan resultera i att ha sönder", - "text_elements": "Textelement", - "in_your_drawings": "i dina skisser", - "strongly_recommend": "Vi rekommenderar starkt att inaktivera denna inställning. Du kan följa", - "steps": "dessa steg", - "how": "om hur man gör det", - "disable_setting": " Om inaktivering av den här inställningen inte åtgärdar visningen av textelement, vänligen skapa ett", - "issue": "ärende", - "write": "på vår GitHub, eller skriv till oss på", - "discord": "Discord" + "line1": "Det ser ut som om du använder Brave-webbläsaren med Aggressivt Blockera fingeravtryck inställningen aktiverad.", + "line2": "Detta kan resultera i trasiga Textelement i dina ritningar.", + "line3": "Vi rekommenderar starkt att du inaktiverar den här inställningen. Du kan följa dessa steg för att inaktivera den.", + "line4": "Om inaktivering av denna inställning inte åtgärdar visningen av textelement, öppna ett ärende på vår GitHub, eller skriv till oss på Discord" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Tips: prova att flytta de mest avlägsna elementen lite närmare varandra." }, "errorSplash": { - "headingMain_pre": "Ett fel uppstod. Försök ", - "headingMain_button": "med att läsa in sidan på nytt.", - "clearCanvasMessage": "Om omladdning inte fungerar, försök ", - "clearCanvasMessage_button": "rensa canvasen.", + "headingMain": "Ett fel uppstod. Försök ", + "clearCanvasMessage": "Om omladdning inte fungerar, försök ", "clearCanvasCaveat": " Detta kommer att leda till förlust av arbete ", - "trackedToSentry_pre": "Felet med identifieraren ", - "trackedToSentry_post": " spårades på vårt system.", - "openIssueMessage_pre": "Vi var mycket försiktiga med att inte inkludera din skissinformation om felet. Om din skiss inte är privat, vänligen överväga att följa upp på vår ", - "openIssueMessage_button": "buggspårare.", - "openIssueMessage_post": " Vänligen inkludera information nedan genom att kopiera och klistra in i GitHub-problemet.", + "trackedToSentry": "Felet med identifieraren {{eventId}} spårades på vårt system.", + "openIssueMessage": "Vi var mycket försiktiga med att inte inkludera din skissinformation om felet. Om din skiss inte är privat, vänligen överväga att följa upp på vår Vänligen inkludera information nedan genom att kopiera och klistra in i GitHub-problemet.", "sceneContent": "Skissinnehåll:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "dubbelklicka", "drag": "dra", "editor": "Redigerare", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Redigera linje-/pilpunkter", + "editText": "Redigera text / lägg till etikett", "github": "Hittat ett problem? Rapportera", "howto": "Följ våra guider", "or": "eller", @@ -361,29 +348,16 @@ "required": "Obligatoriskt", "website": "Ange en giltig URL" }, - "noteDescription": { - "pre": "Skicka ditt bibliotek för att inkluderas i ", - "link": "det offentliga bibliotekets arkiv", - "post": "för andra människor att använda i sina skisser." - }, - "noteGuidelines": { - "pre": "Biblioteket måste godkännas manuellt först. Vänligen läs ", - "link": "riktlinjerna", - "post": " innan du skickar in. Du behöver ett GitHub-konto för att kommunicera och göra ändringar om så önskas, men det krävs inte." - }, - "noteLicense": { - "pre": "Genom att skicka in godkänner du att biblioteket kommer att publiceras under ", - "link": "MIT-licens, ", - "post": "vilket kort sagt betyder att vem som helst kan använda det utan restriktioner." - }, + "noteDescription": "Skicka ditt bibliotek för att inkluderas i det offentliga bibliotekets arkivför andra människor att använda i sina skisser.", + "noteGuidelines": "Biblioteket måste godkännas manuellt först. Vänligen läs riktlinjerna innan du skickar in. Du behöver ett GitHub-konto för att kommunicera och göra ändringar om så önskas, men det krävs inte.", + "noteLicense": "Genom att skicka in godkänner du att biblioteket kommer att publiceras under MIT-licens, vilket kort sagt betyder att vem som helst kan använda det utan restriktioner.", "noteItems": "Varje objekt måste ha sitt eget namn så att det är filtrerbart. Följande objekt kommer att inkluderas:", "atleastOneLibItem": "Välj minst ett biblioteksobjekt för att komma igång", "republishWarning": "Obs: några av de markerade objekten är redan markerade som publicerade/skickade. Du bör endast skicka objekt igen när du uppdaterar ett befintligt bibliotek eller inlämning." }, "publishSuccessDialog": { "title": "Bibliotek inskickat", - "content": "Tack {{authorName}}. Ditt bibliotek har skickats för granskning. Du kan följa status", - "link": "här" + "content": "Tack {{authorName}}. Ditt bibliotek har skickats för granskning. Du kan följa statushär" }, "confirmDialog": { "resetLibrary": "Återställ bibliotek", diff --git a/src/locales/ta-IN.json b/src/locales/ta-IN.json index 6dc865766..b82220f4a 100644 --- a/src/locales/ta-IN.json +++ b/src/locales/ta-IN.json @@ -54,6 +54,7 @@ "veryLarge": "மிகப் பெரிய", "solid": "திடமான", "hachure": "மலைக்குறிக்கோடு", + "zigzag": "", "crossHatch": "குறுக்குகதவு", "thin": "மெல்லிய", "bold": "பட்டை", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "துணுக்குதவி: தூரத்திலுள்ள உறுப்புகளைப் நெருக்கமாக நகர்த்தப்பார்." }, "errorSplash": { - "headingMain_pre": "பிழையைச் சந்தித்தீரா. முயலவும் ", - "headingMain_button": "பக்கத்தை மீண்டுமேற்றுகிறது.", - "clearCanvasMessage": "மீண்டுமேற்றல் வேலைசெய்யவிட்டால், முயற்சி ", - "clearCanvasMessage_button": "கித்தானைத் துடைக்கிறது.", + "headingMain": "பிழையைச் சந்தித்தீரா. முயலவும் ", + "clearCanvasMessage": "மீண்டுமேற்றல் வேலைசெய்யவிட்டால், முயற்சி ", "clearCanvasCaveat": " இது வேலையை இழக்கக்கூடும் ", - "trackedToSentry_pre": "இனங்காணியில் பிழை ", - "trackedToSentry_post": " எங்கள் இயங்குதளத்தில் தடமறியப்பட்டது.", - "openIssueMessage_pre": "பிழையில் உம் காட்சி தகவலை உள்ளடக்காமலிருக்க நாங்கள் மிக எச்சரிக்கையாக இருந்தோம். உம் காட்சி தனிப்பட்டதில்லையெனில், பின்தொடர்வதற்கு பரிசீலிக்கவும் எங்கள் ", - "openIssueMessage_button": "பிழை தடமி.", - "openIssueMessage_post": " கீழுள்ள தகவலை நகலெடுத்து ஒட்டி GitHub சிக்கலுள் உள்ளடக்கவும்.", + "trackedToSentry": "இனங்காணியில் பிழை {{eventId}} எங்கள் இயங்குதளத்தில் தடமறியப்பட்டது.", + "openIssueMessage": "பிழையில் உம் காட்சி தகவலை உள்ளடக்காமலிருக்க நாங்கள் மிக எச்சரிக்கையாக இருந்தோம். உம் காட்சி தனிப்பட்டதில்லையெனில், பின்தொடர்வதற்கு பரிசீலிக்கவும் எங்கள் கீழுள்ள தகவலை நகலெடுத்து ஒட்டி GitHub சிக்கலுள் உள்ளடக்கவும்.", "sceneContent": "காட்சி உள்ளடக்கம்:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "தேவைப்டுகிறது", "website": "செல்லத்தக்க உரலியை உள்ளிடு" }, - "noteDescription": { - "pre": "உம் நூலகத்தைச் சமர்ப்பி உள்ளடக்குவதற்கு ", - "link": "பொது நூலக களஞ்சியத்தில்", - "post": "பிற மக்களவர்களின் சித்திரங்களில் பயன்படுத்த." - }, - "noteGuidelines": { - "pre": "நூலகம் முதலில் கைமுறையாக ஒப்புக்கொள்ளப்படவேண்டும். வாசிக்கவும் ", - "link": "வழிகாட்டுதல்களைச்", - "post": " சமர்ப்பிக்கும் முன்பு. கோரப்பட்டால் தொடர்புகொள்ள மற்றும் மாற்றங்கள் செய்ய உமக்கொரு GitHub கணக்கு தேவை, ஆனால் அது கண்டிப்பாக தேவையல்ல." - }, - "noteLicense": { - "pre": "சமர்ப்பிப்பதனால், நூலகம் இதனடியில் பிரசரிக்கப்பட ஏற்கிறீர்கள் ", - "link": "MIT உரிமம், ", - "post": "சுருக்கமாக எவருமிதைப் வரையறையின்றி பயன்படுத்தலாமென குறிக்கிறது." - }, + "noteDescription": "உம் நூலகத்தைச் சமர்ப்பி உள்ளடக்குவதற்கு பொது நூலக களஞ்சியத்தில்பிற மக்களவர்களின் சித்திரங்களில் பயன்படுத்த.", + "noteGuidelines": "நூலகம் முதலில் கைமுறையாக ஒப்புக்கொள்ளப்படவேண்டும். வாசிக்கவும் வழிகாட்டுதல்களைச் சமர்ப்பிக்கும் முன்பு. கோரப்பட்டால் தொடர்புகொள்ள மற்றும் மாற்றங்கள் செய்ய உமக்கொரு GitHub கணக்கு தேவை, ஆனால் அது கண்டிப்பாக தேவையல்ல.", + "noteLicense": "சமர்ப்பிப்பதனால், நூலகம் இதனடியில் பிரசரிக்கப்பட ஏற்கிறீர்கள் MIT உரிமம், சுருக்கமாக எவருமிதைப் வரையறையின்றி பயன்படுத்தலாமென குறிக்கிறது.", "noteItems": "வடிக்கட்டக்கூடியதாகவிருக்க ஒவ்வொரு நூலகவுருப்படிக்கும் சொந்த பெயர் இருக்கவேண்டும். பின்வரும் நூலகவுருப்படிகள் உள்ளடக்கப்படும்:", "atleastOneLibItem": "ஆரம்பிக்க ஒரு நூலக உருப்படியையாவது தேர்ந்தெடுக்கவும்", "republishWarning": "" }, "publishSuccessDialog": { "title": "நூலகம் சமர்ப்பிக்கப்பட்டது", - "content": "நன்றி {{authorName}}. உமது நூலகம் மதிப்பாய்விற்காக சமர்ப்பிக்கப்பட்டது. நிலையை நீங்கள் தடமறியலாம்", - "link": "இங்கே" + "content": "நன்றி {{authorName}}. உமது நூலகம் மதிப்பாய்விற்காக சமர்ப்பிக்கப்பட்டது. நிலையை நீங்கள் தடமறியலாம்இங்கே" }, "confirmDialog": { "resetLibrary": "நூலகத்தை அகரமாக்கு", diff --git a/src/locales/th-TH.json b/src/locales/th-TH.json index 2dcb9cb43..3860af21d 100644 --- a/src/locales/th-TH.json +++ b/src/locales/th-TH.json @@ -54,6 +54,7 @@ "veryLarge": "ใหญ่มาก", "solid": "", "hachure": "", + "zigzag": "", "crossHatch": "", "thin": "บาง", "bold": "หนา", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "กำลังรีโหลดหน้า", - "clearCanvasMessage": "ถ้าโหลดไม่ได้ ให้ลอง ", - "clearCanvasMessage_button": "เคลียร์ผืนผ้าใบ", + "headingMain": "", + "clearCanvasMessage": "ถ้าโหลดไม่ได้ ให้ลอง ", "clearCanvasCaveat": "", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/tr-TR.json b/src/locales/tr-TR.json index 78dd9329a..a48a16408 100644 --- a/src/locales/tr-TR.json +++ b/src/locales/tr-TR.json @@ -54,6 +54,7 @@ "veryLarge": "Çok geniş", "solid": "Dolu", "hachure": "Taralı", + "zigzag": "", "crossHatch": "Çapraz-taralı", "thin": "İnce", "bold": "Kalın", @@ -207,19 +208,10 @@ "collabSaveFailed": "Backend veritabanına kaydedilemedi. Eğer problem devam ederse, çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.", "collabSaveFailed_sizeExceeded": "Backend veritabanına kaydedilemedi; tuval çok büyük. Çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.", "brave_measure_text_error": { - "start": "Görünüşe göre Brave gezginini", - "aggressive_block_fingerprint": "Agresif parmakizi bloklama", - "setting_enabled": "ayarları etkin şeklide kullanıyor gibisiniz", - "break": "Bu bir takım sorunlara yol açabilir", - "text_elements": "Metin elementlerinde bozulma", - "in_your_drawings": "çizimlerde bozulma gibi", - "strongly_recommend": "Bu ayarı devre dışı bırakmanızı şiddetle öneririz. Şu adımları", - "steps": "takip ederek", - "how": "nasıl yapılacağını", - "disable_setting": " Yapabilirsiniz. Eğer devre dışı bırakmak işe yaramazsa, lütfen", - "issue": "konu hakkında", - "write": "github'da sorun belirtin, ya da bize", - "discord": "Discord üzerinden iletin" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "İpucu: En uzaktaki elemanları birbirine yakınlaştırmayı deneyin." }, "errorSplash": { - "headingMain_pre": "Hata oluştu. Lütfen ", - "headingMain_button": "sayfayı yenilemeyi deneyin.", - "clearCanvasMessage": "Yenileme sonrası sorun devam ediyorsa, lütfen ", - "clearCanvasMessage_button": "çizim alanını temizlemeyi deneyin.", + "headingMain": "Hata oluştu. Lütfen ", + "clearCanvasMessage": "Yenileme sonrası sorun devam ediyorsa, lütfen ", "clearCanvasCaveat": " Bu, yaptığınız değişiklikleri sıfırlayacak ", - "trackedToSentry_pre": "Tanımlayıcı ile ilgili hata ", - "trackedToSentry_post": " sistemimize yakalandı.", - "openIssueMessage_pre": "Sahne bilginizi hata mesajına yansıtmamak için oldukça dikkatli davrandık. Eğer sahneniz gizli değilse hatayı lütfen şuradan takip edin ", - "openIssueMessage_button": "hata takibi.", - "openIssueMessage_post": " Lütfen aşağıya GitHub sorununa kopyalayarak ve yapıştırarak bilgi ekleyin.", + "trackedToSentry": "Tanımlayıcı ile ilgili hata {{eventId}} sistemimize yakalandı.", + "openIssueMessage": "Sahne bilginizi hata mesajına yansıtmamak için oldukça dikkatli davrandık. Eğer sahneniz gizli değilse hatayı lütfen şuradan takip edin Lütfen aşağıya GitHub sorununa kopyalayarak ve yapıştırarak bilgi ekleyin.", "sceneContent": "Sahne içeriği:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "Gerekli", "website": "Geçerli bir URL girin" }, - "noteDescription": { - "pre": "Submit your library to be included in the ", - "link": "genel kütüphane reposu", - "post": "diğer insanlar çizimlerinde kullanabilsin diye." - }, - "noteGuidelines": { - "pre": "Önce kütüphane elle onaylanmalı. şunu okuyun ", - "link": "yönergeler", - "post": " onaylamadan önce. gerekli olması halinde iletişim kurmak için ve değişiklik için Github hesabı gerekli, ama çok da illaki olmalı değil." - }, - "noteLicense": { - "pre": "Bunu onaylayarak, kütüğhanenin şu lisansla yayınlanmasını onaylıyorsunuz ", - "link": "MIT Lisans, ", - "post": "ki bu kısaca herkesin onu kısıtlama olmaksızın kullanabileceği anlamına gelmektedir." - }, + "noteDescription": "Submit your library to be included in the genel kütüphane reposudiğer insanlar çizimlerinde kullanabilsin diye.", + "noteGuidelines": "Önce kütüphane elle onaylanmalı. şunu okuyun yönergeler onaylamadan önce. gerekli olması halinde iletişim kurmak için ve değişiklik için Github hesabı gerekli, ama çok da illaki olmalı değil.", + "noteLicense": "Bunu onaylayarak, kütüğhanenin şu lisansla yayınlanmasını onaylıyorsunuz MIT Lisans, ki bu kısaca herkesin onu kısıtlama olmaksızın kullanabileceği anlamına gelmektedir.", "noteItems": "Her kütüphane kendi ismine sahip olmalı ki tarama yapabilelim. Şu kütüphane ögeleri dahil edilecek:", "atleastOneLibItem": "Lütfen başlamak için en az bir tane kütüphane ögesi seçin", "republishWarning": "Not: seçilen ögelerden bir kısmı zaten yayınlanmış/gönderilmiş. Yalnızca mevcut kütüphane ve gönderileri güncellerken yeniden gönderme işlemi yapmalısınız." }, "publishSuccessDialog": { "title": "Kütüphane gönderildi", - "content": "Teşekkürler {{authorName}}. Kütüphaneniz gözden geçirme için alındı. Durumu takip edebilirsiniz", - "link": "burada" + "content": "Teşekkürler {{authorName}}. Kütüphaneniz gözden geçirme için alındı. Durumu takip edebilirsinizburada" }, "confirmDialog": { "resetLibrary": "Kütüphaneyi sıfırla", diff --git a/src/locales/uk-UA.json b/src/locales/uk-UA.json index ed1a01e68..a070cde6d 100644 --- a/src/locales/uk-UA.json +++ b/src/locales/uk-UA.json @@ -54,6 +54,7 @@ "veryLarge": "Дуже великий", "solid": "Суцільна", "hachure": "Штриховка", + "zigzag": "Зиґзаґ", "crossHatch": "Перехресна штриховка", "thin": "Тонкий", "bold": "Жирний", @@ -72,7 +73,7 @@ "layers": "Шари", "actions": "Дії", "language": "Мова", - "liveCollaboration": "Спільна робота у режимі реального часу...", + "liveCollaboration": "Спільна робота наживо...", "duplicateSelection": "Дублювати", "untitled": "Без назви", "name": "Ім’я", @@ -110,7 +111,7 @@ "increaseFontSize": "Збільшити розмір шрифту", "unbindText": "Відв'язати текст", "bindText": "Прив’язати текст до контейнера", - "createContainerFromText": "", + "createContainerFromText": "Огорнути текст у контейнер", "link": { "edit": "Редагування посилання", "create": "Створити посилання", @@ -204,22 +205,13 @@ "invalidSVGString": "Недійсний SVG.", "cannotResolveCollabServer": "Не вдалося приєднатися до сервера. Перезавантажте сторінку та повторіть спробу.", "importLibraryError": "Не вдалося завантажити бібліотеку", - "collabSaveFailed": "", - "collabSaveFailed_sizeExceeded": "", + "collabSaveFailed": "Не вдалося зберегти у базу даних сервера. Якщо проблеми не зникнуть, Вам слід зберегти файл локально, щоб не втратити роботу.", + "collabSaveFailed_sizeExceeded": "Полотно завелике! Не вдалося зберегти у базу даних сервера. Вам слід зберегти файл локально, щоб не втратити свою роботу.", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "Ви використовуєте браузер Brave з увімкненим налаштуванням Агресивного Блокування Розпізнавання Пристрою.", + "line2": "Це може нашкодити текстовим елементам у ваших малюнках.", + "line3": "Ми наполегливо рекомендуємо вимкнути це налаштування. Виконайте наступні кроки, щоб виправити це.", + "line4": "Якщо вимкнення цього параметра не вирішує показ текстових елементів, тоді створіть, будь ласка, запит на розв'язання проблеми на нашому GitHub або напишіть нам у Discord" } }, "toolBar": { @@ -237,7 +229,7 @@ "penMode": "Режим пера - запобігання дотику", "link": "Додати/Оновити посилання для вибраної форми", "eraser": "Очищувач", - "hand": "" + "hand": "Рука (інструмент для панорамування)" }, "headings": { "canvasActions": "Дії з полотном", @@ -245,7 +237,7 @@ "shapes": "Фігури" }, "hints": { - "canvasPanning": "", + "canvasPanning": "Щоб перемістити полотно, утримуйте коліщатко миші або пробіл під час перетягування, або скористайтеся інструментом Рука", "linearElement": "Натисніть щоб додати кілька точок. Перетягніть щоб намалювати одну лінію", "freeDraw": "Натисніть і потягніть, відпустіть коли завершите", "text": "Порада: можна також додати текст, двічі клацнувши по будь-якому місці інструментом вибору", @@ -256,7 +248,7 @@ "resize": "Ви можете зберегти пропорції, утримуючи SHIFT під час зміни розміру,\nутримуйте ALT для змінення розміру від центру", "resizeImage": "Ви можете змінювати розміри утримуючи клавішу SHIFT, втримуйте клавішу ALT щоб змінювати розмір відносно центру", "rotate": "Ви можете обмежити кути, утримуючи SHIFT під час обертання", - "lineEditor_info": "", + "lineEditor_info": "Утримуйте CtrlOrCmd і двічі клацніть або натисніть CtrlOrCmd + Enter, щоб редагувати цятки", "lineEditor_pointSelected": "Натисніть Delete для видалення точку (точок), або Ctrl/Cmd+D для дублювання, перетаскування працює як звично", "lineEditor_nothingSelected": "Виберіть точку для редагування (втримуйте клавішу SHIFT для вибору кількох точок), або клавішу Alt для додавання нових точок", "placeImage": "Клацніть, щоб розмістити зображення, або натисніть та потягніть щоб змінити його розмір", @@ -264,7 +256,7 @@ "bindTextToElement": "Натисніть Enter, щоб додати текст", "deepBoxSelect": "Втримуйте Ctrl/Cmd для глибокого виділення та щоб попередити перетягування", "eraserRevert": "Втримуйте клавішу Alt, щоб повернути елементи позначені для видалення", - "firefox_clipboard_write": "" + "firefox_clipboard_write": "Цю функцію можна ввімкнути, встановивши значення \"true\" для налаштування \"dom.events.asyncClipboard.clipboardItem\". Перейдіть на сторінку «about:config», щоб змінити налаштування браузера у Firefox." }, "canvasError": { "cannotShowPreview": "Не вдається показати попередній перегляд", @@ -272,16 +264,11 @@ "canvasTooBigTip": "Порада: спробуйте підсунути найвіддаленіші елементи ближче один до одного." }, "errorSplash": { - "headingMain_pre": "Сталася помилка. Спробуйте ", - "headingMain_button": "перезавантажити сторінку.", - "clearCanvasMessage": "Якщо перезавантаження не допоможе, спробуйте ", - "clearCanvasMessage_button": "очистити полотно.", + "headingMain": "Сталася помилка. Спробуйте ", + "clearCanvasMessage": "Якщо перезавантаження не допоможе, спробуйте ", "clearCanvasCaveat": " Це призведе до втрати роботи ", - "trackedToSentry_pre": "Помилка з ідентифікатором ", - "trackedToSentry_post": " було відслідковано в нашій системі.", - "openIssueMessage_pre": "Ми були дуже обережні, щоб не включати інформацію про ваші сцени в текст помилки. Якщо ваша сцена не була приватна, будь ласка, розгляньте можливість продовження на нашому ", - "openIssueMessage_button": "трекер помилок.", - "openIssueMessage_post": " Будь ласка, додайте інформацію нижче, скопіюючи і вставляючи у GitHub issue.", + "trackedToSentry": "Помилка з ідентифікатором {{eventId}} було відслідковано в нашій системі.", + "openIssueMessage": "Ми були дуже обережні, щоб не включати інформацію про ваші сцени в текст помилки. Якщо ваша сцена не була приватна, будь ласка, розгляньте можливість продовження на нашому Будь ласка, додайте інформацію нижче, скопіюючи і вставляючи у GitHub issue.", "sceneContent": "Вміст сцени:" }, "roomDialog": { @@ -319,8 +306,8 @@ "doubleClick": "подвійний клік", "drag": "перетягнути", "editor": "Редактор", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "Редагувати лінію/стрілки", + "editText": "Редагувати текст / додати позначку", "github": "Знайшли помилку? Повідомте", "howto": "Дотримуйтесь наших інструкцій", "or": "або", @@ -361,29 +348,16 @@ "required": "Обов’язково", "website": "Введіть дійсну URL-адресу" }, - "noteDescription": { - "pre": "Подати бібліотеку, щоб вона була включена до ", - "link": "публічного репозиторія бібліотек", - "post": "для інших людей, для використання у їхніх полотнах." - }, - "noteGuidelines": { - "pre": "Спочатку бібліотека повинна бути підтверджена. Будь ласка, прочитайте ", - "link": "настанови", - "post": " перед відправкою. Вам знадобиться обліковий запис на GitHub, щоб колаборувати та вносити зміни, але це не обов'язково." - }, - "noteLicense": { - "pre": "Публікуючи, ви погоджуєтеся, що бібліотека буде опублікована під ", - "link": "Ліцензія MIT, ", - "post": ", простими словами, це означає що нею зможе користуватися будь-хто без обмежень." - }, + "noteDescription": "Подати бібліотеку, щоб вона була включена до публічного репозиторія бібліотекдля інших людей, для використання у їхніх полотнах.", + "noteGuidelines": "Спочатку бібліотека повинна бути підтверджена. Будь ласка, прочитайте настанови перед відправкою. Вам знадобиться обліковий запис на GitHub, щоб колаборувати та вносити зміни, але це не обов'язково.", + "noteLicense": "Публікуючи, ви погоджуєтеся, що бібліотека буде опублікована під Ліцензія MIT, , простими словами, це означає що нею зможе користуватися будь-хто без обмежень.", "noteItems": "Кожен об'єкт в бібліотеці повинен мати назву, це потрібно для пошуку та фільтрування. Наступні об'єкти бібліотеки будуть включені:", "atleastOneLibItem": "Будь ласка, виберіть принаймні один елемент бібліотеки, щоб почати", "republishWarning": "Зауважте, деякі з вибраних елементів позначені як вже опубліковані/надіслані. Ви повинні повторно надсилати елементи тільки при оновленні вже опублікованої бібліотеки чи при публікації бібліотеки." }, "publishSuccessDialog": { "title": "Бібліотека відправлена", - "content": "Дякуємо, {{authorName}}. Ваша бібліотека була відправлена для розгляду. Ви можете відстежувати статус", - "link": "тут" + "content": "Дякуємо, {{authorName}}. Ваша бібліотека була відправлена для розгляду. Ви можете відстежувати статустут" }, "confirmDialog": { "resetLibrary": "Очистити бібліотеку", @@ -417,7 +391,7 @@ "fileSavedToFilename": "Збережено в {filename}", "canvas": "полотно", "selection": "виділення", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "Використайте {{shortcut}} для вставки самостійного зразка або використайте в текстовому редакторі" }, "colors": { "ffffff": "Білий", @@ -468,13 +442,13 @@ }, "welcomeScreen": { "app": { - "center_heading": "", - "center_heading_plus": "", - "menuHint": "" + "center_heading": "Всі ваші дані збережено локально у Вашому браузері.", + "center_heading_plus": "Чи бажаєте перейти до Excalidraw+?", + "menuHint": "Експорт, налаштування, мови, ..." }, "defaults": { - "menuHint": "", - "center_heading": "", + "menuHint": "Експорт, налаштування та багато іншого...", + "center_heading": "Діаграми. Робити. Просто.", "toolbarHint": "Оберіть інструмент і почніть малювати!", "helpHint": "Гарячі клавіші і допомога" } diff --git a/src/locales/vi-VN.json b/src/locales/vi-VN.json index 887c32e3e..1015b0393 100644 --- a/src/locales/vi-VN.json +++ b/src/locales/vi-VN.json @@ -54,6 +54,7 @@ "veryLarge": "Rất lớn", "solid": "Đặc", "hachure": "Nét gạch gạch", + "zigzag": "Zigzag", "crossHatch": "Nét gạch chéo", "thin": "Mỏng", "bold": "In đậm", @@ -86,7 +87,7 @@ "removeFromLibrary": "Xóa khỏi thư viện", "libraryLoadingMessage": "Đang tải thư viện…", "libraries": "Xem thư viện", - "loadingScene": "", + "loadingScene": "Đang tải về…", "align": "Căn chỉnh", "alignTop": "Căn trên", "alignBottom": "Căn dưới", @@ -104,7 +105,7 @@ "showStroke": "Hiển thị chọn màu", "showBackground": "Hiện thị chọn màu nền", "toggleTheme": "", - "personalLib": "", + "personalLib": "Thư viện cá nhân", "excalidrawLib": "Thư viện Excalidraw", "decreaseFontSize": "Giảm cỡ chữ", "increaseFontSize": "Tăng cỡ chữ", @@ -142,25 +143,25 @@ "exportToPng": "Xuất ra tập tin PNG", "exportToSvg": "Xuất ra tập tin SVG", "copyToClipboard": "Sao chép vào bộ nhớ tạm", - "copyPngToClipboard": "", - "scale": "", - "save": "", - "saveAs": "", - "load": "", - "getShareableLink": "", - "close": "", - "selectLanguage": "", - "scrollBackToContent": "", - "zoomIn": "", - "zoomOut": "", - "resetZoom": "", - "menu": "", - "done": "", - "edit": "", - "undo": "", - "redo": "", + "copyPngToClipboard": "Sao chép PNG vào bộ nhớ", + "scale": "Co giãn", + "save": "Lưu vào tập tin hiện tại", + "saveAs": "Lưu thành", + "load": "Mở", + "getShareableLink": "Tạo liên kết để chia sẻ", + "close": "Đóng", + "selectLanguage": "Chọn ngôn ngữ", + "scrollBackToContent": "Cuộn về nội dung chính", + "zoomIn": "Phóng to", + "zoomOut": "Thu nhỏ", + "resetZoom": "Đặt lại thu phóng", + "menu": "Bảng chọn", + "done": "Xong", + "edit": "Chỉnh sửa", + "undo": "Hoàn tác", + "redo": "Làm lại", "resetLibrary": "", - "createNewRoom": "", + "createNewRoom": "Tạo phòng mới", "fullScreen": "Toàn màn hình", "darkMode": "Chế độ tối", "lightMode": "Chế độ sáng", @@ -181,7 +182,7 @@ "importBackendFailed": "", "cannotExportEmptyCanvas": "Không thể xuất canvas trống.", "couldNotCopyToClipboard": "", - "decryptFailed": "", + "decryptFailed": "Không thể giải mã dữ liệu.", "uploadedSecurly": "", "loadSceneOverridePrompt": "", "collabStopOverridePrompt": "Dừng phiên sẽ ghi đè lên bản vẽ được lưu trữ cục bộ trước đó của bạn. Bạn có chắc không?\n\n(Nếu bạn muốn giữ bản vẽ cục bộ của mình, chỉ cần đóng tab trình duyệt.)", @@ -207,19 +208,10 @@ "collabSaveFailed": "Không thể lưu vào cơ sở dữ liệu. Nếu vấn đề tiếp tục xảy ra, bạn nên lưu tệp vào máy để đảm bảo bạn không bị mất công việc.", "collabSaveFailed_sizeExceeded": "Không thể lưu vào cơ sở dữ liệu, canvas có vẻ quá lớn. Bạn nên lưu tệp cục bộ để đảm bảo bạn không bị mất công việc.", "brave_measure_text_error": { - "start": "Có vẻ bạn đang sử dụng trình duyện Brave với chức năng", - "aggressive_block_fingerprint": "Aggressively Block Fingerprinting", - "setting_enabled": "được bật", - "break": "Điều này có thể xảy ra lỗi các", - "text_elements": "Yếu Tố Chữ", - "in_your_drawings": "trong bản vẽ của bạn", - "strongly_recommend": "Chúng tôi khuyên rằng bạn nên tắt chức năng này. Bạn có thể theo", - "steps": "các bước sau đây", - "how": "để tắt nó", - "disable_setting": " Nếu tắt chức năng này vẫn không sửa lại lỗi hiện thị các yếu tố chữ, hảy mở", - "issue": "issue", - "write": "trên trang GitHUb của chúng tôi, hoặc nhắn chúng tôi tại", - "discord": "Discord" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "Mẹo: hãy thử di chuyển các elements nhất lại gần nhau hơn một chút." }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", - "clearCanvasMessage": "Nếu không tải lại được, hãy thử ", - "clearCanvasMessage_button": "dọn canvas.", + "headingMain": "", + "clearCanvasMessage": "Nếu không tải lại được, hãy thử ", "clearCanvasCaveat": " Điều này sẽ dẫn đến mất dữ liệu bạn đã làm ", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "Từng món trong thư viện phải có tên riêng để có thể lọc. Các món thư viện sau đây sẽ thêm:", "atleastOneLibItem": "Vui lòng chọn ít nhất một món thư viện để bắt đầu", "republishWarning": "Lưu ý: một số món đã chọn được đánh dấu là đã xuất bản/đã gửi. Bạn chỉ nên gửi lại các món khi cập nhật thư viện hiện có hoặc gửi." }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json index 5863f5ceb..08e0a8379 100644 --- a/src/locales/zh-CN.json +++ b/src/locales/zh-CN.json @@ -16,7 +16,7 @@ "bringToFront": "置于顶层", "sendBackward": "下移一层", "delete": "删除", - "copyStyles": "复制样式", + "copyStyles": "拷贝样式", "pasteStyles": "粘贴样式", "stroke": "描边", "background": "背景", @@ -54,6 +54,7 @@ "veryLarge": "加大", "solid": "实心", "hachure": "线条", + "zigzag": "之字形折线", "crossHatch": "交叉线条", "thin": "细", "bold": "粗", @@ -207,19 +208,10 @@ "collabSaveFailed": "无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。", "collabSaveFailed_sizeExceeded": "无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。", "brave_measure_text_error": { - "start": "看起来您正在使用 Brave 浏览器并启用了", - "aggressive_block_fingerprint": "积极阻止指纹识别", - "setting_enabled": "设置", - "break": "这可能会破坏绘图中的", - "text_elements": "文本元素", - "in_your_drawings": " ", - "strongly_recommend": "我们强烈建议禁用此设置。您可以按照", - "steps": "这些步骤", - "how": "来设置", - "disable_setting": " 如果禁用此设置无法修复文本元素的显示,请在 GitHub 提交一个", - "issue": "issue", - "write": ",或者通过", - "discord": "Discord 反馈" + "line1": "您似乎正在使用 Brave 浏览器并启用了积极阻止指纹识别的设置。", + "line2": "这可能会破坏绘图中的 文本元素。", + "line3": "我们强烈建议禁用此设置。您可以按照这些步骤来设置。", + "line4": "如果禁用此设置无法修复文本元素的显示,请在 GitHub 上提交一个 issue ,或者在 Discord 上反馈" } }, "toolBar": { @@ -272,21 +264,16 @@ "canvasTooBigTip": "提示:尝试将最远的元素移动到和其它元素更近一些。" }, "errorSplash": { - "headingMain_pre": "遇到异常。请尝试", - "headingMain_button": "重新加载页面。", - "clearCanvasMessage": "如果重新加载页面无效, 请尝试", - "clearCanvasMessage_button": "清除画布。", + "headingMain": "遇到异常。请尝试。", + "clearCanvasMessage": "如果重新加载页面无效,请尝试。", "clearCanvasCaveat": "这会造成当前工作丢失", - "trackedToSentry_pre": "带有标识符的错误", - "trackedToSentry_post": "已在我们的系统中跟踪", - "openIssueMessage_pre": "我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑使用我们的", - "openIssueMessage_button": "错误追踪器。", - "openIssueMessage_post": " 请复制并粘贴以下信息到 GitHub Issue 中。", + "trackedToSentry": "标识符为{{eventId}}的错误已在我们的系统中被记录", + "openIssueMessage": "我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑在我们的 上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。", "sceneContent": "画布内容:" }, "roomDialog": { "desc_intro": "你可以邀请其他人到目前的画面中与你协作。", - "desc_privacy": "别担心, 该会话使用端到端加密, 无论绘制什么都将保持私密,甚至连我们的服务器也无法查看。", + "desc_privacy": "别担心,该会话使用端到端加密,无论绘制什么都将保持私密,甚至连我们的服务器也无法查看。", "button_startSession": "启动会议", "button_stopSession": "结束会议", "desc_inProgressIntro": "实时协作会议正在进行。", @@ -319,8 +306,8 @@ "doubleClick": "双击", "drag": "拖动", "editor": "编辑器", - "editLineArrowPoints": "", - "editText": "", + "editLineArrowPoints": "编辑线条或箭头的点", + "editText": "添加或编辑文本", "github": "提交问题", "howto": "帮助文档", "or": "或", @@ -361,36 +348,23 @@ "required": "必填", "website": "输入一个有效的URL" }, - "noteDescription": { - "pre": "提交后,您的素材库将被包含在 ", - "link": "公共素材库广场", - "post": "以供其他人在绘图中使用。" - }, - "noteGuidelines": { - "pre": "提交的素材库需先经人工审核。在提交之前,请先阅读 ", - "link": "指南", - "post": " 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。" - }, - "noteLicense": { - "pre": "提交即表明您已同意素材库将遵循 ", - "link": "MIT 许可证, ", - "post": "简而言之,任何人都可以不受限制地使用它们。" - }, + "noteDescription": "提交后,您的素材库将被包含在公共素材库广场以供其他人在绘图中使用。", + "noteGuidelines": "提交的素材库需先经人工审核。在提交之前,请先阅读指南 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。", + "noteLicense": "提交即表明您已同意素材库将遵循 MIT 许可证,简而言之,任何人都可以不受限制地使用它们。", "noteItems": "素材库中每个项目都有各自的名称以供筛选。以下项目将被包含:", "atleastOneLibItem": "请选择至少一个素材库以开始", "republishWarning": "注意:部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。" }, "publishSuccessDialog": { "title": "素材库已提交", - "content": "谢谢你 {{authorName}}。您的素材库已被提交审核。跟进此次提交的状态请点击", - "link": "此处" + "content": "谢谢你 {{authorName}}。您的素材库已被提交审核。请点击此处跟进此次提交的状态" }, "confirmDialog": { "resetLibrary": "重置素材库", "removeItemsFromLib": "从素材库中删除选中的项目" }, "encrypted": { - "tooltip": "您的绘图采用的端到端加密,其内容对于Excalidraw服务器是不可见的。", + "tooltip": "您的绘图采用端到端加密,其内容对于 Excalidraw 服务器是不可见的。", "link": "Excalidraw 中关于端到端加密的博客" }, "stats": { @@ -410,7 +384,7 @@ }, "toast": { "addedToLibrary": "添加到素材库中", - "copyStyles": "复制样式", + "copyStyles": "样式已拷贝。", "copyToClipboard": "已复制到剪切板。", "copyToClipboardAsPng": "已将 {{exportSelection}} 作为 PNG 复制到剪贴板\n({{exportColorScheme}})", "fileSaved": "文件已保存。", diff --git a/src/locales/zh-HK.json b/src/locales/zh-HK.json index bbf23f7f7..527937163 100644 --- a/src/locales/zh-HK.json +++ b/src/locales/zh-HK.json @@ -54,6 +54,7 @@ "veryLarge": "勁大", "solid": "實心", "hachure": "斜線", + "zigzag": "", "crossHatch": "交叉格仔", "thin": "幼", "bold": "粗", @@ -207,19 +208,10 @@ "collabSaveFailed": "", "collabSaveFailed_sizeExceeded": "", "brave_measure_text_error": { - "start": "", - "aggressive_block_fingerprint": "", - "setting_enabled": "", - "break": "", - "text_elements": "", - "in_your_drawings": "", - "strongly_recommend": "", - "steps": "", - "how": "", - "disable_setting": "", - "issue": "", - "write": "", - "discord": "" + "line1": "", + "line2": "", + "line3": "", + "line4": "" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "" }, "errorSplash": { - "headingMain_pre": "", - "headingMain_button": "", - "clearCanvasMessage": "如果重新整理頁面都係睇唔到,你可以", - "clearCanvasMessage_button": "清空畫布", + "headingMain": "", + "clearCanvasMessage": "如果重新整理頁面都係睇唔到,你可以", "clearCanvasCaveat": "(注意:呢個動作會直接丟棄你嘅作品,並且無法復原)", - "trackedToSentry_pre": "", - "trackedToSentry_post": "", - "openIssueMessage_pre": "", - "openIssueMessage_button": "", - "openIssueMessage_post": "", + "trackedToSentry": "", + "openIssueMessage": "", "sceneContent": "" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "", "website": "" }, - "noteDescription": { - "pre": "", - "link": "", - "post": "" - }, - "noteGuidelines": { - "pre": "", - "link": "", - "post": "" - }, - "noteLicense": { - "pre": "", - "link": "", - "post": "" - }, + "noteDescription": "", + "noteGuidelines": "", + "noteLicense": "", "noteItems": "", "atleastOneLibItem": "", "republishWarning": "" }, "publishSuccessDialog": { "title": "", - "content": "", - "link": "" + "content": "" }, "confirmDialog": { "resetLibrary": "", diff --git a/src/locales/zh-TW.json b/src/locales/zh-TW.json index f4462842c..08965de95 100644 --- a/src/locales/zh-TW.json +++ b/src/locales/zh-TW.json @@ -54,6 +54,7 @@ "veryLarge": "特大", "solid": "實心", "hachure": "斜線筆觸", + "zigzag": "Z字形", "crossHatch": "交叉筆觸", "thin": "細", "bold": "粗", @@ -207,19 +208,10 @@ "collabSaveFailed": "無法儲存至後端資料庫。若此問題持續發生,請將檔案儲存於本機以確保資料不會遺失。", "collabSaveFailed_sizeExceeded": "無法儲存至後端資料庫,可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。", "brave_measure_text_error": { - "start": "您似乎正在使用 Brave 瀏覽器並且將", - "aggressive_block_fingerprint": "\"Aggressively Block Fingerprinting\" 設定", - "setting_enabled": "設為開啟", - "break": "這可能導致破壞", - "text_elements": "文字元素", - "in_your_drawings": "在您的繪圖中", - "strongly_recommend": "我們強烈建議您關掉此設定。您可以參考", - "steps": "這些步驟", - "how": "來變更", - "disable_setting": " 若關閉此設定無法修正文字元素的顯示問題,請回報", - "issue": "問題", - "write": "至我們的 GitHub,或反應在我們的", - "discord": "Discord" + "line1": "看起來您開啟了 Brave 瀏覽器的 Aggressively Block Fingerprinting 設定。", + "line2": "這可能造成您畫布中 文字元素 的異常。", + "line3": "我們強烈建議您關閉此設定。您可以依照 這些步驟 來進行。", + "line4": "若關閉此設定並未修復文字元素的顯示問題,請回報於我們 GitHub 上的 issue,或在 Discord 上告訴我們。" } }, "toolBar": { @@ -272,16 +264,11 @@ "canvasTooBigTip": "提示:可嘗試將最遠的元素移動至較集中的位置" }, "errorSplash": { - "headingMain_pre": "發生錯誤,嘗試", - "headingMain_button": "重新載入頁面。", - "clearCanvasMessage": "若重新載入仍無法解決問題,嘗試", - "clearCanvasMessage_button": "清除 canvas。", + "headingMain": "發生錯誤,嘗試", + "clearCanvasMessage": "若重新載入仍無法解決問題,嘗試", "clearCanvasCaveat": "此動作將造成目前的作品被移除。", - "trackedToSentry_pre": "此錯誤與其識別碼", - "trackedToSentry_post": "將由系統記錄。", - "openIssueMessage_pre": "我們將謹慎處理,你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密,請考慮使用我們的", - "openIssueMessage_button": "bug tracker。", - "openIssueMessage_post": "請將下列資訊複製貼上至 GitHub issue 中。", + "trackedToSentry": "此錯誤與其識別碼{{eventId}}將由系統記錄。", + "openIssueMessage": "我們將謹慎處理,你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密,請考慮使用我們的請將下列資訊複製貼上至 GitHub issue 中。", "sceneContent": "作品內容:" }, "roomDialog": { @@ -361,29 +348,16 @@ "required": "必填", "website": "請輸入有效的 URL" }, - "noteDescription": { - "pre": "送出您的資料庫後將被包含於", - "link": "公開資料庫 repository", - "post": "以利他人在其繪圖中使用。" - }, - "noteGuidelines": { - "pre": "資料庫需先經人工審查。請閱讀", - "link": "說明文件", - "post": "再送出。若需溝通與修改時要透過 GitHub 帳號來進行,但並非強制需求。" - }, - "noteLicense": { - "pre": "送出即代表您同意此資料庫將發布時使用 ", - "link": "MIT 授權,", - "post": "簡單來說是指任何人都能不受限制的使用。" - }, + "noteDescription": "送出您的資料庫後將被包含於公開資料庫 repository以利他人在其繪圖中使用。", + "noteGuidelines": "資料庫需先經人工審查。請閱讀說明文件再送出。若需溝通與修改時要透過 GitHub 帳號來進行,但並非強制需求。", + "noteLicense": "送出即代表您同意此資料庫將發布時使用 MIT 授權,簡單來說是指任何人都能不受限制的使用。", "noteItems": "每個資料庫項目都有獨立的名稱故可篩選。會包含下列資料庫項目:", "atleastOneLibItem": "請選擇至少一項資料庫項目", "republishWarning": "注意:部分選取中的物件先前已發布/送出過。建議僅在要更新現存資料庫或已送出的物件時才重新送出這些物件。" }, "publishSuccessDialog": { "title": "資料庫已送出", - "content": "感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態", - "link": "在此" + "content": "感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態在此" }, "confirmDialog": { "resetLibrary": "重設資料庫", diff --git a/src/packages/excalidraw/CHANGELOG.md b/src/packages/excalidraw/CHANGELOG.md index 250a58142..106d22123 100644 --- a/src/packages/excalidraw/CHANGELOG.md +++ b/src/packages/excalidraw/CHANGELOG.md @@ -11,6 +11,22 @@ The change should be grouped under one of the below section and must contain PR Please add the latest change on the top under the correct section. --> +## Unreleased + +### Features + +- Sidebar component now supports tabs — for more detailed description of new behavior and breaking changes, see the linked PR. [#6213](https://github.com/excalidraw/excalidraw/pull/6213) +- Exposed `DefaultSidebar` component to allow modifying the default sidebar, such as adding custom tabs to it. [#6213](https://github.com/excalidraw/excalidraw/pull/6213) + + #### BREAKING CHANGES + + - `props.renderSidebar` is removed in favor of rendering as `children`. + - `appState.isSidebarDocked` replaced with `appState.defaultSidebarDockedPreference` with slightly different semantics, and relating only to the default sidebar. You need to handle `docked` state for your custom sidebars yourself. + - Sidebar `props.dockable` is removed. To indicate dockability, supply `props.onDock()` alongside setting `props.docked`. + - `Sidebar.Header` is no longer rendered by default. You need to render it yourself. + - `props.onClose` replaced with `props.onStateChange`. + - `restore()`/`restoreAppState()` now retains `appState.openSidebar` regardless of docked state. + ## 0.15.2 (2023-04-20) ### Docs diff --git a/src/packages/excalidraw/example/App.tsx b/src/packages/excalidraw/example/App.tsx index 1f4a6c7fd..3a0634e63 100644 --- a/src/packages/excalidraw/example/App.tsx +++ b/src/packages/excalidraw/example/App.tsx @@ -161,8 +161,7 @@ export default function App({ appTitle, useCustom, customArgs }: AppProps) { onClick={() => alert("This is an empty top right UI")} style={{ height: "2.5rem" }} > - {" "} - Click me{" "} + Click me ); @@ -494,15 +493,6 @@ export default function App({ appTitle, useCustom, customArgs }: AppProps) { ); }; - const renderSidebar = () => { - return ( - - Custom header! - Custom sidebar! - - ); - }; - const renderMenu = () => { return ( @@ -668,23 +658,6 @@ export default function App({ appTitle, useCustom, customArgs }: AppProps) {

-
- -
setExcalidrawAPI(api)} initialData={initialStatePromiseRef.current.promise} @@ -706,7 +679,6 @@ export default function App({ appTitle, useCustom, customArgs }: AppProps) { onLinkOpen={onLinkOpen} onPointerDown={onPointerDown} onScrollChange={rerenderCommentIcons} - renderSidebar={renderSidebar} > {excalidrawAPI && (
@@ -714,6 +686,30 @@ export default function App({ appTitle, useCustom, customArgs }: AppProps) {
)} + + + + Tab one! + Tab two! + + One + Two + + + + + Toggle Custom Sidebar + {renderMenu()}
{Object.keys(commentIcons || []).length > 0 && renderCommentIcons()} diff --git a/src/packages/excalidraw/example/CustomFooter.tsx b/src/packages/excalidraw/example/CustomFooter.tsx index fbc2ea732..5c47de6c6 100644 --- a/src/packages/excalidraw/example/CustomFooter.tsx +++ b/src/packages/excalidraw/example/CustomFooter.tsx @@ -65,8 +65,7 @@ const CustomFooter = ({ className="custom-footer" onClick={() => alert("This is dummy footer")} > - {" "} - custom footer{" "} + custom footer ); diff --git a/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx b/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx index 793d17b05..4c51ecdc2 100644 --- a/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx +++ b/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx @@ -11,7 +11,7 @@ export default function Sidebar({ children }: { children: React.ReactNode }) {
- {" "} +
diff --git a/src/packages/excalidraw/index.tsx b/src/packages/excalidraw/index.tsx index 4f768c6d5..22f79dd33 100644 --- a/src/packages/excalidraw/index.tsx +++ b/src/packages/excalidraw/index.tsx @@ -24,7 +24,6 @@ const ExcalidrawBase = (props: ExcalidrawProps) => { isCollaborating = false, onPointerUpdate, renderTopRightUI, - renderSidebar, langCode = defaultLang.code, viewModeEnabled, zenModeEnabled, @@ -47,6 +46,8 @@ const ExcalidrawBase = (props: ExcalidrawProps) => { const canvasActions = props.UIOptions?.canvasActions; + // FIXME normalize/set defaults in parent component so that the memo resolver + // compares the same values const UIOptions: AppProps["UIOptions"] = { ...props.UIOptions, canvasActions: { @@ -114,7 +115,6 @@ const ExcalidrawBase = (props: ExcalidrawProps) => { onLinkOpen={onLinkOpen} onPointerDown={onPointerDown} onScrollChange={onScrollChange} - renderSidebar={renderSidebar} > {children} @@ -245,3 +245,5 @@ export { MainMenu }; export { useDevice } from "../../components/App"; export { WelcomeScreen }; export { LiveCollaborationTrigger }; + +export { DefaultSidebar } from "../../components/DefaultSidebar"; diff --git a/src/scene/selection.ts b/src/scene/selection.ts index 39d3518b1..20d787bc4 100644 --- a/src/scene/selection.ts +++ b/src/scene/selection.ts @@ -30,7 +30,7 @@ export const getElementsWithinSelection = ( export const isSomeElementSelected = ( elements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: Pick, ): boolean => elements.some((element) => appState.selectedElementIds[element.id]); @@ -40,7 +40,7 @@ export const isSomeElementSelected = ( */ export const getCommonAttributeOfSelectedElements = ( elements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: Pick, getAttribute: (element: ExcalidrawElement) => T, ): T | null => { const attributes = Array.from( @@ -55,7 +55,7 @@ export const getCommonAttributeOfSelectedElements = ( export const getSelectedElements = ( elements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: Pick, includeBoundTextElement: boolean = false, ) => elements.filter((element) => { @@ -74,7 +74,7 @@ export const getSelectedElements = ( export const getTargetElements = ( elements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: Pick, ) => appState.editingElement ? [appState.editingElement] diff --git a/src/tests/__snapshots__/contextmenu.test.tsx.snap b/src/tests/__snapshots__/contextmenu.test.tsx.snap index c5b61e42f..5b69dbe08 100644 --- a/src/tests/__snapshots__/contextmenu.test.tsx.snap +++ b/src/tests/__snapshots__/contextmenu.test.tsx.snap @@ -247,7 +247,7 @@ Object { Object { "contextItemLabel": [Function], "keyTest": [Function], - "name": "toggleLock", + "name": "toggleElementLock", "perform": [Function], "trackEvent": Object { "category": "element", @@ -284,6 +284,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -300,7 +301,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -464,6 +464,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -480,7 +481,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -650,6 +650,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -666,7 +667,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -1005,6 +1005,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -1021,7 +1022,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -1360,6 +1360,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -1376,7 +1377,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -1546,6 +1546,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -1562,7 +1563,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -1768,6 +1768,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -1784,7 +1785,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -2053,6 +2053,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -2069,7 +2070,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -2426,6 +2426,7 @@ Object { "currentItemStrokeWidth": 2, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -2442,7 +2443,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -3273,6 +3273,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -3289,7 +3290,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -3628,6 +3628,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -3644,7 +3645,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -3983,6 +3983,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -3999,7 +4000,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -4644,7 +4644,7 @@ Object { Object { "contextItemLabel": [Function], "keyTest": [Function], - "name": "toggleLock", + "name": "toggleElementLock", "perform": [Function], "trackEvent": Object { "category": "element", @@ -4681,6 +4681,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -4697,7 +4698,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -5194,7 +5194,7 @@ Object { Object { "contextItemLabel": [Function], "keyTest": [Function], - "name": "toggleLock", + "name": "toggleElementLock", "perform": [Function], "trackEvent": Object { "category": "element", @@ -5231,6 +5231,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -5247,7 +5248,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -5642,6 +5642,16 @@ Object { "category": "canvas", }, }, + Object { + "contextItemLabel": "labels.elementLock.unlockAll", + "name": "unlockAllElements", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "canvas", + }, + "viewMode": false, + }, "separator", Object { "checked": [Function], @@ -5712,6 +5722,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -5728,7 +5739,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -6043,7 +6053,7 @@ Object { Object { "contextItemLabel": [Function], "keyTest": [Function], - "name": "toggleLock", + "name": "toggleElementLock", "perform": [Function], "trackEvent": Object { "category": "element", @@ -6080,6 +6090,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -6096,7 +6107,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -6389,7 +6399,7 @@ Object { Object { "contextItemLabel": [Function], "keyTest": [Function], - "name": "toggleLock", + "name": "toggleElementLock", "perform": [Function], "trackEvent": Object { "category": "element", @@ -6426,6 +6436,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -6442,7 +6453,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", diff --git a/src/tests/__snapshots__/regressionTests.test.tsx.snap b/src/tests/__snapshots__/regressionTests.test.tsx.snap index 967a0cf69..82d3dbbff 100644 --- a/src/tests/__snapshots__/regressionTests.test.tsx.snap +++ b/src/tests/__snapshots__/regressionTests.test.tsx.snap @@ -25,6 +25,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -41,7 +42,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -561,6 +561,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -577,7 +578,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -1103,6 +1103,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": "id10", @@ -1119,7 +1120,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -2010,6 +2010,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -2026,7 +2027,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -2240,6 +2240,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -2256,7 +2257,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -2773,6 +2773,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -2789,7 +2790,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -3062,6 +3062,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -3078,7 +3079,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -3246,6 +3246,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -3262,7 +3263,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -3762,6 +3762,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -3778,7 +3779,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -4030,6 +4030,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -4046,7 +4047,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -4260,6 +4260,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -4276,7 +4277,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -4536,6 +4536,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -4552,7 +4553,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -4824,6 +4824,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -4840,7 +4841,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -5242,6 +5242,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", + "defaultSidebarDockedPreference": false, "draggingElement": Object { "angle": 0, "backgroundColor": "transparent", @@ -5285,7 +5286,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -5583,6 +5583,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": Object { "angle": 0, "backgroundColor": "transparent", @@ -5626,7 +5627,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -5897,6 +5897,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", + "defaultSidebarDockedPreference": false, "draggingElement": Object { "angle": 0, "backgroundColor": "transparent", @@ -5940,7 +5941,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -6135,6 +6135,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -6151,7 +6152,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -6321,6 +6321,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": "id3", @@ -6337,7 +6338,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -6849,6 +6849,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -6865,7 +6866,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -7214,6 +7214,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -7230,7 +7231,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -9566,6 +9566,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -9582,7 +9583,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -9985,6 +9985,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -10001,7 +10002,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -10274,6 +10274,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -10290,7 +10291,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -10522,6 +10522,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -10538,7 +10539,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -10843,6 +10843,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -10859,7 +10860,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -11027,6 +11027,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -11043,7 +11044,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -11211,6 +11211,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -11227,7 +11228,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -11395,6 +11395,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -11411,7 +11412,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -11632,6 +11632,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -11648,7 +11649,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -11869,6 +11869,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -11885,7 +11886,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -12097,6 +12097,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -12113,7 +12114,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -12334,6 +12334,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -12350,7 +12351,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -12518,6 +12518,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -12534,7 +12535,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -12755,6 +12755,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -12771,7 +12772,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -12939,6 +12939,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -12955,7 +12956,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -13167,6 +13167,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -13183,7 +13184,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -13351,6 +13351,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -13367,7 +13368,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -14190,6 +14190,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -14206,7 +14207,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -14479,6 +14479,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -14495,7 +14496,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "touch", "multiElement": null, "name": "Untitled-201933152653", @@ -14590,6 +14590,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -14606,7 +14607,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -14699,6 +14699,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -14715,7 +14716,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -14886,6 +14886,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -14902,7 +14903,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -15254,6 +15254,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -15270,7 +15271,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -15885,6 +15885,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -15901,7 +15902,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -16111,6 +16111,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -16127,7 +16128,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -17074,6 +17074,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -17090,7 +17091,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -17183,6 +17183,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": "id3", @@ -17199,7 +17200,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -18042,6 +18042,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", + "defaultSidebarDockedPreference": false, "draggingElement": Object { "angle": 0, "backgroundColor": "transparent", @@ -18085,7 +18086,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -18514,6 +18514,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", + "defaultSidebarDockedPreference": false, "draggingElement": Object { "angle": 0, "backgroundColor": "transparent", @@ -18557,7 +18558,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -18855,6 +18855,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -18871,7 +18872,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "touch", "multiElement": null, "name": "Untitled-201933152653", @@ -18966,6 +18966,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -18982,7 +18983,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -19537,6 +19537,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -19553,7 +19554,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", @@ -19646,6 +19646,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -19662,7 +19663,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "Untitled-201933152653", diff --git a/src/tests/clients.test.ts b/src/tests/clients.test.ts index a6a6901b1..e78cf1864 100644 --- a/src/tests/clients.test.ts +++ b/src/tests/clients.test.ts @@ -1,44 +1,39 @@ -import { getClientInitials } from "../clients"; +import { getNameInitial } from "../clients"; describe("getClientInitials", () => { it("returns substring if one name provided", () => { - const result = getClientInitials("Alan"); - expect(result).toBe("A"); + expect(getNameInitial("Alan")).toBe("A"); }); it("returns initials", () => { - const result = getClientInitials("John Doe"); - expect(result).toBe("J"); + expect(getNameInitial("John Doe")).toBe("J"); }); it("returns correct initials if many names provided", () => { - const result = getClientInitials("John Alan Doe"); - expect(result).toBe("J"); + expect(getNameInitial("John Alan Doe")).toBe("J"); }); it("returns single initial if 1 letter provided", () => { - const result = getClientInitials("z"); - expect(result).toBe("Z"); + expect(getNameInitial("z")).toBe("Z"); }); it("trims trailing whitespace", () => { - const result = getClientInitials(" q "); - expect(result).toBe("Q"); + expect(getNameInitial(" q ")).toBe("Q"); }); it('returns "?" if falsey value provided', () => { - let result = getClientInitials(""); - expect(result).toBe("?"); - - result = getClientInitials(undefined); - expect(result).toBe("?"); - - result = getClientInitials(null); - expect(result).toBe("?"); + expect(getNameInitial("")).toBe("?"); + expect(getNameInitial(undefined)).toBe("?"); + expect(getNameInitial(null)).toBe("?"); }); it('returns "?" when value is blank', () => { - const result = getClientInitials(" "); - expect(result).toBe("?"); + expect(getNameInitial(" ")).toBe("?"); + }); + + it("works with multibyte strings", () => { + expect(getNameInitial("😀")).toBe("😀"); + // but doesn't work with emoji ZWJ sequences + expect(getNameInitial("👨‍👩‍👦")).toBe("👨"); }); }); diff --git a/src/tests/contextmenu.test.tsx b/src/tests/contextmenu.test.tsx index 55841b243..0a74de367 100644 --- a/src/tests/contextmenu.test.tsx +++ b/src/tests/contextmenu.test.tsx @@ -125,7 +125,7 @@ describe("contextMenu element", () => { "bringToFront", "duplicateSelection", "hyperlink", - "toggleLock", + "toggleElementLock", ]; expect(contextMenu).not.toBeNull(); @@ -212,7 +212,7 @@ describe("contextMenu element", () => { "sendToBack", "bringToFront", "duplicateSelection", - "toggleLock", + "toggleElementLock", ]; expect(contextMenu).not.toBeNull(); @@ -263,7 +263,7 @@ describe("contextMenu element", () => { "sendToBack", "bringToFront", "duplicateSelection", - "toggleLock", + "toggleElementLock", ]; expect(contextMenu).not.toBeNull(); @@ -287,7 +287,7 @@ describe("contextMenu element", () => { }); const contextMenu = UI.queryContextMenu(); expect(copiedStyles).toBe("{}"); - fireEvent.click(queryByText(contextMenu as HTMLElement, "Copy styles")!); + fireEvent.click(queryByText(contextMenu!, "Copy styles")!); expect(copiedStyles).not.toBe("{}"); const element = JSON.parse(copiedStyles)[0]; expect(element).toEqual(API.getSelectedElement()); @@ -328,7 +328,7 @@ describe("contextMenu element", () => { clientY: 40, }); let contextMenu = UI.queryContextMenu(); - fireEvent.click(queryByText(contextMenu as HTMLElement, "Copy styles")!); + fireEvent.click(queryByText(contextMenu!, "Copy styles")!); const secondRect = JSON.parse(copiedStyles)[0]; expect(secondRect.id).toBe(h.elements[1].id); @@ -340,7 +340,7 @@ describe("contextMenu element", () => { clientY: 10, }); contextMenu = UI.queryContextMenu(); - fireEvent.click(queryByText(contextMenu as HTMLElement, "Paste styles")!); + fireEvent.click(queryByText(contextMenu!, "Paste styles")!); const firstRect = API.getSelectedElement(); expect(firstRect.id).toBe(h.elements[0].id); @@ -364,7 +364,7 @@ describe("contextMenu element", () => { clientY: 1, }); const contextMenu = UI.queryContextMenu(); - fireEvent.click(queryAllByText(contextMenu as HTMLElement, "Delete")[0]); + fireEvent.click(queryAllByText(contextMenu!, "Delete")[0]); expect(API.getSelectedElements()).toHaveLength(0); expect(h.elements[0].isDeleted).toBe(true); }); @@ -380,7 +380,7 @@ describe("contextMenu element", () => { clientY: 1, }); const contextMenu = UI.queryContextMenu(); - fireEvent.click(queryByText(contextMenu as HTMLElement, "Add to library")!); + fireEvent.click(queryByText(contextMenu!, "Add to library")!); await waitFor(() => { const library = localStorage.getItem("excalidraw-library"); @@ -401,7 +401,7 @@ describe("contextMenu element", () => { clientY: 1, }); const contextMenu = UI.queryContextMenu(); - fireEvent.click(queryByText(contextMenu as HTMLElement, "Duplicate")!); + fireEvent.click(queryByText(contextMenu!, "Duplicate")!); expect(h.elements).toHaveLength(2); const { id: _id0, seed: _seed0, x: _x0, y: _y0, ...rect1 } = h.elements[0]; const { id: _id1, seed: _seed1, x: _x1, y: _y1, ...rect2 } = h.elements[1]; @@ -425,7 +425,7 @@ describe("contextMenu element", () => { }); const contextMenu = UI.queryContextMenu(); const elementsBefore = h.elements; - fireEvent.click(queryByText(contextMenu as HTMLElement, "Send backward")!); + fireEvent.click(queryByText(contextMenu!, "Send backward")!); expect(elementsBefore[0].id).toEqual(h.elements[1].id); expect(elementsBefore[1].id).toEqual(h.elements[0].id); }); @@ -447,7 +447,7 @@ describe("contextMenu element", () => { }); const contextMenu = UI.queryContextMenu(); const elementsBefore = h.elements; - fireEvent.click(queryByText(contextMenu as HTMLElement, "Bring forward")!); + fireEvent.click(queryByText(contextMenu!, "Bring forward")!); expect(elementsBefore[0].id).toEqual(h.elements[1].id); expect(elementsBefore[1].id).toEqual(h.elements[0].id); }); @@ -469,7 +469,7 @@ describe("contextMenu element", () => { }); const contextMenu = UI.queryContextMenu(); const elementsBefore = h.elements; - fireEvent.click(queryByText(contextMenu as HTMLElement, "Send to back")!); + fireEvent.click(queryByText(contextMenu!, "Send to back")!); expect(elementsBefore[1].id).toEqual(h.elements[0].id); }); @@ -490,7 +490,7 @@ describe("contextMenu element", () => { }); const contextMenu = UI.queryContextMenu(); const elementsBefore = h.elements; - fireEvent.click(queryByText(contextMenu as HTMLElement, "Bring to front")!); + fireEvent.click(queryByText(contextMenu!, "Bring to front")!); expect(elementsBefore[0].id).toEqual(h.elements[1].id); }); @@ -514,9 +514,7 @@ describe("contextMenu element", () => { clientY: 1, }); const contextMenu = UI.queryContextMenu(); - fireEvent.click( - queryByText(contextMenu as HTMLElement, "Group selection")!, - ); + fireEvent.click(queryByText(contextMenu!, "Group selection")!); const selectedGroupIds = Object.keys(h.state.selectedGroupIds); expect(h.elements[0].groupIds).toEqual(selectedGroupIds); expect(h.elements[1].groupIds).toEqual(selectedGroupIds); @@ -548,9 +546,7 @@ describe("contextMenu element", () => { const contextMenu = UI.queryContextMenu(); expect(contextMenu).not.toBeNull(); - fireEvent.click( - queryByText(contextMenu as HTMLElement, "Ungroup selection")!, - ); + fireEvent.click(queryByText(contextMenu!, "Ungroup selection")!); const selectedGroupIds = Object.keys(h.state.selectedGroupIds); expect(selectedGroupIds).toHaveLength(0); diff --git a/src/tests/data/restore.test.ts b/src/tests/data/restore.test.ts index afd5ef918..aaa2f087a 100644 --- a/src/tests/data/restore.test.ts +++ b/src/tests/data/restore.test.ts @@ -10,7 +10,7 @@ import { API } from "../helpers/api"; import { getDefaultAppState } from "../../appState"; import { ImportedDataState } from "../../data/types"; import { NormalizedZoomValue } from "../../types"; -import { FONT_FAMILY, ROUNDNESS } from "../../constants"; +import { DEFAULT_SIDEBAR, FONT_FAMILY, ROUNDNESS } from "../../constants"; import { newElementWith } from "../../element/mutateElement"; describe("restoreElements", () => { @@ -453,6 +453,29 @@ describe("restoreAppState", () => { expect(restoredAppState.zoom).toMatchObject(getDefaultAppState().zoom); }); }); + + it("should handle appState.openSidebar legacy values", () => { + expect(restore.restoreAppState({}, null).openSidebar).toBe(null); + expect( + restore.restoreAppState({ openSidebar: "library" } as any, null) + .openSidebar, + ).toEqual({ name: DEFAULT_SIDEBAR.name }); + expect( + restore.restoreAppState({ openSidebar: "xxx" } as any, null).openSidebar, + ).toEqual({ name: DEFAULT_SIDEBAR.name }); + // while "library" was our legacy sidebar name, we can't assume it's legacy + // value as it may be some host app's custom sidebar name ¯\_(ツ)_/¯ + expect( + restore.restoreAppState({ openSidebar: { name: "library" } } as any, null) + .openSidebar, + ).toEqual({ name: "library" }); + expect( + restore.restoreAppState( + { openSidebar: { name: DEFAULT_SIDEBAR.name, tab: "ola" } } as any, + null, + ).openSidebar, + ).toEqual({ name: DEFAULT_SIDEBAR.name, tab: "ola" }); + }); }); describe("restore", () => { diff --git a/src/tests/elementLocking.test.tsx b/src/tests/elementLocking.test.tsx index 9cf0968d4..a2f6eb11d 100644 --- a/src/tests/elementLocking.test.tsx +++ b/src/tests/elementLocking.test.tsx @@ -152,7 +152,7 @@ describe("element locking", () => { expect(contextMenu).not.toBeNull(); expect( contextMenu?.querySelector( - `li[data-testid="toggleLock"] .context-menu-item__label`, + `li[data-testid="toggleElementLock"] .context-menu-item__label`, ), ).toHaveTextContent(t("labels.elementLock.unlock")); }); diff --git a/src/tests/helpers/ui.ts b/src/tests/helpers/ui.ts index 1cfdb10a1..fcf67166b 100644 --- a/src/tests/helpers/ui.ts +++ b/src/tests/helpers/ui.ts @@ -321,6 +321,6 @@ export class UI { static queryContextMenu = () => { return GlobalTestState.renderResult.container.querySelector( ".context-menu", - ); + ) as HTMLElement | null; }; } diff --git a/src/tests/library.test.tsx b/src/tests/library.test.tsx index 86847aeee..2a2886354 100644 --- a/src/tests/library.test.tsx +++ b/src/tests/library.test.tsx @@ -189,10 +189,15 @@ describe("library menu", () => { const latestLibrary = await h.app.library.getLatestLibrary(); expect(latestLibrary.length).toBe(0); - const libraryButton = container.querySelector(".library-button"); + const libraryButton = container.querySelector(".sidebar-trigger"); fireEvent.click(libraryButton!); - fireEvent.click(container.querySelector(".Sidebar__dropdown-btn")!); + fireEvent.click( + queryByTestId( + container.querySelector(".layer-ui__library")!, + "dropdown-menu-button", + )!, + ); queryByTestId(container, "lib-dropdown--load")!.click(); const libraryItems = parseLibraryJSON(await libraryJSONPromise); diff --git a/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap b/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap index 09402981e..d703dff87 100644 --- a/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap +++ b/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap @@ -43,7 +43,6 @@ exports[` should render main menu with host menu items
diff --git a/src/tests/packages/__snapshots__/utils.test.ts.snap b/src/tests/packages/__snapshots__/utils.test.ts.snap index b1002a406..aa5f84334 100644 --- a/src/tests/packages/__snapshots__/utils.test.ts.snap +++ b/src/tests/packages/__snapshots__/utils.test.ts.snap @@ -25,6 +25,7 @@ Object { "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", + "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, "editingGroupId": null, @@ -41,7 +42,6 @@ Object { "isLoading": false, "isResizing": false, "isRotating": false, - "isSidebarDocked": false, "lastPointerDownWith": "mouse", "multiElement": null, "name": "name", diff --git a/src/tests/packages/excalidraw.test.tsx b/src/tests/packages/excalidraw.test.tsx index a0d495936..a5734b2ed 100644 --- a/src/tests/packages/excalidraw.test.tsx +++ b/src/tests/packages/excalidraw.test.tsx @@ -220,7 +220,6 @@ describe("", () => { style={{ height: "2rem" }} onClick={() => window.alert("custom menu item")} > - {" "} custom item @@ -345,7 +344,6 @@ describe("", () => { style={{ height: "2rem" }} onClick={() => window.alert("custom menu item")} > - {" "} custom menu item diff --git a/src/types.ts b/src/types.ts index c668ef1fb..bf10cea11 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,3 +1,4 @@ +import React from "react"; import { PointerType, ExcalidrawLinearElement, @@ -39,7 +40,6 @@ import type { FileSystemHandle } from "./data/filesystem"; import type { IMAGE_MIME_TYPES, MIME_TYPES } from "./constants"; import { ContextMenuItems } from "./components/ContextMenu"; import { Merge, ForwardRef, ValueOf } from "./utility-types"; -import React from "react"; export type Point = Readonly; @@ -101,6 +101,9 @@ export type LastActiveTool = } | null; +export type SidebarName = string; +export type SidebarTabName = string; + export type AppState = { contextMenu: { items: ContextMenuItems; @@ -170,16 +173,22 @@ export type AppState = { isResizing: boolean; isRotating: boolean; zoom: Zoom; - // mobile-only openMenu: "canvas" | "shape" | null; openPopup: | "canvasColorPicker" | "backgroundColorPicker" | "strokeColorPicker" | null; - openSidebar: "library" | "customSidebar" | null; + openSidebar: { name: SidebarName; tab?: SidebarTabName } | null; openDialog: "imageExport" | "help" | "jsonExport" | null; - isSidebarDocked: boolean; + /** + * Reflects user preference for whether the default sidebar should be docked. + * + * NOTE this is only a user preference and does not reflect the actual docked + * state of the sidebar, because the host apps can override this through + * a DefaultSidebar prop, which is not reflected back to the appState. + */ + defaultSidebarDockedPreference: boolean; lastPointerDownWith: PointerType; selectedElementIds: { [id: string]: boolean }; @@ -220,6 +229,15 @@ export type AppState = { selectedLinearElement: LinearElementEditor | null; }; +export type UIAppState = Omit< + AppState, + | "suggestedBindings" + | "startBoundElement" + | "cursorButton" + | "scrollX" + | "scrollY" +>; + export type NormalizedZoomValue = number & { _brand: "normalizedZoom" }; export type Zoom = Readonly<{ @@ -316,7 +334,7 @@ export interface ExcalidrawProps { ) => Promise | boolean; renderTopRightUI?: ( isMobile: boolean, - appState: AppState, + appState: UIAppState, ) => JSX.Element | null; langCode?: Language["code"]; viewModeEnabled?: boolean; @@ -327,7 +345,7 @@ export interface ExcalidrawProps { name?: string; renderCustomStats?: ( elements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: UIAppState, ) => JSX.Element; UIOptions?: Partial; detectScroll?: boolean; @@ -346,10 +364,6 @@ export interface ExcalidrawProps { pointerDownState: PointerDownState, ) => void; onScrollChange?: (scrollX: number, scrollY: number) => void; - /** - * Render function that renders custom component. - */ - renderSidebar?: () => JSX.Element | null; children?: React.ReactNode; } @@ -370,13 +384,13 @@ export type ExportOpts = { saveFileToDisk?: boolean; onExportToBackend?: ( exportedElements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: UIAppState, files: BinaryFiles, canvas: HTMLCanvasElement | null, ) => void; renderCustomUI?: ( exportedElements: readonly NonDeletedExcalidrawElement[], - appState: AppState, + appState: UIAppState, files: BinaryFiles, canvas: HTMLCanvasElement | null, ) => JSX.Element; @@ -437,6 +451,9 @@ export type AppClassProperties = { device: App["device"]; scene: App["scene"]; pasteFromClipboard: App["pasteFromClipboard"]; + id: App["id"]; + onInsertElements: App["onInsertElements"]; + onExportImage: App["onExportImage"]; }; export type PointerDownState = Readonly<{ @@ -533,7 +550,7 @@ export type ExcalidrawImperativeAPI = { setActiveTool: InstanceType["setActiveTool"]; setCursor: InstanceType["setCursor"]; resetCursor: InstanceType["resetCursor"]; - toggleMenu: InstanceType["toggleMenu"]; + toggleSidebar: InstanceType["toggleSidebar"]; }; export type Device = Readonly<{ diff --git a/src/utils.ts b/src/utils.ts index 1d545f977..83376cd3b 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -372,7 +372,7 @@ export const setEraserCursor = ( export const setCursorForShape = ( canvas: HTMLCanvasElement | null, - appState: AppState, + appState: Pick, ) => { if (!canvas) { return; @@ -767,16 +767,35 @@ export const queryFocusableElements = (container: HTMLElement | null) => { : []; }; -export const isShallowEqual = >( +export const isShallowEqual = < + T extends Record, + I extends keyof T, +>( objA: T, objB: T, + comparators?: Record boolean>, + debug = false, ) => { const aKeys = Object.keys(objA); - const bKeys = Object.keys(objA); + const bKeys = Object.keys(objB); if (aKeys.length !== bKeys.length) { return false; } - return aKeys.every((key) => objA[key] === objB[key]); + return aKeys.every((key) => { + const comparator = comparators?.[key as I]; + const ret = comparator + ? comparator(objA[key], objB[key]) + : objA[key] === objB[key]; + if (!ret && debug) { + console.info( + `%cisShallowEqual: ${key} not equal ->`, + "color: #8B4000", + objA[key], + objB[key], + ); + } + return ret; + }); }; // taken from Radix UI diff --git a/yarn.lock b/yarn.lock index 9a01e56aa..1137ba717 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1262,6 +1262,13 @@ dependencies: regenerator-runtime "^0.13.10" +"@babel/runtime@^7.13.10": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -1437,13 +1444,6 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== -"@dwelle/tunnel-rat@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@dwelle/tunnel-rat/-/tunnel-rat-0.1.1.tgz#0a0b235f8fc22ff1cf47ed102f4cc612eb51bc71" - integrity sha512-jb5/ZsT/af1J7tnbBXp7KO1xEyw61lWSDqJ+Bqdc6JlL3vbAvsifNhe+/mRFs6aSBCRaDqp5f2pJDHtA3MUZLw== - dependencies: - zustand "^4.3.2" - "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -2168,6 +2168,131 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== +"@radix-ui/primitive@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" + integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-collection@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.1.tgz#259506f97c6703b36291826768d3c1337edd1de5" + integrity sha512-uuiFbs+YCKjn3X1DTSx9G7BHApu4GHbi3kgiwsnFUbOKCrwejAJv4eE4Vc8C0Oaxt9T0aV4ox0WCOdx+39Xo+g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-slot" "1.0.1" + +"@radix-ui/react-compose-refs@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" + integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-context@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" + integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-direction@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" + integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-id@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.0.tgz#8d43224910741870a45a8c9d092f25887bb6d11e" + integrity sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@radix-ui/react-presence@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" + integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@radix-ui/react-primitive@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" + integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.1" + +"@radix-ui/react-roving-focus@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.2.tgz#d8ac2e3b8006697bdfc2b0eb06bef7e15b6245de" + integrity sha512-HLK+CqD/8pN6GfJm3U+cqpqhSKYAWiOJDe+A+8MfxBnOue39QEeMa43csUn2CXCHQT0/mewh1LrrG4tfkM9DMA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.0" + "@radix-ui/react-collection" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-direction" "1.0.0" + "@radix-ui/react-id" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-use-callback-ref" "1.0.0" + "@radix-ui/react-use-controllable-state" "1.0.0" + +"@radix-ui/react-slot@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" + integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + +"@radix-ui/react-tabs@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz#8f5ec73ca41b151a413bdd6e00553408ff34ce07" + integrity sha512-gOUwh+HbjCuL0UCo8kZ+kdUEG8QtpdO4sMQduJ34ZEz0r4922g9REOBM+vIsfwtGxSug4Yb1msJMJYN2Bk8TpQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-direction" "1.0.0" + "@radix-ui/react-id" "1.0.0" + "@radix-ui/react-presence" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-roving-focus" "1.0.2" + "@radix-ui/react-use-controllable-state" "1.0.0" + +"@radix-ui/react-use-callback-ref@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" + integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-controllable-state@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz#a64deaafbbc52d5d407afaa22d493d687c538b7f" + integrity sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.0" + +"@radix-ui/react-use-layout-effect@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" + integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@rollup/plugin-babel@^5.2.0": version "5.3.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" @@ -9194,7 +9319,7 @@ regenerator-runtime@^0.13.10: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== -regenerator-runtime@^0.13.9: +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== @@ -10288,12 +10413,12 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel-rat@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tunnel-rat/-/tunnel-rat-0.1.0.tgz#62cfbaf1b24cabac9318fe45ef26d70dc40e86fe" - integrity sha512-/FKZLBXCoKhA7Wz+dsqitrItaLXYmT2bkZXod+1UuR4JqHtdb54yHvHhmMgLg+eyH1Od/CCnhA2VQQ2A/54Tcw== +tunnel-rat@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tunnel-rat/-/tunnel-rat-0.1.2.tgz#1717efbc474ea2d8aa05a91622457a6e201c0aeb" + integrity sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ== dependencies: - zustand "^4.1.0" + zustand "^4.3.2" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -11088,9 +11213,9 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zustand@^4.1.0, zustand@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.2.tgz#bb121fcad84c5a569e94bd1a2695e1a93ba85d39" - integrity sha512-rd4haDmlwMTVWVqwvgy00ny8rtti/klRoZjFbL/MAcDnmD5qSw/RZc+Vddstdv90M5Lv6RPgWvm1Hivyn0QgJw== +zustand@^4.3.2: + version "4.3.7" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.7.tgz#501b1f0393a7f1d103332e45ab574be5747fedce" + integrity sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ== dependencies: use-sync-external-store "1.2.0"