├── .gitignore
├── .vscode
├── extensions.json
└── settings.json
├── LICENSE
├── README-ZH.md
├── README.md
├── docs
├── figma-i18n-dark.gif
├── figma-i18n-light.gif
├── figma-i18n-logo.png
└── payment.png
├── package-lock.json
├── package.json
├── pnpm-lock.yaml
├── public
├── build
│ ├── bundle.js
│ └── bundle.js.map
├── favicon.png
├── global.css
└── index.html
├── rollup.config.js
├── src
├── filter
│ └── index.ts
├── global.d.ts
├── locale
│ ├── index.ts
│ └── lang
│ │ ├── en.ts
│ │ ├── ja.ts
│ │ └── zh-cn.ts
├── main.ts
├── store
│ └── index.ts
├── translator
│ └── index.ts
├── types
│ └── index.ts
└── ui
│ ├── App.svelte
│ └── Menu.svelte
├── tsconfig.json
└── yarn-error.log
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 |
3 | .DS_Store
4 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["svelte.svelte-vscode"]
3 | }
4 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "prettier.tabWidth": 4,
3 | "prettier.useTabs": true
4 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README-ZH.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 强大、智能并且简单易用的 Figma 国际化脚本
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | English | 中文
13 |
14 |
15 |
16 | ### 💽 脚本安装
17 |
18 | 1. 安装 Figma I18n 脚本之前请确认浏览器是否已安装脚本管理器,如果没有则点击下方链接进行安装(由于`Violentmonkey`有可能存在未知的兼容性问题,强烈建议安装`Tampermonkey`)
19 |
20 | * [Tampermonkey(油猴,推荐👍)](https://www.tampermonkey.net/)
21 | * [Violentmonkey(暴力猴)](https://violentmonkey.github.io/get-it/)
22 |
23 |
24 | 2. 点击下方链接,通过 [GreasyFork](https://greasyfork.org/zh-CN) 安装用户脚本
25 |
26 | [Figma I18n:点击我安装脚本!!!](https://greasyfork.org/zh-CN/scripts/440348-figma-i18n)
27 |
28 | ### 📚 脚本特性
29 |
30 | * 简单易用:无需额外安装插件且支持手动进行语言切换,无需频繁关闭/启用插件
31 | * 多语言支持:支持英文、简体中文和日语,繁体中文以及其它语言将会逐步支持
32 | * 智能切换主题:操作菜单支持根据操作页面自动切换主题
33 | * 精准的语言转换:精准识别所有需要进行语言转换的DOM节点,解决通过字符串匹配导致翻译不准确的问题
34 | * 优秀的转换效率:充分复用已有节点,最大程度减少每次操作节点的次数,大幅度提高转换效率
35 |
36 | ### 📺 功能演示
37 |
38 | 
39 |
40 | 
41 |
42 | ### ❤️ 捐赠作者
43 |
44 |
45 |
46 | ### 📄 开源许可证
47 |
48 | [Apache License](https://github.com/NICEXAI/figma-i18n/blob/main/LICENSE) © 2022-PRESENT [Afeyer](https://github.com/NICEXAI)
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Powerful, intelligent and easy to use Figma internationalisation scripts
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | English | 中文
13 |
14 |
15 |
16 | ### 💽 Script Installation
17 |
18 | 1. Before installing the Figma I18n script, please confirm whether the script manager is installed in the browser. If not, click the link below to install it (due to `Violentmonkey` may have unknown compatibility issues, it is strongly recommended to install `Tampermonkey`).
19 |
20 | * [Tampermonkey](https://www.tampermonkey.net/) 👍
21 | * [Violentmonkey](https://violentmonkey.github.io/get-it/)
22 |
23 | 2. Click the link below to install the user script via [GreasyFork](https://greasyfork.org/zh-CN)
24 |
25 | [Figma I18n:Click me to install the script !!!](https://greasyfork.org/zh-CN/scripts/440348-figma-i18n)
26 |
27 | ### 📚 Script Features
28 |
29 | * Simple to use:No need to install additional plug-ins and manual language switching is supported, eliminating the need to turn plug-ins off/on frequently
30 | * Multi-language support:Support English, Simplified Chinese and Japanese, Traditional Chinese and other languages will be supported gradually
31 | * Smart switch theme:The action menu supports automatic theme switching according to the page
32 | * Precise language conversion:Accurately identify all DOM nodes that require language conversion, and solve the problem of inaccurate translation caused by string matching
33 | * Excellent conversion efficiency:Fully reuse existing nodes, minimize the number of operations on each node, and greatly improve conversion efficiency
34 |
35 | ### 📺 Function demonstration
36 |
37 | 
38 |
39 | 
40 |
41 | ### ❤️ Sponsored Author
42 |
43 |
44 |
45 | ### 📄 Open Source License
46 |
47 | [Apache License](https://github.com/NICEXAI/figma-i18n/blob/main/LICENSE) © 2022-PRESENT [Afeyer](https://github.com/NICEXAI)
--------------------------------------------------------------------------------
/docs/figma-i18n-dark.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NICEXAI/figma-i18n/1d4a3799f5867ccc3f9095d5fa2bf20237769fa7/docs/figma-i18n-dark.gif
--------------------------------------------------------------------------------
/docs/figma-i18n-light.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NICEXAI/figma-i18n/1d4a3799f5867ccc3f9095d5fa2bf20237769fa7/docs/figma-i18n-light.gif
--------------------------------------------------------------------------------
/docs/figma-i18n-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NICEXAI/figma-i18n/1d4a3799f5867ccc3f9095d5fa2bf20237769fa7/docs/figma-i18n-logo.png
--------------------------------------------------------------------------------
/docs/payment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NICEXAI/figma-i18n/1d4a3799f5867ccc3f9095d5fa2bf20237769fa7/docs/payment.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "figma-i18n",
3 | "version": "1.0.8",
4 | "description": "Powerful, intelligent and easy to use Figma internationalisation scripts.",
5 | "author": "afeyer",
6 | "private": true,
7 | "scripts": {
8 | "build": "rollup -c",
9 | "dev": "rollup -c -w",
10 | "start": "sirv public --no-clear",
11 | "check": "svelte-check --tsconfig ./tsconfig.json"
12 | },
13 | "devDependencies": {
14 | "@rollup/plugin-commonjs": "^17.0.0",
15 | "@rollup/plugin-node-resolve": "^11.0.0",
16 | "@rollup/plugin-typescript": "^8.0.0",
17 | "@tsconfig/svelte": "^2.0.0",
18 | "attractions": "^3.7.0",
19 | "postcss": "^8.4.7",
20 | "rollup": "^2.3.4",
21 | "rollup-plugin-banner2": "^1.2.2",
22 | "rollup-plugin-css-only": "^3.1.0",
23 | "rollup-plugin-livereload": "^2.0.0",
24 | "rollup-plugin-postcss": "^4.0.2",
25 | "rollup-plugin-svelte": "^7.0.0",
26 | "rollup-plugin-terser": "^7.0.0",
27 | "sass": "^1.49.9",
28 | "smelte": "^1.1.8",
29 | "svelte": "^3.0.0",
30 | "svelte-check": "^2.0.0",
31 | "svelte-preprocess": "^4.10.4",
32 | "tslib": "^2.0.0",
33 | "typescript": "^4.0.0"
34 | },
35 | "dependencies": {
36 | "sirv-cli": "^2.0.0"
37 | }
38 | }
--------------------------------------------------------------------------------
/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NICEXAI/figma-i18n/1d4a3799f5867ccc3f9095d5fa2bf20237769fa7/public/favicon.png
--------------------------------------------------------------------------------
/public/global.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | position: relative;
3 | width: 100%;
4 | height: 100%;
5 | }
6 |
7 | * {
8 | padding: 0;
9 | margin: 0;
10 | }
11 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Figma I18n
8 |
9 |
10 |
11 |
12 |
13 |
14 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import svelte from 'rollup-plugin-svelte';
2 | import commonjs from '@rollup/plugin-commonjs';
3 | import resolve from '@rollup/plugin-node-resolve';
4 | import livereload from 'rollup-plugin-livereload';
5 | import { terser } from 'rollup-plugin-terser';
6 | import sveltePreprocess from 'svelte-preprocess';
7 | import typescript from '@rollup/plugin-typescript';
8 | // import css from 'rollup-plugin-css-only';
9 | import postcss from 'rollup-plugin-postcss'
10 | import banner from 'rollup-plugin-banner2'
11 | import {version, description, author} from "./package.json"
12 |
13 | const production = !process.env.ROLLUP_WATCH;
14 | const metaInfo = {
15 | "name": "Figma i18n",
16 | "namespace": "https://github.com/NICEXAI",
17 | "version": version,
18 | "description": description,
19 | "encoding": "utf-8",
20 | "author": author,
21 | "homepage": "https://github.com/NICEXAI/figma-i18n",
22 | "supportURL": "https://github.com/NICEXAI/figma-i18n/issues",
23 | "updateURL": "https://github.com/NICEXAI/figma-i18n/blob/main/dist/figma-i18n.normal.js",
24 | "downloadURL": "https://github.com/NICEXAI/figma-i18n/blob/main/dist/figma-i18n.normal.js",
25 |
26 | "match": "*://www.figma.com/*",
27 | "run-at": "document-end",
28 | "icon": "https://static.figma.com/app/icon/1/favicon.png",
29 | "license": "Apache; https://github.com/NICEXAI/figma-i18n/blob/main/LICENSE",
30 |
31 | "grant": "unsafeWindow",
32 | "grant": "window.console",
33 | "grant": "GM_getValue",
34 | "grant": "GM_setValue",
35 | }
36 |
37 | function serve() {
38 | let server;
39 |
40 | function toExit() {
41 | if (server) server.kill(0);
42 | }
43 |
44 | return {
45 | writeBundle() {
46 | if (server) return;
47 | server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
48 | stdio: ['ignore', 'inherit', 'inherit'],
49 | shell: true
50 | });
51 |
52 | process.on('SIGTERM', toExit);
53 | process.on('exit', toExit);
54 | }
55 | };
56 | }
57 |
58 | export default {
59 | input: 'src/main.ts',
60 | output: {
61 | sourcemap: true,
62 | format: 'iife',
63 | name: 'app',
64 | file: 'public/build/bundle.js'
65 | },
66 | plugins: [
67 | svelte({
68 | preprocess: sveltePreprocess({ sourceMap: !production }),
69 | compilerOptions: {
70 | // enable run-time checks when not in production
71 | dev: !production
72 | }
73 | }),
74 | postcss({
75 | extract: false,
76 | minimize: true
77 | }),
78 | // we'll extract any component CSS out into
79 | // a separate file - better for performance
80 | // css({ output: 'bundle.css' }),
81 |
82 | // If you have external dependencies installed from
83 | // npm, you'll most likely need these plugins. In
84 | // some cases you'll need additional configuration -
85 | // consult the documentation for details:
86 | // https://github.com/rollup/plugins/tree/master/packages/commonjs
87 | resolve({
88 | browser: true,
89 | dedupe: ['svelte']
90 | }),
91 | commonjs(),
92 | typescript({
93 | sourceMap: !production,
94 | inlineSources: !production
95 | }),
96 |
97 | // In dev mode, call `npm run start` once
98 | // the bundle has been generated
99 | !production && serve(),
100 |
101 | // Watch the `public` directory and refresh the
102 | // browser on changes when not in production
103 | !production && livereload('public'),
104 |
105 | // If we're building for production (npm run build
106 | // instead of npm run dev), minify
107 | production && terser(),
108 |
109 | banner(() => {
110 | let maxLabelLen = 0;
111 | let metaItems = []
112 |
113 | for (const label in metaInfo) {
114 | if (Object.hasOwnProperty.call(metaInfo, label)) {
115 | const content = metaInfo[label];
116 | if(label.length > maxLabelLen) {
117 | maxLabelLen = label.length
118 | }
119 | metaItems.push([label, content])
120 | }
121 | }
122 |
123 | return (
124 | '// ==UserScript==\n' +
125 | metaItems.reduce((str, [label, content]) => {
126 | label = label.trim()
127 | if(typeof(content) == "string") {
128 | content = content.trim()
129 | }
130 |
131 | return (
132 | str +
133 | `// @${
134 | label.length < maxLabelLen
135 | ? label +
136 | [...new Array(maxLabelLen - label.length)]
137 | .map(() => ' ')
138 | .join('')
139 | : label
140 | } ${content}\n`
141 | )
142 | }, '') +
143 | '// ==/UserScript==\n'
144 | )
145 | })
146 | ],
147 | watch: {
148 | clearScreen: false
149 | }
150 | };
151 |
--------------------------------------------------------------------------------
/src/filter/index.ts:
--------------------------------------------------------------------------------
1 | interface MatchRule {
2 | [key: string]: string
3 | }
4 |
5 | const matchRuleDict: MatchRule = {
6 | "fullscreenMenu.BackToFiles": "a[data-onboarding-key='back-to-files']>span[class^='multilevel_dropdown--name']",
7 |
8 | "fullscreenMenu.QuickActions": "div[data-testid='dropdown-option-Quick actions…']>div[class^='multilevel_dropdown--name']",
9 |
10 | "fullscreenMenu.File": "div[data-testid='dropdown-option-File']>div[class^='multilevel_dropdown--name']",
11 | "fullscreenMenu.File.NewDesignFile": "div[data-testid='dropdown-option-New design file']>div[class^='multilevel_dropdown--name']",
12 | "fullscreenMenu.File.NewFigJamFile": "div[data-testid='dropdown-option-New FigJam file']>div[class^='multilevel_dropdown--name']",
13 | "fullscreenMenu.File.NewFromSketchFile": "div[data-testid='dropdown-option-New from Sketch file…']>div[class^='multilevel_dropdown--name']",
14 | "fullscreenMenu.File.PlaceImage": "div[data-testid='dropdown-option-Place image...']>div[class^='multilevel_dropdown--name']",
15 | "fullscreenMenu.File.ImportFromCSV": "div[data-testid='dropdown-option-Import from CSV…']>div[class^='multilevel_dropdown--name']",
16 | "fullscreenMenu.File.SaveLocalCopy": "div[data-testid='dropdown-option-Save local copy…']>div[class^='multilevel_dropdown--name']",
17 | "fullscreenMenu.File.SaveToVersionHistory": "div[data-testid='dropdown-option-Save to version history…']>div[class^='multilevel_dropdown--name']",
18 | "fullscreenMenu.File.ShowVersionHistory": "div[data-testid='dropdown-option-Show version history']>div[class^='multilevel_dropdown--name']",
19 | "fullscreenMenu.File.Export": "div[data-testid='dropdown-option-Export…']>div[class^='multilevel_dropdown--name']",
20 | "fullscreenMenu.File.ExportFramesToPDF": "div[data-testid='dropdown-option-Export frames to PDF…']>div[class^='multilevel_dropdown--name']",
21 | "fullscreenMenu.File.ExportAs": "div[data-testid='dropdown-option-Export as…']>div[class^='multilevel_dropdown--name']",
22 | "fullscreenMenu.File.ExportSelection": "div[data-testid='dropdown-option-Export selection…']>div[class^='multilevel_dropdown--name']",
23 |
24 | "fullscreenMenu.Edit": "div[data-testid='dropdown-option-Edit']>div[class^='multilevel_dropdown--name']",
25 | "fullscreenMenu.Edit.Undo": "div[data-testid='dropdown-option-Undo']>div[class^='multilevel_dropdown--name']",
26 | "fullscreenMenu.Edit.Redo": "div[data-testid='dropdown-option-Redo']>div[class^='multilevel_dropdown--name']",
27 |
28 | "fullscreenMenu.Edit.CopyAs": "div[data-testid='dropdown-option-Copy as']>div[class^='multilevel_dropdown--name']",
29 | "fullscreenMenu.Edit.CopyAs.CopyAsText": "div[data-testid='dropdown-option-Copy as text']>div[class^='multilevel_dropdown--name']",
30 | "fullscreenMenu.Edit.CopyAs.CopyAsCSS": "div[data-testid='dropdown-option-Copy as CSS']>div[class^='multilevel_dropdown--name']",
31 | "fullscreenMenu.Edit.CopyAs.CopyAsSVG": "div[data-testid='dropdown-option-Copy as SVG']>div[class^='multilevel_dropdown--name']",
32 | "fullscreenMenu.Edit.CopyAs.CopyAsPNG": "div[data-testid='dropdown-option-Copy as PNG']>div[class^='multilevel_dropdown--name']",
33 |
34 | "fullscreenMenu.Edit.PasteOverSelection": "div[data-testid='dropdown-option-Paste over selection']>div[class^='multilevel_dropdown--name']",
35 | "fullscreenMenu.Edit.PasteToReplace": "div[data-testid='dropdown-option-Paste to replace']>div[class^='multilevel_dropdown--name']",
36 | "fullscreenMenu.Edit.Duplicate": "div[data-testid='dropdown-option-Duplicate']>div[class^='multilevel_dropdown--name']",
37 | "fullscreenMenu.Edit.Delete": "div[data-testid='dropdown-option-Delete']>div[class^='multilevel_dropdown--name']",
38 | "fullscreenMenu.Edit.SetDefaultProperties": "div[data-testid='dropdown-option-Set default properties']>div[class^='multilevel_dropdown--name']",
39 | "fullscreenMenu.Edit.CopyProperties": "div[data-testid='dropdown-option-Copy properties']>div[class^='multilevel_dropdown--name']",
40 | "fullscreenMenu.Edit.PasteProperties": "div[data-testid='dropdown-option-Paste properties']>div[class^='multilevel_dropdown--name']",
41 | "fullscreenMenu.Edit.PickColor": "div[data-testid='dropdown-option-Pick color']>div[class^='multilevel_dropdown--name']",
42 | "fullscreenMenu.Edit.SelectAll": "div[data-testid='dropdown-option-Select all']>div[class^='multilevel_dropdown--name']",
43 | "fullscreenMenu.Edit.SelectNone": "div[data-testid='dropdown-option-Select none']>div[class^='multilevel_dropdown--name']",
44 | "fullscreenMenu.Edit.SelectInverse": "div[data-testid='dropdown-option-Select inverse']>div[class^='multilevel_dropdown--name']",
45 | "fullscreenMenu.Edit.SelectAllMatchingLayers": "div[data-testid='dropdown-option-Select all matching layers']>div[class^='multilevel_dropdown--name']",
46 | "fullscreenMenu.Edit.SelectAllWithSameProperties": "div[data-testid='dropdown-option-Select all with same properties']>div[class^='multilevel_dropdown--name']",
47 | "fullscreenMenu.Edit.SelectAllWithSameFill": "div[data-testid='dropdown-option-Select all with same fill']>div[class^='multilevel_dropdown--name']",
48 | "fullscreenMenu.Edit.SelectAllWithSameStroke": "div[data-testid='dropdown-option-Select all with same stroke']>div[class^='multilevel_dropdown--name']",
49 | "fullscreenMenu.Edit.SelectAllWithSameEffect": "div[data-testid='dropdown-option-Select all with same effect']>div[class^='multilevel_dropdown--name']",
50 | "fullscreenMenu.Edit.SelectAllWithSameTextProperties": "div[data-testid='dropdown-option-Select all with same text properties']>div[class^='multilevel_dropdown--name']",
51 | "fullscreenMenu.Edit.SelectAllWithSameFont": "div[data-testid='dropdown-option-Select all with same font']>div[class^='multilevel_dropdown--name']",
52 | "fullscreenMenu.Edit.SelectAllWithSameInstance": "div[data-testid='dropdown-option-Select all with same instance']>div[class^='multilevel_dropdown--name']",
53 | "fullscreenMenu.Edit.SelectAllWithSameVariant": "div[data-testid='dropdown-option-Select all with same variant']>div[class^='multilevel_dropdown--name']",
54 |
55 | "fullscreenMenu.View": "div[data-testid='dropdown-option-View']>div[class^='multilevel_dropdown--name']",
56 | "fullscreenMenu.View.PixelGrid": "div[data-testid='dropdown-option-Pixel grid']>div[class^='multilevel_dropdown--name']",
57 | "fullscreenMenu.View.LayoutGrids": "div[data-testid='dropdown-option-Layout grids']>div[class^='multilevel_dropdown--name']",
58 | "fullscreenMenu.View.Rulers": "div[data-testid='dropdown-option-Rulers']>div[class^='multilevel_dropdown--name']",
59 | "fullscreenMenu.View.ShowSlices": "div[data-testid='dropdown-option-Show slices']>div[class^='multilevel_dropdown--name']",
60 | "fullscreenMenu.View.Comments": "div[data-testid='dropdown-option-Comments']>div[class^='multilevel_dropdown--name']",
61 | "fullscreenMenu.View.Outlines": "div[data-testid='dropdown-option-Outlines']>div[class^='multilevel_dropdown--name']",
62 | "fullscreenMenu.View.PixelPreview": "div[data-testid='dropdown-option-Pixel preview']>div[class^='multilevel_dropdown--name']",
63 | "fullscreenMenu.View.MaskOutlines": "div[data-testid='dropdown-option-Mask outlines']>div[class^='multilevel_dropdown--name']",
64 | "fullscreenMenu.View.FrameOutlines": "div[data-testid='dropdown-option-Frame outlines']>div[class^='multilevel_dropdown--name']",
65 | "fullscreenMenu.View.ShowDotGrid": "div[data-testid='dropdown-option-Show dot grid']>div[class^='multilevel_dropdown--name']",
66 | "fullscreenMenu.View.ResourceUse": "div[data-testid='dropdown-option-Resource use']>div[class^='multilevel_dropdown--name']",
67 | "fullscreenMenu.View.ShowOrHideUI": "div[data-testid='dropdown-option-Show/Hide UI']>div[class^='multilevel_dropdown--name']",
68 | "fullscreenMenu.View.MultiplayerCursors": "div[data-testid='dropdown-option-Multiplayer cursors']>div[class^='multilevel_dropdown--name']",
69 |
70 | "fullscreenMenu.View.Panels": "div[data-testid='dropdown-option-Panels']>div[class^='multilevel_dropdown--name']",
71 | "fullscreenMenu.View.Panels.OpenLayersPanel": "div[data-testid='dropdown-option-Open layers panel']>div[class^='multilevel_dropdown--name']",
72 | "fullscreenMenu.View.Panels.OpenDesignPanel": "div[data-testid='dropdown-option-Open design panel']>div[class^='multilevel_dropdown--name']",
73 | "fullscreenMenu.View.Panels.OpenPrototypePanel": "div[data-testid='dropdown-option-Open prototype panel']>div[class^='multilevel_dropdown--name']",
74 | "fullscreenMenu.View.Panels.OpenInspectPanel": "div[data-testid='dropdown-option-Open inspect panel']>div[class^='multilevel_dropdown--name']",
75 | "fullscreenMenu.View.Panels.ShowLeftSidebar": "div[data-testid='dropdown-option-Show left sidebar']>div[class^='multilevel_dropdown--name']",
76 |
77 | "fullscreenMenu.View.ZoomIn": "div[data-testid='dropdown-option-Zoom in']>div[class^='multilevel_dropdown--name']",
78 | "fullscreenMenu.View.ZoomOut": "div[data-testid='dropdown-option-Zoom out']>div[class^='multilevel_dropdown--name']",
79 | "fullscreenMenu.View.ZoomTo100%": "div[data-testid='dropdown-option-Zoom to 100%']>div[class^='multilevel_dropdown--name']",
80 | "fullscreenMenu.View.ZoomToFit": "div[data-testid='dropdown-option-Zoom to fit']>div[class^='multilevel_dropdown--name']",
81 | "fullscreenMenu.View.ZoomToSelection": "div[data-testid='dropdown-option-Zoom to selection']>div[class^='multilevel_dropdown--name']",
82 | "fullscreenMenu.View.PreviousPage": "div[data-testid='dropdown-option-Previous page']>div[class^='multilevel_dropdown--name']",
83 | "fullscreenMenu.View.NextPage": "div[data-testid='dropdown-option-Next page']>div[class^='multilevel_dropdown--name']",
84 | "fullscreenMenu.View.ZoomToPreviousFrame": "div[data-testid='dropdown-option-Zoom to previous frame']>div[class^='multilevel_dropdown--name']",
85 | "fullscreenMenu.View.ZoomToNextFrame": "div[data-testid='dropdown-option-Zoom to next frame']>div[class^='multilevel_dropdown--name']",
86 | "fullscreenMenu.View.FindPreviousFrame": "div[data-testid='dropdown-option-Find previous frame']>div[class^='multilevel_dropdown--name']",
87 | "fullscreenMenu.View.FindNextFrame": "div[data-testid='dropdown-option-Find next frame']>div[class^='multilevel_dropdown--name']",
88 |
89 | "fullscreenMenu.Object": "div[data-testid='dropdown-option-Object']>div[class^='multilevel_dropdown--name']",
90 | "fullscreenMenu.Object.GroupSelection": "div[data-testid='dropdown-option-Group selection']>div[class^='multilevel_dropdown--name']",
91 | "fullscreenMenu.Object.CreateSection": "div[data-testid='dropdown-option-Create section']>div[class^='multilevel_dropdown--name']",
92 | "fullscreenMenu.Object.FrameSelection": "div[data-testid='dropdown-option-Frame selection']>div[class^='multilevel_dropdown--name']",
93 | "fullscreenMenu.Object.UngroupSelection": "div[data-testid='dropdown-option-Ungroup selection']>div[class^='multilevel_dropdown--name']",
94 | "fullscreenMenu.Object.UseAsMask": "div[data-testid='dropdown-option-Use as mask']>div[class^='multilevel_dropdown--name']",
95 | "fullscreenMenu.Object.RestoreDefaultThumbnail": "div[data-testid='dropdown-option-Restore default thumbnail']>div[class^='multilevel_dropdown--name']",
96 | "fullscreenMenu.Object.SetAsThumbnail": "div[data-testid='dropdown-option-Set as thumbnail']>div[class^='multilevel_dropdown--name']",
97 | "fullscreenMenu.Object.AddAutoLayout": "div[data-testid='dropdown-option-Add auto layout']>div[class^='multilevel_dropdown--name']",
98 | "fullscreenMenu.Object.CreateComponent": "div[data-testid='dropdown-option-Create component']>div[class^='multilevel_dropdown--name']",
99 | "fullscreenMenu.Object.ResetAllChanges": "div[data-testid='dropdown-option-Reset all changes']>div[class^='multilevel_dropdown--name']",
100 | "fullscreenMenu.Object.ResetAllOverrides": "div[data-testid='dropdown-option-Reset all overrides']>div[class^='multilevel_dropdown--name']",
101 | "fullscreenMenu.Object.DetachInstance": "div[data-testid='dropdown-option-Detach instance']>div[class^='multilevel_dropdown--name']",
102 |
103 | "fullscreenMenu.Object.MainComponent": "div[data-testid='dropdown-option-Main component']>div[class^='multilevel_dropdown--name']",
104 | "fullscreenMenu.Object.MainComponent.GoToMainComponent": "div[data-testid='dropdown-option-Go to main component']>div[class^='multilevel_dropdown--name']",
105 | "fullscreenMenu.Object.MainComponent.PushOverridesToMainComponent": "div[data-testid='dropdown-option-Push overrides to main component']>div[class^='multilevel_dropdown--name']",
106 | "fullscreenMenu.Object.MainComponent.RestoreMainComponent": "div[data-testid='dropdown-option-Restore main component']>div[class^='multilevel_dropdown--name']",
107 |
108 | "fullscreenMenu.Object.BringToFront": "div[data-testid='dropdown-option-Bring to front']>div[class^='multilevel_dropdown--name']",
109 | "fullscreenMenu.Object.BringForward": "div[data-testid='dropdown-option-Bring forward']>div[class^='multilevel_dropdown--name']",
110 | "fullscreenMenu.Object.SendBackward": "div[data-testid='dropdown-option-Send backward']>div[class^='multilevel_dropdown--name']",
111 | "fullscreenMenu.Object.SendToBack": "div[data-testid='dropdown-option-Send to back']>div[class^='multilevel_dropdown--name']",
112 | "fullscreenMenu.Object.flipHorizontal": "div[data-testid='dropdown-option-Flip horizontal']>div[class^='multilevel_dropdown--name']",
113 | "fullscreenMenu.Object.flipVertical": "div[data-testid='dropdown-option-Flip vertical']>div[class^='multilevel_dropdown--name']",
114 | "fullscreenMenu.Object.Rotate180": "div[data-testid='dropdown-option-Rotate 180˚']>div[class^='multilevel_dropdown--name']",
115 | "fullscreenMenu.Object.Rotate90Left": "div[data-testid='dropdown-option-Rotate 90˚ left']>div[class^='multilevel_dropdown--name']",
116 | "fullscreenMenu.Object.Rotate90Right": "div[data-testid='dropdown-option-Rotate 90˚ right']>div[class^='multilevel_dropdown--name']",
117 | "fullscreenMenu.Object.FlattenSelection": "div[data-testid='dropdown-option-Flatten selection']>div[class^='multilevel_dropdown--name']",
118 | "fullscreenMenu.Object.OutlineStroke": "div[data-testid='dropdown-option-Outline stroke']>div[class^='multilevel_dropdown--name']",
119 |
120 | "fullscreenMenu.Object.BooleanGroups": "div[data-testid='dropdown-option-Boolean groups']>div[class^='multilevel_dropdown--name']",
121 | "fullscreenMenu.Object.BooleanGroups.UnionSelection": "div[data-testid='dropdown-option-Union selection']>div[class^='multilevel_dropdown--name']",
122 | "fullscreenMenu.Object.BooleanGroups.SubtractSelection": "div[data-testid='dropdown-option-Subtract selection']>div[class^='multilevel_dropdown--name']",
123 | "fullscreenMenu.Object.BooleanGroups.IntersectSelection": "div[data-testid='dropdown-option-Intersect selection']>div[class^='multilevel_dropdown--name']",
124 | "fullscreenMenu.Object.BooleanGroups.ExcludeSelection": "div[data-testid='dropdown-option-Exclude selection']>div[class^='multilevel_dropdown--name']",
125 |
126 | "fullscreenMenu.Object.RasterizeSelection": "div[data-testid='dropdown-option-Rasterize selection']>div[class^='multilevel_dropdown--name']",
127 | "fullscreenMenu.Object.ShowOrHideSelection": "div[data-testid='dropdown-option-Show/Hide selection']>div[class^='multilevel_dropdown--name']",
128 | "fullscreenMenu.Object.LockOrUnlockSelection": "div[data-testid='dropdown-option-Lock/Unlock selection']>div[class^='multilevel_dropdown--name']",
129 | "fullscreenMenu.Object.HideOtherLayers": "div[data-testid='dropdown-option-Hide other layers']>div[class^='multilevel_dropdown--name']",
130 | "fullscreenMenu.Object.CollapseLayers": "div[data-testid='dropdown-option-Collapse layers']>div[class^='multilevel_dropdown--name']",
131 | "fullscreenMenu.Object.RemoveFill": "div[data-testid='dropdown-option-Remove fill']>div[class^='multilevel_dropdown--name']",
132 | "fullscreenMenu.Object.RemoveStroke": "div[data-testid='dropdown-option-Remove stroke']>div[class^='multilevel_dropdown--name']",
133 | "fullscreenMenu.Object.SwapFillAndStroke": "div[data-testid='dropdown-option-Swap fill and stroke']>div[class^='multilevel_dropdown--name']",
134 |
135 | "fullscreenMenu.Vector": "div[data-testid='dropdown-option-Vector']>div[class^='multilevel_dropdown--name']",
136 | "fullscreenMenu.Vector.JoinSelection": "div[data-testid='dropdown-option-Join selection']>div[class^='multilevel_dropdown--name']",
137 | "fullscreenMenu.Vector.SmoothJoinSelection": "div[data-testid='dropdown-option-Smooth join selection']>div[class^='multilevel_dropdown--name']",
138 | "fullscreenMenu.Vector.DeleteAndHealSelection": "div[data-testid='dropdown-option-Delete and heal selection']>div[class^='multilevel_dropdown--name']",
139 |
140 | "fullscreenMenu.Text": "div[data-testid='dropdown-option-Text']>div[class^='multilevel_dropdown--name']",
141 | "fullscreenMenu.Text.Bold": "div[data-testid='dropdown-option-Bold']>div[class^='multilevel_dropdown--name']",
142 | "fullscreenMenu.Text.Italic": "div[data-testid='dropdown-option-Italic']>div[class^='multilevel_dropdown--name']",
143 | "fullscreenMenu.Text.Underline": "div[data-testid='dropdown-option-Underline']>div[class^='multilevel_dropdown--name']",
144 | "fullscreenMenu.Text.Strikethrough": "div[data-testid='dropdown-option-Strikethrough']>div[class^='multilevel_dropdown--name']",
145 | "fullscreenMenu.Text.CreateLink": "div[data-testid='dropdown-option-Create link']>div[class^='multilevel_dropdown--name']",
146 | "fullscreenMenu.Text.BulletedList": "div[data-testid='dropdown-option-Bulleted list']>div[class^='multilevel_dropdown--name']",
147 | "fullscreenMenu.Text.NumberedList": "div[data-testid='dropdown-option-Numbered list']>div[class^='multilevel_dropdown--name']",
148 |
149 | "fullscreenMenu.Text.Alignment": "div[data-testid='dropdown-option-Alignment']>div[class^='multilevel_dropdown--name']",
150 | "fullscreenMenu.Text.Alignment.TextAlignLeft": "div[data-testid='dropdown-option-Text align left']>div[class^='multilevel_dropdown--name']",
151 | "fullscreenMenu.Text.Alignment.TextAlignCenter": "div[data-testid='dropdown-option-Text align center']>div[class^='multilevel_dropdown--name']",
152 | "fullscreenMenu.Text.Alignment.TextAlignRight": "div[data-testid='dropdown-option-Text align right']>div[class^='multilevel_dropdown--name']",
153 | "fullscreenMenu.Text.Alignment.TextAlignJustified": "div[data-testid='dropdown-option-Text align justified']>div[class^='multilevel_dropdown--name']",
154 | "fullscreenMenu.Text.Alignment.TextAlignTop": "div[data-testid='dropdown-option-Text align top']>div[class^='multilevel_dropdown--name']",
155 | "fullscreenMenu.Text.Alignment.TextAlignMiddle": "div[data-testid='dropdown-option-Text align middle']>div[class^='multilevel_dropdown--name']",
156 | "fullscreenMenu.Text.Alignment.TextAlignBottom": "div[data-testid='dropdown-option-Text align bottom']>div[class^='multilevel_dropdown--name']",
157 |
158 | "fullscreenMenu.Text.Adjust": "div[data-testid='dropdown-option-Adjust']>div[class^='multilevel_dropdown--name']",
159 | "fullscreenMenu.Text.Adjust.IncreaseIndentation": "div[data-testid='dropdown-option-Increase indentation']>div[class^='multilevel_dropdown--name']",
160 | "fullscreenMenu.Text.Adjust.DecreaseIndentation": "div[data-testid='dropdown-option-Decrease indentation']>div[class^='multilevel_dropdown--name']",
161 | "fullscreenMenu.Text.Adjust.IncreaseFontSize": "div[data-testid='dropdown-option-Increase font size']>div[class^='multilevel_dropdown--name']",
162 | "fullscreenMenu.Text.Adjust.DecreaseFontSize": "div[data-testid='dropdown-option-Decrease font size']>div[class^='multilevel_dropdown--name']",
163 | "fullscreenMenu.Text.Adjust.IncreaseFontWeight": "div[data-testid='dropdown-option-Increase font weight']>div[class^='multilevel_dropdown--name']",
164 | "fullscreenMenu.Text.Adjust.DecreaseFontWeight": "div[data-testid='dropdown-option-Decrease font weight']>div[class^='multilevel_dropdown--name']",
165 | "fullscreenMenu.Text.Adjust.IncreaseLineHeight": "div[data-testid='dropdown-option-Increase line height']>div[class^='multilevel_dropdown--name']",
166 | "fullscreenMenu.Text.Adjust.DecreaseLineHeight": "div[data-testid='dropdown-option-Decrease line height']>div[class^='multilevel_dropdown--name']",
167 | "fullscreenMenu.Text.Adjust.IncreaseLetterSpacing": "div[data-testid='dropdown-option-Increase letter spacing']>div[class^='multilevel_dropdown--name']",
168 | "fullscreenMenu.Text.Adjust.DecreaseLetterSpacing": "div[data-testid='dropdown-option-Decrease letter spacing']>div[class^='multilevel_dropdown--name']",
169 |
170 | "fullscreenMenu.Text.Case": "div[data-testid='dropdown-option-Case']>div[class^='multilevel_dropdown--name']",
171 | "fullscreenMenu.Text.Case.OriginalCase": "div[data-testid='dropdown-option-Original case']>div[class^='multilevel_dropdown--name']",
172 | "fullscreenMenu.Text.Case.Uppercase": "div[data-testid='dropdown-option-Uppercase']>div[class^='multilevel_dropdown--name']",
173 | "fullscreenMenu.Text.Case.Lowercase": "div[data-testid='dropdown-option-Lowercase']>div[class^='multilevel_dropdown--name']",
174 |
175 | "fullscreenMenu.Text.TextDirection": "div[data-testid='dropdown-option-Text direction']>div[class^='multilevel_dropdown--name']",
176 | "fullscreenMenu.Text.TextDirection.LeftToRight": "div[data-testid='dropdown-option-Left to right']>div[class^='multilevel_dropdown--name']",
177 | "fullscreenMenu.Text.TextDirection.RightToLeft": "div[data-testid='dropdown-option-Right to left']>div[class^='multilevel_dropdown--name']",
178 |
179 | "fullscreenMenu.Arrange": "div[data-testid='dropdown-option-Arrange']>div[class^='multilevel_dropdown--name']",
180 | "fullscreenMenu.Arrange.RoundToPixel": "div[data-testid='dropdown-option-Round to pixel']>div[class^='multilevel_dropdown--name']",
181 | "fullscreenMenu.Arrange.AlignLeft": "div[data-testid='dropdown-option-Align left']>div[class^='multilevel_dropdown--name']",
182 | "fullscreenMenu.Arrange.AlignHorizontalCenters": "div[data-testid='dropdown-option-Align horizontal centers']>div[class^='multilevel_dropdown--name']",
183 | "fullscreenMenu.Arrange.AlignRight": "div[data-testid='dropdown-option-Align right']>div[class^='multilevel_dropdown--name']",
184 | "fullscreenMenu.Arrange.AlignTop": "div[data-testid='dropdown-option-Align top']>div[class^='multilevel_dropdown--name']",
185 | "fullscreenMenu.Arrange.AlignVerticalCenters": "div[data-testid='dropdown-option-Align vertical centers']>div[class^='multilevel_dropdown--name']",
186 | "fullscreenMenu.Arrange.AlignBottom": "div[data-testid='dropdown-option-Align bottom']>div[class^='multilevel_dropdown--name']",
187 | "fullscreenMenu.Arrange.TidyUp": "div[data-testid='dropdown-option-Tidy up']>div[class^='multilevel_dropdown--name']",
188 | "fullscreenMenu.Arrange.PackHorizontal": "div[data-testid='dropdown-option-Pack horizontal']>div[class^='multilevel_dropdown--name']",
189 | "fullscreenMenu.Arrange.PackVertical": "div[data-testid='dropdown-option-Pack vertical']>div[class^='multilevel_dropdown--name']",
190 | "fullscreenMenu.Arrange.DistributeHorizontalSpacing": "div[data-testid='dropdown-option-Distribute horizontal spacing']>div[class^='multilevel_dropdown--name']",
191 | "fullscreenMenu.Arrange.DistributeVerticalSpacing": "div[data-testid='dropdown-option-Distribute vertical spacing']>div[class^='multilevel_dropdown--name']",
192 | "fullscreenMenu.Arrange.DistributeLeft": "div[data-testid='dropdown-option-Distribute left']>div[class^='multilevel_dropdown--name']",
193 | "fullscreenMenu.Arrange.DistributeHorizontalCenters": "div[data-testid='dropdown-option-Distribute horizontal centers']>div[class^='multilevel_dropdown--name']",
194 | "fullscreenMenu.Arrange.DistributeRight": "div[data-testid='dropdown-option-Distribute right']>div[class^='multilevel_dropdown--name']",
195 | "fullscreenMenu.Arrange.DistributeTop": "div[data-testid='dropdown-option-Distribute top']>div[class^='multilevel_dropdown--name']",
196 | "fullscreenMenu.Arrange.DistributeVerticalCenters": "div[data-testid='dropdown-option-Distribute vertical centers']>div[class^='multilevel_dropdown--name']",
197 | "fullscreenMenu.Arrange.DistributeBottom": "div[data-testid='dropdown-option-Distribute bottom']>div[class^='multilevel_dropdown--name']",
198 |
199 | "fullscreenMenu.Plugins": "div[data-testid='dropdown-option-Plugins']>div[class^='multilevel_dropdown--name']",
200 | "fullscreenMenu.Plugins.RunLastPlugin": "div[data-testid='dropdown-option-Run last plugin']>div[class^='multilevel_dropdown--name']",
201 | "fullscreenMenu.Plugins.ManagePlugins": "div[data-testid='dropdown-option-Manage plugins…']>div[class^='multilevel_dropdown--name']",
202 | "fullscreenMenu.Plugins.BrowsePluginsInCommunity": "div[data-testid='dropdown-option-Browse plugins in Community']>div[class^='multilevel_dropdown--name']",
203 | "fullscreenMenu.Plugins.BrowsePlugins": "div[data-testid='dropdown-option-Browse plugins']>div[class^='multilevel_dropdown--name']",
204 |
205 | "fullscreenMenu.Widgets": "div[data-testid='dropdown-option-Widgets']>div[class^='multilevel_dropdown--name']",
206 | "fullscreenMenu.Widgets.BrowseWidgets": "div[data-testid='dropdown-option-Browse widgets']>div[class^='multilevel_dropdown--name']",
207 | "fullscreenMenu.Widgets.SelectAllWidgets": "div[data-testid='dropdown-option-Select all widgets']>div[class^='multilevel_dropdown--name']",
208 |
209 | "fullscreenMenu.Integrations": "div[data-testid='dropdown-option-Integrations']>div[class^='multilevel_dropdown--name']",
210 | "fullscreenMenu.Integrations.Dribbble": "div[data-testid='dropdown-option-Dribbble']>div[class^='multilevel_dropdown--name']",
211 |
212 | "fullscreenMenu.Preferences": "div[data-testid='dropdown-option-Preferences']>div[class^='multilevel_dropdown--name']",
213 | "fullscreenMenu.Preferences.SnapToGeometry": "div[data-testid='dropdown-option-Snap to geometry']>div[class^='multilevel_dropdown--name']",
214 | "fullscreenMenu.Preferences.SnapToObjects": "div[data-testid='dropdown-option-Snap to objects']>div[class^='multilevel_dropdown--name']",
215 | "fullscreenMenu.Preferences.SnapToDotGrid": "div[data-testid='dropdown-option-Snap to dot grid']>div[class^='multilevel_dropdown--name']",
216 | "fullscreenMenu.Preferences.SnapToPixelGrid": "div[data-testid='dropdown-option-Snap to pixel grid']>div[class^='multilevel_dropdown--name']",
217 | "fullscreenMenu.Preferences.KeepToolSelectedAfterUse": "div[data-testid='dropdown-option-Keep tool selected after use']>div[class^='multilevel_dropdown--name']",
218 | "fullscreenMenu.Preferences.HighlightLayersOnHover": "div[data-testid='dropdown-option-Highlight layers on hover']>div[class^='multilevel_dropdown--name']",
219 | "fullscreenMenu.Preferences.RenameDuplicatedLayers": "div[data-testid='dropdown-option-Rename duplicated layers']>div[class^='multilevel_dropdown--name']",
220 | "fullscreenMenu.Preferences.ShowDimensionsOnObjects": "div[data-testid='dropdown-option-Show dimensions on objects']>div[class^='multilevel_dropdown--name']",
221 | "fullscreenMenu.Preferences.HideCanvasUIDuringChanges": "div[data-testid='dropdown-option-Hide canvas UI during changes']>div[class^='multilevel_dropdown--name']",
222 | "fullscreenMenu.Preferences.KeyboardZoomsIntoSelection": "div[data-testid='dropdown-option-Keyboard zooms into selection']>div[class^='multilevel_dropdown--name']",
223 | "fullscreenMenu.Preferences.SubstituteSmartQuotes": "div[data-testid='dropdown-option-Substitute smart quotes']>div[class^='multilevel_dropdown--name']",
224 | "fullscreenMenu.Preferences.ShowGoogleFonts": "div[data-testid='dropdown-option-Show Google Fonts']>div[class^='multilevel_dropdown--name']",
225 | "fullscreenMenu.Preferences.FlipObjectsWhileResizing": "div[data-testid='dropdown-option-Flip objects while resizing']>div[class^='multilevel_dropdown--name']",
226 | "fullscreenMenu.Preferences.InvertZoomDirection": "div[data-testid='dropdown-option-Invert zoom direction']>div[class^='multilevel_dropdown--name']",
227 | "fullscreenMenu.Preferences.UseNumberKeysForOpacity": "div[data-testid='dropdown-option-Use number keys for opacity']>div[class^='multilevel_dropdown--name']",
228 | "fullscreenMenu.Preferences.ShakeCursorForHighFive": "div[data-testid='dropdown-option-Shake cursor for high five']>div[class^='multilevel_dropdown--name']",
229 | "fullscreenMenu.Preferences.OpenLinksInDesktopApp": "div[data-testid='dropdown-option-Open links in desktop app']>div[class^='multilevel_dropdown--name']",
230 |
231 | "fullscreenMenu.Preferences.Theme": "div[data-testid='dropdown-option-Theme']>div[class^='multilevel_dropdown--name']",
232 | "fullscreenMenu.Preferences.Theme.Light": "div[data-testid='dropdown-option-Light']>div[class^='multilevel_dropdown--name']",
233 | "fullscreenMenu.Preferences.Theme.Dark": "div[data-testid='dropdown-option-Dark']>div[class^='multilevel_dropdown--name']",
234 | "fullscreenMenu.Preferences.SystemTheme": "div[data-testid='dropdown-option-System theme']>div[class^='multilevel_dropdown--name']",
235 |
236 | "fullscreenMenu.Preferences.NudgeAmount": "div[data-testid='dropdown-option-Nudge amount…']>div[class^='multilevel_dropdown--name']",
237 | "fullscreenMenu.Preferences.ShowTemplatesForNewFiles": "div[data-testid='dropdown-option-Show templates for new files']>div[class^='multilevel_dropdown--name']",
238 |
239 | "fullscreenMenu.Libraries": "div[data-testid='dropdown-option-Libraries']>div[class^='multilevel_dropdown--name']",
240 |
241 | "fullscreenMenu.GetDesktopApp": "div[data-testid='dropdown-option-Get desktop app']>div[class^='multilevel_dropdown--name']",
242 | "fullscreenMenu.OpenInDesktopApp": "div[data-testid='dropdown-option-Open in desktop app']>div[class^='multilevel_dropdown--name']",
243 |
244 | "fullscreenMenu.HelpAndAccount": "div[data-testid='dropdown-option-Help and account']>div[class^='multilevel_dropdown--name']",
245 | "fullscreenMenu.HelpAndAccount.HelpPage": "div[data-testid='dropdown-option-Help page']>div[class^='multilevel_dropdown--name']",
246 | "fullscreenMenu.HelpAndAccount.KeyboardShortcuts": "div[data-testid='dropdown-option-Keyboard shortcuts']>div[class^='multilevel_dropdown--name']",
247 | "fullscreenMenu.HelpAndAccount.SupportForum": "div[data-testid='dropdown-option-Support forum']>div[class^='multilevel_dropdown--name']",
248 | "fullscreenMenu.HelpAndAccount.VideoTutorials": "div[data-testid='dropdown-option-Video tutorials']>div[class^='multilevel_dropdown--name']",
249 | "fullscreenMenu.HelpAndAccount.ReleaseNotes": "div[data-testid='dropdown-option-Release notes']>div[class^='multilevel_dropdown--name']",
250 | "fullscreenMenu.HelpAndAccount.OpenFontSettings": "div[data-testid='dropdown-option-Open font settings']>div[class^='multilevel_dropdown--name']",
251 | "fullscreenMenu.HelpAndAccount.LegalSummary": "div[data-testid='dropdown-option-Legal summary']>div[class^='multilevel_dropdown--name']",
252 | "fullscreenMenu.HelpAndAccount.AccountSettings": "div[data-testid='dropdown-option-Account settings']>div[class^='multilevel_dropdown--name']",
253 | "fullscreenMenu.HelpAndAccount.LogOut": "div[data-testid='dropdown-option-Log out']>div[class^='multilevel_dropdown--name']",
254 |
255 | "fullscreenMenu.PublishStylesAndComponents": "div[data-testid='dropdown-option-Publish styles and components']>div[class^='multilevel_dropdown--name']",
256 | "fullscreenMenu.Rename": "div[data-testid='dropdown-option-Rename']>div[class^='multilevel_dropdown--name']",
257 | "fullscreenMenu.MoveToProject": "div[data-testid='dropdown-option-Move to project…']>div[class^='multilevel_dropdown--name']",
258 | "fullscreenMenu.Delete": "div[data-testid='dropdown-option-Delete…']>div[class^='multilevel_dropdown--name']",
259 | "fullscreenMenu.ZoomTo50": "div[data-testid='dropdown-option-Zoom to 50%']>div[class^='multilevel_dropdown--name']",
260 | "fullscreenMenu.ZoomTo200": "div[data-testid='dropdown-option-Zoom to 200%']>div[class^='multilevel_dropdown--name']",
261 | "fullscreenMenu.Disabled": "div[data-testid='dropdown-option-Disabled']>div[class^='multilevel_dropdown--name']",
262 |
263 | "fullscreenMenu.Tooltip.MainMenu": "div[class*='toolbar_view--toolbar']>div[data-tooltip='main-menu']->attr:data-tooltip,data-tooltip-type=text",
264 | "fullscreenMenu.Tooltip.MoveTools": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Move tools']->attr:data-tooltip,data-tooltip-type=text",
265 | "fullscreenMenu.Tooltip.SetToolDefault": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-default']->attr:data-tooltip,data-tooltip-type=text",
266 | "fullscreenMenu.Tooltip.SetToolScale": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-scale']->attr:data-tooltip,data-tooltip-type=text",
267 | "fullscreenMenu.Tooltip.RegionTools": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Region tools']->attr:data-tooltip,data-tooltip-type=text",
268 | "fullscreenMenu.Tooltip.SetToolFrame": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-frame']->attr:data-tooltip,data-tooltip-type=text",
269 | "fullscreenMenu.Tooltip.SetToolSlice": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-slice']->attr:data-tooltip,data-tooltip-type=text",
270 | "fullscreenMenu.Tooltip.ShapeTools": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Shape tools']->attr:data-tooltip,data-tooltip-type=text",
271 | "fullscreenMenu.Tooltip.SetToolRectangle": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-rectangle']->attr:data-tooltip,data-tooltip-type=text",
272 | "fullscreenMenu.Tooltip.SetToolLine": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-line']->attr:data-tooltip,data-tooltip-type=text",
273 | "fullscreenMenu.Tooltip.SetToolArrow": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-arrow']->attr:data-tooltip,data-tooltip-type=text",
274 | "fullscreenMenu.Tooltip.SetToolEllipse": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-ellipse']->attr:data-tooltip,data-tooltip-type=text",
275 | "fullscreenMenu.Tooltip.SetToolRegularPolygon": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-regular-polygon']->attr:data-tooltip,data-tooltip-type=text",
276 | "fullscreenMenu.Tooltip.SetToolStar": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-star']->attr:data-tooltip,data-tooltip-type=text",
277 | "fullscreenMenu.Tooltip.DrawingTools": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Drawing tools']->attr:data-tooltip,data-tooltip-type=text",
278 | "fullscreenMenu.Tooltip.SetToolPen": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-pen']->attr:data-tooltip,data-tooltip-type=text",
279 | "fullscreenMenu.Tooltip.SetToolPencil": "div[class*='toolbar_view--toolbar'] div[data-tooltip='set-tool-pencil']->attr:data-tooltip,data-tooltip-type=text",
280 | "fullscreenMenu.Tooltip.SetToolText": "div[class*='toolbar_view--toolbar'] span[data-tooltip='set-tool-type']->attr:data-tooltip,data-tooltip-type=text",
281 | "fullscreenMenu.Tooltip.SetToolHand": "div[class*='toolbar_view--toolbar'] span[data-tooltip='set-tool-hand']->attr:data-tooltip,data-tooltip-type=text",
282 | "fullscreenMenu.Tooltip.SetToolComments": "div[class*='toolbar_view--toolbar'] span[data-tooltip='set-tool-comments']->attr:data-tooltip,data-tooltip-type=text",
283 | "fullscreenMenu.Tooltip.Present": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Present']->attr:data-tooltip",
284 | "fullscreenMenu.Tooltip.CreateComponent": "div[class*='toolbar_view--toolbar'] span[data-tooltip='create-symbol']->attr:data-tooltip,data-tooltip-type=text",
285 | "fullscreenMenu.Tooltip.UseAsMask": "div[class*='toolbar_view--toolbar'] span[data-tooltip='mask-selection']->attr:data-tooltip,data-tooltip-type=text",
286 | "fullscreenMenu.Tooltip.BooleanGroups": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Boolean groups']->attr:data-tooltip",
287 | "fullscreenMenu.Tooltip.UnionSelection": "div[class*='toolbar_view--toolbar'] div[data-tooltip='live-boolean-union']->attr:data-tooltip,data-tooltip-type=text",
288 | "fullscreenMenu.Tooltip.SubtractSelection": "div[class*='toolbar_view--toolbar'] div[data-tooltip='live-boolean-subtract']->attr:data-tooltip,data-tooltip-type=text",
289 | "fullscreenMenu.Tooltip.IntersectSelection": "div[class*='toolbar_view--toolbar'] div[data-tooltip='live-boolean-intersect']->attr:data-tooltip,data-tooltip-type=text",
290 | "fullscreenMenu.Tooltip.ExcludeSelection": "div[class*='toolbar_view--toolbar'] div[data-tooltip='live-boolean-xor']->attr:data-tooltip,data-tooltip-type=text",
291 |
292 | "toolbarView.fileName.folderName.Drafts": "XPATH://div[contains(@class, 'filename_view--folder')]//div[text()='Drafts']",
293 |
294 | "toolbarView.moveFlyout.flyout.toolDefault": "a[data-testid='toolbarView.moveFlyout.flyout.toolDefault']>div[class^='action_option--text']",
295 | "toolbarView.moveFlyout.flyout.toolScale": "a[data-testid='toolbarView.moveFlyout.flyout.toolScale']>div[class^='action_option--text']",
296 |
297 | "toolbarView.regionFlyout.flyout.toolFrame": "a[data-testid='toolbarView.regionFlyout.flyout.toolFrame']>div[class^='action_option--text']",
298 | "toolbarView.regionFlyout.flyout.toolSlice": "a[data-testid='toolbarView.regionFlyout.flyout.toolSlice']>div[class^='action_option--text']",
299 |
300 | "toolbarView.shapeFlyout.flyout.toolShapeRectangle": "a[data-testid='toolbarView.shapeFlyout.flyout.toolShapeRectangle']>div[class^='action_option--text']",
301 | "toolbarView.shapeFlyout.flyout.toolShapeLine": "a[data-testid='toolbarView.shapeFlyout.flyout.toolShapeLine']>div[class^='action_option--text']",
302 | "toolbarView.shapeFlyout.flyout.toolShapeArrow": "a[data-testid='toolbarView.shapeFlyout.flyout.toolShapeArrow']>div[class^='action_option--text']",
303 | "toolbarView.shapeFlyout.flyout.toolShapeEllipse": "a[data-testid='toolbarView.shapeFlyout.flyout.toolShapeEllipse']>div[class^='action_option--text']",
304 | "toolbarView.shapeFlyout.flyout.toolShapePolygon": "a[data-testid='toolbarView.shapeFlyout.flyout.toolShapePolygon']>div[class^='action_option--text']",
305 | "toolbarView.shapeFlyout.flyout.toolShapeStar": "a[data-testid='toolbarView.shapeFlyout.flyout.toolShapeStar']>div[class^='action_option--text']",
306 | "toolbarView.shapeFlyout.flyout.toolPlaceImage": "a[data-testid='toolbarView.shapeFlyout.flyout.toolPlaceImage']>div[class^='action_option--text']",
307 |
308 | "toolbarView.penFlyout.flyout.toolPen": "a[data-testid='toolbarView.penFlyout.flyout.toolPen']>div[class^='action_option--text']",
309 | "toolbarView.penFlyout.flyout.toolPencil": "a[data-testid='toolbarView.penFlyout.flyout.toolPencil']>div[class^='action_option--text']",
310 |
311 | "toolbarView.booleanFlyout.flyout.toolBooleanUnion": "a[data-testid='toolbarView.booleanFlyout.flyout.toolBooleanUnion']>div[class^='action_option--text']",
312 | "toolbarView.booleanFlyout.flyout.toolBooleanSubtract": "a[data-testid='toolbarView.booleanFlyout.flyout.toolBooleanSubtract']>div[class^='action_option--text']",
313 | "toolbarView.booleanFlyout.flyout.toolBooleanIntersect": "a[data-testid='toolbarView.booleanFlyout.flyout.toolBooleanIntersect']>div[class^='action_option--text']",
314 | "toolbarView.booleanFlyout.flyout.toolBooleatoolBooleanXornUnion": "a[data-testid='toolbarView.booleanFlyout.flyout.toolBooleanXor']>div[class^='action_option--text']",
315 | "toolbarView.booleanFlyout.flyout.toolFlatten": "a[data-testid='toolbarView.booleanFlyout.flyout.toolFlatten']>div[class^='action_option--text']",
316 |
317 | "toolbarView.Share": "div[data-testid='multiplayer-toolbar-share-button']",
318 |
319 | "toolbarView.CursorChat": "div[data-testid='dropdown-option-Cursor chat']>div[class^='multilevel_dropdown--name']",
320 | "toolbarView.Stamp": "div[data-testid='dropdown-option-Stamp']>div[class^='multilevel_dropdown--name']",
321 | "toolbarView.Emote": "div[data-testid='dropdown-option-Emote']>div[class^='multilevel_dropdown--name']",
322 |
323 | "toolbarView.Overflow.Emote": "XPATH://a[@data-testid='overflow.emote']//div[contains(@class,'toolbar_view--overflowInner')]//text()[1]",
324 | "toolbarView.Overflow.Stamp": "XPATH://a[@data-testid='overflow.stamp']//div[contains(@class,'toolbar_view--overflowInner')]//text()[1]",
325 | "toolbarView.Overflow.CursorChat": "XPATH://a[@data-testid='overflow.chat']//div[contains(@class,'toolbar_view--overflowInner')]//text()[1]",
326 | "toolbarView.Overflow.HighFive": "XPATH://a[@data-testid='overflow.highFive']//div[contains(@class,'toolbar_view--overflowInner')]//text()[1]",
327 | "toolbarView.Overflow.Timer": "XPATH://a[@data-testid='overflow.timer']//div[contains(@class,'toolbar_view--overflowInner')]//text()[1]",
328 |
329 | "toolbarView.Tooltip.Collaborate": "div[class*='toolbar_view--toolbar'] div[data-tooltip='whiteboard-overflow-menu']->attr:data-tooltip,data-tooltip-type=text",
330 | "toolbarView.Tooltip.ZoomOut": "div[class*='toolbar_view--toolbar'] span[data-tooltip='zoom-out']->attr:data-tooltip,data-tooltip-type=text",
331 | "toolbarView.Tooltip.ZoomIn": "div[class*='toolbar_view--toolbar'] span[data-tooltip='zoom-in']->attr:data-tooltip,data-tooltip-type=text",
332 | "toolbarView.Tooltip.ZoomOrViewOptions": "div[class*='toolbar_view--toolbar'] div[data-tooltip='Zoom/view options']->attr:data-tooltip",
333 |
334 |
335 | "delightfulToolbar.MoveTool": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-default-desc']->attr:data-tooltip,data-tooltip-type=text",
336 | "delightfulToolbar.HandTool": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-hand']->attr:data-tooltip,data-tooltip-type=text",
337 | "delightfulToolbar.Marker": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-marker']->attr:data-tooltip,data-tooltip-type=text",
338 | "delightfulToolbar.Highlighter": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-highlighter']->attr:data-tooltip,data-tooltip-type=text",
339 | "delightfulToolbar.Eraser": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-eraser']->attr:data-tooltip,data-tooltip-type=text",
340 | "delightfulToolbar.Thin": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Thin']->attr:data-tooltip",
341 | "delightfulToolbar.Thick": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Thick']->attr:data-tooltip",
342 | "delightfulToolbar.Charcoal": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Charcoal']->attr:data-tooltip",
343 | "delightfulToolbar.Red": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Red']->attr:data-tooltip",
344 | "delightfulToolbar.Yellow": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Yellow']->attr:data-tooltip",
345 | "delightfulToolbar.Green": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Green']->attr:data-tooltip",
346 | "delightfulToolbar.Blue": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Blue']->attr:data-tooltip",
347 | "delightfulToolbar.Violet": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Violet']->attr:data-tooltip",
348 | "delightfulToolbar.Brown": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Brown']->attr:data-tooltip",
349 | "delightfulToolbar.White": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='White']->attr:data-tooltip",
350 | "delightfulToolbar.Square": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-square']->attr:data-tooltip,data-tooltip-type=text,no-track",
351 | "delightfulToolbar.Ellipse": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-ellipse']->attr:data-tooltip,data-tooltip-type=text,no-track",
352 | "delightfulToolbar.RoundedRectangle": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-rounded-rectangle']->attr:data-tooltip,data-tooltip-type=text,no-track",
353 | "delightfulToolbar.Diamond": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-diamond']->attr:data-tooltip,data-tooltip-type=text,no-track",
354 | "delightfulToolbar.TriangleUp": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-triangle-up']->attr:data-tooltip,data-tooltip-type=text,no-track",
355 | "delightfulToolbar.TriangleDown": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-triangle-down']->attr:data-tooltip,data-tooltip-type=text,no-track",
356 | "delightfulToolbar.ParallelogramRight": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-parallelogram-right']->attr:data-tooltip,data-tooltip-type=text,no-track",
357 | "delightfulToolbar.ParallelogramLeft": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-parallelogram-left']->attr:data-tooltip,data-tooltip-type=text,no-track",
358 | "delightfulToolbar.Cylinder": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-eng-database']->attr:data-tooltip,data-tooltip-type=text,no-track",
359 | "delightfulToolbar.HorizontalCylinder": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-eng-queue']->attr:data-tooltip,data-tooltip-type=text,no-track",
360 | "delightfulToolbar.File": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-eng-file']->attr:data-tooltip,data-tooltip-type=text,no-track",
361 | "delightfulToolbar.Folder": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-shape-whiteboard-eng-folder']->attr:data-tooltip,data-tooltip-type=text,no-track",
362 | "delightfulToolbar.Options.Square": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Square']->attr:data-tooltip",
363 | "delightfulToolbar.Options.Ellipse": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Ellipse']->attr:data-tooltip",
364 | "delightfulToolbar.Options.RoundedRectangle": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Rounded rectangle']->attr:data-tooltip",
365 | "delightfulToolbar.Options.Diamond": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Diamond']->attr:data-tooltip",
366 | "delightfulToolbar.Options.Triangle": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Triangle']->attr:data-tooltip",
367 | "delightfulToolbar.Options.DownwardPointingTriangle": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Downward-pointing triangle']->attr:data-tooltip",
368 | "delightfulToolbar.Options.RightLeaningParallelogram": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Right-leaning parallelogram']->attr:data-tooltip",
369 | "delightfulToolbar.Options.LeftLeaningParallelogram": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Left-leaning parallelogram']->attr:data-tooltip",
370 | "delightfulToolbar.Options.Cylinder": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Cylinder']->attr:data-tooltip",
371 | "delightfulToolbar.Options.HorizontalCylinder": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Horizontal cylinder']->attr:data-tooltip",
372 | "delightfulToolbar.Options.File": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='File']->attr:data-tooltip",
373 | "delightfulToolbar.Options.Folder": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Folder']->attr:data-tooltip",
374 | "delightfulToolbar.Sticky": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-sticky']->attr:data-tooltip,data-tooltip-type=text",
375 | "delightfulToolbar.Text": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-type']->attr:data-tooltip,data-tooltip-type=text",
376 | "delightfulToolbar.Connector": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-connector-elbowed']->attr:data-tooltip,data-tooltip-type=text,no-track",
377 | "delightfulToolbar.Line": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-connector-straight']->attr:data-tooltip,data-tooltip-type=text,no-track",
378 | "delightfulToolbar.Options.Connector": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Connector']->attr:data-tooltip",
379 | "delightfulToolbar.Options.StraightLine": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='Straight line']->attr:data-tooltip",
380 | "delightfulToolbar.Stamp": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='set-tool-stamp']->attr:data-tooltip,data-tooltip-type=text",
381 | "delightfulToolbar.More": "div[class*='delightful_toolbar--delightfulToolbarContainer'] div[data-tooltip='browse-all-resources-dlt']->attr:data-tooltip,data-tooltip-type=text",
382 |
383 | "contextMenu.Copy": "div[data-testid='dropdown-option-Copy']>div[class^='multilevel_dropdown--name']",
384 | "contextMenu.Paste": "div[data-testid='dropdown-option-Paste']>div[class^='multilevel_dropdown--name']",
385 | "contextMenu.PasteHere": "div[data-testid='dropdown-option-Paste here']>div[class^='multilevel_dropdown--name']",
386 |
387 | "contextMenu.CopyOrPasteAs": "div[data-testid='dropdown-option-Copy/Paste as']>div[class^='multilevel_dropdown--name']",
388 | "contextMenu.CopyOrPasteAs.CopyLink": "div[data-testid='dropdown-option-Copy link']>div[class^='multilevel_dropdown--name']",
389 |
390 | "contextMenu.SelectLayer": "div[data-testid='dropdown-option-Select layer']>div[class^='multilevel_dropdown--name']",
391 | "contextMenu.MoveToPage": "div[data-testid='dropdown-option-Move to page']>div[class^='multilevel_dropdown--name']",
392 |
393 | "contextMenu.Ungroup": "div[data-testid='dropdown-option-Ungroup']>div[class^='multilevel_dropdown--name']",
394 | "contextMenu.Flatten": "div[data-testid='dropdown-option-Flatten']>div[class^='multilevel_dropdown--name']",
395 |
396 | "contextMenu.ShowOrHide": "div[data-testid='dropdown-option-Show/Hide']>div[class^='multilevel_dropdown--name']",
397 | "contextMenu.LockOrUnlock": "div[data-testid='dropdown-option-Lock/Unlock']>div[class^='multilevel_dropdown--name']",
398 |
399 | "contextMenu.ShowOrHideComments": "div[data-testid='dropdown-option-Show/Hide comments']>div[class^='multilevel_dropdown--name']",
400 |
401 | "pagesPanel.Sidebar.Tab": "div[class*='pages_panel--tabsHeader']>div[class*='pages_panel--tab']->attr:data-label",
402 | "pagesPanel.Sidebar.AssetsTab": "div[class*='pages_panel--tabsHeader']>div[class*='pages_panel--assetsTab']>div[class*='pages_panel--tab']->attr:data-label",
403 |
404 | "pagesPanel.Sidebar.Pages": "div[class*='pages_panel--pagesHeaderContainer']>div[class*='pages_panel--pagesHeaderText']",
405 | "pagesPanel.Sidebar.Pages.CopyLinkToPage": "div[data-testid='dropdown-option-Copy link to page']>div[class^='multilevel_dropdown--name']",
406 | "pagesPanel.Sidebar.Pages.DeletePage": "div[data-testid='dropdown-option-Delete page']>div[class^='multilevel_dropdown--name']",
407 | "pagesPanel.Sidebar.Pages.RenamePage": "div[data-testid='dropdown-option-Rename page']>div[class^='multilevel_dropdown--name']",
408 | "pagesPanel.Sidebar.Pages.DuplicatePage": "div[data-testid='dropdown-option-Duplicate page']>div[class^='multilevel_dropdown--name']",
409 |
410 | "pagesPanel.Sidebar.AddNewPage": "div[class*='pages_panel--pagesHeaderContainer'] span[aria-label='Add new page']->attr:data-tooltip",
411 | "pagesPanel.Sidebar.Search": "div[class*='component_sidebar--headerContainer'] input[class*='search--searchInput__DEPRECATED']->attr:placeholder",
412 | "pagesPanel.Sidebar.ShowAsList": "div[class*='component_sidebar--headerContainer'] span[aria-label='Show as list']->attr:data-tooltip",
413 | "pagesPanel.Sidebar.ShowAsGrid": "div[class*='component_sidebar--headerContainer'] span[aria-label='Show as grid']->attr:data-tooltip",
414 | "pagesPanel.Sidebar.TeamLibrary": "div[class*='component_sidebar--headerContainer'] span[aria-label='Team library']->attr:data-tooltip",
415 |
416 | "pagesPanel.Sidebar.Components": "XPATH://div[contains(@class, 'component_sidebar--container')]//div[text()='Components']",
417 | "pagesPanel.Sidebar.Components.FirstInfoText": "XPATH://div[contains(@class, 'component_sidebar--container')]//div[contains(@class, 'empty_states--emptyStateContent')][1]//div[contains(@class, 'empty_states--emptyStateText')]//text()[1]",
418 | "pagesPanel.Sidebar.Components.FirstInfoLink": "XPATH://div[contains(@class, 'component_sidebar--container')]//div[contains(@class, 'empty_states--emptyStateContent')][1]//div[contains(@class, 'empty_states--emptyStateText')]//a",
419 | "pagesPanel.Sidebar.Components.SecondInfoText": "XPATH://div[contains(@class, 'component_sidebar--container')]//div[contains(@class, 'empty_states--emptyStateContent')][2]//div[contains(@class, 'empty_states--emptyStateText')]//text()[1]",
420 | "pagesPanel.Sidebar.Components.SecondInfoLink": "XPATH://div[contains(@class, 'component_sidebar--container')]//div[contains(@class, 'empty_states--emptyStateContent')][2]//div[contains(@class, 'empty_states--emptyStateText')]//a",
421 |
422 | "propertiesPanel.TabsHeader.Design": "XPATH://div[contains(@class, 'properties_panel--tabsHeader')]//div[text()='Design']->attr:data-label",
423 | "propertiesPanel.TabsHeader.Prototype": "XPATH://div[contains(@class, 'properties_panel--tabsHeader')]//div[text()='Prototype']->attr:data-label",
424 | "propertiesPanel.TabsHeader.Inspect": "XPATH://div[contains(@class, 'properties_panel--tabsHeader')]//div[text()='Inspect']->attr:data-label",
425 |
426 | "navbar.Community": "XPATH://div[@data-testid='dropdown-option-Community']//div[text()='Community']",
427 | "navbar.Search": "XPATH://div[contains(@class, 'navbar--navbarContainer')]//input[contains(@class, 'search--searchInput')]->attr:placeholder",
428 | "navbar.Notifications": "XPATH://div[contains(@class, 'user_notifications_dropdown--header')]//div[text()='Notifications']",
429 | "navbar.InternalProfile": "div[data-testid='dropdown-option-Internal profile']>div[class^='multilevel_dropdown--name']",
430 | "navbar.Settings": "div[data-testid='dropdown-option-Settings']>div[class^='multilevel_dropdown--name']",
431 | "navbar.AddAccount": "div[data-testid='dropdown-option-Add account']>div[class^='multilevel_dropdown--name']",
432 |
433 | "sidebar.Recents": "XPATH://div[contains(@class, 'sidebar--navContent')]//span[text()='Recents']",
434 | "sidebar.Drafts": "XPATH://div[contains(@class, 'sidebar--navContent')]//span[text()='Drafts']",
435 | "sidebar.ExploreCommunity": "XPATH://div[contains(@class, 'sidebar--navContent')]//a[contains(@class, 'community_hub_link')]//span[text()='Explore community']",
436 | "sidebar.TeamProject": "XPATH://div[contains(@class, 'sidebar--navContent')]//div[contains(@class, 'nav_section--orderedFolders')]//span[text()='Team project']",
437 | "sidebar.CreateNewTeam": "XPATH://div[contains(@class, 'sidebar--navContent')]//div[contains(@class, 'new_team_link--createNewTeamLink')]//div[text()='Create new team']",
438 |
439 | "fileBrowserView.RecentlyViewed": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'desktop_tool_bar--pageViewToolBarContainer')]//span[text()='Recently viewed']",
440 | "fileBrowserView.Drafts": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'desktop_tool_bar--pageViewToolBarContainer')]//span[text()='Drafts']",
441 | "fileBrowserView.Deleted": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'desktop_tool_bar--pageViewToolBarContainer')]//span[text()='Deleted']",
442 | "fileBrowserView.NewDesignFile": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'new_file_creation_topbar--newFileTilesContainer')]//div[@data-testid='new-design-file-button']//text()[1]",
443 | "fileBrowserView.NewDesignFile.Desc": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'new_file_creation_topbar--newFileTilesContainer')]//div[@data-testid='new-design-file-button']//div",
444 | "fileBrowserView.NewFigJamFile": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'new_file_creation_topbar--newFileTilesContainer')]//div[@data-testid='new-whiteboard-file-button']//text()[1]",
445 | "fileBrowserView.NewFigJamFile.Desc": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'new_file_creation_topbar--newFileTilesContainer')]//div[@data-testid='new-whiteboard-file-button']//div",
446 | "fileBrowserView.ImportFile": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'new_file_creation_topbar--importFileTile')]//div[contains(@class, 'new_file_creation_topbar--tileText')]//text()[1]",
447 | "fileBrowserView.ImportFile.Desc": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'new_file_creation_topbar--importFileTile')]//div[contains(@class, 'new_file_creation_topbar--tileText')]//div",
448 |
449 | "fileBrowserView.Filter": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'tile_sort_filter--dropdownCollectionContainer')]//div[text()='Filter:']",
450 | // "fileBrowserView.AllFiles": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[contains(@class, 'tile_sort_filter--dropdownCollectionContainer')]//span[text()='All files']->attr:text-content,no-track",
451 | "fileBrowserView.Filter.Select.AllFiles": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='All files']",
452 | "fileBrowserView.Filter.Select.DesignFiles": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Design files']",
453 | "fileBrowserView.Filter.Select.FigJamFiles": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='FigJam Files']",
454 | "fileBrowserView.Filter.Select.Prototypes": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Prototypes']",
455 |
456 | "fileBrowserView.Sort": "XPATH://div[contains(@class, 'file_browser_view--fileBrowserPageViewContainer')]//div[text()='Sort:']",
457 | "fileBrowserView.Sort.Select.SortBy": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Sort by']",
458 | "fileBrowserView.Sort.Select.Alphabetical": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Alphabetical']",
459 | "fileBrowserView.Sort.Select.DateCreated": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Date created']",
460 | "fileBrowserView.Sort.Select.LastViewed": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Last viewed']",
461 | "fileBrowserView.Sort.Select.LastModified": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Last modified']",
462 | "fileBrowserView.Sort.Select.Order": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Order']",
463 | "fileBrowserView.Sort.Select.OldestFirst": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Oldest first']",
464 | "fileBrowserView.Sort.Select.NewestFirst": "XPATH://div[contains(@class, 'scroll_container--innerScrollContainer')]//a//text()[string()='Newest first']",
465 |
466 | "fileBrowserView.ShowAsGrid": "div[class*='file_browser_page_view--contentContainer'] span[data-tooltip='Show as grid']->attr:data-tooltip",
467 | "fileBrowserView.ShowAsList": "div[class*='file_browser_page_view--contentContainer'] span[data-tooltip='Show as list']->attr:data-tooltip",
468 |
469 | "fileBrowserView.ContextMenu.ShowInProject": "XPATH://a[text()='Show in project']",
470 | "fileBrowserView.ContextMenu.Open": "XPATH://a[text()='Open']",
471 | "fileBrowserView.ContextMenu.OpenInNewTab": "XPATH://a[text()='Open in new tab']",
472 | "fileBrowserView.ContextMenu.CopyLink": "XPATH://a[text()='Copy link']",
473 | "fileBrowserView.ContextMenu.AddToYourFavorites": "XPATH://a[text()='Add to your favorites']",
474 | "fileBrowserView.ContextMenu.Share": "XPATH://a[text()='Share']",
475 | "fileBrowserView.ContextMenu.Duplicate": "XPATH://a[text()='Duplicate']",
476 | "fileBrowserView.ContextMenu.Rename": "XPATH://a[text()='Rename']",
477 | "fileBrowserView.ContextMenu.Delete": "XPATH://a[text()='Delete']",
478 | "fileBrowserView.ContextMenu.RemoveFromRecent": "XPATH://a[text()='Remove from recent']",
479 | }
480 |
481 | type SelectType = "CSS" | "XPATH"
482 | type ControlType = "Text" | "Attr"
483 |
484 | interface AttrNode {
485 | Key: string
486 | Value: string
487 | }
488 |
489 | interface MatchElement {
490 | [key: string]: {
491 | type: ControlType
492 | node: Element
493 | attrList: AttrNode[]
494 | }
495 | }
496 |
497 | interface OperationRule {
498 | selectType: SelectType
499 | selectRule: string
500 | controlType: ControlType
501 | attrList: AttrNode[]
502 | }
503 |
504 | const parseOperationRuleFromMatchRule = function (matchRule: string): OperationRule {
505 | let rule: OperationRule = {
506 | selectType: "CSS",
507 | selectRule: "",
508 | controlType: "Text",
509 | attrList: [],
510 | }
511 |
512 | if (matchRule.startsWith("XPATH:")) {
513 | rule.selectType = "XPATH"
514 | matchRule = matchRule.replace("XPATH:", "")
515 | }
516 |
517 | if (matchRule.includes("->attr:")) {
518 | rule.controlType = "Attr"
519 | let ruleArr = matchRule.split("->attr:")
520 | if (ruleArr.length == 2) {
521 | rule.selectRule = ruleArr[0]
522 | let attrNodeStrList = ruleArr[1].split(",")
523 | for (let i = 0; i < attrNodeStrList.length; i++) {
524 | const attrNodeStr = attrNodeStrList[i]
525 | let attrNode: AttrNode = {
526 | Key: "",
527 | Value: "",
528 | }
529 | let attrS = attrNodeStr.split("=")
530 | attrNode.Key = attrS[0]
531 | if (attrS.length == 2) {
532 | attrNode.Value = attrS[1]
533 | }
534 | rule.attrList.push(attrNode)
535 | }
536 | }
537 | } else {
538 | rule.selectRule = matchRule
539 | }
540 |
541 | return rule
542 | }
543 |
544 | export const getTargetElement = function (originElements: Element[]): MatchElement {
545 | let matchElement: MatchElement = {}
546 |
547 | for (const element of originElements) {
548 | if (!element.querySelector) {
549 | continue
550 | }
551 |
552 | for (const elementName in matchRuleDict) {
553 | if (!Object.prototype.hasOwnProperty.call(matchRuleDict, elementName)) {
554 | continue
555 | }
556 |
557 | let rule = parseOperationRuleFromMatchRule(matchRuleDict[elementName])
558 | let target: Element
559 |
560 | if (rule.selectType == "XPATH") {
561 | target = document.evaluate(rule.selectRule, element).iterateNext()
562 | } else {
563 | target = (element).querySelector(rule.selectRule)
564 | }
565 |
566 | if (!target) {
567 | target = (element).querySelector(`*[figma-i18n-id='${elementName}']`)
568 | }
569 |
570 | if (target && (target?.nodeType == 1 || target?.nodeType == 3)) {
571 | matchElement[elementName] = {
572 | type: rule.controlType,
573 | node: target,
574 | attrList: rule.attrList,
575 | }
576 | }
577 | }
578 | }
579 |
580 | return matchElement
581 | }
582 |
--------------------------------------------------------------------------------
/src/global.d.ts:
--------------------------------------------------------------------------------
1 | ///
--------------------------------------------------------------------------------
/src/locale/index.ts:
--------------------------------------------------------------------------------
1 | import * as zhCn from "./lang/zh-cn"
2 | import * as en from "./lang/en"
3 | import * as ja from "./lang/ja"
4 |
5 | export interface Language {
6 | [lang: string]: {
7 | name: string
8 | dict: {
9 | [elementName: string]: string
10 | }
11 | }
12 | }
13 |
14 | export const languageDict = {
15 | en: {
16 | name: "English",
17 | dict: en.default
18 | },
19 | zhCn: {
20 | name: "简体中文",
21 | dict: zhCn.default
22 | },
23 | ja: {
24 | name: "日本語",
25 | dict: ja.default
26 | }
27 | }
--------------------------------------------------------------------------------
/src/locale/lang/en.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | "fullscreenMenu.BackToFiles": "Back to files",
3 |
4 | "fullscreenMenu.QuickActions": "Quick actions…",
5 |
6 | "fullscreenMenu.File": "File",
7 | "fullscreenMenu.File.NewDesignFile": "New design file",
8 | "fullscreenMenu.File.NewFigJamFile": "New FigJam file",
9 | "fullscreenMenu.File.NewFromSketchFile": "New from Sketch file…",
10 | "fullscreenMenu.File.PlaceImage": "Place image...",
11 | "fullscreenMenu.File.ImportFromCSV": "Import from CSV…",
12 | "fullscreenMenu.File.SaveLocalCopy": "Save local copy…",
13 | "fullscreenMenu.File.SaveToVersionHistory": "Save to version history…",
14 | "fullscreenMenu.File.ShowVersionHistory": "Show version history",
15 | "fullscreenMenu.File.Export": "Export…",
16 | "fullscreenMenu.File.ExportFramesToPDF": "Export frames to PDF…",
17 | "fullscreenMenu.File.ExportAs": "Export as…",
18 | "fullscreenMenu.File.ExportSelection": "Export selection…",
19 |
20 | "fullscreenMenu.Edit": "Edit",
21 | "fullscreenMenu.Edit.Undo": "Undo",
22 | "fullscreenMenu.Edit.Redo": "Redo",
23 |
24 | "fullscreenMenu.Edit.CopyAs": "Copy as",
25 | "fullscreenMenu.Edit.CopyAs.CopyAsText": "Copy as text",
26 | "fullscreenMenu.Edit.CopyAs.CopyAsCSS": "Copy as CSS",
27 | "fullscreenMenu.Edit.CopyAs.CopyAsSVG": "Copy as SVG",
28 | "fullscreenMenu.Edit.CopyAs.CopyAsPNG": "Copy as PNG",
29 |
30 | "fullscreenMenu.Edit.PasteOverSelection": "Paste over selection",
31 | "fullscreenMenu.Edit.PasteToReplace": "Paste to replace",
32 | "fullscreenMenu.Edit.Duplicate": "Duplicate",
33 | "fullscreenMenu.Edit.Delete": "Delete",
34 | "fullscreenMenu.Edit.SetDefaultProperties": "Set default properties",
35 | "fullscreenMenu.Edit.CopyProperties": "Copy properties",
36 | "fullscreenMenu.Edit.PasteProperties": "Paste properties",
37 | "fullscreenMenu.Edit.PickColor": "Pick color",
38 | "fullscreenMenu.Edit.SelectAll": "Select all",
39 | "fullscreenMenu.Edit.SelectNone": "Select none",
40 | "fullscreenMenu.Edit.SelectInverse": "Select inverse",
41 | "fullscreenMenu.Edit.SelectAllMatchingLayers": "Select all matching layers",
42 | "fullscreenMenu.Edit.SelectAllWithSameProperties": "Select all with same properties",
43 | "fullscreenMenu.Edit.SelectAllWithSameFill": "Select all with same fill",
44 | "fullscreenMenu.Edit.SelectAllWithSameStroke": "Select all with same stroke",
45 | "fullscreenMenu.Edit.SelectAllWithSameEffect": "Select all with same effect",
46 | "fullscreenMenu.Edit.SelectAllWithSameTextProperties": "Select all with same text properties",
47 | "fullscreenMenu.Edit.SelectAllWithSameFont": "Select all with same font",
48 | "fullscreenMenu.Edit.SelectAllWithSameInstance": "Select all with same instance",
49 | "fullscreenMenu.Edit.SelectAllWithSameVariant": "Select all with same variant",
50 |
51 | "fullscreenMenu.View": "View",
52 | "fullscreenMenu.View.PixelGrid": "Pixel grid",
53 | "fullscreenMenu.View.LayoutGrids": "Layout grids",
54 | "fullscreenMenu.View.Rulers": "Rulers",
55 | "fullscreenMenu.View.ShowSlices": "Show slices",
56 | "fullscreenMenu.View.Comments": "Comments",
57 | "fullscreenMenu.View.Outlines": "Outlines",
58 | "fullscreenMenu.View.PixelPreview": "Pixel preview",
59 | "fullscreenMenu.View.MaskOutlines": "Mask outlines",
60 | "fullscreenMenu.View.FrameOutlines": "Frame outlines",
61 | "fullscreenMenu.View.ShowDotGrid": "Show dot grid",
62 | "fullscreenMenu.View.ResourceUse": "Resource use",
63 | "fullscreenMenu.View.ShowOrHideUI": "Show/Hide UI",
64 | "fullscreenMenu.View.MultiplayerCursors": "Multiplayer cursors",
65 |
66 | "fullscreenMenu.View.Panels": "Panels",
67 | "fullscreenMenu.View.Panels.OpenLayersPanel": "Open layers panel",
68 | "fullscreenMenu.View.Panels.OpenDesignPanel": "Open design panel",
69 | "fullscreenMenu.View.Panels.OpenPrototypePanel": "Open prototype panel",
70 | "fullscreenMenu.View.Panels.OpenInspectPanel": "Open inspect panel",
71 | "fullscreenMenu.View.Panels.ShowLeftSidebar": "Show left sidebar",
72 |
73 | "fullscreenMenu.View.ZoomIn": "Zoom in",
74 | "fullscreenMenu.View.ZoomOut": "Zoom out",
75 | "fullscreenMenu.View.ZoomTo100%": "Zoom to 100%",
76 | "fullscreenMenu.View.ZoomToFit": "Zoom to fit",
77 | "fullscreenMenu.View.ZoomToSelection": "Zoom to selection",
78 | "fullscreenMenu.View.PreviousPage": "Previous page",
79 | "fullscreenMenu.View.NextPage": "Next page",
80 | "fullscreenMenu.View.ZoomToPreviousFrame": "Zoom to previous frame",
81 | "fullscreenMenu.View.ZoomToNextFrame": "Zoom to next frame",
82 | "fullscreenMenu.View.FindPreviousFrame": "Find previous frame",
83 | "fullscreenMenu.View.FindNextFrame": "Find next frame",
84 |
85 | "fullscreenMenu.Object": "Object",
86 | "fullscreenMenu.Object.GroupSelection": "Group selection",
87 | "fullscreenMenu.Object.CreateSection": "Create section",
88 | "fullscreenMenu.Object.FrameSelection": "Frame selection",
89 | "fullscreenMenu.Object.UngroupSelection": "Ungroup selection",
90 | "fullscreenMenu.Object.UseAsMask": "Use as mask",
91 | "fullscreenMenu.Object.RestoreDefaultThumbnail": "Restore default thumbnail",
92 | "fullscreenMenu.Object.SetAsThumbnail": "Set as thumbnail",
93 | "fullscreenMenu.Object.AddAutoLayout": "Add auto layout",
94 | "fullscreenMenu.Object.CreateComponent": "Create component",
95 | "fullscreenMenu.Object.ResetAllChanges": "Reset all changes",
96 | "fullscreenMenu.Object.ResetAllOverrides": "Reset all overrides",
97 | "fullscreenMenu.Object.DetachInstance": "Detach instance",
98 |
99 | "fullscreenMenu.Object.MainComponent": "Main component",
100 | "fullscreenMenu.Object.MainComponent.GoToMainComponent": "Go to main component",
101 | "fullscreenMenu.Object.MainComponent.PushOverridesToMainComponent": "Push overrides to main component",
102 | "fullscreenMenu.Object.MainComponent.RestoreMainComponent": "Restore main component",
103 |
104 | "fullscreenMenu.Object.BringToFront": "Bring to front",
105 | "fullscreenMenu.Object.BringForward": "Bring forward",
106 | "fullscreenMenu.Object.SendBackward": "Send backward",
107 | "fullscreenMenu.Object.SendToBack": "Send to back",
108 | "fullscreenMenu.Object.flipHorizontal": "Flip horizontal",
109 | "fullscreenMenu.Object.flipVertical": "Flip vertical",
110 | "fullscreenMenu.Object.Rotate180": "Rotate 180˚",
111 | "fullscreenMenu.Object.Rotate90Left": "Rotate 90˚ left",
112 | "fullscreenMenu.Object.Rotate90Right": "Rotate 90˚ right",
113 | "fullscreenMenu.Object.FlattenSelection": "Flatten selection",
114 | "fullscreenMenu.Object.OutlineStroke": "Outline stroke",
115 |
116 | "fullscreenMenu.Object.BooleanGroups": "Boolean groups",
117 | "fullscreenMenu.Object.BooleanGroups.UnionSelection": "Union selection",
118 | "fullscreenMenu.Object.BooleanGroups.SubtractSelection": "Subtract selection",
119 | "fullscreenMenu.Object.BooleanGroups.IntersectSelection": "Intersect selection",
120 | "fullscreenMenu.Object.BooleanGroups.ExcludeSelection": "Exclude selection",
121 |
122 | "fullscreenMenu.Object.RasterizeSelection": "Rasterize selection",
123 | "fullscreenMenu.Object.ShowOrHideSelection": "Show/Hide selection",
124 | "fullscreenMenu.Object.LockOrUnlockSelection": "Lock/Unlock selection",
125 | "fullscreenMenu.Object.HideOtherLayers": "Hide other layers",
126 | "fullscreenMenu.Object.CollapseLayers": "Collapse layers",
127 | "fullscreenMenu.Object.RemoveFill": "Remove fill",
128 | "fullscreenMenu.Object.RemoveStroke": "Remove stroke",
129 | "fullscreenMenu.Object.SwapFillAndStroke": "Swap fill and stroke",
130 |
131 | "fullscreenMenu.Vector": "Vector",
132 | "fullscreenMenu.Vector.JoinSelection": "Join selection",
133 | "fullscreenMenu.Vector.SmoothJoinSelection": "Smooth join selection",
134 | "fullscreenMenu.Vector.DeleteAndHealSelection": "Delete and heal selection",
135 |
136 | "fullscreenMenu.Text": "Text",
137 | "fullscreenMenu.Text.Bold": "Bold",
138 | "fullscreenMenu.Text.Italic": "Italic",
139 | "fullscreenMenu.Text.Underline": "Underline",
140 | "fullscreenMenu.Text.Strikethrough": "Strikethrough",
141 | "fullscreenMenu.Text.CreateLink": "Create link",
142 | "fullscreenMenu.Text.BulletedList": "Bulleted list",
143 | "fullscreenMenu.Text.NumberedList": "Numbered list",
144 |
145 | "fullscreenMenu.Text.Alignment": "Alignment",
146 | "fullscreenMenu.Text.Alignment.TextAlignLeft": "Text align left",
147 | "fullscreenMenu.Text.Alignment.TextAlignCenter": "Text align center",
148 | "fullscreenMenu.Text.Alignment.TextAlignRight": "Text align right",
149 | "fullscreenMenu.Text.Alignment.TextAlignJustified": "Text align justified",
150 | "fullscreenMenu.Text.Alignment.TextAlignTop": "Text align top",
151 | "fullscreenMenu.Text.Alignment.TextAlignMiddle": "Text align middle",
152 | "fullscreenMenu.Text.Alignment.TextAlignBottom": "Text align bottom",
153 |
154 | "fullscreenMenu.Text.Adjust": "Adjust",
155 | "fullscreenMenu.Text.Adjust.IncreaseIndentation": "Increase indentation",
156 | "fullscreenMenu.Text.Adjust.DecreaseIndentation": "Decrease indentation",
157 | "fullscreenMenu.Text.Adjust.IncreaseFontSize": "Increase font size",
158 | "fullscreenMenu.Text.Adjust.DecreaseFontSize": "Decrease font size",
159 | "fullscreenMenu.Text.Adjust.IncreaseFontWeight": "Increase font weight",
160 | "fullscreenMenu.Text.Adjust.DecreaseFontWeight": "Decrease font weight",
161 | "fullscreenMenu.Text.Adjust.IncreaseLineHeight": "Increase line height",
162 | "fullscreenMenu.Text.Adjust.DecreaseLineHeight": "Decrease line height",
163 | "fullscreenMenu.Text.Adjust.IncreaseLetterSpacing": "Increase letter spacing",
164 | "fullscreenMenu.Text.Adjust.DecreaseLetterSpacing": "Decrease letter spacing",
165 |
166 | "fullscreenMenu.Text.Case": "Case",
167 | "fullscreenMenu.Text.Case.OriginalCase": "Original case",
168 | "fullscreenMenu.Text.Case.Uppercase": "Uppercase",
169 | "fullscreenMenu.Text.Case.Lowercase": "Lowercase",
170 |
171 | "fullscreenMenu.Text.TextDirection": "Text direction",
172 | "fullscreenMenu.Text.TextDirection.LeftToRight": "Left to right",
173 | "fullscreenMenu.Text.TextDirection.RightToLeft": "Right to left",
174 |
175 |
176 | "fullscreenMenu.Arrange": "Arrange",
177 | "fullscreenMenu.Arrange.RoundToPixel": "Round to pixel",
178 | "fullscreenMenu.Arrange.AlignLeft": "Align left",
179 | "fullscreenMenu.Arrange.AlignHorizontalCenters": "Align horizontal centers",
180 | "fullscreenMenu.Arrange.AlignRight": "Align right",
181 | "fullscreenMenu.Arrange.AlignTop": "Align top",
182 | "fullscreenMenu.Arrange.AlignVerticalCenters": "Align vertical centers",
183 | "fullscreenMenu.Arrange.AlignBottom": "Align bottom",
184 | "fullscreenMenu.Arrange.TidyUp": "Tidy up",
185 | "fullscreenMenu.Arrange.PackHorizontal": "Pack horizontal",
186 | "fullscreenMenu.Arrange.PackVertical": "Pack vertical",
187 | "fullscreenMenu.Arrange.DistributeHorizontalSpacing": "Distribute horizontal spacing",
188 | "fullscreenMenu.Arrange.DistributeVerticalSpacing": "Distribute vertical spacing",
189 | "fullscreenMenu.Arrange.DistributeLeft": "Distribute left",
190 | "fullscreenMenu.Arrange.DistributeHorizontalCenters": "Distribute horizontal centers",
191 | "fullscreenMenu.Arrange.DistributeRight": "Distribute right",
192 | "fullscreenMenu.Arrange.DistributeTop": "Distribute top",
193 | "fullscreenMenu.Arrange.DistributeVerticalCenters": "Distribute vertical centers",
194 | "fullscreenMenu.Arrange.DistributeBottom": "Distribute bottom",
195 |
196 | "fullscreenMenu.Plugins": "Plugins",
197 | "fullscreenMenu.Plugins.RunLastPlugin": "Run last plugin",
198 | "fullscreenMenu.Plugins.ManagePlugins": "Manage plugins…",
199 | "fullscreenMenu.Plugins.BrowsePluginsInCommunity": "Browse plugins in Community",
200 | "fullscreenMenu.Plugins.BrowsePlugins": "Browse plugins",
201 |
202 | "fullscreenMenu.Widgets": "Widgets",
203 | "fullscreenMenu.Widgets.BrowseWidgets": "Browse widgets",
204 | "fullscreenMenu.Widgets.SelectAllWidgets": "Select all widgets",
205 |
206 | "fullscreenMenu.Integrations": "Integrations",
207 | "fullscreenMenu.Integrations.Dribbble": "Dribbble",
208 |
209 | "fullscreenMenu.Preferences": "Preferences",
210 | "fullscreenMenu.Preferences.SnapToGeometry": "Snap to geometry",
211 | "fullscreenMenu.Preferences.SnapToObjects": "Snap to objects",
212 | "fullscreenMenu.Preferences.SnapToDotGrid": "Snap to dot grid",
213 | "fullscreenMenu.Preferences.SnapToPixelGrid": "Snap to pixel grid",
214 | "fullscreenMenu.Preferences.KeepToolSelectedAfterUse": "Keep tool selected after use",
215 | "fullscreenMenu.Preferences.HighlightLayersOnHover": "Highlight layers on hover",
216 | "fullscreenMenu.Preferences.RenameDuplicatedLayers": "Rename duplicated layers",
217 | "fullscreenMenu.Preferences.ShowDimensionsOnObjects": "Show dimensions on objects",
218 | "fullscreenMenu.Preferences.HideCanvasUIDuringChanges": "Hide canvas UI during changes",
219 | "fullscreenMenu.Preferences.KeyboardZoomsIntoSelection": "Keyboard zooms into selection",
220 | "fullscreenMenu.Preferences.SubstituteSmartQuotes": "Substitute smart quotes",
221 | "fullscreenMenu.Preferences.ShowGoogleFonts": "Show Google Fonts",
222 | "fullscreenMenu.Preferences.FlipObjectsWhileResizing": "Flip objects while resizing",
223 | "fullscreenMenu.Preferences.InvertZoomDirection": "Invert zoom direction",
224 | "fullscreenMenu.Preferences.UseNumberKeysForOpacity": "Use number keys for opacity",
225 | "fullscreenMenu.Preferences.ShakeCursorForHighFive": "Shake cursor for high five",
226 | "fullscreenMenu.Preferences.OpenLinksInDesktopApp": "Open links in desktop app",
227 |
228 | "fullscreenMenu.Preferences.Theme": "Theme",
229 | "fullscreenMenu.Preferences.Theme.Light": "Light",
230 | "fullscreenMenu.Preferences.Theme.Dark": "Dark",
231 | "fullscreenMenu.Preferences.SystemTheme": "System theme",
232 |
233 | "fullscreenMenu.Preferences.NudgeAmount": "Nudge amount…",
234 | "fullscreenMenu.Preferences.ShowTemplatesForNewFiles": "Show templates for new files",
235 |
236 | "fullscreenMenu.Libraries": "Libraries",
237 |
238 | "fullscreenMenu.GetDesktopApp": "Get desktop app",
239 | "fullscreenMenu.OpenInDesktopApp": "Open in desktop app",
240 |
241 | "fullscreenMenu.HelpAndAccount": "Help and account",
242 | "fullscreenMenu.HelpAndAccount.HelpPage": "Help page",
243 | "fullscreenMenu.HelpAndAccount.KeyboardShortcuts": "Keyboard shortcuts",
244 | "fullscreenMenu.HelpAndAccount.SupportForum": "Support forum",
245 | "fullscreenMenu.HelpAndAccount.VideoTutorials": "Video tutorials",
246 | "fullscreenMenu.HelpAndAccount.ReleaseNotes": "Release notes",
247 | "fullscreenMenu.HelpAndAccount.OpenFontSettings": "Open font settings",
248 | "fullscreenMenu.HelpAndAccount.LegalSummary": "Legal summary",
249 | "fullscreenMenu.HelpAndAccount.AccountSettings": "Account settings",
250 | "fullscreenMenu.HelpAndAccount.LogOut": "Log out",
251 |
252 | "fullscreenMenu.PublishStylesAndComponents": "Publish styles and components",
253 | "fullscreenMenu.Rename": "Rename",
254 | "fullscreenMenu.MoveToProject": "Move to project…",
255 | "fullscreenMenu.Delete": "Delete…",
256 | "fullscreenMenu.ZoomTo50": "Zoom to 50%",
257 | "fullscreenMenu.ZoomTo200": "Zoom to 200%",
258 | "fullscreenMenu.Disabled": "Disabled",
259 |
260 | "fullscreenMenu.Tooltip.MainMenu": "Main menu",
261 | "fullscreenMenu.Tooltip.MoveTools": "Move tools",
262 | "fullscreenMenu.Tooltip.SetToolDefault": "Move V",
263 | "fullscreenMenu.Tooltip.SetToolScale": "Scale K",
264 | "fullscreenMenu.Tooltip.RegionTools": "Region tools",
265 | "fullscreenMenu.Tooltip.SetToolFrame": "Frame F",
266 | "fullscreenMenu.Tooltip.SetToolSlice": "Slice S",
267 | "fullscreenMenu.Tooltip.ShapeTools": "Shape tools",
268 | "fullscreenMenu.Tooltip.SetToolRectangle": "Rectangle R",
269 | "fullscreenMenu.Tooltip.SetToolLine": "Line L",
270 | "fullscreenMenu.Tooltip.SetToolArrow": "Arrow Shift+L",
271 | "fullscreenMenu.Tooltip.SetToolEllipse": "Ellipse O",
272 | "fullscreenMenu.Tooltip.SetToolRegularPolygon": "Polygon",
273 | "fullscreenMenu.Tooltip.SetToolStar": "Star",
274 | "fullscreenMenu.Tooltip.DrawingTools": "Drawing tools",
275 | "fullscreenMenu.Tooltip.SetToolPen": "Pen P",
276 | "fullscreenMenu.Tooltip.SetToolPencil": "Pencil Shift+P",
277 | "fullscreenMenu.Tooltip.SetToolText": "Text T",
278 | "fullscreenMenu.Tooltip.SetToolHand": "Hand tool H",
279 | "fullscreenMenu.Tooltip.SetToolComments": "Add comment C",
280 | "fullscreenMenu.Tooltip.Present": "Present",
281 | "fullscreenMenu.Tooltip.CreateComponent": "Create component Ctrl+Alt+K",
282 | "fullscreenMenu.Tooltip.UseAsMask": "Use as mask Ctrl+Alt+M",
283 | "fullscreenMenu.Tooltip.BooleanGroups": "Boolean groups",
284 | "fullscreenMenu.Tooltip.UnionSelection": "Union selection",
285 | "fullscreenMenu.Tooltip.SubtractSelection": "Subtract selection",
286 | "fullscreenMenu.Tooltip.IntersectSelection": "Intersect selection",
287 | "fullscreenMenu.Tooltip.ExcludeSelection": "Exclude selection",
288 |
289 |
290 | "toolbarView.fileName.folderName.Drafts": "Drafts",
291 |
292 | "toolbarView.moveFlyout.flyout.toolDefault": "Move",
293 | "toolbarView.moveFlyout.flyout.toolScale": "Scale",
294 |
295 | "toolbarView.regionFlyout.flyout.toolFrame": "Frame",
296 | "toolbarView.regionFlyout.flyout.toolSlice": "Slice",
297 |
298 | "toolbarView.shapeFlyout.flyout.toolShapeRectangle": "Rectangle",
299 | "toolbarView.shapeFlyout.flyout.toolShapeLine": "Line",
300 | "toolbarView.shapeFlyout.flyout.toolShapeArrow": "Arrow",
301 | "toolbarView.shapeFlyout.flyout.toolShapeEllipse": "Ellipse",
302 | "toolbarView.shapeFlyout.flyout.toolShapePolygon": "Polygon",
303 | "toolbarView.shapeFlyout.flyout.toolShapeStar": "Star",
304 | "toolbarView.shapeFlyout.flyout.toolPlaceImage": "Place image...",
305 |
306 | "toolbarView.penFlyout.flyout.toolPen": "Pen",
307 | "toolbarView.penFlyout.flyout.toolPencil": "Pencil",
308 |
309 | "toolbarView.booleanFlyout.flyout.toolBooleanUnion": "Union selection",
310 | "toolbarView.booleanFlyout.flyout.toolBooleanSubtract": "Subtract selection",
311 | "toolbarView.booleanFlyout.flyout.toolBooleanIntersect": "Intersect selection",
312 | "toolbarView.booleanFlyout.flyout.toolBooleatoolBooleanXornUnion": "Exclude selection",
313 | "toolbarView.booleanFlyout.flyout.toolFlatten": "Flatten selection",
314 |
315 | "toolbarView.Share": "Share",
316 |
317 | "toolbarView.CursorChat": "Cursor chat",
318 | "toolbarView.Stamp": "Stamp",
319 | "toolbarView.Emote": "Emote",
320 |
321 | "toolbarView.Overflow.Emote": "Emote",
322 | "toolbarView.Overflow.Stamp": "Stamp",
323 | "toolbarView.Overflow.CursorChat": "Cursor chat",
324 | "toolbarView.Overflow.HighFive": "High five",
325 | "toolbarView.Overflow.Timer": "Timer",
326 |
327 | "toolbarView.Tooltip.Collaborate": "Collaborate",
328 | "toolbarView.Tooltip.ZoomOut": "Zoom out Ctrl+-",
329 | "toolbarView.Tooltip.ZoomIn": "Zoom in Ctrl+-",
330 | "toolbarView.Tooltip.ZoomOrViewOptions": "Zoom/view options",
331 |
332 |
333 | "delightfulToolbar.MoveTool": "Move tool V",
334 | "delightfulToolbar.HandTool": "Hand tool H",
335 | "delightfulToolbar.Marker": "Marker M",
336 | "delightfulToolbar.Highlighter": "Highlighter Shift+M",
337 | "delightfulToolbar.Eraser": "Eraser Shift+Backspace",
338 | "delightfulToolbar.Thin": "Thin",
339 | "delightfulToolbar.Thick": "Thick",
340 | "delightfulToolbar.Charcoal": "Charcoal",
341 | "delightfulToolbar.Red": "Red",
342 | "delightfulToolbar.Yellow": "Yellow",
343 | "delightfulToolbar.Green": "Green",
344 | "delightfulToolbar.Blue": "Blue",
345 | "delightfulToolbar.Violet": "Violet",
346 | "delightfulToolbar.Brown": "Brown",
347 | "delightfulToolbar.White": "White",
348 | "delightfulToolbar.Square": "Square R",
349 | "delightfulToolbar.Ellipse": "Ellipse O",
350 | "delightfulToolbar.RoundedRectangle": "Rounded rectangle",
351 | "delightfulToolbar.Diamond": "Diamond",
352 | "delightfulToolbar.TriangleUp": "Triangle",
353 | "delightfulToolbar.TriangleDown": "Triangle",
354 | "delightfulToolbar.ParallelogramRight": "Parallelogram",
355 | "delightfulToolbar.ParallelogramLeft": "Parallelogram",
356 | "delightfulToolbar.Cylinder": "Cylinder",
357 | "delightfulToolbar.HorizontalCylinder": "Horizontal cylinder",
358 | "delightfulToolbar.File": "File",
359 | "delightfulToolbar.Folder": "Folder",
360 | "delightfulToolbar.Options.Square": "Square",
361 | "delightfulToolbar.Options.Ellipse": "Ellipse",
362 | "delightfulToolbar.Options.RoundedRectangle": "Rounded rectangle",
363 | "delightfulToolbar.Options.Diamond": "Diamond",
364 | "delightfulToolbar.Options.Triangle": "Triangle",
365 | "delightfulToolbar.Options.DownwardPointingTriangle": "Downward-pointing triangle",
366 | "delightfulToolbar.Options.RightLeaningParallelogram": "Right-leaning parallelogram",
367 | "delightfulToolbar.Options.LeftLeaningParallelogram": "Left-leaning parallelogram",
368 | "delightfulToolbar.Options.Cylinder": "Cylinder",
369 | "delightfulToolbar.Options.HorizontalCylinder": "Horizontal cylinder",
370 | "delightfulToolbar.Options.File": "File",
371 | "delightfulToolbar.Options.Folder": "Folder",
372 | "delightfulToolbar.Sticky": "Sticky note S",
373 | "delightfulToolbar.Text": "Text T",
374 | "delightfulToolbar.Connector": "Connector X",
375 | "delightfulToolbar.Line": "Line L",
376 | "delightfulToolbar.Options.Connector": "Connector",
377 | "delightfulToolbar.Options.StraightLine": "Straight line",
378 | "delightfulToolbar.Stamp": "Stamp E",
379 | "delightfulToolbar.More": "Widgets,stickers,templates and more",
380 |
381 |
382 | "contextMenu.Copy": "Copy",
383 | "contextMenu.Paste": "Paste",
384 | "contextMenu.PasteHere": "Paste here",
385 |
386 | "contextMenu.CopyOrPasteAs": "Copy/Paste as",
387 | "contextMenu.CopyOrPasteAs.CopyLink": "Copy link",
388 |
389 | "contextMenu.SelectLayer": "Select layer",
390 | "contextMenu.MoveToPage": "Move to page",
391 |
392 | "contextMenu.Ungroup": "Ungroup",
393 | "contextMenu.Flatten": "Flatten",
394 |
395 | "contextMenu.ShowOrHide": "Show/Hide",
396 | "contextMenu.LockOrUnlock": "Lock/Unlock",
397 |
398 | "contextMenu.ShowOrHideComments": "Show/Hide comments",
399 |
400 |
401 | "pagesPanel.Sidebar.Tab": "Layers",
402 | "pagesPanel.Sidebar.AssetsTab": "Assets",
403 |
404 | "pagesPanel.Sidebar.Pages": "Pages",
405 | "pagesPanel.Sidebar.Pages.CopyLinkToPage": "Copy link to page",
406 | "pagesPanel.Sidebar.Pages.DeletePage": "Delete page",
407 | "pagesPanel.Sidebar.Pages.RenamePage": "Rename page",
408 | "pagesPanel.Sidebar.Pages.DuplicatePage": "Duplicate page",
409 |
410 | "pagesPanel.Sidebar.AddNewPage": "Add new page",
411 | "pagesPanel.Sidebar.Search": "Search",
412 | "pagesPanel.Sidebar.ShowAsList": "Show as list",
413 | "pagesPanel.Sidebar.ShowAsGrid": "Show as grid",
414 | "pagesPanel.Sidebar.TeamLibrary": "Team library",
415 |
416 | "pagesPanel.Sidebar.Components": "Components",
417 | "pagesPanel.Sidebar.Components.FirstInfoText": "To create a component, select a layer and click the \"Create component\" button in the toolbar.",
418 | "pagesPanel.Sidebar.Components.FirstInfoLink": "Learn more",
419 | "pagesPanel.Sidebar.Components.SecondInfoText": "Use libraries for quick access to components from other files.",
420 | "pagesPanel.Sidebar.Components.SecondInfoLink": "Explore libraries...",
421 |
422 |
423 | "propertiesPanel.TabsHeader.Design": "Design",
424 | "propertiesPanel.TabsHeader.Prototype": "Prototype",
425 | "propertiesPanel.TabsHeader.Inspect": "Inspect",
426 |
427 |
428 | "navbar.Community": "Community",
429 | "navbar.Search": "Search files, teams, or people",
430 | "navbar.Notifications": "Notifications",
431 | "navbar.InternalProfile": "Internal profile",
432 | "navbar.Settings": "Settings",
433 | "navbar.AddAccount": "Add account",
434 |
435 |
436 | "sidebar.Recents": "Recents",
437 | "sidebar.Drafts": "Drafts",
438 | "sidebar.ExploreCommunity": "Explore community",
439 | "sidebar.TeamProject": "Team project",
440 | "sidebar.CreateNewTeam": "Create new team",
441 |
442 |
443 | "fileBrowserView.RecentlyViewed": "Recently viewed",
444 | "fileBrowserView.Drafts": "Drafts",
445 | "fileBrowserView.Deleted": "Deleted",
446 | "fileBrowserView.NewDesignFile": "New design file",
447 | "fileBrowserView.NewDesignFile.Desc": "Design and prototype",
448 | "fileBrowserView.NewFigJamFile": "New FigJam file",
449 | "fileBrowserView.NewFigJamFile.Desc": "Whiteboard and diagram",
450 | "fileBrowserView.ImportFile": "Import file",
451 | "fileBrowserView.ImportFile.Desc": "Figma, Sketch, and image files",
452 |
453 | "fileBrowserView.Filter": "Filter:",
454 | "fileBrowserView.Filter.Select.AllFiles": "All files",
455 | "fileBrowserView.Filter.Select.DesignFiles": "Design files",
456 | "fileBrowserView.Filter.Select.FigJamFiles": "FigJam Files",
457 | "fileBrowserView.Filter.Select.Prototypes": "Prototypes",
458 |
459 | "fileBrowserView.Sort": "Sort:",
460 | "fileBrowserView.Sort.Select.SortBy": "Sort by",
461 | "fileBrowserView.Sort.Select.Alphabetical": "Alphabetical",
462 | "fileBrowserView.Sort.Select.DateCreated": "Date created",
463 | "fileBrowserView.Sort.Select.LastViewed": "Last viewed",
464 | "fileBrowserView.Sort.Select.LastModified": "Last modified",
465 | "fileBrowserView.Sort.Select.Order": "Order",
466 | "fileBrowserView.Sort.Select.OldestFirst": "Oldest first",
467 | "fileBrowserView.Sort.Select.NewestFirst": "Newest first",
468 |
469 | "fileBrowserView.ShowAsGrid": "Show as grid",
470 | "fileBrowserView.ShowAsList": "Show as list",
471 |
472 | "fileBrowserView.ContextMenu.ShowInProject": "Show in project",
473 | "fileBrowserView.ContextMenu.Open": "Open",
474 | "fileBrowserView.ContextMenu.OpenInNewTab": "Open in new tab",
475 | "fileBrowserView.ContextMenu.CopyLink": "Copy link",
476 | "fileBrowserView.ContextMenu.AddToYourFavorites": "Add to your favorites",
477 | "fileBrowserView.ContextMenu.Share": "Share",
478 | "fileBrowserView.ContextMenu.Duplicate": "Duplicate",
479 | "fileBrowserView.ContextMenu.Rename": "Rename",
480 | "fileBrowserView.ContextMenu.Delete": "Delete",
481 | "fileBrowserView.ContextMenu.RemoveFromRecent": "Remove from recent",
482 | }
--------------------------------------------------------------------------------
/src/locale/lang/ja.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | "fullscreenMenu.BackToFiles": "プロジェクトに戻る",
3 |
4 | "fullscreenMenu.QuickActions": "Quick actions…",
5 |
6 | "fullscreenMenu.File": "ファイル",
7 | "fullscreenMenu.File.NewDesignFile": "新規作成",
8 | "fullscreenMenu.File.NewFigJamFile": "FigJam 新規作成",
9 | "fullscreenMenu.File.NewFromSketchFile": "Sketch ファイルを開く",
10 | "fullscreenMenu.File.PlaceImage": "画像を配置",
11 | "fullscreenMenu.File.ImportFromCSV": "Import from CSV…",
12 | "fullscreenMenu.File.SaveLocalCopy": "ローカルに保存",
13 | "fullscreenMenu.File.SaveToVersionHistory": "バージョン履歴を追加",
14 | "fullscreenMenu.File.ShowVersionHistory": "バージョン履歴を表示",
15 | "fullscreenMenu.File.Export": "書き出し",
16 | "fullscreenMenu.File.ExportFramesToPDF": "PDF で書き出し",
17 | "fullscreenMenu.File.ExportAs": "Export as…",
18 | "fullscreenMenu.File.ExportSelection": "Export selection…",
19 |
20 | "fullscreenMenu.Edit": "編集",
21 | "fullscreenMenu.Edit.Undo": "取り消し",
22 | "fullscreenMenu.Edit.Redo": "やり直し",
23 |
24 | "fullscreenMenu.Edit.CopyAs": "コピー",
25 | "fullscreenMenu.Edit.CopyAs.CopyAsText": "テキストとしてコピー",
26 | "fullscreenMenu.Edit.CopyAs.CopyAsCSS": "CSS としてコピー",
27 | "fullscreenMenu.Edit.CopyAs.CopyAsSVG": "SVG としてコピー",
28 | "fullscreenMenu.Edit.CopyAs.CopyAsPNG": "PNG としてコピー",
29 |
30 | "fullscreenMenu.Edit.PasteOverSelection": "選択したものの上にペースト",
31 | "fullscreenMenu.Edit.PasteToReplace": "置換してペースト",
32 | "fullscreenMenu.Edit.Duplicate": "複製",
33 | "fullscreenMenu.Edit.Delete": "削除",
34 | "fullscreenMenu.Edit.SetDefaultProperties": "プロパティのデフォルトに設定",
35 | "fullscreenMenu.Edit.CopyProperties": "プロパティをコピー",
36 | "fullscreenMenu.Edit.PasteProperties": "プロパティをペースト",
37 | "fullscreenMenu.Edit.PickColor": "色を選択",
38 | "fullscreenMenu.Edit.SelectAll": "すべてを選択",
39 | "fullscreenMenu.Edit.SelectNone": "選択解除",
40 | "fullscreenMenu.Edit.SelectInverse": "他を選択",
41 | "fullscreenMenu.Edit.SelectAllMatchingLayers": "Select all matching layers",
42 | "fullscreenMenu.Edit.SelectAllWithSameProperties": "共通のプロパティをすべて選択",
43 | "fullscreenMenu.Edit.SelectAllWithSameFill": "共通の塗りをすべて選択",
44 | "fullscreenMenu.Edit.SelectAllWithSameStroke": "共通の線をすべて選択",
45 | "fullscreenMenu.Edit.SelectAllWithSameEffect": "共通のエフェクトをすべて選択",
46 | "fullscreenMenu.Edit.SelectAllWithSameTextProperties": "共通のテキストプロパティをすべて選択",
47 | "fullscreenMenu.Edit.SelectAllWithSameFont": "共通のフォントを選択",
48 | "fullscreenMenu.Edit.SelectAllWithSameInstance": "共通のインスタンスを選択",
49 | "fullscreenMenu.Edit.SelectAllWithSameVariant": "Select all with same variant",
50 |
51 | "fullscreenMenu.View": "表示",
52 | "fullscreenMenu.View.PixelGrid": "ピクセルグリッドを表示",
53 | "fullscreenMenu.View.LayoutGrids": "レイアウトグリッドを表示",
54 | "fullscreenMenu.View.Rulers": "定規を表示",
55 | "fullscreenMenu.View.ShowSlices": "スライスを表示",
56 | "fullscreenMenu.View.Comments": "コメントを表示",
57 | "fullscreenMenu.View.Outlines": "アウトラインを表示",
58 | "fullscreenMenu.View.PixelPreview": "ピクセルでプレビュー",
59 | "fullscreenMenu.View.MaskOutlines": "マスクのアウトラインを表示",
60 | "fullscreenMenu.View.FrameOutlines": "フレームのアウトラインを表示",
61 | "fullscreenMenu.View.ShowDotGrid": "Show dot grid",
62 | "fullscreenMenu.View.ResourceUse": "リソース使用量を表示",
63 | "fullscreenMenu.View.ShowOrHideUI": "UI を表示/非表示",
64 | "fullscreenMenu.View.MultiplayerCursors": "共同作業者のカーソルを表示",
65 |
66 | "fullscreenMenu.View.Panels": "パネル",
67 | "fullscreenMenu.View.Panels.OpenLayersPanel": "レイヤーパネルを表示",
68 | "fullscreenMenu.View.Panels.OpenDesignPanel": "デザインパネルを表示",
69 | "fullscreenMenu.View.Panels.OpenPrototypePanel": "プロトタイプパネルを表示",
70 | "fullscreenMenu.View.Panels.OpenInspectPanel": "検査パネルを表示",
71 | "fullscreenMenu.View.Panels.ShowLeftSidebar": "サイドバーを表示",
72 |
73 | "fullscreenMenu.View.ZoomIn": "ズームイン",
74 | "fullscreenMenu.View.ZoomOut": "ズームアウト",
75 | "fullscreenMenu.View.ZoomTo100%": "100% にズーム",
76 | "fullscreenMenu.View.ZoomToFit": "画面に合わせてすべてをズーム",
77 | "fullscreenMenu.View.ZoomToSelection": "選択したものに合わせてズーム",
78 | "fullscreenMenu.View.PreviousPage": "前のページ",
79 | "fullscreenMenu.View.NextPage": "次のページ",
80 | "fullscreenMenu.View.ZoomToPreviousFrame": "前のフレームにズーム",
81 | "fullscreenMenu.View.ZoomToNextFrame": "次のフレームにズーム",
82 | "fullscreenMenu.View.FindPreviousFrame": "前のフレームに移動",
83 | "fullscreenMenu.View.FindNextFrame": "次のフレームに移動",
84 |
85 | "fullscreenMenu.Object": "オブジェクト",
86 | "fullscreenMenu.Object.GroupSelection": "グループ化",
87 | "fullscreenMenu.Object.CreateSection": "Create section",
88 | "fullscreenMenu.Object.FrameSelection": "フレーム化",
89 | "fullscreenMenu.Object.UngroupSelection": "グループ解除",
90 | "fullscreenMenu.Object.UseAsMask": "マスクを作成",
91 | "fullscreenMenu.Object.RestoreDefaultThumbnail": "デフォルトのサムネイルに戻す",
92 | "fullscreenMenu.Object.SetAsThumbnail": "ファイルのサムネイルに設定",
93 | "fullscreenMenu.Object.AddAutoLayout": "オートレイアウトを追加",
94 | "fullscreenMenu.Object.CreateComponent": "コンポーネントを作成",
95 | "fullscreenMenu.Object.ResetAllChanges": "Reset all changes",
96 | "fullscreenMenu.Object.ResetAllOverrides": "オーバーライドをリセット",
97 | "fullscreenMenu.Object.DetachInstance": "インスタンスを解除",
98 |
99 | "fullscreenMenu.Object.MainComponent": "メインコンポーネント",
100 | "fullscreenMenu.Object.MainComponent.GoToMainComponent": "メインコンポーネントへ移動",
101 | "fullscreenMenu.Object.MainComponent.PushOverridesToMainComponent": "オーバーライドをメインに反映",
102 | "fullscreenMenu.Object.MainComponent.RestoreMainComponent": "メインコンポーネントを復元",
103 |
104 | "fullscreenMenu.Object.BringToFront": "最前面へ",
105 | "fullscreenMenu.Object.BringForward": "前面へ",
106 | "fullscreenMenu.Object.SendBackward": "背面へ",
107 | "fullscreenMenu.Object.SendToBack": "最背面へ",
108 | "fullscreenMenu.Object.flipHorizontal": "水平方向に反転",
109 | "fullscreenMenu.Object.flipVertical": "垂直方向に反転",
110 | "fullscreenMenu.Object.Rotate180": "180°回転",
111 | "fullscreenMenu.Object.Rotate90Left": "左に90°回転",
112 | "fullscreenMenu.Object.Rotate90Right": "右に90°回転",
113 | "fullscreenMenu.Object.FlattenSelection": "複合パスに拡張",
114 | "fullscreenMenu.Object.OutlineStroke": "パスのアウトライン",
115 |
116 | "fullscreenMenu.Object.BooleanGroups": "複合シェイプを作成",
117 | "fullscreenMenu.Object.BooleanGroups.UnionSelection": "合体",
118 | "fullscreenMenu.Object.BooleanGroups.SubtractSelection": "前面オブジェクトで型抜き",
119 | "fullscreenMenu.Object.BooleanGroups.IntersectSelection": "交差",
120 | "fullscreenMenu.Object.BooleanGroups.ExcludeSelection": "中マド",
121 |
122 | "fullscreenMenu.Object.RasterizeSelection": "ラスタライズ",
123 | "fullscreenMenu.Object.ShowOrHideSelection": "選択したものを表示/非表示",
124 | "fullscreenMenu.Object.LockOrUnlockSelection": "選択したものをロック/ロック解除",
125 | "fullscreenMenu.Object.HideOtherLayers": "他のレイヤーを隠す",
126 | "fullscreenMenu.Object.CollapseLayers": "レイヤーを閉じる",
127 | "fullscreenMenu.Object.RemoveFill": "塗りを削除",
128 | "fullscreenMenu.Object.RemoveStroke": "線を削除",
129 | "fullscreenMenu.Object.SwapFillAndStroke": "塗りと線を入れ替え",
130 |
131 | "fullscreenMenu.Vector": "ベクター",
132 | "fullscreenMenu.Vector.JoinSelection": "アンカーポイントを連結",
133 | "fullscreenMenu.Vector.SmoothJoinSelection": "アンカーポイントをスムーズに連結",
134 | "fullscreenMenu.Vector.DeleteAndHealSelection": "アンカーポイントを削除",
135 |
136 | "fullscreenMenu.Text": "テキスト",
137 | "fullscreenMenu.Text.Bold": "太字",
138 | "fullscreenMenu.Text.Italic": "斜体",
139 | "fullscreenMenu.Text.Underline": "下線",
140 | "fullscreenMenu.Text.Strikethrough": "打ち消し線",
141 | "fullscreenMenu.Text.CreateLink": "リンクを生成",
142 | "fullscreenMenu.Text.BulletedList": "箇条書き",
143 | "fullscreenMenu.Text.NumberedList": "番号付リスト",
144 |
145 | "fullscreenMenu.Text.Alignment": "文字揃え",
146 | "fullscreenMenu.Text.Alignment.TextAlignLeft": "左揃え",
147 | "fullscreenMenu.Text.Alignment.TextAlignCenter": "中央揃え",
148 | "fullscreenMenu.Text.Alignment.TextAlignRight": "右揃え",
149 | "fullscreenMenu.Text.Alignment.TextAlignJustified": "均等揃え",
150 | "fullscreenMenu.Text.Alignment.TextAlignTop": "ボックスの上揃え",
151 | "fullscreenMenu.Text.Alignment.TextAlignMiddle": "ボックスの垂直方向中央揃え",
152 | "fullscreenMenu.Text.Alignment.TextAlignBottom": "ボックスの下揃え",
153 |
154 | "fullscreenMenu.Text.Adjust": "調整",
155 | "fullscreenMenu.Text.Adjust.IncreaseIndentation": "インデントを増やす",
156 | "fullscreenMenu.Text.Adjust.DecreaseIndentation": "インデントを減らす",
157 | "fullscreenMenu.Text.Adjust.IncreaseFontSize": "フォントサイズを大きく",
158 | "fullscreenMenu.Text.Adjust.DecreaseFontSize": "フォントサイズを小さく",
159 | "fullscreenMenu.Text.Adjust.IncreaseFontWeight": "フォントウェイトを大きく",
160 | "fullscreenMenu.Text.Adjust.DecreaseFontWeight": "フォントウェイトを小さく",
161 | "fullscreenMenu.Text.Adjust.IncreaseLineHeight": "行送りを増やす",
162 | "fullscreenMenu.Text.Adjust.DecreaseLineHeight": "行送りを減らす",
163 | "fullscreenMenu.Text.Adjust.IncreaseLetterSpacing": "文字の間隔を広げる",
164 | "fullscreenMenu.Text.Adjust.DecreaseLetterSpacing": "文字の間隔を詰める",
165 |
166 | "fullscreenMenu.Text.Case": "大文字小文字",
167 | "fullscreenMenu.Text.Case.OriginalCase": "大文字小文字の変換なし",
168 | "fullscreenMenu.Text.Case.Uppercase": "すべて大文字",
169 | "fullscreenMenu.Text.Case.Lowercase": "すべて小文字",
170 |
171 | "fullscreenMenu.Text.TextDirection": "Text direction",
172 | "fullscreenMenu.Text.TextDirection.LeftToRight": "Left to right",
173 | "fullscreenMenu.Text.TextDirection.RightToLeft": "Right to left",
174 |
175 |
176 | "fullscreenMenu.Arrange": "整列",
177 | "fullscreenMenu.Arrange.RoundToPixel": "ピクセルに合わせて配置",
178 | "fullscreenMenu.Arrange.AlignLeft": "水平方向左に整列",
179 | "fullscreenMenu.Arrange.AlignHorizontalCenters": "水平方向中央に整列",
180 | "fullscreenMenu.Arrange.AlignRight": "水平方向右に整列",
181 | "fullscreenMenu.Arrange.AlignTop": "垂直方向上に整列",
182 | "fullscreenMenu.Arrange.AlignVerticalCenters": "垂直方向中央に整列",
183 | "fullscreenMenu.Arrange.AlignBottom": "垂直方向下に整列",
184 | "fullscreenMenu.Arrange.TidyUp": "選択状態に応じて自動で整列",
185 | "fullscreenMenu.Arrange.PackHorizontal": "水平方向へ間隔なしで整列",
186 | "fullscreenMenu.Arrange.PackVertical": "垂直方向へ間隔なしで整列",
187 | "fullscreenMenu.Arrange.DistributeHorizontalSpacing": "水平方向へ等間隔に分布",
188 | "fullscreenMenu.Arrange.DistributeVerticalSpacing": "垂直方向へ等間隔に分布",
189 | "fullscreenMenu.Arrange.DistributeLeft": "左を基準に、水平方向へ分布",
190 | "fullscreenMenu.Arrange.DistributeHorizontalCenters": "中心を基準に、水平方向へ分布",
191 | "fullscreenMenu.Arrange.DistributeRight": "右を基準に、水平方向へ分布",
192 | "fullscreenMenu.Arrange.DistributeTop": "上を基準に、垂直方向へ分布",
193 | "fullscreenMenu.Arrange.DistributeVerticalCenters": "中心を基準に、垂直方向へ分布",
194 | "fullscreenMenu.Arrange.DistributeBottom": "下を基準に、垂直方向へ分布",
195 |
196 | "fullscreenMenu.Plugins": "プラグイン",
197 | "fullscreenMenu.Plugins.RunLastPlugin": "最後に使ったプラグインを実行",
198 | "fullscreenMenu.Plugins.ManagePlugins": "プラグインを管理",
199 | "fullscreenMenu.Plugins.BrowsePluginsInCommunity": "プラグインを探す",
200 | "fullscreenMenu.Plugins.BrowsePlugins": "Browse plugins",
201 |
202 | "fullscreenMenu.Widgets": "Widgets",
203 | "fullscreenMenu.Widgets.BrowseWidgets": "Browse widgets",
204 | "fullscreenMenu.Widgets.SelectAllWidgets": "Select all widgets",
205 |
206 | "fullscreenMenu.Integrations": "連携",
207 | "fullscreenMenu.Integrations.Dribbble": "Dribbble",
208 |
209 | "fullscreenMenu.Preferences": "環境設定",
210 | "fullscreenMenu.Preferences.SnapToGeometry": "ジオメトリにスナップ",
211 | "fullscreenMenu.Preferences.SnapToObjects": "オブジェクトにスナップ",
212 | "fullscreenMenu.Preferences.SnapToDotGrid": "Snap to dot grid",
213 | "fullscreenMenu.Preferences.SnapToPixelGrid": "ピクセルグリッドにスナップ",
214 | "fullscreenMenu.Preferences.KeepToolSelectedAfterUse": "使用したツールを保持する",
215 | "fullscreenMenu.Preferences.HighlightLayersOnHover": "ホバーでレイヤーをハイライト表示",
216 | "fullscreenMenu.Preferences.RenameDuplicatedLayers": "複製したレイヤーをリネーム",
217 | "fullscreenMenu.Preferences.ShowDimensionsOnObjects": "オブジェクトのサイズを表示",
218 | "fullscreenMenu.Preferences.HideCanvasUIDuringChanges": "変形中にキャンバス表示を非表示",
219 | "fullscreenMenu.Preferences.KeyboardZoomsIntoSelection": "選択対象にキーボードズーム",
220 | "fullscreenMenu.Preferences.SubstituteSmartQuotes": "スマートクォート( “ ” )に変換入力",
221 | "fullscreenMenu.Preferences.ShowGoogleFonts": "Googleフォントを表示",
222 | "fullscreenMenu.Preferences.FlipObjectsWhileResizing": "サイズ変更中にオブジェクトを反転",
223 | "fullscreenMenu.Preferences.InvertZoomDirection": "ホイールでのズームの方向を反転",
224 | "fullscreenMenu.Preferences.UseNumberKeysForOpacity": "テンキーで不透明度を変更",
225 | "fullscreenMenu.Preferences.ShakeCursorForHighFive": "Shake cursor for high five",
226 | "fullscreenMenu.Preferences.OpenLinksInDesktopApp": "Open links in desktop app",
227 |
228 | "fullscreenMenu.Preferences.Theme": "Theme",
229 | "fullscreenMenu.Preferences.Theme.Light": "Light",
230 | "fullscreenMenu.Preferences.Theme.Dark": "Dark",
231 | "fullscreenMenu.Preferences.SystemTheme": "System theme",
232 |
233 | "fullscreenMenu.Preferences.NudgeAmount": "テンキー操作の値",
234 | "fullscreenMenu.Preferences.ShowTemplatesForNewFiles": "Show templates for new files",
235 |
236 | "fullscreenMenu.Libraries": "ライブラリ",
237 |
238 | "fullscreenMenu.GetDesktopApp": "Get desktop app",
239 | "fullscreenMenu.OpenInDesktopApp": "Open in desktop app",
240 |
241 | "fullscreenMenu.HelpAndAccount": "ヘルプとアカウント",
242 | "fullscreenMenu.HelpAndAccount.HelpPage": "ヘルプページ",
243 | "fullscreenMenu.HelpAndAccount.KeyboardShortcuts": "キーボードショートカット",
244 | "fullscreenMenu.HelpAndAccount.SupportForum": "サポートフォーラム",
245 | "fullscreenMenu.HelpAndAccount.VideoTutorials": "ビデオチュートリアル",
246 | "fullscreenMenu.HelpAndAccount.ReleaseNotes": "リリースノート",
247 | "fullscreenMenu.HelpAndAccount.OpenFontSettings": "フォント設定を開く",
248 | "fullscreenMenu.HelpAndAccount.LegalSummary": "利用規約",
249 | "fullscreenMenu.HelpAndAccount.AccountSettings": "アカウント設定",
250 | "fullscreenMenu.HelpAndAccount.LogOut": "ログアウト",
251 |
252 | "fullscreenMenu.PublishStylesAndComponents": "スタイルとコンポーネントを公開",
253 | "fullscreenMenu.Rename": "名前を変更",
254 | "fullscreenMenu.MoveToProject": "プロジェクトへ移動",
255 | "fullscreenMenu.Delete": "削除",
256 | "fullscreenMenu.ZoomTo50": "50% にズーム",
257 | "fullscreenMenu.ZoomTo200": "200% にズーム",
258 | "fullscreenMenu.Disabled": "無効",
259 |
260 | "fullscreenMenu.Tooltip.MainMenu": "Main menu",
261 | "fullscreenMenu.Tooltip.MoveTools": "移動ツール",
262 | "fullscreenMenu.Tooltip.SetToolDefault": "移動 V",
263 | "fullscreenMenu.Tooltip.SetToolScale": "拡大・縮小 K",
264 | "fullscreenMenu.Tooltip.RegionTools": "リージョンツール",
265 | "fullscreenMenu.Tooltip.SetToolFrame": "フレーム F",
266 | "fullscreenMenu.Tooltip.SetToolSlice": "スライス S",
267 | "fullscreenMenu.Tooltip.ShapeTools": "シェイプツール",
268 | "fullscreenMenu.Tooltip.SetToolRectangle": "長方形 R",
269 | "fullscreenMenu.Tooltip.SetToolLine": "直線 L",
270 | "fullscreenMenu.Tooltip.SetToolArrow": "矢印 Shift+L",
271 | "fullscreenMenu.Tooltip.SetToolEllipse": "楕円 O",
272 | "fullscreenMenu.Tooltip.SetToolRegularPolygon": "多角形",
273 | "fullscreenMenu.Tooltip.SetToolStar": "スター",
274 | "fullscreenMenu.Tooltip.DrawingTools": "ドローツール",
275 | "fullscreenMenu.Tooltip.SetToolPen": "ペン P",
276 | "fullscreenMenu.Tooltip.SetToolPencil": "鉛筆 Shift+P",
277 | "fullscreenMenu.Tooltip.SetToolText": "テキスト T",
278 | "fullscreenMenu.Tooltip.SetToolHand": "手のひらツール H",
279 | "fullscreenMenu.Tooltip.SetToolComments": "コメントの追加 C",
280 | "fullscreenMenu.Tooltip.Present": "プレゼンテーション",
281 | "fullscreenMenu.Tooltip.CreateComponent": "Create component Ctrl+Alt+K",
282 | "fullscreenMenu.Tooltip.UseAsMask": "Use as mask Ctrl+Alt+M",
283 | "fullscreenMenu.Tooltip.BooleanGroups": "Boolean groups",
284 | "fullscreenMenu.Tooltip.UnionSelection": "Union selection",
285 | "fullscreenMenu.Tooltip.SubtractSelection": "Subtract selection",
286 | "fullscreenMenu.Tooltip.IntersectSelection": "Intersect selection",
287 | "fullscreenMenu.Tooltip.ExcludeSelection": "Exclude selection",
288 |
289 |
290 | "toolbarView.fileName.folderName.Drafts": "Drafts",
291 |
292 | "toolbarView.moveFlyout.flyout.toolDefault": "移動",
293 | "toolbarView.moveFlyout.flyout.toolScale": "拡大・縮小",
294 |
295 | "toolbarView.regionFlyout.flyout.toolFrame": "フレーム'",
296 | "toolbarView.regionFlyout.flyout.toolSlice": "スライス",
297 |
298 | "toolbarView.shapeFlyout.flyout.toolShapeRectangle": "長方形",
299 | "toolbarView.shapeFlyout.flyout.toolShapeLine": "直線",
300 | "toolbarView.shapeFlyout.flyout.toolShapeArrow": "矢印",
301 | "toolbarView.shapeFlyout.flyout.toolShapeEllipse": "楕円",
302 | "toolbarView.shapeFlyout.flyout.toolShapePolygon": "多角形",
303 | "toolbarView.shapeFlyout.flyout.toolShapeStar": "スター",
304 | "toolbarView.shapeFlyout.flyout.toolPlaceImage": "画像を配置",
305 |
306 | "toolbarView.penFlyout.flyout.toolPen": "ペン",
307 | "toolbarView.penFlyout.flyout.toolPencil": "鉛筆",
308 |
309 | "toolbarView.booleanFlyout.flyout.toolBooleanUnion": "Union selection",
310 | "toolbarView.booleanFlyout.flyout.toolBooleanSubtract": "Subtract selection",
311 | "toolbarView.booleanFlyout.flyout.toolBooleanIntersect": "Intersect selection",
312 | "toolbarView.booleanFlyout.flyout.toolBooleatoolBooleanXornUnion": "Exclude selection",
313 | "toolbarView.booleanFlyout.flyout.toolFlatten": "Flatten selection",
314 |
315 | "toolbarView.Share": "共有",
316 |
317 | "toolbarView.CursorChat": "Cursor chat",
318 | "toolbarView.Stamp": "Stamp",
319 | "toolbarView.Emote": "Emote",
320 |
321 | "toolbarView.Overflow.Emote": "Emote",
322 | "toolbarView.Overflow.Stamp": "Stamp",
323 | "toolbarView.Overflow.CursorChat": "Cursor chat",
324 | "toolbarView.Overflow.HighFive": "High five",
325 | "toolbarView.Overflow.Timer": "Timer",
326 |
327 | "toolbarView.Tooltip.Collaborate": "Collaborate",
328 | "toolbarView.Tooltip.ZoomOut": "Zoom out Ctrl+-",
329 | "toolbarView.Tooltip.ZoomIn": "Zoom in Ctrl+-",
330 | "toolbarView.Tooltip.ZoomOrViewOptions": "Zoom/view options",
331 |
332 |
333 | "delightfulToolbar.MoveTool": "移動ツール V",
334 | "delightfulToolbar.HandTool": "手のひらツール H",
335 | "delightfulToolbar.Marker": "Marker M",
336 | "delightfulToolbar.Highlighter": "Highlighter Shift+M",
337 | "delightfulToolbar.Eraser": "Eraser Shift+Backspace",
338 | "delightfulToolbar.Thin": "Thin",
339 | "delightfulToolbar.Thick": "Thick",
340 | "delightfulToolbar.Charcoal": "Charcoal",
341 | "delightfulToolbar.Red": "Red",
342 | "delightfulToolbar.Yellow": "Yellow",
343 | "delightfulToolbar.Green": "Green",
344 | "delightfulToolbar.Blue": "Blue",
345 | "delightfulToolbar.Violet": "Violet",
346 | "delightfulToolbar.Brown": "Brown",
347 | "delightfulToolbar.White": "White",
348 | "delightfulToolbar.Square": "Square R",
349 | "delightfulToolbar.Ellipse": "Ellipse O",
350 | "delightfulToolbar.RoundedRectangle": "Rounded rectangle",
351 | "delightfulToolbar.Diamond": "Diamond",
352 | "delightfulToolbar.TriangleUp": "Triangle",
353 | "delightfulToolbar.TriangleDown": "Triangle",
354 | "delightfulToolbar.ParallelogramRight": "Parallelogram",
355 | "delightfulToolbar.ParallelogramLeft": "Parallelogram",
356 | "delightfulToolbar.Cylinder": "Cylinder",
357 | "delightfulToolbar.HorizontalCylinder": "Horizontal cylinder",
358 | "delightfulToolbar.File": "File",
359 | "delightfulToolbar.Folder": "Folder",
360 | "delightfulToolbar.Options.Square": "Square",
361 | "delightfulToolbar.Options.Ellipse": "Ellipse",
362 | "delightfulToolbar.Options.RoundedRectangle": "Rounded rectangle",
363 | "delightfulToolbar.Options.Diamond": "Diamond",
364 | "delightfulToolbar.Options.Triangle": "Triangle",
365 | "delightfulToolbar.Options.DownwardPointingTriangle": "Downward-pointing triangle",
366 | "delightfulToolbar.Options.RightLeaningParallelogram": "Right-leaning parallelogram",
367 | "delightfulToolbar.Options.LeftLeaningParallelogram": "Left-leaning parallelogram",
368 | "delightfulToolbar.Options.Cylinder": "Cylinder",
369 | "delightfulToolbar.Options.HorizontalCylinder": "Horizontal cylinder",
370 | "delightfulToolbar.Options.File": "File",
371 | "delightfulToolbar.Options.Folder": "Folder",
372 | "delightfulToolbar.Sticky": "Sticky note S",
373 | "delightfulToolbar.Text": "Text T",
374 | "delightfulToolbar.Connector": "Connector X",
375 | "delightfulToolbar.Line": "Line L",
376 | "delightfulToolbar.Options.Connector": "Connector",
377 | "delightfulToolbar.Options.StraightLine": "Straight line",
378 | "delightfulToolbar.Stamp": "Stamp E",
379 | "delightfulToolbar.More": "Widgets,stickers,templates and more",
380 |
381 |
382 | "contextMenu.Copy": "コピー",
383 | "contextMenu.Paste": "ペースト",
384 | "contextMenu.PasteHere": "Paste here",
385 |
386 | "contextMenu.CopyOrPasteAs": "Copy/Paste as",
387 | "contextMenu.CopyOrPasteAs.CopyLink": "リンクをコピー",
388 |
389 | "contextMenu.SelectLayer": "レイヤー選択",
390 | "contextMenu.MoveToPage": "ページへ移動",
391 |
392 | "contextMenu.Ungroup": "グループ解除",
393 | "contextMenu.Flatten": "複合パスに拡張",
394 |
395 | "contextMenu.ShowOrHide": "表示/非表示",
396 | "contextMenu.LockOrUnlock": "ロック/ロック解除",
397 |
398 | "contextMenu.ShowOrHideComments": "Show/Hide comments",
399 |
400 |
401 | "pagesPanel.Sidebar.Tab": "Layers",
402 | "pagesPanel.Sidebar.AssetsTab": "Assets",
403 |
404 | "pagesPanel.Sidebar.Pages": "Pages",
405 | "pagesPanel.Sidebar.Pages.CopyLinkToPage": "ページへのリンクをコピー",
406 | "pagesPanel.Sidebar.Pages.DeletePage": "ページを削除",
407 | "pagesPanel.Sidebar.Pages.RenamePage": "ページ名を変更",
408 | "pagesPanel.Sidebar.Pages.DuplicatePage": "ページを複製",
409 |
410 | "pagesPanel.Sidebar.AddNewPage": "Add new page",
411 | "pagesPanel.Sidebar.Search": "検索",
412 | "pagesPanel.Sidebar.ShowAsList": "Show as list",
413 | "pagesPanel.Sidebar.ShowAsGrid": "Show as grid",
414 | "pagesPanel.Sidebar.TeamLibrary": "チームライブラリ",
415 |
416 | "pagesPanel.Sidebar.Components": "コンポーネント",
417 | "pagesPanel.Sidebar.Components.FirstInfoText": "To create a component, select a layer and click the \"Create component\" button in the toolbar.",
418 | "pagesPanel.Sidebar.Components.FirstInfoLink": "Learn more",
419 | "pagesPanel.Sidebar.Components.SecondInfoText": "Use libraries for quick access to components from other files.",
420 | "pagesPanel.Sidebar.Components.SecondInfoLink": "Explore libraries...",
421 |
422 |
423 | "propertiesPanel.TabsHeader.Design": "デザイン",
424 | "propertiesPanel.TabsHeader.Prototype": "プロトタイプ",
425 | "propertiesPanel.TabsHeader.Inspect": "検査",
426 |
427 |
428 | "navbar.Community": "Community",
429 | "navbar.Search": "Search files, teams, or people",
430 | "navbar.Notifications": "Notifications",
431 | "navbar.InternalProfile": "Internal profile",
432 | "navbar.Settings": "Settings",
433 | "navbar.AddAccount": "Add account",
434 |
435 |
436 | "sidebar.Recents": "Recents",
437 | "sidebar.Drafts": "Drafts",
438 | "sidebar.ExploreCommunity": "Explore community",
439 | "sidebar.TeamProject": "Team project",
440 | "sidebar.CreateNewTeam": "Create new team",
441 |
442 |
443 | "fileBrowserView.RecentlyViewed": "Recently viewed",
444 | "fileBrowserView.Drafts": "Drafts",
445 | "fileBrowserView.Deleted": "Deleted",
446 | "fileBrowserView.NewDesignFile": "新規作成",
447 | "fileBrowserView.NewDesignFile.Desc": "Design and prototype",
448 | "fileBrowserView.NewFigJamFile": "FigJam 新規作成",
449 | "fileBrowserView.NewFigJamFile.Desc": "Whiteboard and diagram",
450 | "fileBrowserView.ImportFile": "Import file",
451 | "fileBrowserView.ImportFile.Desc": "Figma, Sketch, and image files",
452 |
453 | "fileBrowserView.Filter": "Filter:",
454 | "fileBrowserView.Filter.Select.AllFiles": "All files",
455 | "fileBrowserView.Filter.Select.DesignFiles": "Design files",
456 | "fileBrowserView.Filter.Select.FigJamFiles": "FigJam Files",
457 | "fileBrowserView.Filter.Select.Prototypes": "Prototypes",
458 |
459 | "fileBrowserView.Sort": "Sort:",
460 | "fileBrowserView.Sort.Select.SortBy": "Sort by",
461 | "fileBrowserView.Sort.Select.Alphabetical": "Alphabetical",
462 | "fileBrowserView.Sort.Select.DateCreated": "Date created",
463 | "fileBrowserView.Sort.Select.LastViewed": "Last viewed",
464 | "fileBrowserView.Sort.Select.LastModified": "Last modified",
465 | "fileBrowserView.Sort.Select.Order": "Order",
466 | "fileBrowserView.Sort.Select.OldestFirst": "Oldest first",
467 | "fileBrowserView.Sort.Select.NewestFirst": "Newest first",
468 |
469 | "fileBrowserView.ShowAsGrid": "Show as grid",
470 | "fileBrowserView.ShowAsList": "Show as list",
471 |
472 | "fileBrowserView.ContextMenu.ShowInProject": "Show in project",
473 | "fileBrowserView.ContextMenu.Open": "Open",
474 | "fileBrowserView.ContextMenu.OpenInNewTab": "Open in new tab",
475 | "fileBrowserView.ContextMenu.CopyLink": "Copy link",
476 | "fileBrowserView.ContextMenu.AddToYourFavorites": "Add to your favorites",
477 | "fileBrowserView.ContextMenu.Share": "Share",
478 | "fileBrowserView.ContextMenu.Duplicate": "Duplicate",
479 | "fileBrowserView.ContextMenu.Rename": "Rename",
480 | "fileBrowserView.ContextMenu.Delete": "Delete",
481 | "fileBrowserView.ContextMenu.RemoveFromRecent": "Remove from recent",
482 | }
--------------------------------------------------------------------------------
/src/locale/lang/zh-cn.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | "fullscreenMenu.BackToFiles": "返回文件列表",
3 |
4 | "fullscreenMenu.QuickActions": "快速操作…",
5 |
6 | "fullscreenMenu.File": "文件",
7 | "fullscreenMenu.File.NewDesignFile": "新建设计文件",
8 | "fullscreenMenu.File.NewFigJamFile": "新建 FigJam 文件",
9 | "fullscreenMenu.File.NewFromSketchFile": "从 Sketch 文件新建…",
10 | "fullscreenMenu.File.PlaceImage": "导入图片…",
11 | "fullscreenMenu.File.ImportFromCSV": "从 CSV 中导入…",
12 | "fullscreenMenu.File.SaveLocalCopy": "保存本地副本…",
13 | "fullscreenMenu.File.SaveToVersionHistory": "保存至版本历史…",
14 | "fullscreenMenu.File.ShowVersionHistory": "查看版本历史",
15 | "fullscreenMenu.File.Export": "导出…",
16 | "fullscreenMenu.File.ExportFramesToPDF": "导出画框为 PDF…",
17 | "fullscreenMenu.File.ExportAs": "导出为…",
18 | "fullscreenMenu.File.ExportSelection": "导出选择…",
19 |
20 | "fullscreenMenu.Edit": "编辑",
21 | "fullscreenMenu.Edit.Undo": "撤销",
22 | "fullscreenMenu.Edit.Redo": "重做",
23 |
24 | "fullscreenMenu.Edit.CopyAs": "复制为",
25 | "fullscreenMenu.Edit.CopyAs.CopyAsText": "复制为文本",
26 | "fullscreenMenu.Edit.CopyAs.CopyAsCSS": "复制为 CSS",
27 | "fullscreenMenu.Edit.CopyAs.CopyAsSVG": "复制为 SVG",
28 | "fullscreenMenu.Edit.CopyAs.CopyAsPNG": "复制为 PNG",
29 |
30 | "fullscreenMenu.Edit.PasteOverSelection": "粘贴至所选位置",
31 | "fullscreenMenu.Edit.PasteToReplace": "粘贴替换",
32 | "fullscreenMenu.Edit.Duplicate": "创建副本",
33 | "fullscreenMenu.Edit.Delete": "删除",
34 | "fullscreenMenu.Edit.SetDefaultProperties": "设置默认属性",
35 | "fullscreenMenu.Edit.CopyProperties": "复制属性",
36 | "fullscreenMenu.Edit.PasteProperties": "粘贴属性",
37 | "fullscreenMenu.Edit.PickColor": "吸取颜色",
38 | "fullscreenMenu.Edit.SelectAll": "全选",
39 | "fullscreenMenu.Edit.SelectNone": "取消选择",
40 | "fullscreenMenu.Edit.SelectInverse": "反选",
41 | "fullscreenMenu.Edit.SelectAllMatchingLayers": "选择全部匹配的图层",
42 | "fullscreenMenu.Edit.SelectAllWithSameProperties": "选择全部相同属性",
43 | "fullscreenMenu.Edit.SelectAllWithSameFill": "选择全部相同填充颜色",
44 | "fullscreenMenu.Edit.SelectAllWithSameStroke": "选择全部相同描边",
45 | "fullscreenMenu.Edit.SelectAllWithSameEffect": "选择全部相同效果",
46 | "fullscreenMenu.Edit.SelectAllWithSameTextProperties": "选择全部相同文本属性",
47 | "fullscreenMenu.Edit.SelectAllWithSameFont": "选择全部相同字体",
48 | "fullscreenMenu.Edit.SelectAllWithSameInstance": "选择全部相同组件实例",
49 | "fullscreenMenu.Edit.SelectAllWithSameVariant": "选择全部相同变体",
50 |
51 | "fullscreenMenu.View": "查看",
52 | "fullscreenMenu.View.PixelGrid": "像素网格",
53 | "fullscreenMenu.View.LayoutGrids": "布局网格",
54 | "fullscreenMenu.View.Rulers": "标尺",
55 | "fullscreenMenu.View.ShowSlices": "显示切片",
56 | "fullscreenMenu.View.Comments": "评论",
57 | "fullscreenMenu.View.Outlines": "轮廓",
58 | "fullscreenMenu.View.PixelPreview": "像素预览",
59 | "fullscreenMenu.View.MaskOutlines": "蒙版轮廓",
60 | "fullscreenMenu.View.FrameOutlines": "画框轮廓",
61 | "fullscreenMenu.View.ShowDotGrid": "显示点状网格",
62 | "fullscreenMenu.View.ResourceUse": "资源使用情况",
63 | "fullscreenMenu.View.ShowOrHideUI": "显示/隐藏界面",
64 | "fullscreenMenu.View.MultiplayerCursors": "多人鼠标指针",
65 |
66 | "fullscreenMenu.View.Panels": "面板",
67 | "fullscreenMenu.View.Panels.OpenLayersPanel": "打开图层面板",
68 | "fullscreenMenu.View.Panels.OpenDesignPanel": "打开设计面板",
69 | "fullscreenMenu.View.Panels.OpenPrototypePanel": "打开原型面板",
70 | "fullscreenMenu.View.Panels.OpenInspectPanel": "打开检查面板",
71 | "fullscreenMenu.View.Panels.ShowLeftSidebar": "显示左侧边栏",
72 |
73 | "fullscreenMenu.View.ZoomIn": "放大",
74 | "fullscreenMenu.View.ZoomOut": "缩小",
75 | "fullscreenMenu.View.ZoomTo100%": "缩放至 100%",
76 | "fullscreenMenu.View.ZoomToFit": "缩放至适应大小",
77 | "fullscreenMenu.View.ZoomToSelection": "缩放至选中范围",
78 | "fullscreenMenu.View.PreviousPage": "上一页",
79 | "fullscreenMenu.View.NextPage": "下一页",
80 | "fullscreenMenu.View.ZoomToPreviousFrame": "缩放至上一个画框",
81 | "fullscreenMenu.View.ZoomToNextFrame": "缩放至下一个画框",
82 | "fullscreenMenu.View.FindPreviousFrame": "查找上一个画框",
83 | "fullscreenMenu.View.FindNextFrame": "查找下一个画框",
84 |
85 | "fullscreenMenu.Object": "对象",
86 | "fullscreenMenu.Object.GroupSelection": "对所选项进行编组",
87 | "fullscreenMenu.Object.CreateSection": "创建部件",
88 | "fullscreenMenu.Object.FrameSelection": "选择画框",
89 | "fullscreenMenu.Object.UngroupSelection": "取消对所选项进行编组",
90 | "fullscreenMenu.Object.UseAsMask": "设为蒙版",
91 | "fullscreenMenu.Object.RestoreDefaultThumbnail": "恢复默认封面",
92 | "fullscreenMenu.Object.SetAsThumbnail": "设为封面",
93 | "fullscreenMenu.Object.AddAutoLayout": "添加自动布局",
94 | "fullscreenMenu.Object.CreateComponent": "创建组件",
95 | "fullscreenMenu.Object.ResetAllChanges": "重置所有更改",
96 | "fullscreenMenu.Object.ResetAllOverrides": "重置所有覆盖",
97 | "fullscreenMenu.Object.DetachInstance": "分离实例",
98 |
99 | "fullscreenMenu.Object.MainComponent": "组件母版",
100 | "fullscreenMenu.Object.MainComponent.GoToMainComponent": "转到组件母版",
101 | "fullscreenMenu.Object.MainComponent.PushOverridesToMainComponent": "覆盖组件母版",
102 | "fullscreenMenu.Object.MainComponent.RestoreMainComponent": "恢复组件母版",
103 |
104 | "fullscreenMenu.Object.BringToFront": "移到顶层",
105 | "fullscreenMenu.Object.BringForward": "上移一层",
106 | "fullscreenMenu.Object.SendBackward": "下移一层",
107 | "fullscreenMenu.Object.SendToBack": "移到底层",
108 | "fullscreenMenu.Object.flipHorizontal": "水平翻转",
109 | "fullscreenMenu.Object.flipVertical": "垂直翻转",
110 | "fullscreenMenu.Object.Rotate180": "旋转 180°",
111 | "fullscreenMenu.Object.Rotate90Left": "向左旋转 90°",
112 | "fullscreenMenu.Object.Rotate90Right": "向右旋转 90°",
113 | "fullscreenMenu.Object.FlattenSelection": "拼合所选项",
114 | "fullscreenMenu.Object.OutlineStroke": "轮廓化描边",
115 |
116 | "fullscreenMenu.Object.BooleanGroups": "布尔组合",
117 | "fullscreenMenu.Object.BooleanGroups.UnionSelection": "连集所选项",
118 | "fullscreenMenu.Object.BooleanGroups.SubtractSelection": "减去所选项",
119 | "fullscreenMenu.Object.BooleanGroups.IntersectSelection": "交集所选项",
120 | "fullscreenMenu.Object.BooleanGroups.ExcludeSelection": "差集所选项",
121 |
122 | "fullscreenMenu.Object.RasterizeSelection": "像素化所选项",
123 | "fullscreenMenu.Object.ShowOrHideSelection": "显示/隐藏所选项",
124 | "fullscreenMenu.Object.LockOrUnlockSelection": "锁定/解锁所选项",
125 | "fullscreenMenu.Object.HideOtherLayers": "隐藏其余图层",
126 | "fullscreenMenu.Object.CollapseLayers": "折叠图层",
127 | "fullscreenMenu.Object.RemoveFill": "移除填充",
128 | "fullscreenMenu.Object.RemoveStroke": "移除描边",
129 | "fullscreenMenu.Object.SwapFillAndStroke": "交换填充和描边",
130 |
131 | "fullscreenMenu.Vector": "矢量",
132 | "fullscreenMenu.Vector.JoinSelection": "连接所选项",
133 | "fullscreenMenu.Vector.SmoothJoinSelection": "平滑连接所选项",
134 | "fullscreenMenu.Vector.DeleteAndHealSelection": "删除和修复所选项",
135 |
136 | "fullscreenMenu.Text": "文本",
137 | "fullscreenMenu.Text.Bold": "加粗",
138 | "fullscreenMenu.Text.Italic": "斜体",
139 | "fullscreenMenu.Text.Underline": "下划线",
140 | "fullscreenMenu.Text.Strikethrough": "删除线",
141 | "fullscreenMenu.Text.CreateLink": "创建链接",
142 | "fullscreenMenu.Text.BulletedList": "无序列表",
143 | "fullscreenMenu.Text.NumberedList": "有序列表",
144 |
145 | "fullscreenMenu.Text.Alignment": "对齐",
146 | "fullscreenMenu.Text.Alignment.TextAlignLeft": "左对齐",
147 | "fullscreenMenu.Text.Alignment.TextAlignCenter": "水平居中",
148 | "fullscreenMenu.Text.Alignment.TextAlignRight": "右对齐",
149 | "fullscreenMenu.Text.Alignment.TextAlignJustified": "两端对齐",
150 | "fullscreenMenu.Text.Alignment.TextAlignTop": "上对齐",
151 | "fullscreenMenu.Text.Alignment.TextAlignMiddle": "垂直居中",
152 | "fullscreenMenu.Text.Alignment.TextAlignBottom": "下对齐",
153 |
154 | "fullscreenMenu.Text.Adjust": "调整",
155 | "fullscreenMenu.Text.Adjust.IncreaseIndentation": "增大缩进",
156 | "fullscreenMenu.Text.Adjust.DecreaseIndentation": "减小缩进",
157 | "fullscreenMenu.Text.Adjust.IncreaseFontSize": "增大字号",
158 | "fullscreenMenu.Text.Adjust.DecreaseFontSize": "减小字号",
159 | "fullscreenMenu.Text.Adjust.IncreaseFontWeight": "增大字重",
160 | "fullscreenMenu.Text.Adjust.DecreaseFontWeight": "减小字重",
161 | "fullscreenMenu.Text.Adjust.IncreaseLineHeight": "增大行高",
162 | "fullscreenMenu.Text.Adjust.DecreaseLineHeight": "减小行高",
163 | "fullscreenMenu.Text.Adjust.IncreaseLetterSpacing": "增大字距",
164 | "fullscreenMenu.Text.Adjust.DecreaseLetterSpacing": "减小字距",
165 |
166 | "fullscreenMenu.Text.Case": "大小写",
167 | "fullscreenMenu.Text.Case.OriginalCase": "初始大小写",
168 | "fullscreenMenu.Text.Case.Uppercase": "大写",
169 | "fullscreenMenu.Text.Case.Lowercase": "小写",
170 |
171 | "fullscreenMenu.Text.TextDirection": "文本方向",
172 | "fullscreenMenu.Text.TextDirection.LeftToRight": "从左到右",
173 | "fullscreenMenu.Text.TextDirection.RightToLeft": "从右到左",
174 |
175 |
176 | "fullscreenMenu.Arrange": "排列",
177 | "fullscreenMenu.Arrange.RoundToPixel": "对齐像素",
178 | "fullscreenMenu.Arrange.AlignLeft": "左对齐",
179 | "fullscreenMenu.Arrange.AlignHorizontalCenters": "水平居中",
180 | "fullscreenMenu.Arrange.AlignRight": "右对齐",
181 | "fullscreenMenu.Arrange.AlignTop": "上对齐",
182 | "fullscreenMenu.Arrange.AlignVerticalCenters": "垂直居中",
183 | "fullscreenMenu.Arrange.AlignBottom": "下对齐",
184 | "fullscreenMenu.Arrange.TidyUp": "整理",
185 | "fullscreenMenu.Arrange.PackHorizontal": "水平堆叠",
186 | "fullscreenMenu.Arrange.PackVertical": "垂直堆叠",
187 | "fullscreenMenu.Arrange.DistributeHorizontalSpacing": "水平间距均分",
188 | "fullscreenMenu.Arrange.DistributeVerticalSpacing": "垂直间距均分",
189 | "fullscreenMenu.Arrange.DistributeLeft": "向左均分",
190 | "fullscreenMenu.Arrange.DistributeHorizontalCenters": "水平中心均分",
191 | "fullscreenMenu.Arrange.DistributeRight": "向右均分",
192 | "fullscreenMenu.Arrange.DistributeTop": "向上均分",
193 | "fullscreenMenu.Arrange.DistributeVerticalCenters": "垂直中心均分",
194 | "fullscreenMenu.Arrange.DistributeBottom": "向下均分",
195 |
196 | "fullscreenMenu.Plugins": "插件",
197 | "fullscreenMenu.Plugins.RunLastPlugin": "运行上一个插件",
198 | "fullscreenMenu.Plugins.ManagePlugins": "管理插件…",
199 | "fullscreenMenu.Plugins.BrowsePluginsInCommunity": "在社区中浏览插件",
200 | "fullscreenMenu.Plugins.BrowsePlugins": "浏览插件",
201 |
202 | "fullscreenMenu.Widgets": "小部件",
203 | "fullscreenMenu.Widgets.BrowseWidgets": "浏览小部件",
204 | "fullscreenMenu.Widgets.SelectAllWidgets": "选择所有小部件",
205 |
206 | "fullscreenMenu.Integrations": "集成",
207 | "fullscreenMenu.Integrations.Dribbble": "Dribbble",
208 |
209 | "fullscreenMenu.Preferences": "偏好设置",
210 | "fullscreenMenu.Preferences.SnapToGeometry": "对齐到形状",
211 | "fullscreenMenu.Preferences.SnapToObjects": "对齐到对象",
212 | "fullscreenMenu.Preferences.SnapToDotGrid": "对齐到点状网格",
213 | "fullscreenMenu.Preferences.SnapToPixelGrid": "对齐到像素",
214 | "fullscreenMenu.Preferences.KeepToolSelectedAfterUse": "使用后保持工具选择",
215 | "fullscreenMenu.Preferences.HighlightLayersOnHover": "突出显示悬停图层",
216 | "fullscreenMenu.Preferences.RenameDuplicatedLayers": "重命名已创建的副本图层",
217 | "fullscreenMenu.Preferences.ShowDimensionsOnObjects": "在对象上显示尺寸",
218 | "fullscreenMenu.Preferences.HideCanvasUIDuringChanges": "在改动期间隐藏画布 UI",
219 | "fullscreenMenu.Preferences.KeyboardZoomsIntoSelection": "键盘缩放所选项",
220 | "fullscreenMenu.Preferences.SubstituteSmartQuotes": "智能引号替换",
221 | "fullscreenMenu.Preferences.ShowGoogleFonts": "显示谷歌字体",
222 | "fullscreenMenu.Preferences.FlipObjectsWhileResizing": "调整大小时翻转对象",
223 | "fullscreenMenu.Preferences.InvertZoomDirection": "反转缩放方向",
224 | "fullscreenMenu.Preferences.UseNumberKeysForOpacity": "使用数字控制透明度",
225 | "fullscreenMenu.Preferences.ShakeCursorForHighFive": "摇动光标进行挥手",
226 | "fullscreenMenu.Preferences.OpenLinksInDesktopApp": "在桌面应用打开链接",
227 |
228 | "fullscreenMenu.Preferences.Theme": "主题",
229 | "fullscreenMenu.Preferences.Theme.Light": "浅色",
230 | "fullscreenMenu.Preferences.Theme.Dark": "深色",
231 | "fullscreenMenu.Preferences.SystemTheme": "系统主题",
232 |
233 | "fullscreenMenu.Preferences.NudgeAmount": "微调量…",
234 | "fullscreenMenu.Preferences.ShowTemplatesForNewFiles": "显示新文件的模版",
235 |
236 | "fullscreenMenu.Libraries": "组件库",
237 |
238 | "fullscreenMenu.GetDesktopApp": "下载桌面版应用",
239 | "fullscreenMenu.OpenInDesktopApp": "在桌面应用中打开",
240 |
241 | "fullscreenMenu.HelpAndAccount": "帮助和账户",
242 | "fullscreenMenu.HelpAndAccount.HelpPage": "帮助页面",
243 | "fullscreenMenu.HelpAndAccount.KeyboardShortcuts": "键盘快捷键",
244 | "fullscreenMenu.HelpAndAccount.SupportForum": "支持论坛",
245 | "fullscreenMenu.HelpAndAccount.VideoTutorials": "视频教程",
246 | "fullscreenMenu.HelpAndAccount.ReleaseNotes": "版本说明",
247 | "fullscreenMenu.HelpAndAccount.OpenFontSettings": "打开字体设置",
248 | "fullscreenMenu.HelpAndAccount.LegalSummary": "法律摘要",
249 | "fullscreenMenu.HelpAndAccount.AccountSettings": "账号设置",
250 | "fullscreenMenu.HelpAndAccount.LogOut": "退出",
251 |
252 | "fullscreenMenu.PublishStylesAndComponents": "发布样式和组件",
253 | "fullscreenMenu.Rename": "重命名",
254 | "fullscreenMenu.MoveToProject": "移动到项目…",
255 | "fullscreenMenu.Delete": "删除…",
256 | "fullscreenMenu.ZoomTo50": "缩放至 50%",
257 | "fullscreenMenu.ZoomTo200": "缩放至 200%",
258 | "fullscreenMenu.Disabled": "禁用",
259 |
260 | "fullscreenMenu.Tooltip.MainMenu": "主菜单",
261 | "fullscreenMenu.Tooltip.MoveTools": "移动工具",
262 | "fullscreenMenu.Tooltip.SetToolDefault": "移动 V",
263 | "fullscreenMenu.Tooltip.SetToolScale": "缩放 K",
264 | "fullscreenMenu.Tooltip.RegionTools": "区域工具",
265 | "fullscreenMenu.Tooltip.SetToolFrame": "画框 F",
266 | "fullscreenMenu.Tooltip.SetToolSlice": "切片 S",
267 | "fullscreenMenu.Tooltip.ShapeTools": "形状工具",
268 | "fullscreenMenu.Tooltip.SetToolRectangle": "矩形 R",
269 | "fullscreenMenu.Tooltip.SetToolLine": "直线 L",
270 | "fullscreenMenu.Tooltip.SetToolArrow": "箭头 Shift+L",
271 | "fullscreenMenu.Tooltip.SetToolEllipse": "椭圆 O",
272 | "fullscreenMenu.Tooltip.SetToolRegularPolygon": "多边形",
273 | "fullscreenMenu.Tooltip.SetToolStar": "星形",
274 | "fullscreenMenu.Tooltip.DrawingTools": "绘画工具",
275 | "fullscreenMenu.Tooltip.SetToolPen": "钢笔 P",
276 | "fullscreenMenu.Tooltip.SetToolPencil": "铅笔 Shift+P",
277 | "fullscreenMenu.Tooltip.SetToolText": "文本 T",
278 | "fullscreenMenu.Tooltip.SetToolHand": "抓手工具 H",
279 | "fullscreenMenu.Tooltip.SetToolComments": "添加评论 C",
280 | "fullscreenMenu.Tooltip.Present": "演示",
281 | "fullscreenMenu.Tooltip.CreateComponent": "创建组件 Ctrl+Alt+K",
282 | "fullscreenMenu.Tooltip.UseAsMask": "设为蒙版 Ctrl+Alt+M",
283 | "fullscreenMenu.Tooltip.BooleanGroups": "布尔组合",
284 | "fullscreenMenu.Tooltip.UnionSelection": "连集所选项",
285 | "fullscreenMenu.Tooltip.SubtractSelection": "减去所选项",
286 | "fullscreenMenu.Tooltip.IntersectSelection": "交集所选项",
287 | "fullscreenMenu.Tooltip.ExcludeSelection": "差集所选项",
288 |
289 |
290 | "toolbarView.fileName.folderName.Drafts": "草稿",
291 |
292 | "toolbarView.moveFlyout.flyout.toolDefault": "移动",
293 | "toolbarView.moveFlyout.flyout.toolScale": "缩放",
294 |
295 | "toolbarView.regionFlyout.flyout.toolFrame": "画框",
296 | "toolbarView.regionFlyout.flyout.toolSlice": "切片",
297 |
298 | "toolbarView.shapeFlyout.flyout.toolShapeRectangle": "矩形",
299 | "toolbarView.shapeFlyout.flyout.toolShapeLine": "直线",
300 | "toolbarView.shapeFlyout.flyout.toolShapeArrow": "箭头",
301 | "toolbarView.shapeFlyout.flyout.toolShapeEllipse": "椭圆",
302 | "toolbarView.shapeFlyout.flyout.toolShapePolygon": "多边形",
303 | "toolbarView.shapeFlyout.flyout.toolShapeStar": "星形",
304 | "toolbarView.shapeFlyout.flyout.toolPlaceImage": "导入图片…",
305 |
306 | "toolbarView.penFlyout.flyout.toolPen": "钢笔",
307 | "toolbarView.penFlyout.flyout.toolPencil": "铅笔",
308 |
309 | "toolbarView.booleanFlyout.flyout.toolBooleanUnion": "连集所选项",
310 | "toolbarView.booleanFlyout.flyout.toolBooleanSubtract": "减去所选项",
311 | "toolbarView.booleanFlyout.flyout.toolBooleanIntersect": "交集所选项",
312 | "toolbarView.booleanFlyout.flyout.toolBooleatoolBooleanXornUnion": "差集所选项",
313 | "toolbarView.booleanFlyout.flyout.toolFlatten": "展平所选项",
314 |
315 | "toolbarView.Share": "分享",
316 |
317 | "toolbarView.CursorChat": "聚焦聊天框",
318 | "toolbarView.Stamp": "印章",
319 | "toolbarView.Emote": "表情",
320 |
321 | "toolbarView.Overflow.Emote": "表情",
322 | "toolbarView.Overflow.Stamp": "印章",
323 | "toolbarView.Overflow.CursorChat": "聚焦聊天框",
324 | "toolbarView.Overflow.HighFive": "挥手",
325 | "toolbarView.Overflow.Timer": "计时器",
326 |
327 | "toolbarView.Tooltip.Collaborate": "协作",
328 | "toolbarView.Tooltip.ZoomOut": "缩小 Ctrl+-",
329 | "toolbarView.Tooltip.ZoomIn": "放大 Ctrl+-",
330 | "toolbarView.Tooltip.ZoomOrViewOptions": "缩放/视图选项",
331 |
332 |
333 | "delightfulToolbar.MoveTool": "移动工具 V",
334 | "delightfulToolbar.HandTool": "抓手工具 H",
335 | "delightfulToolbar.Marker": "马克笔 M",
336 | "delightfulToolbar.Highlighter": "荧光笔 Shift+M",
337 | "delightfulToolbar.Eraser": "橡皮擦 Shift+Backspace",
338 | "delightfulToolbar.Thin": "细",
339 | "delightfulToolbar.Thick": "粗",
340 | "delightfulToolbar.Charcoal": "炭黑",
341 | "delightfulToolbar.Red": "红",
342 | "delightfulToolbar.Yellow": "黄",
343 | "delightfulToolbar.Green": "绿",
344 | "delightfulToolbar.Blue": "蓝",
345 | "delightfulToolbar.Violet": "紫",
346 | "delightfulToolbar.Brown": "棕",
347 | "delightfulToolbar.White": "白",
348 | "delightfulToolbar.Square": "方形 R",
349 | "delightfulToolbar.Ellipse": "椭圆 O",
350 | "delightfulToolbar.RoundedRectangle": "圆角矩形",
351 | "delightfulToolbar.Diamond": "菱形",
352 | "delightfulToolbar.TriangleUp": "三角形",
353 | "delightfulToolbar.TriangleDown": "三角形",
354 | "delightfulToolbar.ParallelogramRight": "平行四边形",
355 | "delightfulToolbar.ParallelogramLeft": "平行四边形",
356 | "delightfulToolbar.Cylinder": "圆柱体",
357 | "delightfulToolbar.HorizontalCylinder": "横向圆柱体",
358 | "delightfulToolbar.File": "文件",
359 | "delightfulToolbar.Folder": "文件夹",
360 | "delightfulToolbar.Options.Square": "方形",
361 | "delightfulToolbar.Options.Ellipse": "椭圆",
362 | "delightfulToolbar.Options.RoundedRectangle": "圆角矩形",
363 | "delightfulToolbar.Options.Diamond": "菱形",
364 | "delightfulToolbar.Options.Triangle": "三角形",
365 | "delightfulToolbar.Options.DownwardPointingTriangle": "倒三角形",
366 | "delightfulToolbar.Options.RightLeaningParallelogram": "右倾的平行四边形",
367 | "delightfulToolbar.Options.LeftLeaningParallelogram": "左倾的平行四边形",
368 | "delightfulToolbar.Options.Cylinder": "圆柱体",
369 | "delightfulToolbar.Options.HorizontalCylinder": "横向圆柱体",
370 | "delightfulToolbar.Options.File": "文件",
371 | "delightfulToolbar.Options.Folder": "文件夹",
372 | "delightfulToolbar.Sticky": "便利贴 S",
373 | "delightfulToolbar.Text": "文本 T",
374 | "delightfulToolbar.Connector": "连线 X",
375 | "delightfulToolbar.Line": "直线 L",
376 | "delightfulToolbar.Options.Connector": "连线",
377 | "delightfulToolbar.Options.StraightLine": "直线",
378 | "delightfulToolbar.Stamp": "印章 E",
379 | "delightfulToolbar.More": "小部件、贴纸、模板以及更多",
380 |
381 |
382 | "contextMenu.Copy": "复制",
383 | "contextMenu.Paste": "粘贴",
384 | "contextMenu.PasteHere": "粘贴到这里",
385 |
386 | "contextMenu.CopyOrPasteAs": "复制/粘贴为",
387 | "contextMenu.CopyOrPasteAs.CopyLink": "复制链接",
388 |
389 | "contextMenu.SelectLayer": "选择图层",
390 | "contextMenu.MoveToPage": "移到页面",
391 |
392 | "contextMenu.Ungroup": "取消编组",
393 | "contextMenu.Flatten": "拼合",
394 |
395 | "contextMenu.ShowOrHide": "显示/隐藏",
396 | "contextMenu.LockOrUnlock": "锁定/解锁",
397 |
398 | "contextMenu.ShowOrHideComments": "显示/隐藏评论",
399 |
400 |
401 | "pagesPanel.Sidebar.Tab": "图层",
402 | "pagesPanel.Sidebar.AssetsTab": "资源",
403 |
404 | "pagesPanel.Sidebar.Pages": "页面",
405 | "pagesPanel.Sidebar.Pages.CopyLinkToPage": "复制页面链接",
406 | "pagesPanel.Sidebar.Pages.DeletePage": "删除页面",
407 | "pagesPanel.Sidebar.Pages.RenamePage": "重命名页面",
408 | "pagesPanel.Sidebar.Pages.DuplicatePage": "创建页面副本",
409 |
410 | "pagesPanel.Sidebar.AddNewPage": "添加新页面",
411 | "pagesPanel.Sidebar.Search": "搜索",
412 | "pagesPanel.Sidebar.ShowAsList": "显示为列表",
413 | "pagesPanel.Sidebar.ShowAsGrid": "显示为网格",
414 | "pagesPanel.Sidebar.TeamLibrary": "团队组件库",
415 |
416 | "pagesPanel.Sidebar.Components": "组件",
417 | "pagesPanel.Sidebar.Components.FirstInfoText": "如果要创建组件,请选择一个图层,然后单击工具栏中的「创建组件」按钮。",
418 | "pagesPanel.Sidebar.Components.FirstInfoLink": "了解更多",
419 | "pagesPanel.Sidebar.Components.SecondInfoText": "使用组件库可以快速访问其他文件中的组件。",
420 | "pagesPanel.Sidebar.Components.SecondInfoLink": "查看组件库…",
421 |
422 |
423 | "propertiesPanel.TabsHeader.Design": "设计",
424 | "propertiesPanel.TabsHeader.Prototype": "原型",
425 | "propertiesPanel.TabsHeader.Inspect": "检查",
426 |
427 |
428 | "navbar.Community": "社区",
429 | "navbar.Search": "搜索文件、团队或人员",
430 | "navbar.Notifications": "通知",
431 | "navbar.InternalProfile": "内部简介",
432 | "navbar.Settings": "设置",
433 | "navbar.AddAccount": "添加账户",
434 |
435 |
436 | "sidebar.Recents": "最近",
437 | "sidebar.Drafts": "草稿",
438 | "sidebar.ExploreCommunity": "探索社区",
439 | "sidebar.TeamProject": "团队项目",
440 | "sidebar.CreateNewTeam": "创建新的团队",
441 |
442 |
443 | "fileBrowserView.RecentlyViewed": "最近浏览过",
444 | "fileBrowserView.Drafts": "草稿",
445 | "fileBrowserView.Deleted": "已删除",
446 | "fileBrowserView.NewDesignFile": "新建设计文件",
447 | "fileBrowserView.NewDesignFile.Desc": "设计和原型",
448 | "fileBrowserView.NewFigJamFile": "新建 FigJam 文件",
449 | "fileBrowserView.NewFigJamFile.Desc": "白板和图表",
450 | "fileBrowserView.ImportFile": "导入文件",
451 | "fileBrowserView.ImportFile.Desc": "Figma、Sketch 和图片文件",
452 |
453 | "fileBrowserView.Filter": "筛选:",
454 | "fileBrowserView.Filter.Select.AllFiles": "全部文件",
455 | "fileBrowserView.Filter.Select.DesignFiles": "设计文件",
456 | "fileBrowserView.Filter.Select.FigJamFiles": "FigJam 文件",
457 | "fileBrowserView.Filter.Select.Prototypes": "原型",
458 |
459 | "fileBrowserView.Sort": "排序:",
460 | "fileBrowserView.Sort.Select.SortBy": "排序方式",
461 | "fileBrowserView.Sort.Select.Alphabetical": "字母顺序",
462 | "fileBrowserView.Sort.Select.DateCreated": "创建时间",
463 | "fileBrowserView.Sort.Select.LastViewed": "最近浏览",
464 | "fileBrowserView.Sort.Select.LastModified": "最近编辑",
465 | "fileBrowserView.Sort.Select.Order": "排序",
466 | "fileBrowserView.Sort.Select.OldestFirst": "最早",
467 | "fileBrowserView.Sort.Select.NewestFirst": "最新",
468 |
469 | "fileBrowserView.ShowAsGrid": "显示为网格",
470 | "fileBrowserView.ShowAsList": "显示为列表",
471 |
472 | "fileBrowserView.ContextMenu.ShowInProject": "在项目中显示",
473 | "fileBrowserView.ContextMenu.Open": "打开",
474 | "fileBrowserView.ContextMenu.OpenInNewTab": "在新标签页中打开",
475 | "fileBrowserView.ContextMenu.CopyLink": "复制链接",
476 | "fileBrowserView.ContextMenu.AddToYourFavorites": "添加到你的收藏",
477 | "fileBrowserView.ContextMenu.Share": "分享",
478 | "fileBrowserView.ContextMenu.Duplicate": "创建副本",
479 | "fileBrowserView.ContextMenu.Rename": "重命名",
480 | "fileBrowserView.ContextMenu.Delete": "删除",
481 | "fileBrowserView.ContextMenu.RemoveFromRecent": "从最近中移除",
482 | }
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import App from './ui/App.svelte'
2 | import {RunMode} from "./types"
3 |
4 |
5 | const app = new App({
6 | target: document.body,
7 | props: {
8 | runMode: RunMode.Prod
9 | }
10 | });
11 |
12 | export default app;
--------------------------------------------------------------------------------
/src/store/index.ts:
--------------------------------------------------------------------------------
1 | export const langStore = {
2 | _key: "figma-i18n-lang",
3 | _status: "",
4 |
5 | get status() {
6 | if (window && window.localStorage && this._status == "") {
7 | return localStorage.getItem(this._key)
8 | }
9 | return this._status
10 | },
11 |
12 | set status(val) {
13 | if (window && window.localStorage) {
14 | localStorage.setItem(this._key, val)
15 | }
16 | this._status = val
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/translator/index.ts:
--------------------------------------------------------------------------------
1 | import * as filter from "../filter"
2 | import { Language, languageDict } from "../locale"
3 |
4 | export interface LangInfo {
5 | ID: string
6 | name: string
7 | dict: {
8 | [elementName: string]: string
9 | }
10 | }
11 |
12 | const generateLangInfoList = (langDict: Language): LangInfo[] => {
13 | let list: LangInfo[] = []
14 |
15 | for (const key in langDict) {
16 | if (Object.prototype.hasOwnProperty.call(langDict, key)) {
17 | const val = langDict[key]
18 | list.push({
19 | ID: key,
20 | name: val.name,
21 | dict: val.dict,
22 | })
23 | }
24 | }
25 |
26 | return list
27 | }
28 |
29 | const languageContentTranslate = function (elementName: string, lang: string): string {
30 | const langDict = languageDict
31 | return langDict[lang] && langDict[lang]["dict"] && langDict[lang]["dict"][elementName] ? langDict[lang]["dict"][elementName] : ""
32 | }
33 |
34 | export const langInfoList = generateLangInfoList(languageDict)
35 |
36 | export const languageConverter = (elements: Element[], lang: string) => {
37 | const matchElement = filter.getTargetElement(elements)
38 |
39 | for (const elementName in matchElement) {
40 | if (Object.prototype.hasOwnProperty.call(matchElement, elementName)) {
41 | const target = matchElement[elementName]
42 | if (target) {
43 | const langCon = languageContentTranslate(elementName, lang)
44 | let trackStatus = true
45 |
46 | if (target.type == "Attr") {
47 | for (let i = 0; i < target.attrList.length; i++) {
48 | const attrNode = target.attrList[i]
49 | if (attrNode.Key == "no-track") {
50 | trackStatus = false
51 | continue
52 | }
53 | if (attrNode.Key == "text-content") {
54 | target.node.textContent = langCon
55 | continue
56 | }
57 | if (attrNode.Value == "" && target.node.getAttribute(attrNode.Key) != langCon) {
58 | target.node.setAttribute(attrNode.Key, langCon)
59 | }
60 | if (attrNode.Value != "" && target.node.getAttribute(attrNode.Key) != attrNode.Value) {
61 | target.node.setAttribute(attrNode.Key, attrNode.Value)
62 | }
63 | }
64 | }
65 | if (target.type == "Text" && target.node.textContent != langCon) {
66 | target.node.textContent = langCon
67 | }
68 | if (trackStatus && target.node && target.node.setAttribute) {
69 | target.node.setAttribute("figma-i18n-id", elementName)
70 | }
71 | }
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export enum RunMode {
2 | Dev,
3 | Prod,
4 | }
5 |
6 | export enum MenuTheme {
7 | Dark = "Dark",
8 | Light = "Light",
9 | }
--------------------------------------------------------------------------------
/src/ui/App.svelte:
--------------------------------------------------------------------------------
1 |
102 |
--------------------------------------------------------------------------------
/src/ui/Menu.svelte:
--------------------------------------------------------------------------------
1 |
40 |
41 |
42 |
47 |
89 |
90 | {#if openStatus}
91 |
92 | {#each langInfoList as langInfo}
93 |
96 | switchLanguage(langInfo.ID)}
97 | >
98 |
99 | {#if selectLangID == langInfo.ID}
100 |
109 |
113 |
114 | {/if}
115 |
116 |
{langInfo.name}
117 |
118 | {/each}
119 |
120 | {/if}
121 |
122 |
123 |
124 |
261 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/svelte/tsconfig.json",
3 |
4 | "include": ["src/**/*"],
5 | "exclude": ["node_modules/*", "__sapper__/*", "public/*"]
6 | }
--------------------------------------------------------------------------------
/yarn-error.log:
--------------------------------------------------------------------------------
1 | Arguments:
2 | D:\Program Files\nodejs\node.exe C:\Users\15005\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js
3 |
4 | PATH:
5 | C:\Program Files (x86)\Common Files\Oracle\Java\javapath;D:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Python39\Scripts\;C:\Python39\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\ProgramData\chocolatey\bin;D:\Program Files\Git\cmd;C:\Program Files (x86)\dotnet\;C:\Program Files\dotnet\;D:\Program Files\nodejs\;D:\Program Files\TortoiseGit\bin;C:\Program Files\Go\bin;D:\flutter\bin;D:\Program Files\mingw64\bin;D:\Program Files\PuTTY\;C:\Program Files (x86)\ZeroTier\One\;D:\Program Files (x86)\Tencent\微信web开发者工具\dll;C:\Users\15005\.cargo\bin;D:\Program Files\Ruby30-x64\bin;C:\Users\15005\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\GoLand 2021.3\bin;;D:\Program Files\Microsoft VS Code\bin;C:\Users\15005\AppData\Local\GitHubDesktop\bin;C:\Users\15005\AppData\Roaming\npm;C:\Users\15005\go\bin;;D:\Program Files\JetBrains\PyCharm 2022.1.2\bin;
6 |
7 | Yarn version:
8 | 1.22.19
9 |
10 | Node version:
11 | 16.14.0
12 |
13 | Platform:
14 | win32 x64
15 |
16 | Trace:
17 | Error: ENOENT: no such file or directory, copyfile 'C:\Users\15005\AppData\Local\Yarn\Cache\v6\npm-ansi-styles-4.3.0-edd803628ae71c04c85ae7a0906edad34b648937-integrity\node_modules\ansi-styles\index.js' -> 'D:\WorkCode\github_desktop\figma-i18n\node_modules\rollup-plugin-postcss\node_modules\ansi-styles\index.js'
18 |
19 | npm manifest:
20 | {
21 | "name": "figma-i18n",
22 | "version": "1.0.7",
23 | "description": "Powerful, intelligent and easy to use Figma internationalisation scripts.",
24 | "author": "afeyer",
25 | "private": true,
26 | "scripts": {
27 | "build": "rollup -c",
28 | "dev": "rollup -c -w",
29 | "start": "sirv public --no-clear",
30 | "check": "svelte-check --tsconfig ./tsconfig.json"
31 | },
32 | "devDependencies": {
33 | "@rollup/plugin-commonjs": "^17.0.0",
34 | "@rollup/plugin-node-resolve": "^11.0.0",
35 | "@rollup/plugin-typescript": "^8.0.0",
36 | "@tsconfig/svelte": "^2.0.0",
37 | "attractions": "^3.7.0",
38 | "postcss": "^8.4.7",
39 | "rollup": "^2.3.4",
40 | "rollup-plugin-banner2": "^1.2.2",
41 | "rollup-plugin-css-only": "^3.1.0",
42 | "rollup-plugin-livereload": "^2.0.0",
43 | "rollup-plugin-postcss": "^4.0.2",
44 | "rollup-plugin-svelte": "^7.0.0",
45 | "rollup-plugin-terser": "^7.0.0",
46 | "sass": "^1.49.9",
47 | "smelte": "^1.1.8",
48 | "svelte": "^3.0.0",
49 | "svelte-check": "^2.0.0",
50 | "svelte-preprocess": "^4.10.4",
51 | "tslib": "^2.0.0",
52 | "typescript": "^4.0.0"
53 | },
54 | "dependencies": {
55 | "sirv-cli": "^2.0.0"
56 | }
57 | }
58 |
59 | yarn manifest:
60 | No manifest
61 |
62 | Lockfile:
63 | No lockfile
64 |
--------------------------------------------------------------------------------