Vanessa 2023-11-07 09:40:25 +08:00
parent 1f0ae349d2
commit b2a5fae041
10 changed files with 21 additions and 13 deletions

View file

@ -1,5 +1,5 @@
{ {
"addBelowAbove": "Click to add below<br>Alt+Click to add above", "addBelowAbove": "Click to add below<br>Click to add above",
"imported": "Import completed", "imported": "Import completed",
"mirrorTip": "Mirror database, all data updates will be synchronized to all other mirrors", "mirrorTip": "Mirror database, all data updates will be synchronized to all other mirrors",
"includeTime": "Include time", "includeTime": "Include time",

View file

@ -1,5 +1,5 @@
{ {
"addBelowAbove": "Haga clic para agregar abajo<br>Alt+Clic para agregar arriba", "addBelowAbove": "Haga clic para agregar abajo<br>Clic para agregar arriba",
"imported": "Importación completada", "imported": "Importación completada",
"mirrorTip": "Base de datos espejo, todas las actualizaciones de datos se sincronizarán con todos los demás espejos", "mirrorTip": "Base de datos espejo, todas las actualizaciones de datos se sincronizarán con todos los demás espejos",
"includeTime": "Incluir tiempo", "includeTime": "Incluir tiempo",

View file

@ -1,5 +1,5 @@
{ {
"addBelowAbove": "Cliquez pour ajouter ci-dessous<br>Alt+Cliquez pour ajouter ci-dessus", "addBelowAbove": "Cliquez pour ajouter ci-dessous<br>Cliquez pour ajouter ci-dessus",
"imported": "Importation terminée", "imported": "Importation terminée",
"mirrorTip": "Base de données miroir, toutes les mises à jour des données seront synchronisées avec tous les autres miroirs", "mirrorTip": "Base de données miroir, toutes les mises à jour des données seront synchronisées avec tous les autres miroirs",
"includeTime": "Inclure l'heure", "includeTime": "Inclure l'heure",

View file

@ -1,5 +1,5 @@
{ {
"addBelowAbove": "Click 在下方新增<br>Alt+Click 在上方新增", "addBelowAbove": "Click 在下方新增<br>Click 在上方新增",
"imported": "導入完成", "imported": "導入完成",
"mirrorTip": "鏡像資料庫,所有資料更新會同步到其他所有鏡像中", "mirrorTip": "鏡像資料庫,所有資料更新會同步到其他所有鏡像中",
"includeTime": "具體時間", "includeTime": "具體時間",

View file

@ -1,5 +1,5 @@
{ {
"addBelowAbove": "Click 在下方添加<br>Alt+Click 在上方添加", "addBelowAbove": "Click 在下方添加<br>Click 在上方添加",
"imported": "导入完成", "imported": "导入完成",
"mirrorTip": "镜像数据库,所有数据更新会同步到其他所有镜像中", "mirrorTip": "镜像数据库,所有数据更新会同步到其他所有镜像中",
"includeTime": "具体时间", "includeTime": "具体时间",

View file

@ -28,7 +28,7 @@ import {Menu} from "../../plugin/Menu";
import {getNoContainerElement} from "../wysiwyg/getBlock"; import {getNoContainerElement} from "../wysiwyg/getBlock";
import {openTitleMenu} from "../header/openTitleMenu"; import {openTitleMenu} from "../header/openTitleMenu";
import {emitOpenMenu} from "../../plugin/EventBus"; import {emitOpenMenu} from "../../plugin/EventBus";
import {isInAndroid} from "../util/compatibility"; import {isInAndroid, isMac, updateHotkeyTip} from "../util/compatibility";
import {resize} from "../util/resize"; import {resize} from "../util/resize";
export class Breadcrumb { export class Breadcrumb {
@ -47,7 +47,7 @@ export class Breadcrumb {
<button class="protyle-breadcrumb__icon fn__none" data-type="exit-focus">${window.siyuan.languages.exitFocus}</button> <button class="protyle-breadcrumb__icon fn__none" data-type="exit-focus">${window.siyuan.languages.exitFocus}</button>
<button class="block__icon block__icon--show fn__flex-center ariaLabel" aria-label="${window.siyuan.languages.lockEdit}" data-type="readonly"><svg><use xlink:href="#iconUnlock"></use></svg></button> <button class="block__icon block__icon--show fn__flex-center ariaLabel" aria-label="${window.siyuan.languages.lockEdit}" data-type="readonly"><svg><use xlink:href="#iconUnlock"></use></svg></button>
<span class="fn__space"></span> <span class="fn__space"></span>
<button class="block__icon block__icon--show fn__flex-center ariaLabel" data-type="doc" aria-label="${window.siyuan.languages.gutterTip2}"><svg><use xlink:href="#iconFile"></use></svg></button> <button class="block__icon block__icon--show fn__flex-center ariaLabel" data-type="doc" aria-label="${isMac() ? window.siyuan.languages.gutterTip2 : window.siyuan.languages.gutterTip2.replace("", "Shift+")}"><svg><use xlink:href="#iconFile"></use></svg></button>
<span class="fn__space"></span> <span class="fn__space"></span>
<button class="block__icon block__icon--show fn__flex-center ariaLabel" data-type="more" aria-label="${window.siyuan.languages.more}"><svg><use xlink:href="#iconMore"></use></svg></button> <button class="block__icon block__icon--show fn__flex-center ariaLabel" data-type="more" aria-label="${window.siyuan.languages.more}"><svg><use xlink:href="#iconMore"></use></svg></button>
<button class="block__icon block__icon--show fn__flex-center fn__none ariaLabel" style="margin-left: 8px" data-type="context" aria-label="${window.siyuan.languages.context}"><svg><use xlink:href="#iconAlignCenter"></use></svg></button>`; <button class="block__icon block__icon--show fn__flex-center fn__none ariaLabel" style="margin-left: 8px" data-type="context" aria-label="${window.siyuan.languages.context}"><svg><use xlink:href="#iconAlignCenter"></use></svg></button>`;

View file

@ -3,7 +3,7 @@ import {getIconByType} from "../../editor/getIcon";
import {enterBack, iframeMenu, setFold, tableMenu, videoMenu, zoomOut} from "../../menus/protyle"; import {enterBack, iframeMenu, setFold, tableMenu, videoMenu, zoomOut} from "../../menus/protyle";
import {MenuItem} from "../../menus/Menu"; import {MenuItem} from "../../menus/Menu";
import {copySubMenu, openAttr, openWechatNotify} from "../../menus/commonMenuItem"; import {copySubMenu, openAttr, openWechatNotify} from "../../menus/commonMenuItem";
import {copyPlainText, updateHotkeyTip, writeText} from "../util/compatibility"; import {copyPlainText, isMac, updateHotkeyTip, writeText} from "../util/compatibility";
import { import {
transaction, transaction,
turnsIntoOneTransaction, turnsIntoOneTransaction,
@ -42,8 +42,14 @@ import {resizeAV} from "../util/resize";
export class Gutter { export class Gutter {
public element: HTMLElement; public element: HTMLElement;
private gutterTip: string
constructor(protyle: IProtyle) { constructor(protyle: IProtyle) {
if (isMac()) {
this.gutterTip = window.siyuan.languages.gutterTip
} else {
this.gutterTip = window.siyuan.languages.gutterTip.replace(/⌘/g, "Ctrl+").replace(/⌥/g, "Alt+").replace(/⇧/g, "Shift+").replace(/⌃/g, "Ctrl+")
}
this.element = document.createElement("div"); this.element = document.createElement("div");
this.element.className = "protyle-gutters"; this.element.className = "protyle-gutters";
this.element.addEventListener("dragstart", (event: DragEvent & { target: HTMLElement }) => { this.element.addEventListener("dragstart", (event: DragEvent & { target: HTMLElement }) => {
@ -1836,7 +1842,7 @@ export class Gutter {
html = ""; html = "";
} }
index += 1; index += 1;
const buttonHTML = `<button class="ariaLabel" data-position="right" aria-label="${window.siyuan.languages.gutterTip}" const buttonHTML = `<button class="ariaLabel" data-position="right" aria-label="${this.gutterTip}"
data-type="${type}" data-subtype="${nodeElement.getAttribute("data-subtype")}" data-node-id="${nodeElement.getAttribute("data-node-id")}"> data-type="${type}" data-subtype="${nodeElement.getAttribute("data-subtype")}" data-node-id="${nodeElement.getAttribute("data-node-id")}">
<svg><use xlink:href="#${getIconByType(type, nodeElement.getAttribute("data-subtype"))}"></use></svg> <svg><use xlink:href="#${getIconByType(type, nodeElement.getAttribute("data-subtype"))}"></use></svg>
<span ${protyle.disabled ? "" : 'draggable="true"'}></span> <span ${protyle.disabled ? "" : 'draggable="true"'}></span>

View file

@ -11,7 +11,7 @@ import {
} from "../../menus/commonMenuItem"; } from "../../menus/commonMenuItem";
import {Constants} from "../../constants"; import {Constants} from "../../constants";
import {matchHotKey} from "../util/hotKey"; import {matchHotKey} from "../util/hotKey";
import {readText, writeText} from "../util/compatibility"; import {isMac, readText, updateHotkeyTip, writeText} from "../util/compatibility";
import * as dayjs from "dayjs"; import * as dayjs from "dayjs";
import {setPanelFocus} from "../../layout/util"; import {setPanelFocus} from "../../layout/util";
import {openFileById, updatePanelByEditor} from "../../editor/util"; import {openFileById, updatePanelByEditor} from "../../editor/util";
@ -25,6 +25,7 @@ import {hideTooltip} from "../../dialog/tooltip";
import {commonClick} from "../wysiwyg/commonClick"; import {commonClick} from "../wysiwyg/commonClick";
import {openTitleMenu} from "./openTitleMenu"; import {openTitleMenu} from "./openTitleMenu";
import {electronUndo} from "../undo"; import {electronUndo} from "../undo";
import {replace} from "../../search/util";
export class Title { export class Title {
public element: HTMLElement; public element: HTMLElement;
@ -38,7 +39,7 @@ export class Title {
this.element.classList.add("protyle-wysiwyg--attr"); this.element.classList.add("protyle-wysiwyg--attr");
} }
// 标题内需要一个空格,避免首次加载出现`请输入文档名`干扰 // 标题内需要一个空格,避免首次加载出现`请输入文档名`干扰
this.element.innerHTML = `<span aria-label="${window.siyuan.languages.gutterTip2}" data-position="right" class="protyle-title__icon ariaLabel"><svg><use xlink:href="#iconFile"></use></svg></span> this.element.innerHTML = `<span aria-label="${isMac() ? window.siyuan.languages.gutterTip2 : window.siyuan.languages.gutterTip2.replace("⇧", "Shift+")}" data-position="right" class="protyle-title__icon ariaLabel"><svg><use xlink:href="#iconFile"></use></svg></span>
<div contenteditable="true" spellcheck="${window.siyuan.config.editor.spellcheck}" class="protyle-title__input" data-tip="${window.siyuan.languages._kernel[16]}"> </div><div class="protyle-attr"></div>`; <div contenteditable="true" spellcheck="${window.siyuan.config.editor.spellcheck}" class="protyle-title__input" data-tip="${window.siyuan.languages._kernel[16]}"> </div><div class="protyle-attr"></div>`;
this.editElement = this.element.querySelector(".protyle-title__input"); this.editElement = this.element.querySelector(".protyle-title__input");
this.editElement.addEventListener("paste", (event: ClipboardEvent) => { this.editElement.addEventListener("paste", (event: ClipboardEvent) => {

View file

@ -6,6 +6,7 @@ import * as dayjs from "dayjs";
import {unicode2Emoji} from "../../../emoji"; import {unicode2Emoji} from "../../../emoji";
import {focusBlock} from "../../util/selection"; import {focusBlock} from "../../util/selection";
import {resizeAV} from "../../util/resize"; import {resizeAV} from "../../util/resize";
import {isMac, updateHotkeyTip} from "../../util/compatibility";
export const avRender = (element: Element, protyle: IProtyle, cb?: () => void) => { export const avRender = (element: Element, protyle: IProtyle, cb?: () => void) => {
let avElements: Element[] = []; let avElements: Element[] = [];
@ -80,7 +81,7 @@ style="width: ${column.width || "200px"}">${getCalcValue(column) || '<svg><use x
data.rows.forEach((row: IAVRow) => { data.rows.forEach((row: IAVRow) => {
tableHTML += `<div class="av__row" data-id="${row.id}"> tableHTML += `<div class="av__row" data-id="${row.id}">
<div class="av__gutters"> <div class="av__gutters">
<button class="ariaLabel" data-position="right" aria-label="${window.siyuan.languages.d}"><svg><use xlink:href="#iconAdd"></use></svg></button> <button class="ariaLabel" data-position="right" aria-label="${isMac() ? window.siyuan.languages.addBelowAbove : window.siyuan.languages.addBelowAbove.replace("", "Alt+")}"><svg><use xlink:href="#iconAdd"></use></svg></button>
<button class="ariaLabel" draggable="true" data-position="right" aria-label="${window.siyuan.languages.rowTip}"><svg><use xlink:href="#iconDrag"></use></svg></button> <button class="ariaLabel" draggable="true" data-position="right" aria-label="${window.siyuan.languages.rowTip}"><svg><use xlink:href="#iconDrag"></use></svg></button>
</div> </div>
<div class="av__firstcol"><svg><use xlink:href="#iconUncheck"></use></svg></div>`; <div class="av__firstcol"><svg><use xlink:href="#iconUncheck"></use></svg></div>`;

View file

@ -115,7 +115,7 @@ export const isInIOS = () => {
// MacWindows 快捷键展示 // MacWindows 快捷键展示
export const updateHotkeyTip = (hotkey: string) => { export const updateHotkeyTip = (hotkey: string) => {
if (/Mac/.test(navigator.platform) || navigator.platform === "iPhone") { if (isMac()) {
return hotkey; return hotkey;
} }