diff --git a/package.json b/package.json index a323584..fd271f0 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "chrono-node": "^2.6.3", "fast-glob": "^3.2.12", "glob": "^7.2.3", + "js-yaml": "^4.1.0", "minimist": "^1.2.8", "rollup-plugin-livereload": "^2.0.5", "sass": "^1.62.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7838a3a..bd9af8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ devDependencies: glob: specifier: ^7.2.3 version: 7.2.3 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 minimist: specifier: ^1.2.8 version: 1.2.8 @@ -34,13 +37,13 @@ devDependencies: version: 1.62.1 siyuan: specifier: ^0.9.0 - version: registry.npmmirror.com/siyuan@0.9.0 + version: 0.9.0 svelte: specifier: ^3.57.0 version: 3.57.0 sy-plugin-changelog: specifier: ^0.0.7 - version: registry.npmmirror.com/sy-plugin-changelog@0.0.7 + version: 0.0.7 ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@20.2.0)(typescript@5.0.4) @@ -49,7 +52,7 @@ devDependencies: version: 5.0.4 vite: specifier: ^4.5.2 - version: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1) + version: 4.5.2(@types/node@20.2.0)(sass@1.62.1) vite-plugin-static-copy: specifier: ^0.15.0 version: 0.15.0(vite@4.5.2) @@ -66,6 +69,204 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} @@ -116,7 +317,7 @@ packages: magic-string: 0.29.0 svelte: 3.57.0 svelte-hmr: 0.15.2(svelte@3.57.0) - vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1) + vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1) vitefu: 0.2.4(vite@4.5.2) transitivePeerDependencies: - supports-color @@ -169,6 +370,10 @@ packages: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -204,7 +409,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: registry.npmmirror.com/fsevents@2.3.3 + fsevents: 2.3.3 dev: true /chrono-node@2.6.3: @@ -252,6 +457,36 @@ packages: engines: {node: '>=0.3.1'} dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -289,6 +524,14 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -358,12 +601,19 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11 + graceful-fs: 4.2.11 dev: true /jszip@3.10.1: @@ -442,6 +692,12 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -475,6 +731,15 @@ packages: engines: {node: '>=8.6'} dev: true + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true @@ -517,6 +782,14 @@ packages: - utf-8-validate dev: true + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -541,6 +814,10 @@ packages: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true + /siyuan@0.9.0: + resolution: {integrity: sha512-pE1zKCMErl9EOTxmGxT7YlgZe8tC5C0MgwVXL+zUrEaMUDUdMYK6XR0e9YHgSUY96VoTbtSkHpZinkNg1/8zaQ==} + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -566,6 +843,10 @@ packages: engines: {node: '>= 8'} dev: true + /sy-plugin-changelog@0.0.7: + resolution: {integrity: sha512-2xiSeiyp1OzMW+iuYGcQ8R+/3cxf6a4DEXwGxWXhdvDp6MdPJYsgyza/M++YoLP7B0TdDQneVWyMMMCA4y4vQg==} + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -633,7 +914,7 @@ packages: fast-glob: 3.2.12 fs-extra: 11.1.1 picocolors: 1.0.0 - vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1) + vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1) dev: true /vite-plugin-zip-pack@1.0.5(vite@4.5.2): @@ -642,7 +923,44 @@ packages: vite: '>=2.x' dependencies: jszip: 3.10.1 - vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1) + vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1) + dev: true + + /vite@4.5.2(@types/node@20.2.0)(sass@1.62.1): + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.2.0 + esbuild: 0.18.20 + postcss: 8.4.33 + rollup: 3.29.4 + sass: 1.62.1 + optionalDependencies: + fsevents: 2.3.3 dev: true /vitefu@0.2.4(vite@4.5.2): @@ -653,7 +971,7 @@ packages: vite: optional: true dependencies: - vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1) + vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1) dev: true /wrappy@1.0.2: @@ -677,389 +995,3 @@ packages: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true - - registry.npmmirror.com/@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz} - name: '@esbuild/android-arm64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz} - name: '@esbuild/android-arm' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz} - name: '@esbuild/android-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz} - name: '@esbuild/darwin-arm64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz} - name: '@esbuild/darwin-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz} - name: '@esbuild/freebsd-arm64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz} - name: '@esbuild/freebsd-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz} - name: '@esbuild/linux-arm64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz} - name: '@esbuild/linux-arm' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz} - name: '@esbuild/linux-ia32' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz} - name: '@esbuild/linux-loong64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz} - name: '@esbuild/linux-mips64el' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz} - name: '@esbuild/linux-ppc64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz} - name: '@esbuild/linux-riscv64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz} - name: '@esbuild/linux-s390x' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz} - name: '@esbuild/linux-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz} - name: '@esbuild/netbsd-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz} - name: '@esbuild/openbsd-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz} - name: '@esbuild/sunos-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz} - name: '@esbuild/win32-arm64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz} - name: '@esbuild/win32-ia32' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz} - name: '@esbuild/win32-x64' - version: 0.18.20 - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz} - name: esbuild - version: 0.18.20 - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm@0.18.20 - '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64@0.18.20 - '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64@0.18.20 - '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20 - '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64@0.18.20 - '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20 - '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20 - '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm@0.18.20 - '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64@0.18.20 - '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32@0.18.20 - '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64@0.18.20 - '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20 - '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20 - '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20 - '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x@0.18.20 - '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64@0.18.20 - '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20 - '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20 - '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64@0.18.20 - '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64@0.18.20 - '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32@0.18.20 - '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64@0.18.20 - dev: true - - registry.npmmirror.com/fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz} - name: fsevents - version: 2.3.3 - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz} - name: graceful-fs - version: 4.2.11 - requiresBuild: true - dev: true - optional: true - - registry.npmmirror.com/nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz} - name: nanoid - version: 3.3.7 - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - registry.npmmirror.com/picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz} - name: picocolors - version: 1.0.0 - dev: true - - registry.npmmirror.com/postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.33.tgz} - name: postcss - version: 8.4.33 - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: registry.npmmirror.com/nanoid@3.3.7 - picocolors: registry.npmmirror.com/picocolors@1.0.0 - source-map-js: registry.npmmirror.com/source-map-js@1.0.2 - dev: true - - registry.npmmirror.com/rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz} - name: rollup - version: 3.29.4 - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: registry.npmmirror.com/fsevents@2.3.3 - dev: true - - registry.npmmirror.com/siyuan@0.9.0: - resolution: {integrity: sha512-pE1zKCMErl9EOTxmGxT7YlgZe8tC5C0MgwVXL+zUrEaMUDUdMYK6XR0e9YHgSUY96VoTbtSkHpZinkNg1/8zaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/siyuan/-/siyuan-0.9.0.tgz} - name: siyuan - version: 0.9.0 - dev: true - - registry.npmmirror.com/source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz} - name: source-map-js - version: 1.0.2 - engines: {node: '>=0.10.0'} - dev: true - - registry.npmmirror.com/sy-plugin-changelog@0.0.7: - resolution: {integrity: sha512-2xiSeiyp1OzMW+iuYGcQ8R+/3cxf6a4DEXwGxWXhdvDp6MdPJYsgyza/M++YoLP7B0TdDQneVWyMMMCA4y4vQg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sy-plugin-changelog/-/sy-plugin-changelog-0.0.7.tgz} - name: sy-plugin-changelog - version: 0.0.7 - dev: true - - registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1): - resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.5.2.tgz} - id: registry.npmmirror.com/vite/4.5.2 - name: vite - version: 4.5.2 - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.2.0 - esbuild: registry.npmmirror.com/esbuild@0.18.20 - postcss: registry.npmmirror.com/postcss@8.4.33 - rollup: registry.npmmirror.com/rollup@3.29.4 - sass: 1.62.1 - optionalDependencies: - fsevents: registry.npmmirror.com/fsevents@2.3.3 - dev: true diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json deleted file mode 100644 index 5de957b..0000000 --- a/src/i18n/en_US.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "Name": "Daily Note Today", - "NewVer": " new version", - "Setting": { - "name": "Setting", - "OpenOnStart": { - "title": "Auto-open Daily Note", - "text": "Open Today's daily note automatically when the plugin is loaded" - }, - "AutoOpenAfterSync": { - "title": "Auto create DN only after synchronization 🧪Experimental Features", - "text": "To solve the document conflict problem caused by synchronization + automatic opening of DN, try opening DN automatically after synchronization.
This feature is experimental and lacks sufficient testing, so please use it at your discretion.
Practical tests shown it not very useful, not recommended " - }, - "DefaultNotebook": { - "title": "Default Notebook ID", - "text": "The notebook where the daily note is created by default, use the first notebook if blank", - "placeholder": "Please copy from notebook's ID" - }, - "DisableAutoCreateOnMobile": { - "title": "Disable Auto Create Diary On Mobile", - "text": "This feature is mainly to avoid the problem of inconvenient handling when generating conflict diaries in mobile; if this option is turned on, \"Open Today's Diary Automatically\" will not work on mobile." - }, - "NotebookBlacklist": { - "title": "Notebook Blacklist", - "text": "Notebook in the blacklist will not be shown in the dropdown menu. Default notebook can not be in the blacklist", - "button": "Set it" - }, - "update": { - "title": "Update Status", - "text": "Update the status of the notebook when the notebook configuration changes", - "button": "Update" - }, - "NotebookSort": { - "title": "Notebook Sorting Scheme", - "text": "1. Same what document tree shows 2. Same the order defined in custom sorting mode", - "options": { - "doc-tree": "Same as document tree", - "custom-sort": "Same as custom sorting" - } - }, - "IconPosition": { - "title": "Icon Position", - "text": "Take effect after reloading", - "options": { - "left": "Topbar left", - "right": "Topbar right" - } - }, - "EnableMove": { - "title": "Enable \"Move Block\" in menu", - "text": "When enabled, the \"Move Block\" item will be added to the menu after clicking on the block icon" - }, - "EnableReserve": { - "title": "Enable \"Reserve Block\" in menu", - "text": "When enabled, the \"Reserve Block\" item will be added to the menu after clicking on the block icon" - }, - "EnableResvDock": { - "title": "Enable \"Show reservations\" in dock menu", - "text": "When enabled, the \"Show reservations\" pannel will be added to the dock menu at the right bottom side of the dock bar" - }, - "ExpandGutterMenu": { - "title": "Expand all block menu items", - "text": "When enabled, the plugin's block menu items are expanded to appear as a separate secondary menu under the plugin menu" - }, - "PopupReserveDialog": { - "title": "Popup Confirmation Window When Reserving a Block", - "text": "Automatically displays a confirmation window when reserving a block to ensure the date is correct." - }, - "ResvEmbedAt": { - "title": "Insert reservations at", - "text": "Insert reservations at top or bottom of today's daily note", - "options": { - "top": "Top of the document", - "bottom": "Bottom of the document" - } - }, - "RetvType": { - "title": "Insert reservations as", - "text": "Target block's type for reservations, could be embed block, link, or reference", - "options": { - "embed": "Embed", - "link": "Link", - "ref": "Ref" - } - }, - "SetPastDailyNoteAttr": { - "title": "Add document attribute to past daily notes", - "text": "✨ Adding the custom-dailynote attribute to past daily notes for compatibility with SiYuan versions prior to 2.11.1.
If you don't understand what this button is for, it is recommended that you press it, and it won't bring you any extra trouble!
Note: Clicking this button once is enough.", - "button": "GO!" - }, - "HighlightResv": { - "title": "Highlight reservation icon", - "text": "Highlight reservation icon in dock bar when there is a reservation on the day" - }, - "AutoHandleDuplicate": { - "title": "Auto-handle duplicates", - "text": "Automatically handel with duplicate daily notes while detected, without popup dialog" - }, - "AutoHandleDuplicateMethod": { - "title": "Auto-handle duplicates' method", - "text": "When detected duplicate daily notes, how to handle with them", - "options": { - "AllMerge": "Merge all", - "TrashDup": "Move to trash", - "SmartMerge": "Merge smartly", - "DeleteDup": "Delete directly" - } - } - }, - "SettingGroups": { - "enable": "Enable", - "interact": "Interact", - "dailynote": "Daily Note", - "reservation": "Reservation" - }, - "TrashBinDocContent": "- This is a trash bin document created by the \"Daily Note Today\" plugin.\n- The reason you see this document is that you used the \"Move to Trash\" feature in the plugin to automatically handle duplicate daily note documents.\n- All documents under this document are daily notes that were previously detected as duplicate documents by the \"Daily Note Today\" plugin.\n- If you find this trash bin document bothersome, you can delete it entirely. The plugin will recreate the trash bin document when needed.", - "Open": "Open daily note", - "Create": "Create daily note", - "UpdateAll": "Notebook status updated", - "InvalidDefaultNotebook": "

Sorry, but the plugin can not find a notebook that corresponds to this ID; perhaps it is an illegitimate ID, or the corresponding notebook has been closed by yourself.

We suggest that you double-check the plugin's settings. Ooops!??

It should have been reservation blocks here, but the blocks are not found

Maybe they were deleted or the notebook is closed

" - }, - "ConflictDiary": { - "part1": [ - "#### Note: Duplicate daily notes detected", - "Conflict files are listed below, the last line, indicated in bold, represents the earliest dailynote and will be treated as the main dailynote for auto-handeling", - "| Document ID | Title | Created | Updated | Notebook |", - "| --- | --- | --- | --- | --- |" - ], - "part2": [ - "- **Why does this happen?**", - " You may have created a daily note on another device before and then created a daily note on this device, resulting in a synchronization conflict.", - "- **How to solve it manually?**", - " Please merge and delete redundant diaries manually: Open today's daily note, locate the daily note document, and the conflicting document will be nearby.", - "- **What do the following buttons mean?**", - " Auto-handeling method, please refer to the plugin documentation for details." - ], - "part3": [ - "

", - "We found that in addition to the dailynote document conflict, the parent document at the upper level seems to be in conflict as well, the \"Auto Handler\" cannot handle this complexity of merging document trees.", - "

", - "

", - "You can still to use the \"Auto Handler\" feature, while it is recommended that you manually deal with duplicate parent documents after auto-handling.", - "

" - ], - "AutoMerge": "Auto merge", - "HeadingMarkdown": "# Duplicate diaries are listed below", - "success": "Success", - "fail": "Fail due to unknown reason, please merge them manually" - }, - "DockReserve": { - "arial": "Daily Note Today Reservations", - "title": "Reservations", - "refresh": "refresh", - "expand": "expand", - "collapse": "collapse", - "min": "minimize", - "emptyContent": "No related content found", - "PopupResv": "Inspect reservations" - }, - "Blacklist": { - "name": "Blacklist", - "toggle": "Add to blacklist", - "update": "Update blacklist" - } -} \ No newline at end of file diff --git a/src/i18n/en_US.yaml b/src/i18n/en_US.yaml new file mode 100644 index 0000000..daadd9b --- /dev/null +++ b/src/i18n/en_US.yaml @@ -0,0 +1,209 @@ +--- +Name: Daily Note Today +NewVer: " new version" +Setting: + name: Setting + OpenOnStart: + title: Auto-open Daily Note + text: Open Today's daily note automatically when the plugin is loaded + AutoOpenAfterSync: + title: + "Auto create DN only after synchronization \U0001F9EAExperimental Features" + text: + To solve the document conflict problem caused by synchronization + automatic + opening of DN, try opening DN automatically after synchronization.
This + feature is experimental and lacks sufficient testing, so please + use it at your discretion.
Practical tests shown it not very useful, + not recommended + DefaultNotebook: + title: Default Notebook ID + text: + The notebook where the daily note is created by default, use the first notebook + if blank + placeholder: Please copy from notebook's ID + DisableAutoCreateOnMobile: + title: Disable Auto Create Diary On Mobile + text: + This feature is mainly to avoid the problem of inconvenient handling when + generating conflict diaries in mobile; if this option is turned on, "Open Today's + Diary Automatically" will not work on mobile. + NotebookBlacklist: + title: Notebook Blacklist + text: + Notebook in the blacklist will not be shown in the dropdown menu. Default + notebook can not be in the blacklist + button: Set it + update: + title: Update Status + text: Update the status of the notebook when the notebook configuration changes + button: Update + NotebookSort: + title: Notebook Sorting Scheme + text: + 1. Same what document tree shows 2. Same the order defined in custom sorting + mode + options: + doc-tree: Same as document tree + custom-sort: Same as custom sorting + IconPosition: + title: Icon Position + text: Take effect after reloading + options: + left: Topbar left + right: Topbar right + EnableMove: + title: Enable "Move Block" in menu + text: + When enabled, the "Move Block" item will be added to the menu after clicking + on the block icon + EnableReserve: + title: Enable "Reserve Block" in menu + text: + When enabled, the "Reserve Block" item will be added to the menu after clicking + on the block icon + EnableResvDock: + title: Enable "Show reservations" in dock menu + text: + When enabled, the "Show reservations" pannel will be added to the dock menu + at the right bottom side of the dock bar + ExpandGutterMenu: + title: Expand all block menu items + text: + When enabled, the plugin's block menu items are expanded to appear as a + separate secondary menu under the plugin menu + PopupReserveDialog: + title: Popup Confirmation Window When Reserving a Block + text: + Automatically displays a confirmation window when reserving a block to ensure + the date is correct. + ResvEmbedAt: + title: Insert reservations at + text: Insert reservations at top or bottom of today's daily note + options: + top: Top of the document + bottom: Bottom of the document + RetvType: + title: Insert reservations as + text: Target block's type for reservations, could be embed block, link, or reference + options: + embed: Embed + link: Link + ref: Ref + SetPastDailyNoteAttr: + title: Add document attribute to past daily notes + text: + '✨ Adding the custom-dailynote attribute to past daily notes for compatibility + with SiYuan versions prior to 2.11.1.
If + you don''t understand what this button is for, it is recommended that you press + it, and it won''t bring you any extra trouble!
Note: Clicking this button + once is enough.' + button: GO! + HighlightResv: + title: Highlight reservation icon + text: + Highlight reservation icon in dock bar when there is a reservation on the + day + AutoHandleDuplicate: + title: Auto-handle duplicates + text: + Automatically handel with duplicate daily notes while detected, without + popup dialog + AutoHandleDuplicateMethod: + title: Auto-handle duplicates' method + text: When detected duplicate daily notes, how to handle with them + options: + AllMerge: Merge all + TrashDup: Move to trash + SmartMerge: Merge smartly + DeleteDup: Delete directly +SettingGroups: + enable: Enable + interact: Interact + dailynote: Daily Note + reservation: Reservation +TrashBinDocContent: |- + - This is a trash bin document created by the "Daily Note Today" plugin. + - The reason you see this document is that you used the "Move to Trash" feature in the plugin to automatically handle duplicate daily note documents. + - All documents under this document are daily notes that were previously detected as duplicate documents by the "Daily Note Today" plugin. + - If you find this trash bin document bothersome, you can delete it entirely. The plugin will recreate the trash bin document when needed. +Open: Open daily note +Create: Create daily note +UpdateAll: Notebook status updated +InvalidDefaultNotebook: + "

Sorry, but the plugin can not find a notebook that corresponds + to this ID; perhaps it is an illegitimate ID, or the corresponding notebook has + been closed by yourself.

We suggest that you double-check the plugin's settings. + Ooops!??

It should have been reservation blocks here, but the + blocks are not found

Maybe they were deleted or the notebook is closed

" +ConflictDiary: + part1: + - "#### Note: Duplicate daily notes detected" + - Conflict files are listed below, the last line, indicated in bold, represents + the earliest dailynote and will be treated as the main dailynote for auto-handeling + - "| Document ID | Title | Created | Updated | Notebook |" + - "| --- | --- | --- | --- | --- |" + part2: + - "- **Why does this happen?**" + - " You may have created a daily note on another device before and then created + a daily note on this device, resulting in a synchronization conflict." + - "- **How to solve it manually?**" + - " Please merge and delete redundant diaries manually: Open today's daily note, + locate the daily note document, and the conflicting document will be nearby." + - "- **What do the following buttons mean?**" + - " Auto-handeling method, please refer to the plugin documentation for details." + part3: + - '

' + - We found that in addition to the dailynote document conflict, the parent document + at the upper level seems to be in conflict as well, the "Auto Handler" cannot + handle this complexity of merging document trees. + - "

" + - '

' + - You can still to use the "Auto Handler" feature, while it is recommended + that you manually deal with duplicate parent documents after auto-handling. + - "

" + AutoMerge: Auto merge + HeadingMarkdown: "# Duplicate diaries are listed below" + success: Success + fail: Fail due to unknown reason, please merge them manually +DockReserve: + arial: Daily Note Today Reservations + title: Reservations + refresh: refresh + expand: expand + collapse: collapse + min: minimize + emptyContent: No related content found + PopupResv: Inspect reservations +Blacklist: + name: Blacklist + toggle: Add to blacklist + update: Update blacklist diff --git a/src/i18n/zh_CN.json b/src/i18n/zh_CN.json deleted file mode 100644 index 2c030f5..0000000 --- a/src/i18n/zh_CN.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "Name": "今日笔记", - "NewVer": "新版本", - "Setting": { - "name": "设置", - "OpenOnStart": { - "title": "自动打开 Daily Note", - "text": "插件启动后自动打开今日的 Daily Note" - }, - "AutoOpenAfterSync": { - "title": "同步后再创建日记 🧪实验性功能", - "text": "为了解决同步+自动打开日记造成的文件冲突问题,尝试在同步之后在自动打开日记。
本功能为实验性功能缺少足够的测试,请斟酌使用
实际测试作用不大,不推荐。" - }, - "DefaultNotebook": { - "title": "设置默认笔记本 ID", - "text": "设置默认的笔记本 ID, 留空时表示选择排位第一的笔记本", - "placeholder": "请复制笔记本 ID" - }, - "DisableAutoCreateOnMobile": { - "title": "移动端强制关闭「自动打开日记」功能", - "text": "本功能主要为了避免在移动端遇到生成冲突日记的时候不方便处理的问题; 如果将本选项关闭,则「自动打开 Daily Note」在移动端将不会生效" - }, - "NotebookBlacklist": { - "title": "笔记本黑名单", - "text": "加入黑名单后, 该笔记本将不会再下拉框当中显示, 默认笔记本不能加入黑名单", - "button": "设置" - }, - "update": { - "title": "更新状态", - "text": "在笔记本配置发生变化的时候更新其状态", - "button": "更新" - }, - "NotebookSort": { - "title": "笔记本排序方案", - "text": "1. 和当前文档树的显示保持一致 2. 和在自定义排序中的设置保持一致", - "options": { - "doc-tree": "和文档树一致", - "custom-sort": "和自定义排序一致" - } - }, - "IconPosition": { - "title": "图标位置", - "text": "下次重启后生效", - "options": { - "left": "顶栏左侧", - "right": "顶栏右侧" - } - }, - "EnableMove": { - "title": "启用「移动块」菜单", - "text": "启用后, 点击块 icon 后的菜单里会加入相应菜单" - }, - "EnableReserve": { - "title": "启用「预约块」菜单", - "text": "启用后, 点击块 icon 后的菜单里会加入相应菜单" - }, - "EnableResvDock": { - "title": "启用「查看预约」侧边栏", - "text": "启用后, 右边栏下方添加图标, 点开后可以查看未来的预约" - }, - "ExpandGutterMenu": { - "title": "将所有块菜单项目展开", - "text": "启用后, 插件的块菜单项目都会展开到插件菜单下作为独立的二级菜单显示" - }, - "PopupReserveDialog": { - "title": "预约块时弹出确认窗口", - "text": "预约块的时候自动弹出确认窗口, 确保日期无误" - }, - "ResvEmbedAt": { - "title": "将预约插入到", - "text": "将今日的预约块插入到文档的开头还是结尾", - "options": { - "top": "文档开头", - "bottom": "文档结尾" - } - }, - "RetvType": { - "title": "将预约插入为", - "text": "预约插入的类型, 可以为嵌入块, 链接或引用", - "options": { - "embed": "嵌入块", - "link": "链接块", - "ref": "引用块" - } - }, - "SetPastDailyNoteAttr": { - "title": "为过去的 Daily Note 补充文档属性", - "text": "✨ 为过去的日记添加 custom-dailynote 属性,以兼容 2.11.1 版本前的思源。
你不必理解具体的细节, 点一下这个按钮, 不会给你带来任何额外的麻烦。
注: 这个按钮点一次就够了", - "button": "开始" - }, - "HighlightResv": { - "title": "高亮当日预约", - "text": "如果当日存在预约,则高亮预约列表的侧边栏图标" - }, - "AutoHandleDuplicate": { - "title": "自动处理重复日记", - "text": "当检测到重复的日记时,不弹出提示框直接自动处理" - }, - "AutoHandleDuplicateMethod": { - "title": "自动处理重复日记的方式", - "text": "当检测到重复的日记时,自动处理的方式", - "options": { - "AllMerge": "全部合并", - "TrashDup": "移动到回收站", - "SmartMerge": "智能合并", - "DeleteDup": "直接删除" - } - } - }, - "SettingGroups": { - "enable": "启用", - "interact": "交互", - "dailynote": "日记", - "reservation": "预约" - - }, - "TrashBinDocContent": "- 这是一个回收站文档,由「今日笔记」插件创建\n- 您会看到这个文档的原因是,你在插件中使用「移动到回收站」方案来自动处理重复日记文档\n- 这个文档下属的所有文档,都是之前被「今日笔记」插件检测为重复文档的日记\n- 如果你觉得这个回收站文档很碍眼,也完全可以将其删除,插件在需要的时候会重新创建回收站文档", - "Open": "打开日记", - "Create": "创建日记", - "UpdateAll": "笔记本状态已更新", - "InvalidDefaultNotebook": "

很抱歉, 插件没有找对应这个 ID 的笔记本; 可能这是一个不合法的 ID, 或对应的笔记本被你关闭了。

建议你仔细检查插件的设置。

", - "ContextMenu": { - "PruneResv": "清理无效预约" - }, - "MoveMenu": { - "Move": "移动到", - "NotLi": "不可以移动单独的列表项,请移动整个列表!", - "VerIssue": "当前版本不支持移动块功能(≥ 2.8.8)", - "NotMoveDiary": "请不要移动日记本身!" - }, - "ReserveMenu": { - "name": "预约此块", - "Match": "匹配到日期", - "Title": "确认将目标块预约到", - "Date404": "没有找到可用于预约的日期!", - "DateInvalid": "不是一个合法的日期!", - "DatePast": "预约日期只能是未来!", - "Success": "预约成功!" - }, - "DeReserveMenu": { - "name": "取消预约", - "Success": "成功取消预约!" - }, - "NewDay": [ - "今天是", - "笔记状态已更新" - ], - "ChangeLog": { - "name": "更新日志", - "file": "CHANGELOG_zh_CN" - }, - "Msg": { - "PruneResv": "清理完成", - "Resv404": "

咦!??

本来今天是有预约的, 但是我们发现预约块都不见了

可能是被删除了或者对应的笔记本已经关闭

你可以在顶栏图标中选择清理无用的预约

" - }, - "ConflictDiary": { - "part1": [ - "#### 注意: 检测到重复的日记", - "冲突文件如下, 其中最后一行加粗的项目为最早的日记, 将被视为主日记来处理:", - "| 文档 ID | 标题 | 创建时间 | 更新时间 | 笔记本 |", - "| --- | --- | --- | --- | --- |" - ], - "part2": [ - "- **为什么会出现这种情况?**", - " 你可能之前已经在别的设备上创建了日记, 然后在这个设备尚又创建了日记,从而导致同步冲突", - "- **应该如何处理?**", - " 请自行合并删除多余的日记: 打开今日的日记, 然后定位日记文档, 冲突的文档就在一旁", - "- **以下几个按钮是什么意思?**", - " 几个不同的自动处理方法, 详情请查看插件文档" - ], - "part3": [ - "

", - "我们发现除了日记文档冲突外,上层的父文档似乎也出现了冲突,「自动处理」功能无法处理这种涉及合并文档树的复杂情况", - "

", - "

", - "你还是可以继续使用「自动处理」功能,但是建议你在自动合并后手动处理一下重复的父文档", - "

" - ], - "AutoMerge": "自动合并", - "HeadingMarkdown": "# 以下为其他重复的日记", - "success": "自动处理成功", - "fail": "由于未知原因, 自动处理失败, 请手动处理" - }, - "DockReserve": { - "arial": "今日笔记预约", - "title": "预约", - "refresh": "刷新", - "expand": "展开", - "collapse": "折叠", - "min": "最小化", - "emptyContent": "未找到相关内容", - "PopupResv": "查看当日预约" - }, - "Blacklist": { - "name": "黑名单", - "toggle": "加入黑名单", - "update": "更新黑名单" - } -} \ No newline at end of file diff --git a/src/i18n/zh_CN.yaml b/src/i18n/zh_CN.yaml new file mode 100644 index 0000000..b6d9374 --- /dev/null +++ b/src/i18n/zh_CN.yaml @@ -0,0 +1,166 @@ +--- +Name: 今日笔记 +NewVer: 新版本 +Setting: + name: 设置 + OpenOnStart: + title: 自动打开 Daily Note + text: 插件启动后自动打开当日的 Daily Note + AutoOpenAfterSync: + title: "同步后再创建日记 \U0001F9EA实验性功能" + text: + 为了解决同步+自动打开日记造成的文件冲突问题,尝试在同步之后在自动打开日记。
本功能为实验性功能缺少足够的测试,请斟酌使用 +
实际测试作用不大,不推荐。 + DefaultNotebook: + title: 设置默认笔记本 ID + text: 设置默认的笔记本 ID, 留空时表示选择排位第一的笔记本 + placeholder: 请复制笔记本 ID + DisableAutoCreateOnMobile: + title: 移动端强制关闭「自动打开日记」功能 + text: 本功能主要为了避免在移动端遇到生成冲突日记的时候不方便处理的问题; 如果将本选项关闭,则「自动打开 Daily Note」在移动端将不会生效 + NotebookBlacklist: + title: 笔记本黑名单 + text: 加入黑名单后, 该笔记本将不会再下拉框当中显示, 默认笔记本不能加入黑名单 + button: 设置 + update: + title: 更新状态 + text: 在笔记本配置发生变化的时候更新其状态 + button: 更新 + NotebookSort: + title: 笔记本排序方案 + text: 1. 和当前文档树的显示保持一致 2. 和在自定义排序中的设置保持一致 + options: + doc-tree: 和文档树一致 + custom-sort: 和自定义排序一致 + IconPosition: + title: 图标位置 + text: 下次重启后生效 + options: + left: 顶栏左侧 + right: 顶栏右侧 + EnableMove: + title: 启用「移动块」菜单 + text: 启用后, 点击块 icon 后的菜单里会加入相应菜单 + EnableReserve: + title: 启用「预约块」菜单 + text: 启用后, 点击块 icon 后的菜单里会加入相应菜单 + EnableResvDock: + title: 启用「查看预约」侧边栏 + text: 启用后, 右边栏下方添加图标, 点开后可以查看未来的预约 + ExpandGutterMenu: + title: 将所有块菜单项目展开 + text: 启用后, 插件的块菜单项目都会展开到插件菜单下作为独立的二级菜单显示 + PopupReserveDialog: + title: 预约块时弹出确认窗口 + text: 预约块的时候自动弹出确认窗口, 确保日期无误 + ResvEmbedAt: + title: 将预约插入到 + text: 将今日的预约块插入到文档的开头还是结尾 + options: + top: 文档开头 + bottom: 文档结尾 + RetvType: + title: 将预约插入为 + text: 预约插入的类型, 可以为嵌入块, 链接或引用 + options: + embed: 嵌入块 + link: 链接块 + ref: 引用块 + SetPastDailyNoteAttr: + title: 为过去的 Daily Note 补充文档属性 + text: + '✨ 为过去的日记添加 custom-dailynote 属性,以兼容 + 2.11.1 版本前的思源。
你不必理解具体的细节, 点一下这个按钮, 不会给你带来任何额外的麻烦。
注: 这个按钮点一次就够了' + button: 开始 + HighlightResv: + title: 高亮当日预约 + text: 如果当日存在预约,则高亮预约列表的侧边栏图标 + AutoHandleDuplicate: + title: 自动处理重复日记 + text: 当检测到重复的日记时,不弹出提示框直接自动处理 + AutoHandleDuplicateMethod: + title: 自动处理重复日记的方式 + text: 当检测到重复的日记时,自动处理的方式 + options: + AllMerge: 全部合并 + TrashDup: 移动到回收站 + SmartMerge: 智能合并 + DeleteDup: 直接删除 +SettingGroups: + enable: 启用 + interact: 交互 + dailynote: 日记 + reservation: 预约 +TrashBinDocContent: |- + - 这是一个回收站文档,由「今日笔记」插件创建 + - 您会看到这个文档的原因是,你在插件中使用「移动到回收站」方案来自动处理重复日记文档 + - 这个文档下属的所有文档,都是之前被「今日笔记」插件检测为重复文档的日记 + - 如果你觉得这个回收站文档很碍眼,也完全可以将其删除,插件在需要的时候会重新创建回收站文档 +Open: 打开日记 +Create: 创建日记 +UpdateAll: 笔记本状态已更新 +InvalidDefaultNotebook: "

很抱歉, 插件没有找对应这个 ID 的笔记本; 可能这是一个不合法的 ID, 或对应的笔记本被你关闭了。

建议你仔细检查插件的设置。

" +ContextMenu: + PruneResv: 清理无效预约 +MoveMenu: + Move: 移动到 + NotLi: 不可以移动单独的列表项,请移动整个列表! + VerIssue: 当前版本不支持移动块功能(≥ 2.8.8) + NotMoveDiary: 请不要移动日记本身! +ReserveMenu: + name: 预约此块 + Match: 匹配到日期 + Title: 确认将目标块预约到 + Date404: 没有找到可用于预约的日期! + DateInvalid: 不是一个合法的日期! + DatePast: 预约日期只能是未来! + Success: 预约成功! +DeReserveMenu: + name: 取消预约 + Success: 成功取消预约! +NewDay: + - 今天是 + - 笔记状态已更新 +ChangeLog: + name: 更新日志 + file: CHANGELOG_zh_CN +Msg: + PruneResv: 清理完成 + Resv404: "

咦!??

本来今天是有预约的, 但是我们发现预约块都不见了

可能是被删除了或者对应的笔记本已经关闭

你可以在顶栏图标中选择清理无用的预约

" +ConflictDiary: + part1: + - "#### 注意: 检测到重复的日记" + - "冲突文件如下, 其中最后一行加粗的项目为最早的日记, 将被视为主日记来处理:" + - "| 文档 ID | 标题 | 创建时间 | 更新时间 | 笔记本 |" + - "| --- | --- | --- | --- | --- |" + part2: + - "- **为什么会出现这种情况?**" + - " 你可能之前已经在别的设备上创建了日记, 然后在这个设备尚又创建了日记,从而导致同步冲突" + - "- **应该如何处理?**" + - " 请自行合并删除多余的日记: 打开今日的日记, 然后定位日记文档, 冲突的文档就在一旁" + - "- **以下几个按钮是什么意思?**" + - " 几个不同的自动处理方法, 详情请查看插件文档" + part3: + - '

' + - 我们发现除了日记文档冲突外,上层的父文档似乎也出现了冲突,「自动处理」功能无法处理这种涉及合并文档树的复杂情况 + - "

" + - '

' + - "你还是可以继续使用「自动处理」功能,但是建议你在自动合并后手动处理一下重复的父文档" + - "

" + AutoMerge: 自动合并 + HeadingMarkdown: "# 以下为其他重复的日记" + success: 自动处理成功 + fail: 由于未知原因, 自动处理失败, 请手动处理 +DockReserve: + arial: 今日笔记预约 + title: 预约 + refresh: 刷新 + expand: 展开 + collapse: 折叠 + min: 最小化 + emptyContent: 未找到相关内容 + PopupResv: 查看当日预约 +Blacklist: + name: 黑名单 + toggle: 加入黑名单 + update: 更新黑名单 diff --git a/src/utils.ts b/src/utils.ts index 7e8373a..d08b1e6 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,27 +1,15 @@ -import zh_Hans from "./i18n/zh_CN.json"; -import en_US from "./i18n/en_US.json"; +// import zh_Hans from "./i18n/zh_CN.json"; +// // import en_US from "./i18n/en_US.json"; +import zh_Hans from '../dev/i18n/zh_CN.json'; + + import { App, Plugin } from "siyuan"; //@ts-ignore export const lute = window.Lute!.New(); export type I18N = typeof zh_Hans; +// export type I18N = any; -export function checkI18n(): boolean { - function checkKeys(obj1: any, obj2: any): boolean { - if (typeof obj1 !== typeof obj2) return false; - if (typeof obj1 === "object") { - for (const key in obj1) { - if (!checkKeys(obj1[key], obj2[key])) return false; - } - } - return true; - } - return checkKeys(zh_Hans, en_US); -} - -// if (!checkI18n()) { -// showMessage('i18n check failed', 5000, 'error'); -// } export function debug(...msg: any[]): void { console.debug(`[DailyNoteToday][DEBUG] ${msg}`); diff --git a/vite.config.ts b/vite.config.ts index 3696972..2ebd89b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,10 +7,12 @@ import { svelte } from "@sveltejs/vite-plugin-svelte" import zipPack from "vite-plugin-zip-pack"; import fg from 'fast-glob'; +import vitePluginYamlI18n from './yaml-plugin'; + const args = minimist(process.argv.slice(2)) const isWatch = args.watch || args.w || false -const devDistDir = "./dev" -const distDir = isWatch ? devDistDir : "./dist" +const devDistDir = "dev" +const distDir = isWatch ? devDistDir : "dist" console.log("isWatch=>", isWatch) console.log("distDir=>", distDir) @@ -44,6 +46,11 @@ export default defineConfig({ plugins: [ svelte(), + vitePluginYamlI18n({ + inDir: 'src/i18n', + outDir: isWatch ? 'dev/i18n' : 'dist/i18n', + }), + viteStaticCopy({ targets: [ { @@ -77,7 +84,11 @@ export default defineConfig({ dest: "./", }, { - src: "./src/i18n/**", + src: "./src/i18n/*.json", + dest: "./i18n/" + }, + { + src: "./src/i18n/*.md", dest: "./i18n/", transform: transformMdFile }, @@ -105,7 +116,8 @@ export default defineConfig({ // 或是用来指定是应用哪种混淆器 // boolean | 'terser' | 'esbuild' // 不压缩,用于调试 - minify: !isWatch, + // minify: !isWatch, + minify: false, lib: { // Could also be a dictionary or array of multiple entry points @@ -126,6 +138,7 @@ export default defineConfig({ console.log('watch-external buildStart'); const files = await fg([ 'src/i18n/*.json', + 'src/i18n/*.yaml', './README.md', './plugin.json' ]); diff --git a/yaml-plugin.js b/yaml-plugin.js new file mode 100644 index 0000000..59b1c80 --- /dev/null +++ b/yaml-plugin.js @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2024 by frostime. All Rights Reserved. + * @Author : frostime + * @Date : 2024-04-05 21:27:55 + * @FilePath : /yaml-plugin.js + * @LastEditTime : 2024-04-05 21:58:22 + * @Description : 去妮玛的 json i18n,我就是要用 yaml + */ +// plugins/vite-plugin-parse-yaml.js +import fs from 'fs'; +import yaml from 'js-yaml'; +import { resolve } from 'path'; + +export default function vitePluginYamlI18n(options = {}) { + // Default options with a fallback + const DefaultOptions = { + inDir: 'src/i18n', + outDir: 'dist/i18n', + }; + + const finalOptions = { ...DefaultOptions, ...options }; + + return { + name: 'vite-plugin-yaml-i18n', + buildStart() { + console.log('🌈 解析 I18n: YAML to JSON..'); + const i18nPath = finalOptions.inDir; + const outputPath = finalOptions.outDir + + if (!fs.existsSync(outputPath)) { + fs.mkdirSync(outputPath, { recursive: true }); + } + + const files = fs.readdirSync(i18nPath); + for (const file of files) { + if (file.endsWith('.yaml') || file.endsWith('.yml')) { + console.log(`-- Parsing ${file}`) + //检查是否有同名的json文件 + const jsonFile = file.replace(/\.(yaml|yml)$/, '.json'); + if (files.includes(jsonFile)) { + console.log(`---- File ${jsonFile} already exists, skipping...`); + // continue; + } + try { + const filePath = resolve(i18nPath, file); + const fileContents = fs.readFileSync(filePath, 'utf8'); + const parsed = yaml.load(fileContents); + const jsonContent = JSON.stringify(parsed, null, 2); + const outputFilePath = resolve(outputPath, file.replace(/\.(yaml|yml)$/, '.json')); + console.log(`---- Writing to ${outputFilePath}`); + fs.writeFileSync(outputFilePath, jsonContent); + } catch (error) { + this.error(`Error parsing YAML file ${file}: ${error.message}`); + } + } + } + }, + }; +}