mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 22:50:13 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
8d9ca20b55
17 changed files with 35 additions and 18 deletions
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "بعد التمكين، تم عرض شريط التنقل في الكتل المضمنة؛ تم مجاهلة هذا الخيار عند شريط التنقل للكتل المضمنة في الكتل الخارقة ولا يظهر أبداً",
|
||||
"appearanceMode": "وضع المظهر",
|
||||
"editReadonly": "وضع القراءة فقط",
|
||||
"editReadonlyTip": "عند التمكين، سيكون المستند للقراءة فقط افتراضيًا",
|
||||
"editReadonlyTip": "عند التمكين، سيكون محرر المستندات للقراءة فقط افتراضيًا. لا يزال بإمكانك البحث واستبدال النص، وتعديل المحتوى عبر API",
|
||||
"generateConflictDoc": "توليد مستندات التعارض عند ظهور تضاربات المزامنة",
|
||||
"generateConflictDocTip": "بعد التمكين، سيتم إنشاء مستندات التعارض عند حدوث تضاربات المزامنة، بحيث يمكن فتحها وعرضها مباشرة. سيتم تسجيل مستندات التعارض في [تاريخ البيانات] سواء تمكين هذا الخيار أو عدم تمكينه",
|
||||
"deleteOpConfirm": "⚠️ تأكيد عملية حذف",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "Nach der Aktivierung zeigen eingebettete Blöcke Breadcrumbs an, eingebettete Blöcke in Superblöcken ignorieren diese Option und zeigen niemals Breadcrumbs.",
|
||||
"appearanceMode": "Darstellungsmodus",
|
||||
"editReadonly": "Schreibgeschützter Modus",
|
||||
"editReadonlyTip": "Nach der Aktivierung ist das Dokument standardmäßig schreibgeschützt.",
|
||||
"editReadonlyTip": "Nach der Aktivierung ist der Dokumenteditor standardmäßig schreibgeschützt. Textsuche und -ersetzung sowie API-Änderungen sind weiterhin möglich.",
|
||||
"generateConflictDoc": "Konfliktdokument generieren, wenn Synchronisationskonflikte auftreten.",
|
||||
"generateConflictDocTip": "Nach der Aktivierung wird ein Konfliktdokument generiert, wenn ein Synchronisationskonflikt auftritt, sodass es direkt geöffnet und angezeigt werden kann. Egal ob aktiviert oder nicht, die [Datenhistorie] wird das Konfliktdokument aufzeichnen.",
|
||||
"deleteOpConfirm": "⚠️ Bestätigung der Löschoperation",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "When enabled, embed blocks will display breadcrumbs, embed blocks in super blocks ignore this option and never show breadcrumbs",
|
||||
"appearanceMode": "Appearance Mode",
|
||||
"editReadonly": "Read-only mode",
|
||||
"editReadonlyTip": "When enabled, the document will be read-only by default",
|
||||
"editReadonlyTip": "When enabled, the document editor will be read-only by default. You can still search and replace text, modify content via API",
|
||||
"generateConflictDoc": "Generate conflict documentation when syncing conflicts",
|
||||
"generateConflictDocTip": "When enabled, a conflict document will be generated when a synchronization conflict occurs, so that it can be opened and viewed directly. Whether enabled or not, the [Data History] will record the conflict document",
|
||||
"deleteOpConfirm": "⚠️ Delete operation confirmation",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "Después de habilitar los bloques incrustados, se mostrarán migas de pan, incrustar bloques en superbloques ignora esta opción y nunca muestra migas de pan",
|
||||
"appearanceMode": "Modo de apariencia",
|
||||
"editReadonly": "Modo de solo lectura",
|
||||
"editReadonlyTip": "Después de habilitarlo, el documento será de solo lectura por defecto",
|
||||
"editReadonlyTip": "Después de habilitarlo, el editor de documentos será de solo lectura por defecto. Aún puedes buscar y reemplazar texto, modificar contenido a través de la API",
|
||||
"generateConflictDoc": "Generar documentación de conflicto al sincronizar conflictos",
|
||||
"generateConflictDocTip": "Después de habilitarlo, se generará un documento de conflicto cuando ocurra un conflicto de sincronización, para que pueda abrirse y verse directamente. Ya sea que esté habilitado o no, el [Historial de datos] registrará el documento de conflicto",
|
||||
"deleteOpConfirm": "⚠️ Confirmación de operación de eliminación",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "Après avoir activé l'intégration, les blocs afficheront le fil d'Ariane, intégrer des blocs dans des super blocs ignorent cette option et n'affichent jamais le fil d'Ariane",
|
||||
"appearanceMode": "Mode d'apparence",
|
||||
"editReadonly": "Mode lecture seule",
|
||||
"editReadonlyTip": "Lorsqu'il est activé, le document sera en lecture seule par défaut",
|
||||
"editReadonlyTip": "Lorsqu'il est activé, l'éditeur de document sera en lecture seule par défaut. Vous pouvez toujours rechercher et remplacer du texte, modifier le contenu via l'API",
|
||||
"generateConflictDoc": "Générer une documentation sur les conflits lors de la synchronisation des conflits",
|
||||
"generateConflictDocTip": "Lorsqu'il est activé, un document de conflit sera généré lorsqu'un conflit de synchronisation se produit, afin qu'il puisse être ouvert et visualisé directement. Qu'il soit activé ou non, l'historique des données enregistrera le document de conflit",
|
||||
"deleteOpConfirm": "⚠️ Supprimer la confirmation de l'opération",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "לאחר הפעולה, בלוקים מוטמעים יראו נתיב, בלוקים מוטמעים בבלוקים עליוניים מתעלמים מהאפשרות הזו ולא יראו נתיבים",
|
||||
"appearanceMode": "מצב מראה",
|
||||
"editReadonly": "מצב קריאה בלבד",
|
||||
"editReadonlyTip": "כאשר מופעל, המסמך יהיה לקריאה בלבד כברירת מחדל",
|
||||
"editReadonlyTip": "כאשר מופעל, עורך המסמכים יהיה לקריאה בלבד כברירת מחדל. עדיין ניתן לחפש ולהחליף טקסט, לשנות תוכן דרך API",
|
||||
"generateConflictDoc": "צור תיעוד שהוקסם כאשר נוצרו סכסוכים",
|
||||
"generateConflictDocTip": "לאחר ההפעלה, תיעוד סכסוך ייווצר כאשר מתהווה סכסוך סנכרון, כך שהוא יכול להיפתח ולהיות נצפה ישירות. בין אם מופעל ובין אם לא, היסטוריית הנתונים תקלוט את תיעוד הסכסוך",
|
||||
"deleteOpConfirm": "⚠️ אישור פעולה מחיקה",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "Dopo l'abilitazione, i blocchi incorporati mostreranno i breadcrumb. I blocchi incorporati nei super blocchi ignorano questa opzione e non mostreranno mai breadcrumb",
|
||||
"appearanceMode": "Modalità aspetto",
|
||||
"editReadonly": "Modalità di sola lettura",
|
||||
"editReadonlyTip": "Quando abilitato, il documento sarà in sola lettura per impostazione predefinita",
|
||||
"editReadonlyTip": "Quando abilitato, l'editor di documenti sarà in sola lettura per impostazione predefinita. Puoi ancora cercare e sostituire testo, modificare contenuti tramite API",
|
||||
"generateConflictDoc": "Genera documento di conflitto quando si verificano conflitti di sincronizzazione",
|
||||
"generateConflictDocTip": "Dopo l'abilitazione, verrà generato un documento di conflitto quando si verifica un conflitto di sincronizzazione, in modo che possa essere aperto e visualizzato direttamente. Sia che sia abilitato o meno, la [Cronologia dati] registrerà il documento di conflitto",
|
||||
"deleteOpConfirm": "⚠️ Conferma operazione di eliminazione",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "埋め込みブロックにパンくずリストを表示します<br>この設定にかかわらずスーパーブロック内の埋め込みブロックは常にパンくずリストが表示されません",
|
||||
"appearanceMode": "表示モード",
|
||||
"editReadonly": "読み取り専用モード",
|
||||
"editReadonlyTip": "有効にすると、ドキュメントはデフォルトで読み取り専用になります",
|
||||
"editReadonlyTip": "有効にすると、ドキュメントエディターはデフォルトで読み取り専用になります。テキストの検索・置換や API による内容の変更は可能です",
|
||||
"generateConflictDoc": "同期の競合時に競合ドキュメントを生成する",
|
||||
"generateConflictDocTip": "同期の競合が発生した場合は競合ドキュメントが生成され、直接開いて表示できます。この設定に関わらず [データ履歴] には競合ドキュメントが記録されます",
|
||||
"deleteOpConfirm": "⚠️ 削除操作の確認",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "Po włączeniu wbudowane bloki będą wyświetlać okruszki, wbudowane bloki w super blokach ignorują tę opcję i nigdy nie pokazują okruszków",
|
||||
"appearanceMode": "Tryb wyglądu",
|
||||
"editReadonly": "Tryb tylko do odczytu",
|
||||
"editReadonlyTip": "Po włączeniu dokument będzie domyślnie tylko do odczytu",
|
||||
"editReadonlyTip": "Po włączeniu edytor dokumentów będzie domyślnie tylko do odczytu. Nadal można wyszukiwać i zastępować tekst, modyfikować zawartość przez API",
|
||||
"generateConflictDoc": "Generuj dokument konfliktowy podczas synchronizacji konfliktów",
|
||||
"generateConflictDocTip": "Po włączeniu, dokument konfliktowy zostanie wygenerowany, gdy wystąpi konflikt synchronizacji, aby można go było otworzyć i przeglądać bezpośrednio. Niezależnie od tego, czy włączone, [Historia danych] zarejestruje dokument konfliktowy",
|
||||
"deleteOpConfirm": "⚠️ Potwierdzenie operacji usunięcia",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "Quando ativado, blocos incorporados exibirão navegação estrutural, blocos incorporados em super blocos ignoram esta opção e nunca mostram navegação estrutural",
|
||||
"appearanceMode": "Modo de Aparência",
|
||||
"editReadonly": "Modo somente leitura",
|
||||
"editReadonlyTip": "Quando ativado, o documento ficará somente leitura por padrão",
|
||||
"editReadonlyTip": "Quando ativado, o editor de documentos ficará somente leitura por padrão. Ainda é possível buscar e substituir texto, modificar conteúdo via API",
|
||||
"generateConflictDoc": "Gerar documentação de conflito quando houver conflitos de sincronização",
|
||||
"generateConflictDocTip": "Quando ativado, um documento de conflito será gerado quando ocorrer um conflito de sincronização, para que possa ser aberto e visualizado diretamente. Independentemente de estar ativado ou não, o [Histórico de Dados] registrará o documento de conflito",
|
||||
"deleteOpConfirm": "⚠️ Confirmação de operação de exclusão",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "После включения вложенные блоки будут отображать крошки, вложенные блоки в супер блоках игнорируют эту опцию и никогда не показывают крошки",
|
||||
"appearanceMode": "Режим внешнего вида",
|
||||
"editReadonly": "Режим только для чтения",
|
||||
"editReadonlyTip": "После включения документ будет по умолчанию только для чтения",
|
||||
"editReadonlyTip": "После включения редактор документов будет по умолчанию только для чтения. По-прежнему можно искать и заменять текст, изменять содержимое через API",
|
||||
"generateConflictDoc": "Создавать документацию конфликтов при возникновении конфликтов синхронизации",
|
||||
"generateConflictDocTip": "После включения при возникновении конфликта синхронизации будет генерироваться документ конфликта, чтобы его можно было открывать и просматривать напрямую. Независимо от включения или нет, [История данных] зарегистрирует документ конфликта",
|
||||
"deleteOpConfirm": "⚠️ Подтверждение операции удаления",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "啟用後嵌入塊將顯示導覽路徑,在超級塊中的嵌入塊忽略該選項,始終不顯示導覽路徑",
|
||||
"appearanceMode": "外觀模式",
|
||||
"editReadonly": "只讀模式",
|
||||
"editReadonlyTip": "啟用後文檔將預設鎖定編輯",
|
||||
"editReadonlyTip": "啟用後文檔編輯器將預設鎖定編輯。仍然能夠搜尋替換文字、透過 API 修改內容",
|
||||
"generateConflictDoc": "同步衝突時生成衝突文檔",
|
||||
"generateConflictDocTip": "啟用後當同步發生衝突時會生成衝突文檔,以便直接打開查看。無論是否啟用,[資料歷史] 都會記錄衝突文檔",
|
||||
"deleteOpConfirm": "⚠️ Delete operation confirmation",
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@
|
|||
"embedBlockBreadcrumbTip": "启用后嵌入块将显示面包屑,在超级块中的嵌入块忽略该选项,始终不显示面包屑",
|
||||
"appearanceMode": "外观模式",
|
||||
"editReadonly": "只读模式",
|
||||
"editReadonlyTip": "启用后文档将默认锁定编辑",
|
||||
"editReadonlyTip": "启用后文档编辑器将默认锁定编辑。仍然能够搜索替换文本、通过 API 修改内容",
|
||||
"generateConflictDoc": "同步冲突时生成冲突文档",
|
||||
"generateConflictDocTip": "启用后当同步发生冲突时会生成冲突文档,以便直接打开查看。无论是否启用,[数据历史] 都会记录冲突文档",
|
||||
"deleteOpConfirm": "⚠️ 删除操作确认",
|
||||
|
|
|
|||
|
|
@ -758,7 +758,7 @@ export const exportMd = (id: string) => {
|
|||
id: "exportPDF",
|
||||
label: window.siyuan.languages.print,
|
||||
icon: "iconPDF",
|
||||
ignore: !isInAndroid(),
|
||||
ignore: !isInAndroid() && !isInHarmony(),
|
||||
click: () => {
|
||||
const msId = showMessage(window.siyuan.languages.exporting);
|
||||
const localData = window.siyuan.storage[Constants.LOCAL_EXPORTPDF];
|
||||
|
|
@ -768,7 +768,12 @@ export const exportMd = (id: string) => {
|
|||
merge: localData.mergeSubdocs,
|
||||
}, async response => {
|
||||
const html = await onExport(response, undefined, {type: "pdf", id});
|
||||
if (isInAndroid()) {
|
||||
window.JSAndroid.print(html);
|
||||
} else if (isInHarmony()) {
|
||||
window.JSHarmony.print(html);
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
hideMessage(msId);
|
||||
}, 3000);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import {getThemeMode, setInlineStyle} from "../../util/assets";
|
|||
import {fetchPost, fetchSyncPost} from "../../util/fetch";
|
||||
import {Dialog} from "../../dialog";
|
||||
import {replaceLocalPath} from "../../editor/rename";
|
||||
import {isInAndroid, setStorageVal} from "../util/compatibility";
|
||||
import {getScreenWidth, isInAndroid, isInHarmony, setStorageVal} from "../util/compatibility";
|
||||
import {getFrontend} from "../../util/functions";
|
||||
|
||||
const getPluginStyle = async () => {
|
||||
|
|
@ -669,7 +669,8 @@ export const onExport = async (data: IWebSocketData, filePath: string, exportOpt
|
|||
if (!isDefault) {
|
||||
themeStyle = `<link rel="stylesheet" type="text/css" id="themeStyle" href="${servePath}appearance/themes/${themeName}/theme.css?${Constants.SIYUAN_VERSION}"/>`;
|
||||
}
|
||||
const minWidthHtml = isInAndroid() ? `document.body.style.minWidth = "${window.JSAndroid.getScreenWidthPx()}px"` : "";
|
||||
let screenWidth = getScreenWidth();
|
||||
const minWidthHtml = isInAndroid() || isInHarmony() ? `document.body.style.minWidth = "${screenWidth}px"` : "";
|
||||
const html = `<!DOCTYPE html>
|
||||
<html lang="${window.siyuan.config.appearance.lang}" data-theme-mode="${getThemeMode()}" data-light-theme="${window.siyuan.config.appearance.themeLight}" data-dark-theme="${window.siyuan.config.appearance.themeDark}">
|
||||
<head>
|
||||
|
|
@ -694,7 +695,7 @@ export const onExport = async (data: IWebSocketData, filePath: string, exportOpt
|
|||
</head>
|
||||
<body>
|
||||
<div class="${["htmlmd", "word"].includes(exportOption.type) ? "b3-typography" : "protyle-wysiwyg" + (window.siyuan.config.editor.displayBookmarkIcon ? " protyle-wysiwyg--attr" : "")}"
|
||||
style="${isInAndroid() ? "margin: 0 16px;" : "max-width: 800px;margin: 0 auto;"}" id="preview">${data.data.content}</div>
|
||||
style="${isInAndroid() || isInHarmony() ? "margin: 0 16px;" : "max-width: 800px;margin: 0 auto;"}" id="preview">${data.data.content}</div>
|
||||
<script src="${servePath}/appearance/icons/${window.siyuan.config.appearance.icon}/icon.js?v=${Constants.SIYUAN_VERSION}"></script>
|
||||
<script src="${servePath}/stage/build/export/protyle-method.js?v=${Constants.SIYUAN_VERSION}"></script>
|
||||
<script src="${servePath}/stage/protyle/js/lute/lute.min.js?v=${Constants.SIYUAN_VERSION}"></script>
|
||||
|
|
|
|||
|
|
@ -291,6 +291,15 @@ export const isWin11 = async () => {
|
|||
return false;
|
||||
};
|
||||
|
||||
export const getScreenWidth = () => {
|
||||
if (isInAndroid()) {
|
||||
return window.JSAndroid.getScreenWidthPx();
|
||||
} else if (isInHarmony()) {
|
||||
return window.JSHarmony.getScreenWidthPx();
|
||||
}
|
||||
return window.outerWidth;
|
||||
}
|
||||
|
||||
export const isWindows = () => {
|
||||
return navigator.platform.toUpperCase().indexOf("WIN") > -1;
|
||||
};
|
||||
|
|
|
|||
2
app/src/types/index.d.ts
vendored
2
app/src/types/index.d.ts
vendored
|
|
@ -257,6 +257,8 @@ interface Window {
|
|||
readClipboard(): string
|
||||
readHTMLClipboard(): string
|
||||
returnDesktop(): void
|
||||
print(html: string): void
|
||||
getScreenWidthPx(): number
|
||||
};
|
||||
|
||||
Protyle: import("../protyle/method").default;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue