From 5e0fe575c9cf1b82ab7213809f7ce4d96f8e60ca Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Mon, 6 Nov 2017 15:48:47 -0800 Subject: [PATCH] remove deprecated docs translations --- docs-translations/cz/README.md | 99 -- .../de-DE/project/CODE_OF_CONDUCT.md | 43 - docs-translations/de-DE/project/README.md | 83 -- docs-translations/es/README.md | 71 - .../es/api/chrome-command-line-switches.md | 114 -- docs-translations/es/api/process.md | 47 - docs-translations/es/api/synopsis.md | 47 - .../development/atom-shell-vs-node-webkit.md | 34 - .../development/build-instructions-linux.md | 104 -- .../es/development/build-instructions-osx.md | 48 - .../es/development/build-system-overview.md | 35 - .../es/development/coding-style.md | 37 - .../source-code-directory-structure.md | 62 - .../es/project/CODE_OF_CONDUCT.md | 46 - docs-translations/es/project/README.md | 87 -- docs-translations/es/styleguide.md | 100 -- .../es/tutorial/application-distribution.md | 120 -- .../es/tutorial/application-packaging.md | 157 --- .../es/tutorial/debugging-main-process.md | 45 - .../desktop-environment-integration.md | 173 --- .../es/tutorial/devtools-extension.md | 49 - .../es/tutorial/online-offline-events.md | 80 -- docs-translations/es/tutorial/quick-start.md | 148 -- .../es/tutorial/supported-platforms.md | 30 - .../es/tutorial/using-native-node-modules.md | 57 - .../es/tutorial/using-pepper-flash-plugin.md | 55 - .../tutorial/using-selenium-and-webdriver.md | 72 - docs-translations/fr-FR/README.md | 91 -- docs-translations/fr-FR/faq/electron-faq.md | 129 -- docs-translations/fr-FR/styleguide.md | 101 -- .../fr-FR/tutorial/electron-versioning.md | 14 - .../fr-FR/tutorial/quick-start.md | 245 ---- docs-translations/fr-FR/tutorial/security.md | 75 - .../fr-FR/tutorial/supported-platforms.md | 26 - docs-translations/id/README.md | 84 -- .../id/tutorial/using-widevine-cdm-plugin.md | 92 -- .../id/tutorial/windows-store-guide.md | 170 --- docs-translations/it-IT/README.md | 100 -- docs-translations/it-IT/faq.md | 167 --- docs-translations/it-IT/styleguide.md | 246 ---- docs-translations/jp/README.md | 97 -- docs-translations/jp/api/accelerator.md | 43 - docs-translations/jp/api/app.md | 442 ------ docs-translations/jp/api/auto-updater.md | 85 -- .../jp/api/chrome-command-line-switches.md | 129 -- docs-translations/jp/api/clipboard.md | 103 -- docs-translations/jp/api/content-tracing.md | 117 -- docs-translations/jp/api/crash-reporter.md | 66 - docs-translations/jp/api/desktop-capturer.md | 65 - docs-translations/jp/api/dialog.md | 87 -- docs-translations/jp/api/download-item.md | 101 -- .../jp/api/environment-variables.md | 51 - docs-translations/jp/api/file-object.md | 29 - docs-translations/jp/api/frameless-window.md | 73 - docs-translations/jp/api/global-shortcut.md | 64 - docs-translations/jp/api/ipc-main.md | 79 -- docs-translations/jp/api/ipc-renderer.md | 66 - docs-translations/jp/api/menu-item.md | 50 - docs-translations/jp/api/menu.md | 338 ----- docs-translations/jp/api/native-image.md | 147 -- docs-translations/jp/api/power-monitor.md | 33 - .../jp/api/power-save-blocker.md | 42 - docs-translations/jp/api/process.md | 100 -- docs-translations/jp/api/protocol.md | 172 --- docs-translations/jp/api/remote.md | 124 -- docs-translations/jp/api/screen.md | 131 -- docs-translations/jp/api/session.md | 443 ------ docs-translations/jp/api/shell.md | 43 - docs-translations/jp/api/synopsis.md | 65 - .../jp/api/system-preferences.md | 93 -- docs-translations/jp/api/tray.md | 198 --- docs-translations/jp/api/web-frame.md | 100 -- docs-translations/jp/api/webview-tag.md | 744 ---------- docs-translations/jp/api/window-open.md | 59 - .../development/atom-shell-vs-node-webkit.md | 37 - .../development/build-instructions-linux.md | 188 --- .../jp/development/build-instructions-osx.md | 62 - .../jp/development/coding-style.md | 44 - docs-translations/jp/faq/electron-faq.md | 133 -- .../jp/tutorial/application-distribution.md | 108 -- .../jp/tutorial/application-packaging.md | 149 -- .../jp/tutorial/debugging-main-process.md | 70 - .../desktop-environment-integration.md | 261 ---- .../jp/tutorial/devtools-extension.md | 45 - .../jp/tutorial/electron-versioning.md | 11 - .../jp/tutorial/keyboard-shortcuts.md | 89 -- .../mac-app-store-submission-guide.md | 153 -- .../jp/tutorial/online-offline-events.md | 81 -- docs-translations/jp/tutorial/quick-start.md | 187 --- docs-translations/jp/tutorial/security.md | 43 - .../jp/tutorial/supported-platforms.md | 24 - .../jp/tutorial/testing-on-headless-ci.md | 43 - .../jp/tutorial/using-native-node-modules.md | 50 - .../jp/tutorial/using-pepper-flash-plugin.md | 51 - .../tutorial/using-selenium-and-webdriver.md | 159 --- .../jp/tutorial/using-widevine-cdm-plugin.md | 59 - docs-translations/ko-KR/README.md | 104 -- docs-translations/ko-KR/api/accelerator.md | 73 - docs-translations/ko-KR/api/app.md | 944 ------------- docs-translations/ko-KR/api/auto-updater.md | 130 -- .../ko-KR/api/browser-window-proxy.md | 52 - docs-translations/ko-KR/api/browser-window.md | 1177 ---------------- .../ko-KR/api/chrome-command-line-switches.md | 181 --- docs-translations/ko-KR/api/clipboard.md | 167 --- .../ko-KR/api/content-tracing.md | 152 -- docs-translations/ko-KR/api/crash-reporter.md | 89 -- .../ko-KR/api/desktop-capturer.md | 77 - docs-translations/ko-KR/api/dialog.md | 152 -- docs-translations/ko-KR/api/download-item.md | 151 -- .../ko-KR/api/environment-variables.md | 87 -- docs-translations/ko-KR/api/file-object.md | 32 - .../ko-KR/api/frameless-window.md | 133 -- .../ko-KR/api/global-shortcut.md | 75 - docs-translations/ko-KR/api/ipc-main.md | 101 -- docs-translations/ko-KR/api/ipc-renderer.md | 89 -- docs-translations/ko-KR/api/locales.md | 140 -- docs-translations/ko-KR/api/menu-item.md | 109 -- docs-translations/ko-KR/api/menu.md | 406 ------ docs-translations/ko-KR/api/native-image.md | 242 ---- docs-translations/ko-KR/api/net.md | 322 ----- docs-translations/ko-KR/api/power-monitor.md | 41 - .../ko-KR/api/power-save-blocker.md | 57 - docs-translations/ko-KR/api/process.md | 113 -- docs-translations/ko-KR/api/protocol.md | 288 ---- docs-translations/ko-KR/api/remote.md | 169 --- docs-translations/ko-KR/api/screen.md | 121 -- docs-translations/ko-KR/api/session.md | 674 --------- docs-translations/ko-KR/api/shell.md | 88 -- .../ko-KR/api/structures/bluetooth-device.md | 4 - .../ko-KR/api/structures/certificate.md | 9 - .../ko-KR/api/structures/cookie.md | 13 - .../api/structures/desktop-capturer-source.md | 12 - .../ko-KR/api/structures/display.md | 18 - .../api/structures/jump-list-category.md | 18 - .../ko-KR/api/structures/jump-list-item.md | 25 - .../api/structures/memory-usage-details.md | 5 - .../ko-KR/api/structures/rectangle.md | 6 - .../ko-KR/api/structures/shortcut-details.md | 14 - .../ko-KR/api/structures/task.md | 13 - .../ko-KR/api/structures/thumbar-button.md | 19 - .../ko-KR/api/structures/upload-data.md | 7 - docs-translations/ko-KR/api/synopsis.md | 95 -- .../ko-KR/api/system-preferences.md | 216 --- docs-translations/ko-KR/api/tray.md | 233 --- docs-translations/ko-KR/api/web-contents.md | 1254 ----------------- docs-translations/ko-KR/api/web-frame.md | 165 --- docs-translations/ko-KR/api/webview-tag.md | 867 ------------ docs-translations/ko-KR/api/window-open.md | 92 -- .../development/atom-shell-vs-node-webkit.md | 49 - .../development/build-instructions-linux.md | 205 --- .../development/build-instructions-osx.md | 65 - .../development/build-instructions-windows.md | 147 -- .../development/build-system-overview.md | 117 -- .../ko-KR/development/clang-format.md | 36 - .../ko-KR/development/coding-style.md | 57 - .../development/debug-instructions-macos.md | 125 -- .../development/debug-instructions-windows.md | 87 -- .../ko-KR/development/releasing.md | 110 -- .../development/setting-up-symbol-server.md | 52 - .../source-code-directory-structure.md | 88 -- docs-translations/ko-KR/faq.md | 156 -- .../ko-KR/project/CODE_OF_CONDUCT.md | 63 - .../ko-KR/project/CONTRIBUTING.md | 80 -- docs-translations/ko-KR/project/README.md | 80 -- docs-translations/ko-KR/styleguide.md | 240 ---- docs-translations/ko-KR/tutorial/about.md | 86 -- .../ko-KR/tutorial/accessibility.md | 51 - .../tutorial/application-distribution.md | 176 --- .../ko-KR/tutorial/application-packaging.md | 182 --- .../debugging-main-process-node-inspector.md | 128 -- .../tutorial/debugging-main-process-vscode.md | 38 - .../ko-KR/tutorial/debugging-main-process.md | 31 - .../desktop-environment-integration.md | 390 ----- .../ko-KR/tutorial/devtools-extension.md | 70 - .../ko-KR/tutorial/electron-versioning.md | 20 - .../mac-app-store-submission-guide.md | 261 ---- .../ko-KR/tutorial/offscreen-rendering.md | 52 - .../ko-KR/tutorial/online-offline-events.md | 89 -- .../tutorial/planned-breaking-changes.md | 7 - .../ko-KR/tutorial/quick-start.md | 249 ---- docs-translations/ko-KR/tutorial/repl.md | 26 - docs-translations/ko-KR/tutorial/security.md | 96 -- .../ko-KR/tutorial/supported-platforms.md | 30 - .../ko-KR/tutorial/testing-on-headless-ci.md | 58 - .../tutorial/using-native-node-modules.md | 92 -- .../tutorial/using-pepper-flash-plugin.md | 81 -- .../tutorial/using-selenium-and-webdriver.md | 170 --- .../tutorial/using-widevine-cdm-plugin.md | 82 -- .../ko-KR/tutorial/windows-store-guide.md | 155 -- docs-translations/nl/glossary.md | 97 -- docs-translations/nl/project/CONTRIBUTING.md | 74 - docs-translations/pt-BR/README.md | 89 -- docs-translations/pt-BR/api/accelerator.md | 46 - docs-translations/pt-BR/api/app.md | 449 ------ docs-translations/pt-BR/api/auto-updater.md | 85 -- docs-translations/pt-BR/api/browser-window.md | 620 -------- .../pt-BR/api/environment-variables.md | 91 -- docs-translations/pt-BR/api/file-object.md | 31 - docs-translations/pt-BR/api/power-monitor.md | 35 - .../pt-BR/api/power-save-blocker.md | 56 - docs-translations/pt-BR/api/process.md | 48 - docs-translations/pt-BR/api/shell.md | 43 - docs-translations/pt-BR/api/synopsis.md | 84 -- docs-translations/pt-BR/api/window-open.md | 96 -- .../development/build-instructions-linux.md | 152 -- .../development/build-instructions-osx.md | 70 - .../pt-BR/development/coding-style.md | 26 - .../source-code-directory-structure.md | 53 - docs-translations/pt-BR/faq.md | 139 -- .../pt-BR/project/CODE_OF_CONDUCT.md | 46 - .../pt-BR/project/CONTRIBUTING.md | 74 - docs-translations/pt-BR/project/README.md | 67 - docs-translations/pt-BR/styleguide.md | 77 - .../pt-BR/tutorial/accessibility.md | 33 - .../tutorial/application-distribution.md | 117 -- .../pt-BR/tutorial/application-packaging.md | 158 --- .../pt-BR/tutorial/debugging-main-process.md | 53 - .../desktop-environment-integration.md | 262 ---- .../pt-BR/tutorial/devtools-extension.md | 46 - .../pt-BR/tutorial/online-offline-events.md | 83 -- .../pt-BR/tutorial/quick-start.md | 200 --- docs-translations/pt-BR/tutorial/security.md | 54 - .../pt-BR/tutorial/supported-platforms.md | 22 - .../tutorial/using-native-node-modules.md | 68 - .../tutorial/using-pepper-flash-plugin.md | 62 - docs-translations/ru-RU/README.md | 82 -- .../tutorial/application-distribution.md | 127 -- .../ru-RU/tutorial/application-packaging.md | 180 --- .../mac-app-store-submission-guide.md | 152 -- .../ru-RU/tutorial/quick-start.md | 224 --- .../ru-RU/tutorial/supported-platforms.md | 24 - docs-translations/th-TH/README.md | 94 -- docs-translations/th-TH/faq.md | 142 -- docs-translations/th-TH/glossary.md | 157 --- docs-translations/th-TH/styleguide.md | 213 --- docs-translations/th-TH/tutorial/about.md | 57 - .../th-TH/tutorial/accessibility.md | 40 - .../th-TH/tutorial/quick-start.md | 244 ---- docs-translations/tr-TR/README.md | 86 -- docs-translations/tr-TR/api/accelerator.md | 49 - docs-translations/tr-TR/api/file-object.md | 29 - docs-translations/tr-TR/project/README.md | 85 -- docs-translations/tr-TR/styleguide.md | 95 -- .../tutorial/application-distribution.md | 178 --- .../tr-TR/tutorial/quick-start.md | 251 ---- .../tr-TR/tutorial/supported-platforms.md | 29 - docs-translations/uk-UA/README.md | 83 -- docs-translations/uk-UA/styleguide.md | 97 -- docs-translations/zh-CN/README.md | 102 -- docs-translations/zh-CN/api/accelerator.md | 62 - docs-translations/zh-CN/api/app.md | 856 ----------- docs-translations/zh-CN/api/auto-updater.md | 127 -- docs-translations/zh-CN/api/browser-window.md | 845 ----------- .../zh-CN/api/chrome-command-line-switches.md | 136 -- docs-translations/zh-CN/api/clipboard.md | 117 -- .../zh-CN/api/content-tracing.md | 130 -- docs-translations/zh-CN/api/crash-reporter.md | 66 - .../zh-CN/api/desktop-capturer.md | 64 - docs-translations/zh-CN/api/dialog.md | 146 -- docs-translations/zh-CN/api/download-item.md | 127 -- .../zh-CN/api/environment-variables.md | 53 - docs-translations/zh-CN/api/file-object.md | 30 - .../zh-CN/api/frameless-window.md | 87 -- .../zh-CN/api/global-shortcut.md | 71 - .../zh-CN/api/ipc-main-process.md | 68 - docs-translations/zh-CN/api/ipc-main.md | 89 -- docs-translations/zh-CN/api/ipc-renderer.md | 69 - docs-translations/zh-CN/api/menu-item.md | 106 -- docs-translations/zh-CN/api/menu.md | 306 ---- docs-translations/zh-CN/api/native-image.md | 148 -- docs-translations/zh-CN/api/net.md | 54 - docs-translations/zh-CN/api/notification.md | 109 -- docs-translations/zh-CN/api/power-monitor.md | 40 - .../zh-CN/api/power-save-blocker.md | 52 - docs-translations/zh-CN/api/process.md | 101 -- docs-translations/zh-CN/api/protocol.md | 276 ---- docs-translations/zh-CN/api/remote.md | 137 -- docs-translations/zh-CN/api/screen.md | 135 -- docs-translations/zh-CN/api/session.md | 498 ------- docs-translations/zh-CN/api/shell.md | 81 -- .../zh-CN/api/structures/bluetooth-device.md | 4 - .../api/structures/certificate-principal.md | 8 - .../zh-CN/api/structures/certificate.md | 12 - .../zh-CN/api/structures/cookie.md | 12 - .../zh-CN/api/structures/crash-report.md | 4 - .../api/structures/desktop-capturer-source.md | 7 - .../zh-CN/api/structures/display.md | 15 - .../zh-CN/api/structures/file-filter.md | 4 - .../api/structures/jump-list-category.md | 21 - .../zh-CN/api/structures/jump-list-item.md | 28 - .../api/structures/memory-usage-details.md | 5 - .../zh-CN/api/structures/mime-typed-buffer.md | 4 - .../api/structures/notification-action.md | 19 - .../zh-CN/api/structures/point.md | 4 - .../zh-CN/api/structures/rectangle.md | 6 - .../structures/remove-client-certificate.md | 5 - .../zh-CN/api/structures/remove-password.md | 15 - .../zh-CN/api/structures/scrubber-item.md | 4 - .../structures/segmented-control-segment.md | 5 - .../zh-CN/api/structures/shortcut-details.md | 15 - .../zh-CN/api/structures/size.md | 4 - .../zh-CN/api/structures/task.md | 14 - .../zh-CN/api/structures/thumbar-button.md | 21 - .../zh-CN/api/structures/upload-blob.md | 4 - .../zh-CN/api/structures/upload-data.md | 6 - .../api/structures/upload-file-system.md | 9 - .../zh-CN/api/structures/upload-file.md | 9 - .../zh-CN/api/structures/upload-raw-data.md | 4 - docs-translations/zh-CN/api/synopsis.md | 84 -- .../zh-CN/api/system-preferences.md | 215 --- docs-translations/zh-CN/api/tray.md | 231 --- docs-translations/zh-CN/api/web-contents.md | 1210 ---------------- docs-translations/zh-CN/api/web-frame.md | 101 -- docs-translations/zh-CN/api/webview-tag.md | 838 ----------- docs-translations/zh-CN/api/window-open.md | 33 - .../development/atom-shell-vs-node-webkit.md | 31 - .../development/build-instructions-linux.md | 199 --- .../development/build-instructions-osx.md | 62 - .../development/build-instructions-windows.md | 136 -- .../development/build-system-overview.md | 42 - .../zh-CN/development/clang-format.md | 27 - .../zh-CN/development/coding-style.md | 23 - .../development/debug-instructions-windows.md | 46 - .../debugging-instructions-macos.md | 97 -- .../development/setting-up-symbol-server.md | 38 - .../source-code-directory-structure.md | 53 - docs-translations/zh-CN/faq/electron-faq.md | 143 -- docs-translations/zh-CN/glossary.md | 98 -- .../zh-CN/project/CONTRIBUTING.md | 74 - docs-translations/zh-CN/project/README.md | 84 -- docs-translations/zh-CN/styleguide.md | 224 --- .../tutorial/application-distribution.md | 166 --- .../zh-CN/tutorial/application-packaging.md | 155 -- .../debugging-main-process-node-inspector.md | 123 -- .../tutorial/debugging-main-process-vscode.md | 35 - .../zh-CN/tutorial/debugging-main-process.md | 25 - .../desktop-environment-integration.md | 346 ----- .../zh-CN/tutorial/devtools-extension.md | 48 - .../zh-CN/tutorial/electron-versioning.md | 11 - .../zh-CN/tutorial/keyboard-shortcuts | 82 -- .../mac-app-store-submission-guide.md | 243 ---- .../zh-CN/tutorial/notifications.md | 57 - .../zh-CN/tutorial/offscreen-rendering.md | 44 - .../zh-CN/tutorial/online-offline-events.md | 85 -- .../zh-CN/tutorial/quick-start.md | 200 --- docs-translations/zh-CN/tutorial/repl.md | 22 - docs-translations/zh-CN/tutorial/security.md | 46 - .../zh-CN/tutorial/supported-platforms.md | 24 - .../zh-CN/tutorial/testing-on-headless-ci.md | 51 - .../tutorial/using-native-node-modules.md | 93 -- .../tutorial/using-pepper-flash-plugin.md | 78 - .../tutorial/using-selenium-and-webdriver.md | 158 --- .../tutorial/using-widevine-cdm-plugin.md | 70 - .../zh-CN/tutorial/windows-store-guide.md | 113 -- docs-translations/zh-TW/README.md | 72 - docs-translations/zh-TW/api/file-object.md | 28 - .../zh-TW/api/ipc-main-process.md | 69 - docs-translations/zh-TW/api/power-monitor.md | 36 - .../zh-TW/api/power-save-blocker.md | 47 - docs-translations/zh-TW/api/process.md | 23 - docs-translations/zh-TW/api/shell.md | 46 - .../zh-TW/api/structures/certificate.md | 9 - .../zh-TW/api/structures/cookie.md | 11 - .../zh-TW/api/structures/crash-report.md | 4 - .../api/structures/memory-usage-details.md | 5 - .../zh-TW/api/structures/point.md | 4 - .../zh-TW/api/structures/size.md | 4 - .../zh-TW/api/structures/task.md | 8 - .../zh-TW/api/structures/upload-blob.md | 4 - docs-translations/zh-TW/api/synopsis.md | 41 - .../zh-TW/development/v8-development.md | 11 - .../zh-TW/project/CODE_OF_CONDUCT.md | 46 - .../zh-TW/project/CONTRIBUTING.md | 74 - docs-translations/zh-TW/project/README.md | 77 - docs-translations/zh-TW/tutorial/about.md | 57 - .../zh-TW/tutorial/accessibility.md | 33 - .../tutorial/application-distribution.md | 108 -- .../zh-TW/tutorial/application-packaging.md | 150 -- .../debugging-main-process-node-inspector.md | 116 -- .../tutorial/debugging-main-process-vscode.md | 34 - .../zh-TW/tutorial/debugging-main-process.md | 71 - .../desktop-environment-integration.md | 349 ----- .../zh-TW/tutorial/devtools-extension.md | 46 - .../mac-app-store-submission-guide.md | 104 -- .../zh-TW/tutorial/online-offline-events.md | 80 -- .../zh-TW/tutorial/quick-start.md | 174 --- docs-translations/zh-TW/tutorial/repl.md | 24 - .../zh-TW/tutorial/supported-platforms.md | 26 - docs-translations/zh-TW/tutorial/updates.md | 82 -- .../tutorial/using-native-node-modules.md | 50 - .../tutorial/using-pepper-flash-plugin.md | 45 - .../tutorial/using-selenium-and-webdriver.md | 123 -- 392 files changed, 45142 deletions(-) delete mode 100644 docs-translations/cz/README.md delete mode 100644 docs-translations/de-DE/project/CODE_OF_CONDUCT.md delete mode 100644 docs-translations/de-DE/project/README.md delete mode 100644 docs-translations/es/README.md delete mode 100644 docs-translations/es/api/chrome-command-line-switches.md delete mode 100644 docs-translations/es/api/process.md delete mode 100644 docs-translations/es/api/synopsis.md delete mode 100644 docs-translations/es/development/atom-shell-vs-node-webkit.md delete mode 100644 docs-translations/es/development/build-instructions-linux.md delete mode 100644 docs-translations/es/development/build-instructions-osx.md delete mode 100644 docs-translations/es/development/build-system-overview.md delete mode 100644 docs-translations/es/development/coding-style.md delete mode 100644 docs-translations/es/development/source-code-directory-structure.md delete mode 100644 docs-translations/es/project/CODE_OF_CONDUCT.md delete mode 100644 docs-translations/es/project/README.md delete mode 100644 docs-translations/es/styleguide.md delete mode 100644 docs-translations/es/tutorial/application-distribution.md delete mode 100644 docs-translations/es/tutorial/application-packaging.md delete mode 100644 docs-translations/es/tutorial/debugging-main-process.md delete mode 100644 docs-translations/es/tutorial/desktop-environment-integration.md delete mode 100644 docs-translations/es/tutorial/devtools-extension.md delete mode 100644 docs-translations/es/tutorial/online-offline-events.md delete mode 100644 docs-translations/es/tutorial/quick-start.md delete mode 100644 docs-translations/es/tutorial/supported-platforms.md delete mode 100644 docs-translations/es/tutorial/using-native-node-modules.md delete mode 100644 docs-translations/es/tutorial/using-pepper-flash-plugin.md delete mode 100644 docs-translations/es/tutorial/using-selenium-and-webdriver.md delete mode 100644 docs-translations/fr-FR/README.md delete mode 100644 docs-translations/fr-FR/faq/electron-faq.md delete mode 100644 docs-translations/fr-FR/styleguide.md delete mode 100644 docs-translations/fr-FR/tutorial/electron-versioning.md delete mode 100644 docs-translations/fr-FR/tutorial/quick-start.md delete mode 100644 docs-translations/fr-FR/tutorial/security.md delete mode 100644 docs-translations/fr-FR/tutorial/supported-platforms.md delete mode 100644 docs-translations/id/README.md delete mode 100644 docs-translations/id/tutorial/using-widevine-cdm-plugin.md delete mode 100644 docs-translations/id/tutorial/windows-store-guide.md delete mode 100644 docs-translations/it-IT/README.md delete mode 100644 docs-translations/it-IT/faq.md delete mode 100644 docs-translations/it-IT/styleguide.md delete mode 100644 docs-translations/jp/README.md delete mode 100644 docs-translations/jp/api/accelerator.md delete mode 100644 docs-translations/jp/api/app.md delete mode 100644 docs-translations/jp/api/auto-updater.md delete mode 100644 docs-translations/jp/api/chrome-command-line-switches.md delete mode 100644 docs-translations/jp/api/clipboard.md delete mode 100644 docs-translations/jp/api/content-tracing.md delete mode 100644 docs-translations/jp/api/crash-reporter.md delete mode 100644 docs-translations/jp/api/desktop-capturer.md delete mode 100644 docs-translations/jp/api/dialog.md delete mode 100644 docs-translations/jp/api/download-item.md delete mode 100644 docs-translations/jp/api/environment-variables.md delete mode 100644 docs-translations/jp/api/file-object.md delete mode 100644 docs-translations/jp/api/frameless-window.md delete mode 100644 docs-translations/jp/api/global-shortcut.md delete mode 100644 docs-translations/jp/api/ipc-main.md delete mode 100644 docs-translations/jp/api/ipc-renderer.md delete mode 100644 docs-translations/jp/api/menu-item.md delete mode 100644 docs-translations/jp/api/menu.md delete mode 100644 docs-translations/jp/api/native-image.md delete mode 100644 docs-translations/jp/api/power-monitor.md delete mode 100644 docs-translations/jp/api/power-save-blocker.md delete mode 100644 docs-translations/jp/api/process.md delete mode 100644 docs-translations/jp/api/protocol.md delete mode 100644 docs-translations/jp/api/remote.md delete mode 100644 docs-translations/jp/api/screen.md delete mode 100644 docs-translations/jp/api/session.md delete mode 100644 docs-translations/jp/api/shell.md delete mode 100644 docs-translations/jp/api/synopsis.md delete mode 100644 docs-translations/jp/api/system-preferences.md delete mode 100644 docs-translations/jp/api/tray.md delete mode 100644 docs-translations/jp/api/web-frame.md delete mode 100644 docs-translations/jp/api/webview-tag.md delete mode 100644 docs-translations/jp/api/window-open.md delete mode 100644 docs-translations/jp/development/atom-shell-vs-node-webkit.md delete mode 100644 docs-translations/jp/development/build-instructions-linux.md delete mode 100644 docs-translations/jp/development/build-instructions-osx.md delete mode 100644 docs-translations/jp/development/coding-style.md delete mode 100644 docs-translations/jp/faq/electron-faq.md delete mode 100644 docs-translations/jp/tutorial/application-distribution.md delete mode 100644 docs-translations/jp/tutorial/application-packaging.md delete mode 100644 docs-translations/jp/tutorial/debugging-main-process.md delete mode 100644 docs-translations/jp/tutorial/desktop-environment-integration.md delete mode 100644 docs-translations/jp/tutorial/devtools-extension.md delete mode 100644 docs-translations/jp/tutorial/electron-versioning.md delete mode 100644 docs-translations/jp/tutorial/keyboard-shortcuts.md delete mode 100644 docs-translations/jp/tutorial/mac-app-store-submission-guide.md delete mode 100644 docs-translations/jp/tutorial/online-offline-events.md delete mode 100644 docs-translations/jp/tutorial/quick-start.md delete mode 100644 docs-translations/jp/tutorial/security.md delete mode 100644 docs-translations/jp/tutorial/supported-platforms.md delete mode 100644 docs-translations/jp/tutorial/testing-on-headless-ci.md delete mode 100644 docs-translations/jp/tutorial/using-native-node-modules.md delete mode 100644 docs-translations/jp/tutorial/using-pepper-flash-plugin.md delete mode 100644 docs-translations/jp/tutorial/using-selenium-and-webdriver.md delete mode 100644 docs-translations/jp/tutorial/using-widevine-cdm-plugin.md delete mode 100644 docs-translations/ko-KR/README.md delete mode 100644 docs-translations/ko-KR/api/accelerator.md delete mode 100644 docs-translations/ko-KR/api/app.md delete mode 100644 docs-translations/ko-KR/api/auto-updater.md delete mode 100644 docs-translations/ko-KR/api/browser-window-proxy.md delete mode 100644 docs-translations/ko-KR/api/browser-window.md delete mode 100644 docs-translations/ko-KR/api/chrome-command-line-switches.md delete mode 100644 docs-translations/ko-KR/api/clipboard.md delete mode 100644 docs-translations/ko-KR/api/content-tracing.md delete mode 100644 docs-translations/ko-KR/api/crash-reporter.md delete mode 100644 docs-translations/ko-KR/api/desktop-capturer.md delete mode 100644 docs-translations/ko-KR/api/dialog.md delete mode 100644 docs-translations/ko-KR/api/download-item.md delete mode 100644 docs-translations/ko-KR/api/environment-variables.md delete mode 100644 docs-translations/ko-KR/api/file-object.md delete mode 100644 docs-translations/ko-KR/api/frameless-window.md delete mode 100644 docs-translations/ko-KR/api/global-shortcut.md delete mode 100644 docs-translations/ko-KR/api/ipc-main.md delete mode 100644 docs-translations/ko-KR/api/ipc-renderer.md delete mode 100644 docs-translations/ko-KR/api/locales.md delete mode 100644 docs-translations/ko-KR/api/menu-item.md delete mode 100644 docs-translations/ko-KR/api/menu.md delete mode 100644 docs-translations/ko-KR/api/native-image.md delete mode 100644 docs-translations/ko-KR/api/net.md delete mode 100644 docs-translations/ko-KR/api/power-monitor.md delete mode 100644 docs-translations/ko-KR/api/power-save-blocker.md delete mode 100644 docs-translations/ko-KR/api/process.md delete mode 100644 docs-translations/ko-KR/api/protocol.md delete mode 100644 docs-translations/ko-KR/api/remote.md delete mode 100644 docs-translations/ko-KR/api/screen.md delete mode 100644 docs-translations/ko-KR/api/session.md delete mode 100644 docs-translations/ko-KR/api/shell.md delete mode 100644 docs-translations/ko-KR/api/structures/bluetooth-device.md delete mode 100644 docs-translations/ko-KR/api/structures/certificate.md delete mode 100644 docs-translations/ko-KR/api/structures/cookie.md delete mode 100644 docs-translations/ko-KR/api/structures/desktop-capturer-source.md delete mode 100644 docs-translations/ko-KR/api/structures/display.md delete mode 100644 docs-translations/ko-KR/api/structures/jump-list-category.md delete mode 100644 docs-translations/ko-KR/api/structures/jump-list-item.md delete mode 100644 docs-translations/ko-KR/api/structures/memory-usage-details.md delete mode 100644 docs-translations/ko-KR/api/structures/rectangle.md delete mode 100644 docs-translations/ko-KR/api/structures/shortcut-details.md delete mode 100644 docs-translations/ko-KR/api/structures/task.md delete mode 100644 docs-translations/ko-KR/api/structures/thumbar-button.md delete mode 100644 docs-translations/ko-KR/api/structures/upload-data.md delete mode 100644 docs-translations/ko-KR/api/synopsis.md delete mode 100644 docs-translations/ko-KR/api/system-preferences.md delete mode 100644 docs-translations/ko-KR/api/tray.md delete mode 100644 docs-translations/ko-KR/api/web-contents.md delete mode 100644 docs-translations/ko-KR/api/web-frame.md delete mode 100644 docs-translations/ko-KR/api/webview-tag.md delete mode 100644 docs-translations/ko-KR/api/window-open.md delete mode 100644 docs-translations/ko-KR/development/atom-shell-vs-node-webkit.md delete mode 100644 docs-translations/ko-KR/development/build-instructions-linux.md delete mode 100644 docs-translations/ko-KR/development/build-instructions-osx.md delete mode 100644 docs-translations/ko-KR/development/build-instructions-windows.md delete mode 100644 docs-translations/ko-KR/development/build-system-overview.md delete mode 100644 docs-translations/ko-KR/development/clang-format.md delete mode 100644 docs-translations/ko-KR/development/coding-style.md delete mode 100644 docs-translations/ko-KR/development/debug-instructions-macos.md delete mode 100644 docs-translations/ko-KR/development/debug-instructions-windows.md delete mode 100644 docs-translations/ko-KR/development/releasing.md delete mode 100644 docs-translations/ko-KR/development/setting-up-symbol-server.md delete mode 100644 docs-translations/ko-KR/development/source-code-directory-structure.md delete mode 100644 docs-translations/ko-KR/faq.md delete mode 100644 docs-translations/ko-KR/project/CODE_OF_CONDUCT.md delete mode 100644 docs-translations/ko-KR/project/CONTRIBUTING.md delete mode 100644 docs-translations/ko-KR/project/README.md delete mode 100644 docs-translations/ko-KR/styleguide.md delete mode 100644 docs-translations/ko-KR/tutorial/about.md delete mode 100644 docs-translations/ko-KR/tutorial/accessibility.md delete mode 100644 docs-translations/ko-KR/tutorial/application-distribution.md delete mode 100644 docs-translations/ko-KR/tutorial/application-packaging.md delete mode 100644 docs-translations/ko-KR/tutorial/debugging-main-process-node-inspector.md delete mode 100644 docs-translations/ko-KR/tutorial/debugging-main-process-vscode.md delete mode 100644 docs-translations/ko-KR/tutorial/debugging-main-process.md delete mode 100644 docs-translations/ko-KR/tutorial/desktop-environment-integration.md delete mode 100644 docs-translations/ko-KR/tutorial/devtools-extension.md delete mode 100644 docs-translations/ko-KR/tutorial/electron-versioning.md delete mode 100644 docs-translations/ko-KR/tutorial/mac-app-store-submission-guide.md delete mode 100644 docs-translations/ko-KR/tutorial/offscreen-rendering.md delete mode 100644 docs-translations/ko-KR/tutorial/online-offline-events.md delete mode 100644 docs-translations/ko-KR/tutorial/planned-breaking-changes.md delete mode 100644 docs-translations/ko-KR/tutorial/quick-start.md delete mode 100644 docs-translations/ko-KR/tutorial/repl.md delete mode 100644 docs-translations/ko-KR/tutorial/security.md delete mode 100644 docs-translations/ko-KR/tutorial/supported-platforms.md delete mode 100644 docs-translations/ko-KR/tutorial/testing-on-headless-ci.md delete mode 100644 docs-translations/ko-KR/tutorial/using-native-node-modules.md delete mode 100644 docs-translations/ko-KR/tutorial/using-pepper-flash-plugin.md delete mode 100644 docs-translations/ko-KR/tutorial/using-selenium-and-webdriver.md delete mode 100644 docs-translations/ko-KR/tutorial/using-widevine-cdm-plugin.md delete mode 100644 docs-translations/ko-KR/tutorial/windows-store-guide.md delete mode 100644 docs-translations/nl/glossary.md delete mode 100644 docs-translations/nl/project/CONTRIBUTING.md delete mode 100644 docs-translations/pt-BR/README.md delete mode 100644 docs-translations/pt-BR/api/accelerator.md delete mode 100644 docs-translations/pt-BR/api/app.md delete mode 100644 docs-translations/pt-BR/api/auto-updater.md delete mode 100644 docs-translations/pt-BR/api/browser-window.md delete mode 100644 docs-translations/pt-BR/api/environment-variables.md delete mode 100644 docs-translations/pt-BR/api/file-object.md delete mode 100644 docs-translations/pt-BR/api/power-monitor.md delete mode 100644 docs-translations/pt-BR/api/power-save-blocker.md delete mode 100644 docs-translations/pt-BR/api/process.md delete mode 100644 docs-translations/pt-BR/api/shell.md delete mode 100644 docs-translations/pt-BR/api/synopsis.md delete mode 100644 docs-translations/pt-BR/api/window-open.md delete mode 100644 docs-translations/pt-BR/development/build-instructions-linux.md delete mode 100644 docs-translations/pt-BR/development/build-instructions-osx.md delete mode 100644 docs-translations/pt-BR/development/coding-style.md delete mode 100644 docs-translations/pt-BR/development/source-code-directory-structure.md delete mode 100644 docs-translations/pt-BR/faq.md delete mode 100644 docs-translations/pt-BR/project/CODE_OF_CONDUCT.md delete mode 100644 docs-translations/pt-BR/project/CONTRIBUTING.md delete mode 100644 docs-translations/pt-BR/project/README.md delete mode 100644 docs-translations/pt-BR/styleguide.md delete mode 100644 docs-translations/pt-BR/tutorial/accessibility.md delete mode 100644 docs-translations/pt-BR/tutorial/application-distribution.md delete mode 100644 docs-translations/pt-BR/tutorial/application-packaging.md delete mode 100644 docs-translations/pt-BR/tutorial/debugging-main-process.md delete mode 100644 docs-translations/pt-BR/tutorial/desktop-environment-integration.md delete mode 100644 docs-translations/pt-BR/tutorial/devtools-extension.md delete mode 100644 docs-translations/pt-BR/tutorial/online-offline-events.md delete mode 100644 docs-translations/pt-BR/tutorial/quick-start.md delete mode 100644 docs-translations/pt-BR/tutorial/security.md delete mode 100644 docs-translations/pt-BR/tutorial/supported-platforms.md delete mode 100644 docs-translations/pt-BR/tutorial/using-native-node-modules.md delete mode 100644 docs-translations/pt-BR/tutorial/using-pepper-flash-plugin.md delete mode 100644 docs-translations/ru-RU/README.md delete mode 100644 docs-translations/ru-RU/tutorial/application-distribution.md delete mode 100644 docs-translations/ru-RU/tutorial/application-packaging.md delete mode 100644 docs-translations/ru-RU/tutorial/mac-app-store-submission-guide.md delete mode 100644 docs-translations/ru-RU/tutorial/quick-start.md delete mode 100644 docs-translations/ru-RU/tutorial/supported-platforms.md delete mode 100644 docs-translations/th-TH/README.md delete mode 100644 docs-translations/th-TH/faq.md delete mode 100644 docs-translations/th-TH/glossary.md delete mode 100644 docs-translations/th-TH/styleguide.md delete mode 100644 docs-translations/th-TH/tutorial/about.md delete mode 100644 docs-translations/th-TH/tutorial/accessibility.md delete mode 100644 docs-translations/th-TH/tutorial/quick-start.md delete mode 100644 docs-translations/tr-TR/README.md delete mode 100644 docs-translations/tr-TR/api/accelerator.md delete mode 100644 docs-translations/tr-TR/api/file-object.md delete mode 100644 docs-translations/tr-TR/project/README.md delete mode 100644 docs-translations/tr-TR/styleguide.md delete mode 100644 docs-translations/tr-TR/tutorial/application-distribution.md delete mode 100644 docs-translations/tr-TR/tutorial/quick-start.md delete mode 100644 docs-translations/tr-TR/tutorial/supported-platforms.md delete mode 100644 docs-translations/uk-UA/README.md delete mode 100644 docs-translations/uk-UA/styleguide.md delete mode 100644 docs-translations/zh-CN/README.md delete mode 100644 docs-translations/zh-CN/api/accelerator.md delete mode 100644 docs-translations/zh-CN/api/app.md delete mode 100644 docs-translations/zh-CN/api/auto-updater.md delete mode 100644 docs-translations/zh-CN/api/browser-window.md delete mode 100644 docs-translations/zh-CN/api/chrome-command-line-switches.md delete mode 100644 docs-translations/zh-CN/api/clipboard.md delete mode 100644 docs-translations/zh-CN/api/content-tracing.md delete mode 100644 docs-translations/zh-CN/api/crash-reporter.md delete mode 100644 docs-translations/zh-CN/api/desktop-capturer.md delete mode 100644 docs-translations/zh-CN/api/dialog.md delete mode 100644 docs-translations/zh-CN/api/download-item.md delete mode 100644 docs-translations/zh-CN/api/environment-variables.md delete mode 100644 docs-translations/zh-CN/api/file-object.md delete mode 100644 docs-translations/zh-CN/api/frameless-window.md delete mode 100644 docs-translations/zh-CN/api/global-shortcut.md delete mode 100644 docs-translations/zh-CN/api/ipc-main-process.md delete mode 100644 docs-translations/zh-CN/api/ipc-main.md delete mode 100644 docs-translations/zh-CN/api/ipc-renderer.md delete mode 100644 docs-translations/zh-CN/api/menu-item.md delete mode 100644 docs-translations/zh-CN/api/menu.md delete mode 100644 docs-translations/zh-CN/api/native-image.md delete mode 100644 docs-translations/zh-CN/api/net.md delete mode 100644 docs-translations/zh-CN/api/notification.md delete mode 100644 docs-translations/zh-CN/api/power-monitor.md delete mode 100644 docs-translations/zh-CN/api/power-save-blocker.md delete mode 100644 docs-translations/zh-CN/api/process.md delete mode 100644 docs-translations/zh-CN/api/protocol.md delete mode 100644 docs-translations/zh-CN/api/remote.md delete mode 100644 docs-translations/zh-CN/api/screen.md delete mode 100644 docs-translations/zh-CN/api/session.md delete mode 100644 docs-translations/zh-CN/api/shell.md delete mode 100644 docs-translations/zh-CN/api/structures/bluetooth-device.md delete mode 100644 docs-translations/zh-CN/api/structures/certificate-principal.md delete mode 100644 docs-translations/zh-CN/api/structures/certificate.md delete mode 100644 docs-translations/zh-CN/api/structures/cookie.md delete mode 100644 docs-translations/zh-CN/api/structures/crash-report.md delete mode 100644 docs-translations/zh-CN/api/structures/desktop-capturer-source.md delete mode 100644 docs-translations/zh-CN/api/structures/display.md delete mode 100644 docs-translations/zh-CN/api/structures/file-filter.md delete mode 100644 docs-translations/zh-CN/api/structures/jump-list-category.md delete mode 100644 docs-translations/zh-CN/api/structures/jump-list-item.md delete mode 100644 docs-translations/zh-CN/api/structures/memory-usage-details.md delete mode 100644 docs-translations/zh-CN/api/structures/mime-typed-buffer.md delete mode 100644 docs-translations/zh-CN/api/structures/notification-action.md delete mode 100644 docs-translations/zh-CN/api/structures/point.md delete mode 100644 docs-translations/zh-CN/api/structures/rectangle.md delete mode 100644 docs-translations/zh-CN/api/structures/remove-client-certificate.md delete mode 100644 docs-translations/zh-CN/api/structures/remove-password.md delete mode 100644 docs-translations/zh-CN/api/structures/scrubber-item.md delete mode 100644 docs-translations/zh-CN/api/structures/segmented-control-segment.md delete mode 100644 docs-translations/zh-CN/api/structures/shortcut-details.md delete mode 100644 docs-translations/zh-CN/api/structures/size.md delete mode 100644 docs-translations/zh-CN/api/structures/task.md delete mode 100644 docs-translations/zh-CN/api/structures/thumbar-button.md delete mode 100644 docs-translations/zh-CN/api/structures/upload-blob.md delete mode 100644 docs-translations/zh-CN/api/structures/upload-data.md delete mode 100644 docs-translations/zh-CN/api/structures/upload-file-system.md delete mode 100644 docs-translations/zh-CN/api/structures/upload-file.md delete mode 100644 docs-translations/zh-CN/api/structures/upload-raw-data.md delete mode 100644 docs-translations/zh-CN/api/synopsis.md delete mode 100644 docs-translations/zh-CN/api/system-preferences.md delete mode 100644 docs-translations/zh-CN/api/tray.md delete mode 100644 docs-translations/zh-CN/api/web-contents.md delete mode 100644 docs-translations/zh-CN/api/web-frame.md delete mode 100644 docs-translations/zh-CN/api/webview-tag.md delete mode 100644 docs-translations/zh-CN/api/window-open.md delete mode 100644 docs-translations/zh-CN/development/atom-shell-vs-node-webkit.md delete mode 100644 docs-translations/zh-CN/development/build-instructions-linux.md delete mode 100644 docs-translations/zh-CN/development/build-instructions-osx.md delete mode 100644 docs-translations/zh-CN/development/build-instructions-windows.md delete mode 100644 docs-translations/zh-CN/development/build-system-overview.md delete mode 100644 docs-translations/zh-CN/development/clang-format.md delete mode 100644 docs-translations/zh-CN/development/coding-style.md delete mode 100644 docs-translations/zh-CN/development/debug-instructions-windows.md delete mode 100644 docs-translations/zh-CN/development/debugging-instructions-macos.md delete mode 100644 docs-translations/zh-CN/development/setting-up-symbol-server.md delete mode 100644 docs-translations/zh-CN/development/source-code-directory-structure.md delete mode 100644 docs-translations/zh-CN/faq/electron-faq.md delete mode 100644 docs-translations/zh-CN/glossary.md delete mode 100644 docs-translations/zh-CN/project/CONTRIBUTING.md delete mode 100644 docs-translations/zh-CN/project/README.md delete mode 100644 docs-translations/zh-CN/styleguide.md delete mode 100644 docs-translations/zh-CN/tutorial/application-distribution.md delete mode 100644 docs-translations/zh-CN/tutorial/application-packaging.md delete mode 100644 docs-translations/zh-CN/tutorial/debugging-main-process-node-inspector.md delete mode 100644 docs-translations/zh-CN/tutorial/debugging-main-process-vscode.md delete mode 100644 docs-translations/zh-CN/tutorial/debugging-main-process.md delete mode 100644 docs-translations/zh-CN/tutorial/desktop-environment-integration.md delete mode 100644 docs-translations/zh-CN/tutorial/devtools-extension.md delete mode 100644 docs-translations/zh-CN/tutorial/electron-versioning.md delete mode 100644 docs-translations/zh-CN/tutorial/keyboard-shortcuts delete mode 100644 docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md delete mode 100644 docs-translations/zh-CN/tutorial/notifications.md delete mode 100644 docs-translations/zh-CN/tutorial/offscreen-rendering.md delete mode 100644 docs-translations/zh-CN/tutorial/online-offline-events.md delete mode 100644 docs-translations/zh-CN/tutorial/quick-start.md delete mode 100644 docs-translations/zh-CN/tutorial/repl.md delete mode 100644 docs-translations/zh-CN/tutorial/security.md delete mode 100644 docs-translations/zh-CN/tutorial/supported-platforms.md delete mode 100644 docs-translations/zh-CN/tutorial/testing-on-headless-ci.md delete mode 100644 docs-translations/zh-CN/tutorial/using-native-node-modules.md delete mode 100644 docs-translations/zh-CN/tutorial/using-pepper-flash-plugin.md delete mode 100644 docs-translations/zh-CN/tutorial/using-selenium-and-webdriver.md delete mode 100644 docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md delete mode 100644 docs-translations/zh-CN/tutorial/windows-store-guide.md delete mode 100644 docs-translations/zh-TW/README.md delete mode 100644 docs-translations/zh-TW/api/file-object.md delete mode 100644 docs-translations/zh-TW/api/ipc-main-process.md delete mode 100644 docs-translations/zh-TW/api/power-monitor.md delete mode 100644 docs-translations/zh-TW/api/power-save-blocker.md delete mode 100644 docs-translations/zh-TW/api/process.md delete mode 100644 docs-translations/zh-TW/api/shell.md delete mode 100644 docs-translations/zh-TW/api/structures/certificate.md delete mode 100644 docs-translations/zh-TW/api/structures/cookie.md delete mode 100644 docs-translations/zh-TW/api/structures/crash-report.md delete mode 100644 docs-translations/zh-TW/api/structures/memory-usage-details.md delete mode 100644 docs-translations/zh-TW/api/structures/point.md delete mode 100644 docs-translations/zh-TW/api/structures/size.md delete mode 100644 docs-translations/zh-TW/api/structures/task.md delete mode 100644 docs-translations/zh-TW/api/structures/upload-blob.md delete mode 100644 docs-translations/zh-TW/api/synopsis.md delete mode 100644 docs-translations/zh-TW/development/v8-development.md delete mode 100644 docs-translations/zh-TW/project/CODE_OF_CONDUCT.md delete mode 100644 docs-translations/zh-TW/project/CONTRIBUTING.md delete mode 100644 docs-translations/zh-TW/project/README.md delete mode 100644 docs-translations/zh-TW/tutorial/about.md delete mode 100644 docs-translations/zh-TW/tutorial/accessibility.md delete mode 100644 docs-translations/zh-TW/tutorial/application-distribution.md delete mode 100644 docs-translations/zh-TW/tutorial/application-packaging.md delete mode 100644 docs-translations/zh-TW/tutorial/debugging-main-process-node-inspector.md delete mode 100644 docs-translations/zh-TW/tutorial/debugging-main-process-vscode.md delete mode 100644 docs-translations/zh-TW/tutorial/debugging-main-process.md delete mode 100644 docs-translations/zh-TW/tutorial/desktop-environment-integration.md delete mode 100644 docs-translations/zh-TW/tutorial/devtools-extension.md delete mode 100644 docs-translations/zh-TW/tutorial/mac-app-store-submission-guide.md delete mode 100644 docs-translations/zh-TW/tutorial/online-offline-events.md delete mode 100644 docs-translations/zh-TW/tutorial/quick-start.md delete mode 100644 docs-translations/zh-TW/tutorial/repl.md delete mode 100644 docs-translations/zh-TW/tutorial/supported-platforms.md delete mode 100644 docs-translations/zh-TW/tutorial/updates.md delete mode 100644 docs-translations/zh-TW/tutorial/using-native-node-modules.md delete mode 100644 docs-translations/zh-TW/tutorial/using-pepper-flash-plugin.md delete mode 100644 docs-translations/zh-TW/tutorial/using-selenium-and-webdriver.md diff --git a/docs-translations/cz/README.md b/docs-translations/cz/README.md deleted file mode 100644 index fe7f6eddfa33..000000000000 --- a/docs-translations/cz/README.md +++ /dev/null @@ -1,99 +0,0 @@ -Ujistěte se, že budete používat dokumenty, které jsou určeny pro verzi Electronu, který používáte. -Číslo verze by měla být součástí adresy URL stránky. Pokud tomu tak není, pravděpodobně používáte -dokumentaci vývojové větve, která může obsahovat změny v API, a ty nejsou kompatibilní s vaší verzí Electronu. -Chcete-li zobrazit starší verze dokumentace, můžete je procházet podle tagů na GitHub, a to otevřením "přepínač větve / tagu", který odpovídá vaší verzi. - -## FAQ / Často kladené dotazy - -There are questions that are asked quite often. Check this out before creating -an issue: - -* [Electron FAQ](faq.md) - -## Návody - -* [Supported Platforms](tutorial/supported-platforms.md) -* [Security](tutorial/security.md) -* [Electron Versioning](tutorial/electron-versioning.md) -* [Application Distribution](tutorial/application-distribution.md) -* [Mac App Store Submission Guide](tutorial/mac-app-store-submission-guide.md) -* [Windows Store Guide](tutorial/windows-store-guide.md) -* [Application Packaging](tutorial/application-packaging.md) -* [Using Native Node Modules](tutorial/using-native-node-modules.md) -* [Debugging Main Process](tutorial/debugging-main-process.md) -* [Using Selenium and WebDriver](tutorial/using-selenium-and-webdriver.md) -* [DevTools Extension](tutorial/devtools-extension.md) -* [Using Pepper Flash Plugin](tutorial/using-pepper-flash-plugin.md) -* [Using Widevine CDM Plugin](tutorial/using-widevine-cdm-plugin.md) -* [Testing on Headless CI Systems (Travis, Jenkins)](tutorial/testing-on-headless-ci.md) -* [Offscreen Rendering](tutorial/offscreen-rendering.md) - -## Tutoriály - -* [Quick Start](tutorial/quick-start.md) -* [Desktop Environment Integration](tutorial/desktop-environment-integration.md) -* [Online/Offline Event Detection](tutorial/online-offline-events.md) -* [REPL](tutorial/repl.md) - -## API Reference - -* [Synopsis](api/synopsis.md) -* [Process Object](api/process.md) -* [Supported Chrome Command Line Switches](api/chrome-command-line-switches.md) -* [Environment Variables](api/environment-variables.md) - -### Volitelné DOM Elementy: - -* [`File` Object](api/file-object.md) -* [`` Tag](api/web-view-tag.md) -* [`window.open` Function](api/window-open.md) - -### Moduly pro Main Process: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [net](api/net.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [systemPreferences](api/system-preferences.md) -* [Tray](api/tray.md) -* [webContents](api/web-contents.md) - -### Moduly pro Renderer Process (Web Page): - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### Moduly pro Both Processes: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## Vývoj - -* [Coding Style](development/coding-style.md) -* [Using clang-format on C++ Code](development/clang-format.md) -* [Source Code Directory Structure](development/source-code-directory-structure.md) -* [Technical Differences to NW.js (formerly node-webkit)](development/atom-shell-vs-node-webkit.md) -* [Build System Overview](development/build-system-overview.md) -* [Build Instructions (macOS)](development/build-instructions-osx.md) -* [Build Instructions (Windows)](development/build-instructions-windows.md) -* [Build Instructions (Linux)](development/build-instructions-linux.md) -* [Debug Instructions (macOS)](development/debugging-instructions-macos.md) -* [Debug Instructions (Windows)](development/debug-instructions-windows.md) -* [Setting Up Symbol Server in debugger](development/setting-up-symbol-server.md) -* [Documentation Styleguide](styleguide.md) diff --git a/docs-translations/de-DE/project/CODE_OF_CONDUCT.md b/docs-translations/de-DE/project/CODE_OF_CONDUCT.md deleted file mode 100644 index 2bd4d634da0e..000000000000 --- a/docs-translations/de-DE/project/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,43 +0,0 @@ -# Vereinbarung über Verhaltenskodex für Mitwirkende - -## Unsere Verpflichtung - -Im Interesse der Förderung eines offenen und einladenden Umfeldes wollen wir uns als Teilnehmer und Verantwortliche unseres Projektes verpflichten die Teilnahme an dem Projekt und unserer Gemeinschaft zu einer belästigungsfreien Erfahrung zu machen – unabhängig von Alter, Körpergröße, Behinderung, ethnischer Zuordnung, geschlechtlicher Identität und Ausdruck, Erfahrungsstufe, Nationalität, persönlicher Erscheinung, Rasse, Religion oder sexueller Identität oder Orientierung. - -## Unsere Standards - -Beispiele für Verhaltensweisen, welche dazu beitragen ein positives Umfeld zu erzeugen, beinhalten: - -* Die Verwendung von einladenden und einbindenden Formulierungen -* Abweichenden Ansichten und Erfahrungen wird Respekt entgegengebracht -* Konstruktive Kritik wird höflich entgegengenommen -* Fokussierung auf das, was das Beste ist für die Gemeinschaft -* Verständnis zeigen gegenüber anderen Mitgliedern der Gemeinschaft - -Beispiele für nicht akzeptables Verhalten beinhalten: - -* Die Verwendung sexualisierter Sprache, Bilder oder Symbolik sowie unerwünschte Versuche sexueller Anbahnung -* Beleidigende / abwertende Kommentare, persönliche oder politische Angriffe, Nutzung des Internets für unbilliges Verhalten -* Öffentliche oder private Belästigungen -* Das Veröffentlichen von privaten Informationen Anderer, wie zum Beispiel physische oder elektronische Adressen, ohne deren ausdrückliche Erlaubnis -* Anderes Verhalten, welches in einem professionellen Umfeld begründet als unangemessen betrachtet werden kann - -## Unsere Verantwortlichkeiten - -Die Projektverantwortlichen sind verantwortlich dafür, die Standards für ein akzeptables Benehmen klarzustellen und es wird von ihnen erwartet, dass sie als Reaktion auf jegliches inakzeptables Verhalten passende und faire berichtigende Maßnahmen ergreifen. - -Die Projektverantwortlichen haben das Recht und die Verantwortung, Kommentare, Commits, Code, Wiki-Bearbeitungen, Support-Tickets und andere Beiträge, die nicht mit diesem Verhaltenskodex vereinbar sind, zu entfernen, zu bearbeiten oder abzulehnen, und jene Mitwirkende für Verhaltensweisen, die sie für unangemessen, bedrohend, beleidigend oder verletzend halten, zeitweilig oder dauerhaft zu sperren. - -## Geltungsbereich - -Dieser Verhaltenskodex gilt sowohl innerhalb des Projektbereichs als auch in öffentlichen Bereichen, wenn eine Person das Projekt oder seine Gemeinschaft repräsentiert. Beispiele für die Repräsentation eines Projektes oder der Gemeinschaft beinhalten die Verwendung einer offiziellen Projekt-E-Mail-Adresse, das Versenden von Nachrichten über einen öffentlichen Social-Media-Account oder das Handeln als Repräsentant während einer Online- oder Offline-Veranstaltung. Der Begriff "Repräsentation des Projektes" kann durch die Projektenverantwortlichen weiter ausformuliert und klargestellt werden. - -## Umsetzung - -Fälle von missbräuchlichem, belästigendem oder anderweitig nicht akzeptablem Verhalten können dem Projektteam unter [EMAIL ADRESSE EINFÜGEN] gemeldet werden. Alle Beschwerden werden geprüft und untersucht und werden zu einer Antwort führen, die angesichts der Umstände für notwendig und angemessen gehalten wird. Das Projektteam ist verpflichtet, über diejenigen, die Vorfälle gemeldet haben, Verschwiegenheit zu wahren. Weitere Einzelheiten zu speziellen Umsetzungsgrundsätzen können gesondert mitgeteilt werden. - -Projektverantwortliche, welche den Verhaltenskodex nicht befolgen, oder nicht nach bestem Wissen und Glauben für dessen Einhaltung sorgen, können sich vorübergehenden oder dauerhaften Auswirkungen gegenübersehen, die durch andere Mitglieder der Projektleitung bestimmt wurden. - -## Bezug - -Dieser Verhaltenskodex basiert auf dem Contributor Covenant, Version 1.4, verfügbar unter http://contributor-covenant.org/version/1/4/de/ \ No newline at end of file diff --git a/docs-translations/de-DE/project/README.md b/docs-translations/de-DE/project/README.md deleted file mode 100644 index 328d9b19883e..000000000000 --- a/docs-translations/de-DE/project/README.md +++ /dev/null @@ -1,83 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/bc56v83355fi3369/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron/branch/master) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -:memo: Verfügbare Sprachen: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) | [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW/project/README.md) | [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es/project/README.md) | [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR/project/README.md) | [German](https://github.com/electron/electron/tree/master/docs-translations/de-DE/project/README.md) - -Electron ermöglicht die Entwicklung plattformunabhängiger Desktopanwendungen mit JavaScript, HTML und CSS. Electron basiert auf [Node.js](https://nodejs.org/) und -[Chromium](http://www.chromium.org) und wird vom [Editor Atom](https://github.com/atom/atom) und vielen anderen [Apps](https://electron.atom.io/apps) verwendet. - -Folge [@ElectronJS](https://twitter.com/electronjs) auf Twitter, um stets auf dem neuesten Stand zu sein und Informationen zu Electron sofort zu erhalten. - -Dieses Projekt hält sich an den *Contributor Covenant*, einem [Verhaltenskodex](https://github.com/electron/electron/tree/master/docs-translations/de-DE/project/CODE_OF_CONDUCT.md) für Open Source Projekte. -Beim Mitwirken an Electron wird vorausgesetzt, dass sich an diesen Kodex gehalten wird. Unangebrachtes Verhalten kann bei electron@github.com gemeldet werden. - -## Downloads - -Binaries von Electron können mit -[`npm`](https://docs.npmjs.com/) -installiert werden: - -```sh -# Als Dependency für die Entwicklung installieren -npm install electron --save-dev - -# `electron` Befehl global im $PATH installieren -npm install electron -g -``` - -Auf der [Release Page](https://github.com/electron/electron/releases) können Binaries, Debugging Symbole und mehr gefunden werden. - -### Mirrors - -- [China](https://npm.taobao.org/mirrors/electron) - -## Dokumentation - -Guides und API Dokumentation befinden sich in der [Docs](https://github.com/electron/electron/tree/master/docs) Directory. Sie enthält auch Dokumente, die beschreiben, wie Electron kompiliert wird und wie mitgearbeitet werden kann. - -## Übersetzungen der Dokumentation - -- [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [Japanese](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es) -- [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [Thai](https://github.com/electron/electron/tree/master/docs-translations/th-TH) -- [Ukrainian](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [Russian](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [French](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) -- [Indonesian](https://github.com/electron/electron/tree/master/docs-translations/id) - -## Quick Start - -Um eine minimale Version einer Electron App in Aktion zu sehen, kann -[`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) geklont und ausgeführt werden. - -## Community - -Für Fragen und Interaktion mit der Community stehen folgende Optionen zur Verfügung: -- [`electron`](http://discuss.atom.io/c/electron) Kategorie im Atom Forum -- `#atom-shell` Channel auf Freenode -- [`Atom`](http://atom-slack.herokuapp.com/) Channel bei Slack -- [`electron-ru`](https://telegram.me/electron_ru) *(Russisch)* -- [`electron-br`](https://electron-br.slack.com) *(Brasilianisch Portugiesisch)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Koreanisch)* -- [`electron-jp`](https://electron-jp.slack.com) *(Japanisch)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(Türkisch)* -- [`electron-id`](https://electron-id.slack.com) *(Indonesisch)* - -Auf [awesome-electron](https://github.com/sindresorhus/awesome-electron) -findest du eine Sammlung an nützlichen Beispielanwendungen, Tools und Ressourcen. - -## Lizenz - -[MIT](https://github.com/electron/electron/blob/master/LICENSE) - -Bei der Benutzung von Electron oder anderen GitHub Logos ist sich an die [GitHub Logo Guidelines](https://github.com/logos) zu halten. - diff --git a/docs-translations/es/README.md b/docs-translations/es/README.md deleted file mode 100644 index 8badcf5d2fc6..000000000000 --- a/docs-translations/es/README.md +++ /dev/null @@ -1,71 +0,0 @@ -## Guías - -* [Plataformas Soportadas](tutorial/supported-platforms.md) -* [Distribución de la Aplicación](tutorial/application-distribution.md) -* [Empaquetamiento de la Aplicación](tutorial/application-packaging.md) -* [Utilizando Módulos Node Nativos](tutorial/using-native-node-modules.md) -* [Depurando el Proceso Principal](tutorial/debugging-main-process.md) -* [Utilizando Selenium y WebDriver](tutorial/using-selenium-and-webdriver.md) -* [Extensión DevTools](tutorial/devtools-extension.md) -* [Utilizando el plugin Pepper Flash](tutorial/using-pepper-flash-plugin.md) - -## Tutoriales - -* [Introducción](tutorial/quick-start.md) -* [Integración con el entorno de escritorio](tutorial/desktop-environment-integration.md) -* [Detección del evento en línea/fuera de línea](tutorial/online-offline-events.md) - -## Referencias a la API - -* [Sinopsis](api/synopsis.md) -* [Proceso](api/process.md) -* [Parámetros CLI soportados (Chrome)](api/chrome-command-line-switches.md) - -### Elementos DOM personalizados: - -* [Objeto `File`](../../docs/api/file-object.md) -* [Etiqueta ``](../../docs/api/webview-tag.md) -* [Función `window.open`](../../docs/api/window-open.md) - -### Módulos del Proceso Principal: - -* [app](../../docs/api/app.md) -* [auto-updater](../../docs/api/auto-updater.md) -* [browser-window](../../docs/api/browser-window.md) -* [content-tracing](../../docs/api/content-tracing.md) -* [dialog](../../docs/api/dialog.md) -* [global-shortcut](../../docs/api/global-shortcut.md) -* [ipc (proceso principal)](../../docs/api/ipc-main.md) -* [menu](../../docs/api/menu.md) -* [menu-item](../../docs/api/menu-item.md) -* [power-monitor](../../docs/api/power-monitor.md) -* [power-save-blocker](../../docs/api/power-save-blocker.md) -* [protocol](../../docs/api/protocol.md) -* [session](../../docs/api/session.md) -* [web-contents](../../docs/api/web-contents.md) -* [tray](../../docs/api/tray.md) - -### Módulos del proceso de renderizado (Página Web): - -* [ipc (renderizador)](../../docs/api/ipc-renderer.md) -* [remote](../../docs/api/remote.md) -* [web-frame](../../docs/api/web-frame.md) - -### Módulos de Ambos Procesos: - -* [clipboard](../../docs/api/clipboard.md) -* [crash-reporter](../../docs/api/crash-reporter.md) -* [native-image](../../docs/api/native-image.md) -* [screen](../../docs/api/screen.md) -* [shell](../../docs/api/shell.md) - -## Desarrollo - -* [Guía de Estilo](development/coding-style.md) -* [Estructura de los directorios del Código Fuente](development/source-code-directory-structure.md) -* [Diferencias Técnicas con NW.js (anteriormente conocido como node-webkit)](development/atom-shell-vs-node-webkit.md) -* [Repaso del Sistema de Compilación](development/build-system-overview.md) -* [Instrucciones de Compilación (macOS)](development/build-instructions-osx.md) -* [Instrucciones de Compilación (Windows)](development/build-instructions-windows.md) -* [Instrucciones de Compilación (Linux)](development/build-instructions-linux.md) -* [Configurando un Servidor de Símbolos en el depurador](development/setting-up-symbol-server.md) diff --git a/docs-translations/es/api/chrome-command-line-switches.md b/docs-translations/es/api/chrome-command-line-switches.md deleted file mode 100644 index 2160da565c5a..000000000000 --- a/docs-translations/es/api/chrome-command-line-switches.md +++ /dev/null @@ -1,114 +0,0 @@ -# Parámetros CLI soportados (Chrome) - -Esta página lista las líneas de comandos usadas por el navegador Chrome que también son -soportadas por Electron. Puedes usar [app.commandLine.appendSwitch][append-switch] para -anexarlas en el script principal de tu aplicación antes de que el evento [ready][ready] del -módulo [app][app] sea emitido: - -```javascript -var app = require('app') -app.commandLine.appendSwitch('remote-debugging-port', '8315') -app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1') - -app.on('ready', function () { - // Your code here -}) -``` - -## --client-certificate=`path` - -Establece el `path` del archivo de certificado del cliente. - -## --ignore-connections-limit=`domains` - -Ignora el límite de conexiones para la lista de `domains` separados por `,`. - -## --disable-http-cache - -Deshabilita la caché del disco para las peticiones HTTP. - -## --remote-debugging-port=`port` - -Habilita la depuración remota a través de HTTP en el puerto especificado. - -## --proxy-server=`address:port` - -Usa un servidor proxy especificado, que sobreescribe la configuración del sistema. -Este cambio solo afecta peticiones HTTP y HTTPS. - -## --proxy-pac-url=`url` - -Utiliza el script PAC en la `url` especificada. - -## --no-proxy-server - -No usa un servidor proxy y siempre establece conexiones directas. Anula cualquier -otra bandera de servidor proxy bandera que se pase. - -## --host-rules=`rules` - -Una lista separada por comas de `rules` (reglas) que controlan cómo se asignan los -nombres de host. - -Por ejemplo: - -* `MAP * 127.0.0.1` Obliga a todos los nombres de host a ser asignados a 127.0.0.1 -* `MAP *.google.com proxy` Obliga todos los subdominios google.com a resolverse con - "proxy". -* `MAP test.com [::1]:77` Obliga a resolver "test.com" con un bucle invertido de IPv6. - También obligará a que el puerto de la dirección respuesta sea 77. -* `MAP * baz, EXCLUDE www.google.com` Reasigna todo a "baz", excepto a "www.google.com". - -Estas asignaciones especifican el host final en una petición de red (Anfitrión de la conexión TCP -y de resolución de conexión directa, y el `CONNECT` en una conexión proxy HTTP, y el host final de -la conexión proxy `SOCKS`). - -## --host-resolver-rules=`rules` - -Como `--host-rules` pero estas `rules` solo se aplican al solucionador. - -[app]: app.md -[append-switch]: app.md#appcommandlineappendswitchswitch-value -[ready]: app.md#event-ready - -## --ignore-certificate-errors - -Ignora errores de certificado relacionados. - -## --ppapi-flash-path=`path` - -Asigna la ruta `path` del pepper flash plugin. - -## --ppapi-flash-version=`version` - -Asigna la versión `version` del pepper flash plugin. - -## --log-net-log=`path` - -Permite guardar y escribir eventos de registros de red en `path`. - -## --enable-logging - -Imprime el registro de Chromium en consola. - -Este cambio no puede ser usado en `app.commandLine.appendSwitch` ya que se analiza antes de que la -aplicación del usuario esté cargada. - -## --v=`log_level` - -Da el máximo nivel activo de V-logging por defecto; 0 es el predeterminado. Valores positivos -son normalmente usados para los niveles de V-logging. - -Este modificador sólo funciona cuando también se pasa `--enable-logging`. - -## --vmodule=`pattern` - -Da los niveles máximos de V-logging por módulo para sobreescribir el valor dado por -`--v`. Ej. `my_module=2,foo*=3` cambiaría el nivel de registro para todo el código, -los archivos de origen `my_module.*` y `foo*.*`. - -Cualquier patrón que contiene un slash o un slash invertido será probado contra toda la ruta -y no sólo con el módulo. Ej. `*/foo/bar/*=2` cambiaría el nivel de registro para todo el código -en los archivos origen bajo un directorio `foo/bar`. - -Este modificador sólo funciona cuando también se pasa `--enable-logging`. diff --git a/docs-translations/es/api/process.md b/docs-translations/es/api/process.md deleted file mode 100644 index cc8b4ab2b825..000000000000 --- a/docs-translations/es/api/process.md +++ /dev/null @@ -1,47 +0,0 @@ -# process - -El objeto `process` en Electron tiene las siguientes diferencias con respecto -al node convencional: - -* `process.type` String - El tipo del proceso puede ser `browser` (ej. proceso - principal) o `renderer`. -* `process.versions.electron` String - Versión de Electron. -* `process.versions.chrome` String - Versión de Chromium. -* `process.resourcesPath` String - Ruta al código fuente JavaScript. - -## Events - -### Event: 'loaded' - -Se emite cuando Electron ha cargado su script de inicialización interna y -está comenzando a cargar la página web o el script principal. - -Puede ser usado por el script precargado para añadir de nuevo los símbolos globales -de Node eliminados, al alcance global cuando la integración de Node está apagada: - -```javascript -// preload.js -var _setImmediate = setImmediate -var _clearImmediate = clearImmediate -process.once('loaded', function () { - global.setImmediate = _setImmediate - global.clearImmediate = _clearImmediate -}) -``` - -## Methods - -El objeto `process` tiene los siguientes métodos: - -### `process.hang` - -Interrumpe el hilo principal del proceso actual. - - -### process.setFdLimit(maxDescriptors) _macOS_ _Linux_ - -* `maxDescriptors` Integer - -Establece el límite dinámico del descriptor del archivo en `maxDescriptors` -o en el límite estricto del Sistema Operativo, el que sea menor para el -proceso actual. diff --git a/docs-translations/es/api/synopsis.md b/docs-translations/es/api/synopsis.md deleted file mode 100644 index c7b4195655c4..000000000000 --- a/docs-translations/es/api/synopsis.md +++ /dev/null @@ -1,47 +0,0 @@ -# Sinopsis - -Todos los [Módulos integrados de Node.js](http://nodejs.org/api/) se encuentran -disponibles en Electron y módulos de terceros son támbien totalmente compatibles -(incluyendo los [módulos nativos](../tutorial/using-native-node-modules.md)). - -Electron también provee algunos módulos integrados adicionales para desarrollar -aplicaciones nativas de escritorio. Algunos módulos sólo se encuentran disponibles -en el proceso principal, algunos sólo en el proceso renderer (página web), y -algunos pueden ser usados en ambos procesos. - -La regla básica es: Si un módulo es -[GUI](https://es.wikipedia.org/wiki/Interfaz_gráfica_de_usuario) o de bajo nivel, -entonces solo estará disponible en el proceso principal. Necesitas familiarizarte -con el concepto de [scripts para proceso principal vs scripts para proceso renderer] -(../tutorial/quick-start.md#the-main-process) para ser capaz de usar esos módulos. - -El script del proceso principal es como un script normal de Node.js: - -```javascript -var app = require('app') -var BrowserWindow = require('browser-window') - -var window = null - -app.on('ready', function () { - window = new BrowserWindow({width: 800, height: 600}) - window.loadURL('https://github.com') -}) -``` - -El proceso renderer no es diferente de una página web normal, excepto por la -capacidad extra de utilizar módulos de node: - -```html - - - - - - -``` - -Para ejecutar tu aplicación, lee [Ejecutar la aplicación](../tutorial/quick-start.md#run-your-app). diff --git a/docs-translations/es/development/atom-shell-vs-node-webkit.md b/docs-translations/es/development/atom-shell-vs-node-webkit.md deleted file mode 100644 index 8d0170673294..000000000000 --- a/docs-translations/es/development/atom-shell-vs-node-webkit.md +++ /dev/null @@ -1,34 +0,0 @@ -#Diferencias Técnicas entre Electron y NW.js (anteriormente conocido como node-webkit) - -**Nota:Electron se llamaba antes Atom Shell.** - -Como NW.js, Electron proporciona una plataforma para escribir aplicaciones de escritorio con JavaScript y HTML y tiene la integración de nodo para permitir el acceso al sistema de bajo nivel de las páginas web. - -Pero también hay diferencias fundamentales entre los dos proyectos que hacen a Electron un producto totalmente independiente de NW.js: - -**1. Ingreso a la aplicación** - -En NW.js el principal punto de ingreso de una aplicación es una página web. Usted especifica una página principal de URL en el `package.json` y se abre en una ventana del navegador como ventana principal de la aplicación. - -En Electron, el punto de ingreso es un script de JavaScript. En lugar de proporcionar una dirección URL directamente, usted crea manualmente una ventana del navegador y carga un archivo HTML utilizando la API. También es necesario escuchar a los eventos de la ventana para decidir cuándo salir de la aplicación. - -Electron funciona más como el tiempo de ejecución(Runtime) de Node.js. Las Api's de Electron son de bajo nivel asi que puede usarlo para las pruebas del navegador en lugar de usar [PhantomJS.](http://phantomjs.org/) - -**2.Construir un sistema** - -Con el fin de evitar la complejidad de la construcción de todo Chromium, Electron utiliza `libchromiumcontent` para acceder a al contenido Chromium's API. `libchromiumcontent` es solo una liberia compartida que incluye el módulo de contenido de Chromium y todas sus dependencias. Los usuarios no necesitan una máquina potente para construir con Electron. - -**3.Integración de Node** - -In NW.js, the Node integration in web pages requires patching Chromium to work, while in Electron we chose a different way to integrate the libuv loop with each platform's message loop to avoid hacking Chromium. See the node_bindings code for how that was done. - -En NW.js, la integración de Node en las páginas web requiere parchear Chromium para que funcione, mientras que en Electron elegimos una manera diferente para integrar el cilco libuv con cada ciclo de mensaje de las plataformas para evitar el hacking en Chromium. Ver el código [`node_bindings`][node-bindings] de cómo se hizo. - - -**4. Multi-contexto** - -Si usted es un usuario experimentado NW.js, usted debe estar familiarizado con el concepto de contexto Node y el contexto web. Estos conceptos fueron inventados debido a la forma cómo se implementó NW.js. - -Mediante el uso de la característica [multi-contexto](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/) de Node, Electron no introduce un nuevo contexto JavaScript en páginas web.Resultados de búsqueda - -[node-bindings]: https://github.com/electron/electron/tree/master/atom/common diff --git a/docs-translations/es/development/build-instructions-linux.md b/docs-translations/es/development/build-instructions-linux.md deleted file mode 100644 index ccde333d1643..000000000000 --- a/docs-translations/es/development/build-instructions-linux.md +++ /dev/null @@ -1,104 +0,0 @@ -#Instrucciones de Compilación (Linux) - -Siga las siguientes pautas para la construcción de Electron en Linux. -#Requisitos previos - - * Python 2.7.x. Algunas distribuciones como CentOS 6.x siguen utilizando Python 2.6.x por lo que puede que tenga que comprobar su versión de Python con `Python -V`. - * Node.js v0.12.x. Hay varias formas de instalar Node. Puede descargar el código fuente de Node.js y compilar desde las fuentes. Si lo hace, permite la instalación de Node en el directorio personal como usuario estándar. O intentar de repositorios como NodeSource. - * Clang 3.4 o mayor. - * Cabeceras de desarrollo de GTK + y libnotify. - -En Ubuntu, instalar las siguientes bibliotecas: - -`$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ - libnotify-dev libgnome-keyring-dev libgconf2-dev \ - libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib` - -En RHEL / CentOS, instale las siguientes bibliotecas: - -`$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel` - -En Fedora, instale las siguientes bibliotecas: - -`$ sudo dnf install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel` - -Otras distribuciones pueden ofrecer paquetes similares para la instalación, a través de gestores de paquetes como el pacman. O puede compilarlo a partir del código fuente. - -#Si utiliza máquinas virtuales para la construcción - -Si usted planea construir Electron en una máquina virtual, necesitará un dispositivo de al menos 25 gigabytes de tamaño. - -#Obteniendo el codigo - -`$ git clone https://github.com/electron/electron.git` - -#Bootstrapping (Arranque) - -The bootstrap script will download all necessary build dependencies and create the build project files. You must have Python 2.7.x for the script to succeed. Downloading certain files can take a long time. Notice that we are using ninja to build Electron so there is no Makefile generated. - -El script de bootstrap descargará todas las dependencias necesarias para construcción y creara los archivos del proyecto de construcción. Debe tener Python 2.7.x para que la secuencia de comandos tenga éxito. La descarga de determinados archivos puede llevar mucho tiempo. Nótese que estamos usando`ninja` para construir Electron por lo que no hay `Makefile` generado. - - $ cd electron - $ ./script/bootstrap.py -v - -#compilación cruzada - -Si usted quiere construir para un `arm` objetivo también debe instalar las siguientes dependencias: - -`$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \ g++-arm-linux-gnueabihf` - -And to cross compile for arm or ia32 targets, you should pass the --target_arch parameter to the bootstrap.py script: -cruzar y compilar para `arm` o `ia32` objetivos, debe pasar el parámetro `--target_arch` al script `bootstrap.py`: -`$ ./script/bootstrap.py -v --target_arch=arm` - -#Construcción - -Si a usted le gustaría construir dos objetivos de `Release` y `Debug`: - - `$ ./script/build.py` - - -Este script causará que el ejecutable de Electron se muy grande para ser colocado en el directorio `out / R`. El tamaño del archivo es de más de 1,3 gigabytes. Esto sucede porque el binario de destino lanzamiento contiene los símbolos de depuración. Para reducir el tamaño de archivo, ejecute el script `create-dist.py`: - -`$ ./script/create-dist.py` - -This will put a working distribution with much smaller file sizes in the dist directory. After running the create-dist.py script, you may want to remove the 1.3+ gigabyte binary which is still in out/R. - -Esto pondrá una distribución a trabajar con tamaños de archivo mucho más pequeños en el directorio `dist`. Después de ejecutar el script create-dist.py, es posible que desee quitar el binario 1.3+ gigabyte que todavía está en `out/R`. - -También se puede construir sólo el objetivo `Debug`: -`$ ./script/build.py -c D` - -Después de la construcción está hecho, usted puede encontrar el `Electron` de depuración binario bajo `out / D`. - -#Limpieza - -Para limpiar los archivos de creación: - -`$ ./script/clean.py` - -#Solución de problemas -Asegúrese de que ha instalado todas las dependencias de construcción. - -#Error al cargar bibliotecas compartidas: libtinfo.so.5 - -Prebulit clang will try to link to libtinfo.so.5. Depending on the host architecture, symlink to appropriate libncurses: -preconstruir `clang` intentará enlazar a `libtinfo.so.5`. Dependiendo de la arquitectura anfitrión, enlace simbólico apropiado a `libncurses` : - -`$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5` - -#Pruebas -Pon a prueba tus cambios que ajustan al estilo de codificación proyecto mediante: - -`$ ./script/cpplint.py` - -prueba de funcionalidad utilizando: - -`$ ./script/test.py` diff --git a/docs-translations/es/development/build-instructions-osx.md b/docs-translations/es/development/build-instructions-osx.md deleted file mode 100644 index 05c3a44f3d57..000000000000 --- a/docs-translations/es/development/build-instructions-osx.md +++ /dev/null @@ -1,48 +0,0 @@ -#Instrucciones de Compilación (Mac) -Siga las siguientes pautas para la construcción de Electron en macOS. - -#Requisitos previos - - `macOS >= 10.8` - `Xcode >= 5.1` - `node.js (external)` - - -Si está utilizando Python descargado de Homebrew, también es necesario instalar los siguientes módulos de python: - `pyobjc` - -#Obtener el Código - -`$ git clone https://github.com/electron/electron.git` - -#Bootstrapping (arranque) - -The bootstrap script will download all necessary build dependencies and create the build project files. Notice that we're using ninja to build Electron so there is no Xcode project generated. - -El script de bootstrap descargará todas las dependencias de construcción necesarias y creara los archivos del proyecto de compilación. notemos que estamos usando `ninja` para construir Electron por lo que no hay un proyecto de Xcode generado. - -`$ cd electron` -`$ ./script/bootstrap.py -v` - -#Construcción -Construir ambos objetivos de `Release` y `Debug`: - -`$ ./script/build.py` - -También sólo se puede construir el objetivo de `Debug`: -`$ ./script/build.py -c D` - -Después de la construcción está hecho, usted puede encontrar `Electron.app` bajo `out / D.` - -#Soporte de 32bit - -Electron sólo puede construirse para un objetivo de 64 bits en macOS y no hay un plan para apoyar a 32 bit macOS en el futuro. - -#Pruebas - -Pon a prueba tus cambios ajustandose al estilo de codificación del proyecto mediante: -`$ ./script/cpplint.py` - -Prueba la funcionalidad usando: - -`$ ./script/test.py` diff --git a/docs-translations/es/development/build-system-overview.md b/docs-translations/es/development/build-system-overview.md deleted file mode 100644 index 1996137495e8..000000000000 --- a/docs-translations/es/development/build-system-overview.md +++ /dev/null @@ -1,35 +0,0 @@ -#Repaso del Sistema de construcción -Electron utiliza `gyp` para la generación de proyectos y` ninja` para la contrucción. Las Configuraciones del proyecto se pueden encontrar en los archivos `.gypi` y `.gyp `. - -#Archivos Gyp -los siguientes archivos `gyp` contienen las principales reglas para la contrucción en electron: - - * `atom.gyp` define en si como se compila en Electron. - * `common.gypi` ajusta las configuraciones de generación de Node para construir junto con Chromium. - * `brightray/brightray.gyp` define cómo se construye `brightray` e incluye las configuraciones predeterminadas para linkear con Chromium. - * `brightray/brightray.gypi` incluye configuraciones de generación generales sobre la construcción. - -#Construir un componente -Desde Chromium es un proyecto bastante largo, la etapa de enlace final puede tomar pocos minutos, lo que hace que sea difícil para el desarrollo. Con el fin de resolver esto, Chromium introdujo el "componente de construcción", que se basa en construir cada componente como una libreria compartida por separado, haciendo que se enlace muy rápido, pero sacrificando el tamaño del archivo y el rendimiento. - -En Electron tomamos un enfoque muy similar: para versiones de `Debug` (depuración), el binario será linkeado a una versión de la libreria compartida de los componentes de Chromium para lograr un tiempo de enlace rápido; para versiones de `Release` (lanzamiento), el binario será linkeado a las versiones de las librerias estáticas, por lo que puede tener es posible tener un mejor tamaño binario y rendimiento. - -#Bootstrapping minimo (minimo arranque) -Todos los binarios pre-compilados de Chromium (`libchromiumcontent`) son descargados al ejecutar el script de arranque. Por defecto ambas librerias estáticas y librerias compartidas se descargarán y el tamaño final debe estar entre 800 MB y 2 GB dependiendo de la plataforma. - -Por defecto, `libchromiumcontent` se descarga de Amazon Web Services. Si se establece la variable de entorno `LIBCHROMIUMCONTENT_MIRROR`, el bootstrap script se descargará de ella. `libchromiumcontent-qiniu-mirror` es un espejo para el` libchromiumcontent`. Si tiene problemas para acceder a AWS, puede cambiar la dirección de descarga a la misma a través de `exportación LIBCHROMIUMCONTENT_MIRROR = http: // 7xk3d2.dl1.z0.glb.clouddn.com /` - -Si sólo desea construir en Electron rápidamente para pruebas o desarrollo, puede descargar sólo las versiones de librerias compartidas pasando el parámetro `--dev`: - -`$ ./script/bootstrap.py --dev` -`$ ./script/build.py -c D` - -#generación de proyecto de dos frases -Los enlaces de Electron con diferentes conjuntos de librerias en versiones `Release` y `Debug`. `gyp`, sin embargo, no es compatible con la configuración de los diferentes ajustes de enlace para diferentes configuraciones. - -Para evitar que Electron utilice una variable de `gyp` `libchromiumcontent_component` para controlar qué configuraciones de enlace usar y sólo generar un objetivo cuando se ejecute `gyp`. - -#Nombres de destino -A diferencia de la mayoría de los proyectos que utilizan `Release` y `Debug` como nombres de destino, Electron utiliza `R` y `D` en su lugar. Esto se debe a `gyp` bloquea aleatoriamente si sólo hay una configuración de `Release` o `Debug` definidas, y Electron sólo tiene que generar un objetivo a la vez como se ha indicado anteriormente. - -Esto sólo afecta a los desarrolladores, si usted está construyendo Electron para rebranding no se ven afectados. diff --git a/docs-translations/es/development/coding-style.md b/docs-translations/es/development/coding-style.md deleted file mode 100644 index e2f364d8b9c2..000000000000 --- a/docs-translations/es/development/coding-style.md +++ /dev/null @@ -1,37 +0,0 @@ -# Guía de estilo de código - -Esta es la guía de estilo de código para Electron. - -## C++ y Python - -Para C++ y Python, nosotros seguimos la [guía de estilo](http://www.chromium.org/developers/coding-style) de Chromium. -Además hay un script `script/cpplint.py` para verificar si todos los archivos -siguen el estilo. - -La versión de Python que estamos usando ahora es Python 2.7. - -El código C++ usa muchas abstracciones y tipos de Chromium, por eso -se recomienda familiarizarse con ellos. Un buen lugar para iniciar es -el documento de Chromium sobre [Abstracciones importantes y estructras de datos](https://www.chromium.org/developers/coding-style/important-abstractions-and-data-structures). El documento menciona algunos tipos especiales, tipos por alcance (que -automaticamente liberan su memoria cuando salen de su alcance), mecanismos de -registro de eventos, etcétera. - -## CoffeeScript - -Para CoffeeScript, nosotros seguimos la [guía de estilo](https://github.com/styleguide/javascript) de Github y también las -siguientes reglas: - -* Los archivos **NO** deberían terminar con una nueva línea, por que se busca - seguir los estilos que usa Google. -* Los nombres de los archivos debén estar concatenados con `-` en vez de `_`, - por ejemplo `nombre-de-archivo.coffee` en vez de `nombre_de_archivo.coffee`, - esto es por que en [github/atom](https://github.com/github/atom) - los nombres de los módulos usualmente estan en la forma `nombre-de-modulo`. - Esta regla aplica únicamente a los archivos `.coffee`. - -## Nombres de las API - -Al crear una nueva API, nosotros deberíamos preferir usar metodos `get` y `set` -en vez de usar el estilo de jQuery que utiliza una sola función. Por ejemplo, -se prefiere `.getText()` y `.setText()` por sobre `.text([text])`. Hay una -[discusión](https://github.com/electron/electron/issues/46) sobre esto. diff --git a/docs-translations/es/development/source-code-directory-structure.md b/docs-translations/es/development/source-code-directory-structure.md deleted file mode 100644 index cc738d241277..000000000000 --- a/docs-translations/es/development/source-code-directory-structure.md +++ /dev/null @@ -1,62 +0,0 @@ -# Estructura de los directorios del código fuente - -El código fuente de electron es separado en pocas partes, en su mayoría -siguiendo las especificaciones para separar archivos que usa Chromium. - -Quizá necesites familiarizarte con la [arquitectura multiprocesos](http://dev.chromium.org/developers/design-documents/multi-process-architecture) de Chromium para comprender mejor el código fuente. - -## Estructura del código fuente - -``` -Electron -├──atom - Código fuente de Electron. -| ├── app - Código de arranque. -| ├── browser - La interfaz incluyendo la ventana principal, UI, -| | y todas las cosas del proceso principal. Este le habla al renderizador -| | para manejar las páginas web. -| | ├── lib - Código Javascript para inicializar el proceso principal. -| | ├── ui - Implementaciones de UI para distintas plataformas. -| | | ├── cocoa - Código fuente específico para Cocoa. -| | | ├── gtk - Código fuente específico para GTK+. -| | | └── win - Código fuente específico para Windows GUI. -| | ├── default_app - La página por defecto para mostrar cuando Electron -| | | es iniciado sin proveer una app. -| | ├── api - La implementación de las APIs para el proceso principal. -| | | └── lib - Código Javascript parte de la implementación de la API. -| | ├── net - Código relacionado a la red. -| | ├── mac - Código fuente de Objective-C específico para Mac. -| | └── resources - Iconos, archivos específicos de plataforma, etc. -| ├── renderer - Código que se ejecuta en el proceso de renderizado. -| | ├── lib - Código Javascript del proceso de inicio del renderizador. -| | └── api - La implementación de las APIs para el proceso de renderizado. -| | └── lib - Código Javascript parte de la implementación de la API. -| └── common - Código que se utiliza en ambos procesos, el principal y el de -| renderizado. Incluye algunas funciones de utilidad y código para integrar -| el ciclo de mensajes de Node en el ciclo de mensajes de Chromium. -| ├── lib - Código Javascript común para la inicialización. -| └── api - La implementación de APIs comunes, y los fundamentos de -| los módulos integrados de Electron. -| └── lib - Código Javascript parte de la implementación de la API. -├── chromium_src - Código fuente copiado de Chromium. -├── docs - Documentación. -├── spec - Pruebas automaticas. -├── atom.gyp - Reglas de compilado de Electron. -└── common.gypi - Configuración específica para compilar y reglas - de empaquetado para otros componentes como `node` y `breakpad`. -``` - -## Estructura de otros directorios - -* **script** - Scripts usados para propositos de desarrollo - como compilar, empaquetar, realizar pruebas, etc. -* **tools** - Scripts de ayuda usados por los archivos gyp, contrario a la - carpeta `scripts`, estos scripts nunca deberían ser llamados por los usuarios. -* **vendor** - Código fuente de dependencias externas, no usamos `third_party` - como nombre por que se podría confundir con el mismo directorio - en las carpetas del código fuente de Chromium. -* **node_modules** - Módulos de node usados para la compilación. -* **out** - Directorio temporal de salida usado por `ninja`. -* **dist** - Directorio temporal creado por `script/create-dist.py` cuando - se esta creando una distribución. -* **external_binaries** - Binarios descargados de frameworks externos que no - soportan la compilación con `gyp`. diff --git a/docs-translations/es/project/CODE_OF_CONDUCT.md b/docs-translations/es/project/CODE_OF_CONDUCT.md deleted file mode 100644 index 8c8aafbc1e84..000000000000 --- a/docs-translations/es/project/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Código de Conducta convenido para Contribuyentes - -## Nuestro compromiso - -En el interés de fomentar una comunidad abierta y acogedora, nosotros como contribuyentes y administradores nos comprometemos a hacer de la participación en nuestro proyecto y nuestra comunidad una experiencia libre de acoso para todos, independientemente de la edad, dimensión corporal, discapacidad, etnia, identidad y expresión de género, nivel de experiencia, nacionalidad, apariencia física, raza, religión, identidad u orientación sexual. - -## Nuestros estándares - -Ejemplos de comportamiento que contribuyen a crear un ambiente positivo: - -* Uso de lenguaje amable e inclusivo -* Respeto a diferentes puntos de vista y experiencias -* Aceptación de críticas constructivas -* Enfocarse en lo que es mejor para la comunidad -* Mostrar empatía a otros miembros de la comunidad - -Ejemplos de comportamiento inaceptable por participantes: - -* Uso de lenguaje o imágenes sexuales y atención sexual no deseada -* Comentarios insultantes o despectivos (*trolling*) y ataques personales o políticos -* Acoso público o privado -* Publicación de información privada de terceros sin su consentimiento, como direcciones físicas o electrónicas -* Otros tipos de conducta que pudieran considerarse inapropiadas en un entorno profesional. - -## Nuestras responsabilidades - -Los administradores del proyecto son responsables de clarificar los estándares de comportamiento aceptable y se espera que tomen medidas correctivas y apropiadas en respuesta a situaciones de conducta inaceptable. - -Los administradores del proyecto tienen el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, *commits*, código, ediciones de documentación, *issues*, y otras contribuciones que no estén alineadas con este Código de Conducta, o de prohibir temporal o permanentemente a cualquier colaborador cuyo comportamiento sea inapropiado, amenazante, ofensivo o perjudicial. - -## Alcance - -Este código de conducta aplica tanto a espacios del proyecto como a espacios públicos donde un individuo esté en representación del proyecto o comunidad. Ejemplos de esto incluye el uso de la cuenta oficial de correo electrónico, publicaciones a través de las redes sociales oficiales, o presentaciones con personas designadas en eventos *online* u *offline*. La representación del proyecto puede ser clarificada explicitamente por los administradores del proyecto. - -## Aplicación - -Ejemplos de abuso, acoso u otro tipo de comportamiento inaceptable puede ser reportado al equipo del proyecto en [INSERTE CORREO AQUÍ]. Todas las quejas serán revisadas e investigadas, generando un resultado apropiado a las circunstancias. El equipo del proyecto está obligado a mantener confidencialidad de la persona que reportó el incidente. Detalles específicos acerca de las políticas de aplicación pueden ser publicadas por separado. - -Administradores que no sigan o que no hagan cumplir este Código de Conducta pueden ser eliminados de forma temporal o permanente del equipo administrador. - -## Atribución - -Este Código de Conducta es una adaptación del [Contributor Covenant][homepage], versión 1.4, disponible en [http://contributor-covenant.org/version/1/4/es/][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/es/ diff --git a/docs-translations/es/project/README.md b/docs-translations/es/project/README.md deleted file mode 100644 index ed38803d42a2..000000000000 --- a/docs-translations/es/project/README.md +++ /dev/null @@ -1,87 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -:memo: Traducciones disponibles: [Koreano](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Chino Simplificado](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md) | [Portugués Brasileño](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) | [Chino Tradicional](https://github.com/electron/electron/tree/master/docs-translations/zh-TW/project/README.md) - -Electron es un framework que permite escribir aplicaciones de escritorio multiplataforma -usando JavaScript, HTML y CSS. Está basado en [Node.js](https://nodejs.org/) con -[Chromium](http://www.chromium.org). Es usado por [Atom -editor](https://github.com/atom/atom) y muchas otras [aplicaciones](https://electron.atom.io/apps). - -Sigue a [@ElectronJS](https://twitter.com/electronjs) en Twitter para estar informado de anuncios -importantes. - -Este proyecto se adhiere al [Código de Conducta convenido para Colaboradores](CODE_OF_CONDUCT.md). -Si desea participar, debes seguir este código de conducta. Por favor reporta un comportamiento -no aceptado a electron@github.com. - -## Downloads - -Para instalar binarios precompilados, usa -[`npm`](https://docs.npmjs.com/): - -```sh -# Instalación de las dependencias de desarrollo -npm install electron --save-dev - -# Instalación de `electron` de manera global a tu $PATH -npm install electron -g -``` - -Mira la [página de lanzamientos](https://github.com/electron/electron/releases) para -los prebuilt binaries, debug symbols, y más. - -### Mirrors - -- [China](https://npm.taobao.org/mirrors/electron) - -## Documentación - -Las guías y API de referencia están disponibles en el directorio -[docs](https://github.com/electron/electron/tree/master/docs). Ahí también -puedes encontrar documentos que describen cómo construir y contribuir en Electron. - -## Traducciones de la Documentación - -- [Portugués Brasileño](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [Koreano](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [Japonés](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [Español](https://github.com/electron/electron/tree/master/docs-translations/es) -- [Chino Simplificado](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [Chino Tradicional](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [Turco](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [Thai](https://github.com/electron/electron/tree/master/docs-Translations/th-TH) -- [Ucraniano](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [Ruso](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [Francés](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) - -## Inicio rápido - -Clona y ejecuta el repositorio [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -para ver una aplicación mínima en acción. - -## Comunidad - -Puedes preguntar y interactuar con la comunidad en los siguientes lugares: -- [`electron`](http://discuss.atom.io/c/electron) Categoría en los Foros de -Atom. -- `#atom-shell` canal de IRC en Freenode -- [`Atom`](http://atom-slack.herokuapp.com/) canales en Slack -- [`electron-br`](https://electron-br.slack.com) *(Portugués Brasileño)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Koreano)* -- [`electron-jp`](https://electron-jp.slack.com) *(Japonés)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(Turco)* -- [`electron-id`](https://electron-id.slack.com) *(Indonés* - -Mira [awesome-electron](https://github.com/sindresorhus/awesome-electron) -donde la comunidad mantiene una lista útil de ejemplos de aplicaciones, herramientas y recursos. - -## Licencia - -[MIT](https://github.com/electron/electron/blob/master/LICENSE) - -Si usas los logos de Electron ó GitHub, asegúrate de seguir las [GitHub logo guidelines](https://github.com/logos). diff --git a/docs-translations/es/styleguide.md b/docs-translations/es/styleguide.md deleted file mode 100644 index 60492c67c99c..000000000000 --- a/docs-translations/es/styleguide.md +++ /dev/null @@ -1,100 +0,0 @@ -# Gúia de estilo de Electron - -Encuentra el apartado correcto para cada tarea: [leer la documentación de Electron](#reading-electron-documentation) -o [escribir documentación para Electron](#writing-electron-documentation). - -## Escribir Documentación para Electron - -Estas son las maneras en las que construimos la documentación de Electron. - -- Máximo un título `h1` por página. -- Utilizar `bash` en lugar de `cmd` en los bloques de código (por el resaltado - de sintaxis). -- Los títulos `h1` en el documento deben corresponder al nombre del objeto - (ej. `browser-window` → `BrowserWindow`). - - Archivos separados por guiones, mas sin embargo, es correcto. -- No subtítulos seguidos por otros subtítulos, añadir por lo menos un enunciado - de descripción. -- Métodos de cabecera son delimitados con apóstrofes: `código`. -- Cabeceras de Eventos son delimitados con 'comillas' simples. -- No generar listas de mas de dos niveles (debido al renderizador de Markdown - desafortunadamente). -- Agregar títulos de sección: Eventos, Métodos de Clases y Métodos de Instancia. -- Utilizar 'deberá' en lugar de 'debería' al describir resultados. -- Eventos y Métodos son cabeceras `h3`. -- Argumentos opcionales escritos como `function (required[, optional])`. -- Argumentos opcionales son denotados cuando se llaman en listas. -- Delimitador de línea de 80-columnas. -- Métodos específicos de Plataformas son denotados en itálicas seguidas por la cabecera del método. - - ```### `method(foo, bar)` _macOS_``` -- Preferir 'en el ___ proceso' en lugar de 'sobre el' - -### Traducciones de la Documentación - -Traducciones de documentos de Electron se encuentran dentro del folder -`docs-translations`. - -Para agregar otro set (o un set parcial): - -- Crear un subdirectorio nombrado igual a la abreviación del lenguaje. -- Dentro de ese subdirectorio, duplicar el directorio de `docs`, manteniendo los - mismos nombres de directorios y archivos. -- Traducir los archivos. -- Actualizar el `README.md` dentro del subdirectorio del lenguaje apuntando a - los archivos que has traducido. -- Agregar un enlace al folder de tu traducción en la sección principal Electron -[README](https://github.com/electron/electron#documentation-translations). - -## Leyendo la Documentación de Electron - -Estos son algunos consejos para entender la sintaxis de la documentación de -Electron. - -### Métodos - -Un ejemplo de la documentación del [método](https://developer.mozilla.org/en-US/docs/Glossary/Method): - ---- - -`methodName(required[, optional]))` - -* `require` String, **required** -* `optional` Integer - ---- - -El nombre del método es seguido por los argumentos que recibe. Argumentos -opcionales son denotados por corchetes rodeados por el argumento opcional y la -coma requerida si el argumento opcional fuera seguido por otro argumento. - -Debajo del método se encuentra más información detallada de cada uno de los -argumentos. El tipo de argumento es denotado por los tipos comúnes: -[`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), -[`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), -[`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object), -[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -o un tipo personalizado como el [`webContent`](api/web-content.md) de Electron. - -### Eventos - -Un ejemplo de documentación del [evento](https://developer.mozilla.org/en-US/docs/Web/API/Event): - ---- - -Event: 'wake-up' - -Returns: - -* `time` String - ---- - -El evento es una cadena que es utilizada luego de un método observador `.on`. Si -regresa un valor, él y su tipo son denotados abajo. Si se estaba a la escucha y -respondió a este evento se debería ver así: - -```javascript -Alarm.on('wake-up', function (time) { - console.log(time) -}) -``` diff --git a/docs-translations/es/tutorial/application-distribution.md b/docs-translations/es/tutorial/application-distribution.md deleted file mode 100644 index 9061a6feb3e9..000000000000 --- a/docs-translations/es/tutorial/application-distribution.md +++ /dev/null @@ -1,120 +0,0 @@ -# Distribución de la Aplicación - -Para distribuir tu aplicación con Electron, el directorio que contiene la -aplicación deberá llamarse `app`, y ser colocado debajo del directorio de -recursos de Electron (en macOS es `Electron.app/Contents/Resources/`, en Linux y -Windows es `resources/`), de esta forma: - -En macOS: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -En Windows y Linux: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -Luego ejecutar `Electron.app` (o `electron` en Linux, `electron.exe` en Windows), -y Electron será iniciado como tu aplicación. El directorio `electron` será -entonces tu distribución que recibirán los usuarios finales. - -## Empaquetando tu aplicación en un archivo - -Además de distribuir tu aplicación al copiar todos los archivos de código fuente, -también puedes empaquetar tu aplicación como un archivo [asar](https://github.com/atom/asar) -y de esta forma evitar exponer del código fuente de tu aplicación a los usuarios. - -Para utilizar un archivo `asar` en reemplazo del directorio `app`, debes de -renombrar el archivo a `app.asar`, y colocarlo por debajo el directorio de recursos -de Electron (ver en seguida), Electron intentará leer el archivo y arrancar desde el. - -En macOS: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -En Windows y Linux: - -```text -electron/resources/ -└── app.asar -``` - -Más detalles en [Empaquetado de Aplicaciones](application-packaging.md). - -## Redefinición con Binarios Descargados - -Luego de empaquetar tu aplicación en Electron, querrás redefinir Electron antes -de distribuirlo a los usuarios. - -### Windows - -Puedes renombrar `electron.exe` a cualquier nombre que desees, y editar su ícono -y otra información con herramientas como [rcedit](https://github.com/atom/rcedit). - -### macOS - -Puedes renombrar `Electron.app` a cualquier nombre que desees, y tendrás que -renombrar los campos `CFBundleDisplayName`, `CFBundleIdentifier` y `CFBundleName` -en los siguientes archivos: - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -También puedes renombrar el helper de la aplicación para evitar que aparezca -como `Electron Helper` en el Monitor de Actividades. Pero asegurate de renombrar -el nombre de archivo del ejecutable. - -La estructura de una aplicación renombrada será: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -Puedes renombrar el ejectuable `electron` a cualquier nombre que desees. - -## Redefinición mediante la recompilación de Electron desde el código fuente - -También es posible redefinir Electron cambiando el nombre del producto y -compilandolo desde sus fuentes. Para realizar esto necesitas modificar el -archivo `atom.gyp` y realizar una compilación desde cero. - -### grunt-build-atom-shell - -La modificación a mano del código de Electron y su compilación puede resultar -complicada, por lo cual se ha generado una tarea Grunt para manejar esto de -forma automaticamente: -[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -Esta tarea se encargará de modificar el archivo `.gyp`, compilar el código desde -las fuentes, y luego reconstruir los módulos nativos de la aplicación para que -coincidan con el nuevo nombre del ejecutable. diff --git a/docs-translations/es/tutorial/application-packaging.md b/docs-translations/es/tutorial/application-packaging.md deleted file mode 100644 index 71445e667cd5..000000000000 --- a/docs-translations/es/tutorial/application-packaging.md +++ /dev/null @@ -1,157 +0,0 @@ -# Empaquetamiento de aplicaciones - -Para proteger los recursos y el código fuente de tu aplicación, puedes optar por empaquetar -tu aplicación en un paquete [asar][asar]. - -## Generando un archivo `asar` - -Un paquete [asar][asar] es un formato sencillo similar a tar, este formato concatena todos los archivos en uno, -Electron puede leer el contenido sin desempaquetar todos los archivos. - -A continuación, los pasos para empaquetar tu aplicación con `asar`: - -### 1. Instalar asar - -```bash -$ npm install -g asar -``` - -### 2. Empaquetar utilizando `asar pack` - -```bash -$ asar pack your-app app.asar -``` - -## Utilizando los paquetes `asar` - -En Electron existen dos tipos de APIs: las APIs de Node, provistas por Node.js, -y las APIs Web, provistas por Chromium. Ambas APIs soportan la lectura de paquetes `asar`. - -### API Node - -Con parches especiales en Electron, las APIs de Node como `fs.readFile` and `require` -tratan los paquetes `asar` como directorios virtuales, y el contenido es accesible como si se tratara -de archivos normales en el sistema de archivos. - -Por ejemplo, supongamos que tenemos un paquete `example.asar` bajo `/path/to`: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -Leer un archivo de nuestro paquete `asar`: - -```javascript -var fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -Listar todos los archivos de la raíz: - -```javascript -var fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -Utilizar un módulo que se encuentra dentro del archivo: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -También puedes mostrar una página web contenida en un `asar` utilizando `BrowserWindow`. - -```javascript -var BrowserWindow = require('browser-window') -var win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### API Web - -En una págin web, los archivos que se encuentran en el paquete son accesibles a través del protocolo `file:`. -Al igual que la API Node, los paquetes `asar` son tratados como directorios. - -Por ejemplo, para obtener un archivo con `$.get`: - -```html - -``` - -### Utilizando un paquete `asar` como un archivo normal - -En algunas situaciones necesitaremos acceder al paquete `asar` como archivo, por ejemplo, -si necesitáramos verificar la integridad del archivo con un checksum. -Para casos así es posible utilizar el módulo `original-fs`, que provee la API `fs` original: - -```javascript -var originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -## Limitaciones de la API Node: - -A pesar de que hemos intentado que los paquetes `asar` funcionen como directorios de la mejor forma posible, -aún existen limitaciones debido a la naturaleza de bajo nivel de la API Node. - -### Los paquetes son de sólo lectura - -Los paquetes `asar` no pueden ser modificados, por lo cual todas las funciones que modifiquen archivos -no funcionarán. - -## Los directorios del paquete no pueden establecerse como working directories - -A pesar de que los paquetes `asar` son manejados virtualmente como directorios, -estos directorios no existen en el sistema de archivos, por lo cual no es posible establecerlos -como working directory, el uso de la opción `cwd` en algunas APIs podría causar errores. - -### Desempaquetamiento adicional en algunas APIs - -La mayoría de las APIs `fs` pueden leer u obtener información sobre un archivo en un paquete `asar` sin -la necesidad de desempaquetarlo, pero algunas APIs requieren la ruta real. En estos casos Electron extraerá -el archivo a una ruta temporal. Esto agrega un overhead a algunas APIs. - -Las APIs que requieren el desempaquetamiento adicional son: - -* `child_process.execFile` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - Utilizado por `require` en los módulos nativos - -### Información falsa en `fs.stat` - -El objeto `Stats` retornado por `fs.stat` y otras funciones relacionadas, -no es preciso, ya que los archivos del paquete `asar` no existen en el sistema de archivos. -La utilización del objeto `Stats` sólo es recomendable para obtener el tamaño del archivo y/o -comprobar el tipo de archivo. - - -## Agregando archivos al paquete `asar` - -Como se menciona arriba, algunas APIs de Node desempaquetarán archivos cuando exista una llamada -que los referencie, además de los problemas de rendimiento que esto podría ocasionar, también -podría accionar alertas falsas en software antivirus. - -Para lidiar con esto, puedes desempaquetar algunos archivos utilizando la opción `--unpack`. -A continuación, un ejemplo que excluye las librerías compartidas de los módulos nativos: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -Después de ejecutar este comando, además del archivo `app.asar`, también se creará -un directorio `app.asar.unpacked`, que contendrá los archivos desempaquetados. -Este directorio deberá copiarse junto con el archivo `app.asar` a la hora de distribuir la aplicación. - -[asar]: https://github.com/atom/asar diff --git a/docs-translations/es/tutorial/debugging-main-process.md b/docs-translations/es/tutorial/debugging-main-process.md deleted file mode 100644 index 1a764036e37a..000000000000 --- a/docs-translations/es/tutorial/debugging-main-process.md +++ /dev/null @@ -1,45 +0,0 @@ -# Depurando el proceso principal - -Los devtools sólo pueden depurar las páginas web (el código del proceso renderer). -Para depurar el código del proceso principal, Electron provee dos opciones para la línea de comandos: `--debug` y `--debug-brk`. - -## Opciones para la línea de comandos - -### `--debug=[port]` - -Esta opción escuchará mensajes del protocolo de depuración V8 en `port`, por defecto `port` es `5858`. - -### `--debug-brk=[port]` - -Similar a `--debug` pero realiza una pausa en la primera línea del script. - -## Utilizando node-inspector para depuración - -__Nota:__ Electron utiliza node v0.11.13, esta versión aún no funciona bien con node-inspector, -el proceso principal podría fallar al inspeccionar el objeto `process`. - -### 1. Iniciar [node-inspector][node-inspector] - -```bash -$ node-inspector -``` - -### 2. Activar el modo de depuración en Electron - -Es posible iniciar Electron con la opción de depuración: - -```bash -$ electron --debug=5858 your/app -``` - -o, pausar el script en la primera línea: - -```bash -$ electron --debug-brk=5858 your/app -``` - -### 3. Cargar la interfaz del depurador - -Abre http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 en Chrome. - -[node-inspector]: https://github.com/node-inspector/node-inspector diff --git a/docs-translations/es/tutorial/desktop-environment-integration.md b/docs-translations/es/tutorial/desktop-environment-integration.md deleted file mode 100644 index a0d7a08eb019..000000000000 --- a/docs-translations/es/tutorial/desktop-environment-integration.md +++ /dev/null @@ -1,173 +0,0 @@ -# Integración con el entorno de escritorio - -Los sistemas operativos proveen diferentes características para integrar aplicaciones -en sus entornos de escritorio. Por ejemplo, en Windows, las aplicaciones pueden agregar accesos directos -en la JumpList de la barra de tareas, y en Mac, las aplicaciones pueden agregar un menú personalizado en el dock. - -Esta guía explica cómo integrar tu aplicación en esos entornos de escritorio a través de las APIs de Electron. - -## Documentos recientes (Windows y macOS) - -Windows y macOS proveen un acceso sencillo a la lista de documentos recientes. - -__JumpList:__ - -![JumpList, Archivos recientes](http://i.msdn.microsoft.com/dynimg/IC420538.png) - -__Menú Dock:__ - - - -Para agregar un archivo a la lista de documentos recientes, puedes utilizar: -[app.addRecentDocument][addrecentdocument] API: - -```javascript -var app = require('app') -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -``` - -También puedes utilizar [app.clearRecentDocuments](clearrecentdocuments) para vaciar la lista de documentos recientes: - -```javascript -app.clearRecentDocuments() -``` - -### Notas sobre Windows - -Para activar esta característica en Windows, tu aplicación debe registrar un handler -para el tipo de archivo que quieres utilizar, de lo contrario el archivo no aparecerá -en la JumpList, aún después de agregarlo. Puedes encontrar más información sobre el proceso de -registrar tu aplicación en [Application Registration][app-registration]. - -Cuando un usuario haga click en un archivo de la JumpList, una nueva instancia de tu aplicación -se iniciará, la ruta del archivo se agregará como un argumento de la línea de comandos. - -### Notas sobre macOS - -Cuando un archivo es solicitado desde el menú de documentos recientes, el evento `open-file` -del módulo `app` será emitido. - -## Menú dock personalizado (macOS) - -macOS permite a los desarrolladores definir un menú personalizado para el dock, -el cual usualmente contiene algunos accesos directos a las características más comunes -de tu aplicación: - -__Menú dock de Terminal.app:__ - - - -Para establecer tu menú dock, puedes utilizar la API `app.dock.setMenu`, la cual sólo está disponible para macOS: - -```javascript -var app = require('app') -var Menu = require('menu') -var dockMenu = Menu.buildFromTemplate([ - {label: 'New Window', click: function () { console.log('New Window') }}, - {label: 'New Window with Settings', - submenu: [ - {label: 'Basic'}, - {label: 'Pro'} - ] - }, - {label: 'New Command...'} -]) -app.dock.setMenu(dockMenu) -``` - -## Tareas de usuario (Windows) - -En Windows puedes especificar acciones personalizadas en la categoría `Tasks` del JumpList, -tal como menciona MSDN: - - -> Las aplicaciones definen tareas basadas en las características del programa -> y las acciones clave que se esperan de un usuario. Las tareas deben ser -> libres de contexto, es decir, la aplicación no debe encontrarse en ejecución -> para que estas acciones funcionen. También deberían ser las acciones estadísticamente -> más comunes que un usuario normal realizaría en tu aplicación, como por ejemplo, -> redactar un mensaje de correo electrónico, crear un documento en el procesador de textos, -> ejecutar una aplicación en cierto modo, o ejecutar alguno de sus subcomandos. Una aplicación -> no debería popular el menú con características avanzadas que el usuario estándar no necesita -> ni con acciones que sólo se realizan una vez, como por ejemplo, el registro. No utilices -> las tareas para mostrar elementos promocionales como actualizaciones u ofertas especiales. -> -> Es recomendable que la lista de tareas sea estática. Debe mantenerse a pesar -> de los cambios de estado de la aplicación. Aunque exista la posibilidad de variar -> el contenido de la lista dinámicamente, debes considerar que podría ser confuso -> para un usuario que no espera que el destino de la lista cambie. - -__Tareas de Internet Explorer:__ - -![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png) - -A diferencia del menú dock en macOS, el cual es un menú real, las tareas de usuario en Windows -funcionan como accesos directos de aplicación, que al ser clickeados, lanzan el programa -con argumentos específicos. - -Para establecer las tareas de usuario en tu aplicación, puedes utilizar: -[app.setUserTasks][setusertaskstasks] API: - -```javascript -var app = require('app') -app.setUserTasks([ - { - program: process.execPath, - arguments: '--new-window', - iconPath: process.execPath, - iconIndex: 0, - title: 'New Window', - description: 'Create a new window' - } -]) -``` - -Para purgar la lista de tareas, puedes llamar a `app.setUserTasks` con un array vacío: - -```javascript -app.setUserTasks([]) -``` - -Las tareas de usuario aún serán visibles después de cerrar tu aplicación, por lo cual -el ícono y la ruta del programa deben existir hasta que la aplicación sea desinstalada. - -## Accesos directos en el lanzador Unity (Linux) - -En Unity, es posible agregar algunas entradas personalizadas, modificando el archivo `.desktop`, -ver [Adding shortcuts to a launcher][unity-launcher]. - -__Accesos directos de Audacious:__ - -![audacious](https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles?action=AttachFile&do=get&target=shortcuts.png) - -## Barra de progreso en la barra de tareas (Windows y Unity) - -En Windows, un botón en la barra de tareas puede utilizarse para mostrar una barra de progreso. Esto permite -que una ventana muestre la información de progreso al usuario, sin que el usuario tenga la ventana de la aplicación activa. - -El entorno de escritorio Unity también posee una característica similar que permite mostrar una barra de progreso en el lanzador. - -__Barra de progreso en un botón de la barra de herramientas:__ - -![Taskbar Progress Bar](https://cloud.githubusercontent.com/assets/639601/5081682/16691fda-6f0e-11e4-9676-49b6418f1264.png) - -__Barra de progreso en el lanzador Unity:__ - -![Unity Launcher](https://cloud.githubusercontent.com/assets/639601/5081747/4a0a589e-6f0f-11e4-803f-91594716a546.png) - -Para establecer la barra de progreso de una ventana, puedes utilizar -[BrowserWindow.setProgressBar][setprogressbar] API: - -```javascript -var window = new BrowserWindow() -window.setProgressBar(0.5) -``` - -[addrecentdocument]: ../api/app.md#appaddrecentdocumentpath -[clearrecentdocuments]: ../api/app.md#appclearrecentdocuments -[setusertaskstasks]: ../api/app.md#appsetusertaskstasks -[setprogressbar]: ../api/browser-window.md#browserwindowsetprogressbarprogress -[setrepresentedfilename]: ../api/browser-window.md#browserwindowsetrepresentedfilenamefilename -[setdocumentedited]: ../api/browser-window.md#browserwindowsetdocumenteditededited -[app-registration]: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx -[unity-launcher]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher diff --git a/docs-translations/es/tutorial/devtools-extension.md b/docs-translations/es/tutorial/devtools-extension.md deleted file mode 100644 index 578368cfafeb..000000000000 --- a/docs-translations/es/tutorial/devtools-extension.md +++ /dev/null @@ -1,49 +0,0 @@ -# Extensión DevTools - -Para facilitar la depuración, Electron provee un soporte básico para la extensión -[Chrome DevTools][devtools-extension]. - -Para la mayoría de las extensiones devtools, simplemente puedes descargar el código fuente -y utilizar `BrowserWindow.addDevToolsExtension` para cargarlas, las extensiones cargadas -serán recordadas para que no sea necesario llamar a la función cada vez que creas una ventana. - -Por ejemplo, para usar la extensión [React DevTools](https://github.com/facebook/react-devtools), primero debes descargar el código fuente: - -```bash -$ cd /some-directory -$ git clone --recursive https://github.com/facebook/react-devtools.git -``` - -Luego cargas la aplicación en Electron, abriendo devtools en cualquier ventana, -y ejecutando este código en la consola devtools: - -```javascript -require('remote').require('browser-window').addDevToolsExtension('/some-directory/react-devtools') -``` - -Para remover una extensión, puedes utilizar `BrowserWindow.removeDevToolsExtension` -especificando el nombre, y esta ya no se cargará la siguiente vez que abras devtools: - -```javascript -require('remote').require('browser-window').removeDevToolsExtension('React Developer Tools') -``` - -## Formato de las extensiones devtools - -Idealmente todas las extensiones devtools escritas para Chrome pueden ser cargadas por Electron, -pero para ello deben estar en un directorio plano, las extensiones empaquetadas como `crx` -no pueden ser cargadas por Chrome a no ser que halles una forma de extraerlas a un directorio. - -## Páginas en segundo plano (background) - -Electron no soporta la característica de páginas en segundo plano de las extensiones de Chrome, -las extensiones que utilizan esta característica podrían no funcionar. - -## APIs `chrome.*` - -Algunas extensiones utilizan las APIs `chrome.*`, hemos realizado un esfuerzo -para implementar esas APIs en Electron, sin embargo no han sido implementadas en su totalidad. - -Dado que no todas las funciones `chrome.*` han sido implementadas, si la extensión devtools está utilizando otras APIs más allá de `chrome.devtools.*`, es muy probable que no funcione. Puedes reportar fallos en el issue tracker para que podamos agregar soporte a esas APIs. - -[devtools-extension]: https://developer.chrome.com/extensions/devtools diff --git a/docs-translations/es/tutorial/online-offline-events.md b/docs-translations/es/tutorial/online-offline-events.md deleted file mode 100644 index 171decbe0483..000000000000 --- a/docs-translations/es/tutorial/online-offline-events.md +++ /dev/null @@ -1,80 +0,0 @@ -# Detección del evento en línea/fuera de línea - -La detección de estos eventos puede ser implementada en el proceso renderer utilizando las APIs HTML5 estándar, -como en este ejemplo: - -_main.js_ - -```javascript -var app = require('app') -var BrowserWindow = require('browser-window') -var onlineStatusWindow - -app.on('ready', function () { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -Existen casos en donde necesitas responder a estos eventos desde el proceso principal. -El proceso principal no posee un objeto `navigator`, por lo tanto no puede detectar estos eventos directamente. -Es posible reenviar el evento al proceso principal mediante la utilidad de intercomunicación entre procesos (ipc): - -_main.js_ - -```javascript -var app = require('app') -var ipc = require('ipc') -var BrowserWindow = require('browser-window') -var onlineStatusWindow - -app.on('ready', function () { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) - -ipc.on('online-status-changed', function (event, status) { - console.log(status) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` diff --git a/docs-translations/es/tutorial/quick-start.md b/docs-translations/es/tutorial/quick-start.md deleted file mode 100644 index 112b4157f0d4..000000000000 --- a/docs-translations/es/tutorial/quick-start.md +++ /dev/null @@ -1,148 +0,0 @@ -## Introducción - -Electron permite la creación de aplicaciones de escritorio utilizando JavaScript puro, a través de un runtime con APIs nativas. Puedes verlo como una variante de io.js, enfocado a aplicaciones de escritorio, en vez de servidores web. - -Esto no significa que Electron sea un binding de librerías GUI para JavaScript. -Electron utiliza páginas web como su GUI, por lo cual puedes verlo como un navegador Chromium mínimo, -controlado por JavaScript. - -### El proceso principal (main process) - -En Electron, el proceso que ejecuta el script `main` del `package.json` se llama __el proceso principal__. -El script que corre en el proceso principal puede crear páginas para mostrar la GUI. - -### El proceso renderer (renderer process) - -Dado que Electron utiliza Chromium para mostrar las páginas web, -también es utilizada la arquitectura multiproceso de Chromium. -Cada página web en Electron se ejecuta en su propio proceso, -el cual es llamado __el proceso renderer__. - -En los navegadores normales, las páginas web usualmente se ejecutan en un entorno -sandbox y no tienen acceso a los recursos nativos. Los usuarios de Electron tienen el poder -de utilizar las APIs de io.js en las páginas web, permitiendo interacciones de bajo nivel con el sistema operativo. - -### Diferencias entre el proceso principal y el proceso renderer - -El proceso principal crea páginas web mediante instancias de `BrowserWindow`. Cada instancia de `BrowserWindow` ejecuta su propia página web y su propio proceso renderer. -Cuando una instancia de `BrowserWindow` es destruida, también su proceso renderer correspondiente acaba. - -El proceso principal gestiona las páginas web y sus correspondientes procesos renderer. -Cada proceso renderer es aislado y sólo considera relevante la página web que corre en él. - -En las páginas web, no está permitido llamar a APIs relacionadas a la GUI nativa -porque la gestión de los recursos GUI nativos es peligrosa, y tiende a que ocurran leaks de memoria. -Si deseas realizar operaciones GUI en una página web, el proceso renderer de la página web debe comunicarse -con el proceso principal, y solicitar a este que realice esas operaciones. - -En Electron, hemos proveído el módulo [ipc](../../../docs/api/ipc-renderer.md) para la comunicación -entre el proceso principal y el proceso renderer. Y también hay un módulo [remote](../../../docs/api/remote.md) -para comunicación al estilo RPC. - -## Escribe tu primera aplicación Electron - -Generalmente, una aplicación Electron tendrá la siguiente estructura: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -El formato de `package.json` es exactamente el mismo que cualquier módulo Node, -y el script especificado en el campo `main` será el script de arranque de tu aplicación, -a ser ejecutado por el proceso principal. Un ejemplo de `package.json` podría verse así: - -```javascripton -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -El `main.js` debería crear las ventanas y gestionar los eventos del sistema, un ejemplo típico sería: - -```javascript -var app = require('app') // Módulo para controlar el ciclo de vida de la aplicación. -var BrowserWindow = require('browser-window') // Módulo para crear uan ventana de navegador. - -// Mantener una referencia global al objeto window, si no lo haces, esta ventana -// se cerrará automáticamente cuando el objeto JavaScript sea recolectado (garbage collected): -var mainWindow = null - -// Salir de todas las ventanas cuando se cierren. -app.on('window-all-closed', function () { - // En macOS es común que las aplicaciones y su barra de menú - // se mantengan activas hasta que el usuario cierre la aplicación - // explícitamente utilizando Cmd + Q - if (process.platform !== 'darwin') { - app.quit() - } -}) - -// Este método será llamado cuando Electron haya finalizado la inicialización -// y esté listo para crear ventanas de navegador. -app.on('ready', function () { - // Crear la ventana. - mainWindow = new BrowserWindow({width: 800, height: 600}) - - // cargar el index.html de nuestra aplicación. - mainWindow.loadURL(`file://${__dirname}/index.html`) - - // Desplegar devtools. - mainWindow.openDevTools() - - // Evento emitido cuando se cierra la ventana. - mainWindow.on('closed', function () { - // Eliminar la referencia del objeto window. - // En el caso de soportar multiples ventanas, es usual almacenar - // los objetos window en un array, este es el momento en el que debes eliminar el elemento correspondiente. - mainWindow = null - }) -}) -``` - -Finalmente el `index.html` es la página web que mostraremos: - -```html - - - - Hello World! - - -

Hello World!

- We are using io.js - and Electron . - - -``` - -## Ejecutar la aplicación - -Cuando termines de escribir tu aplicación, puedes distribuirla -siguiendo la [guía de distribución](./application-distribution-es.md) -y luego ejecutar la aplicación empaquetada. También puedes utilizar el binario de Electron -para ejecutar tu aplicación de forma directa. - -En Windows: - -```bash -$ .\electron\electron.exe your-app\ -``` - -En Linux: - -```bash -$ ./electron/electron your-app/ -``` - -En macOS: - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` es parte del paquete de release de Electron, puedes descargarlo [aquí](https://github.com/electron/electron/releases). diff --git a/docs-translations/es/tutorial/supported-platforms.md b/docs-translations/es/tutorial/supported-platforms.md deleted file mode 100644 index ff08a5e14835..000000000000 --- a/docs-translations/es/tutorial/supported-platforms.md +++ /dev/null @@ -1,30 +0,0 @@ -# Plataformas soportadas - -Las siguientes plataformas son soportadas por Electron: - -### macOS - -Sólo se proveen binarios de 64 bit para macOS. -La versión mínima soportada es macOS 10.8. - -### Windows - -Windows 7 y posteriores son soportados, las versiones antiguas no son soportadas (y no funcionan). - -Se proveen binarios para las arquitecturas `x86` y `amd64` (x64). -Nota: La versión para `ARM` de Windows no está soportada aún. - -### Linux - -Los binarios preconstruidos para `ia32`(`i686`) y `x64`(`amd64`) son construidos sobre -Ubuntu 12.04, el binario para `arm` es construido sobre ARM v7 con la ABI hard-float -y NEON para Debian Wheezy. - -La posibilidad de que un binario preconstruido se ejecute en una distribución determinada -depende de las librerías contra las que fue enlazado Electron. -Por ahora sólo se garantiza la ejecución en Ubuntu 12.04, aunque también se ha verificado -el funcionamiento de los binarios preconstruidos en las siguientes plataformas: - -* Ubuntu 12.04 and later -* Fedora 21 -* Debian 8 diff --git a/docs-translations/es/tutorial/using-native-node-modules.md b/docs-translations/es/tutorial/using-native-node-modules.md deleted file mode 100644 index 090f7123cbdd..000000000000 --- a/docs-translations/es/tutorial/using-native-node-modules.md +++ /dev/null @@ -1,57 +0,0 @@ -# Utilizando módulos Node nativos - -Los módulos Node nativos son soportados por Electron, pero dado que Electron -está utilizando una versión distinta de V8, debes especificar manualmente la -ubicación de las cabeceras de Electron a la hora de compilar módulos nativos. - -## Compatibilidad de módulos nativos - -A partir de Node v0.11.x han habido cambios vitales en la API de V8. -Es de esperar que los módulos escritos para Node v0.10.x no funcionen con Node v0.11.x. -Electron utiliza Node v.0.11.13 internamente, y por este motivo tiene el mismo problema. - -Para resolver esto, debes usar módulos que soporten Node v0.11.x, -[muchos módulos](https://www.npmjs.org/browse/depended/nan) soportan ambas versiones. -En el caso de los módulos antiguos que sólo soportan Node v0.10.x, debes usar el módulo -[nan](https://github.com/rvagg/nan) para portarlos a v0.11.x. - -## ¿Cómo instalar módulos nativos? - -### La forma fácil - -La forma más sencilla de recompilar módulos nativos es a través del paquete -[`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild), -el cual abstrae y maneja los pasos de descargar las cabeceras y compilar los módulos nativos: - -```sh -npm install --save-dev electron-rebuild - -# Ejecuta esto cada vez que ejecutes npm install -./node_modules/.bin/electron-rebuild -``` - -### La forma node-gyp - -Para compilar módulos Node con las cabeceras de Electron, debes indicar a `node-gyp` -desde dónde descargar las cabeceras y cuál versión usar: - -```bash -$ cd /path-to-module/ -$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/electron -``` - -Los cambios en `HOME=~/.electron-gyp` fueron para especificar la ruta de las cabeceras. -La opción `--target=0.29.1` es la versión de Electron. La opción `--dist-url=...` especifica -dónde descargar las cabeceras. `--arch=x64` indica que el módulo será compilado para un sistema de 64bit. - -### La forma npm - -También puedes usar `npm` para instalar módulos, los pasos son exactamente igual a otros módulos Node, -con la excepción de que necesitas establecer algunas variables de entorno primero: - -```bash -export npm_config_disturl=https://atom.io/download/electron -export npm_config_target=0.29.1 -export npm_config_arch=x64 -HOME=~/.electron-gyp npm install module-name -``` diff --git a/docs-translations/es/tutorial/using-pepper-flash-plugin.md b/docs-translations/es/tutorial/using-pepper-flash-plugin.md deleted file mode 100644 index 10210550bac0..000000000000 --- a/docs-translations/es/tutorial/using-pepper-flash-plugin.md +++ /dev/null @@ -1,55 +0,0 @@ -# Utilizando el plugin Pepper Flash - -El plugin Pepper Flash es soportado ahora. Para utilizar pepper flash en Electron, debes especificar la ubicación del plugin manualmente y activarlo en tu aplicación. - -## Preparar una copia del plugin Flash - -En macOS y Linux, el detalle del plugin puede encontrarse accediendo a `chrome://plugins` en el navegador. Su ubicación y versión son útiles para el soporte. También puedes copiarlo a otro lugar. - -## Agrega la opción a Electron - -Puedes agregar la opción `--ppapi-flash-path` y `ppapi-flash-version` o utilizar el método `app.commandLine.appendSwitch` antes del evento ready de la aplicación. -También puedes agregar la opción `plugins` de `browser-window`. Por ejemplo, - -```javascript -var app = require('app') -var BrowserWindow = require('browser-window') - -// Keep a global reference of the window object, if you don't, the window will -// be closed automatically when the javascript object is GCed. -var mainWindow = null - -// Quit when all windows are closed. -app.on('window-all-closed', function () { - if (process.platform !== 'darwin') { - app.quit() - } -}) - -// Specify flash path. -// On Windows, it might be /path/to/pepflashplayer.dll -// On macOS, /path/to/PepperFlashPlayer.plugin -// On Linux, /path/to/libpepflashplayer.so -app.commandLine.appendSwitch('ppapi-flash-path', '/path/to/libpepflashplayer.so') - -// Specify flash version, for example, v17.0.0.169 -app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169') - -app.on('ready', function () { - mainWindow = new BrowserWindow({ - 'width': 800, - 'height': 600, - 'web-preferences': { - 'plugins': true - } - }) - mainWindow.loadURL(`file://${__dirname}/index.html`) - // Something else -}) -``` - -## Activar el plugin flash en una etiqueta `` -Agrega el atributo `plugins`. -```html - -``` diff --git a/docs-translations/es/tutorial/using-selenium-and-webdriver.md b/docs-translations/es/tutorial/using-selenium-and-webdriver.md deleted file mode 100644 index 14afa072acba..000000000000 --- a/docs-translations/es/tutorial/using-selenium-and-webdriver.md +++ /dev/null @@ -1,72 +0,0 @@ -# Utilizando Selenium y WebDriver - -De [ChromeDriver - WebDriver for Chrome][chrome-driver]: - -> WebDriver es una herramienta de código abierto para automatizar el testing de aplicaciones web -> en varios navegadores. WebDriver provee funciones de navegación, entrada de usuario, -> ejecución de JavaScript, y más. ChromeDriver es un servidor standalone que implementa -> el protocolo de WebDriver para Chromium. Se encuentra en desarrollo por los miembros de -> Chromium y WebDriver. - -En la página de [lanzamientos](https://github.com/electron/electron/releases) de Electron encontrarás paquetes de `chromedriver`. - -## Ajustando parámetros con WebDriverJs - -[WebDriverJs](https://code.google.com/p/selenium/wiki/WebDriverJs) provee -un paquete Node para realizar testing con web driver, lo usaremos como ejemplo. - -### 1. Inicia chrome driver - -Primero necesitas descargar el binario `chromedriver` y ejecutarlo: - -```bash -$ ./chromedriver -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -Recuerda el puerto `9515`, lo utilizaremos después. - -### 2. Instala WebDriverJS - -```bash -$ npm install selenium-webdriver -``` - -### 3. Conecta chrome driver - -El uso de `selenium-webdriver` junto con Electron es básicamente el mismo que el original, -excepto que necesitas especificar manualmente cómo se conectará el chrome driver -y dónde encontrará el binario de Electron: - -```javascript -var webdriver = require('selenium-webdriver') - -var driver = new webdriver.Builder() - // El puerto "9515" es que abre chrome driver. - .usingServer('http://localhost:9515') - .withCapabilities({chromeOptions: { - // Aquí especificamos la ruta a Electron - binary: '/Path-to-Your-App.app/Contents/MacOS/Atom'}}) - .forBrowser('electron') - .build() - -driver.get('http://www.google.com') -driver.findElement(webdriver.By.name('q')).sendKeys('webdriver') -driver.findElement(webdriver.By.name('btnG')).click() -driver.wait(function () { - return driver.getTitle().then(function (title) { - return title === 'webdriver - Google Search' - }) -}, 1000) - -driver.quit() -``` - -## Workflow - -Para probar tu aplicación sin recompilar Electron, simplemente [copia](https://github.com/electron/electron/blob/master/docs/tutorial/application-distribution.md) las fuentes de tu aplicación en el directorio de recursos de Electron. - -[chrome-driver]: https://sites.google.com/a/chromium.org/chromedriver/ - - diff --git a/docs-translations/fr-FR/README.md b/docs-translations/fr-FR/README.md deleted file mode 100644 index 0bf176536c47..000000000000 --- a/docs-translations/fr-FR/README.md +++ /dev/null @@ -1,91 +0,0 @@ -Vérifiez que vous utilisez la bonne version de la documentation. -Le numéro de version devrait faire partie de l'URL de la page. -Si ce n'est pas le cas, vous utilisez probablement la documentation d'une -branche de développement qui peut contenir des changements API qui ne sont pas -compatibles avec votre version d'Electron. Si c'est le cas, vous pouvez changer -de version sur la liste [versions disponibles](https://electron.atom.io/docs/), -ou, si vous utilisez l'interface de GitHub, ouvrez la liste déroulante "Switch -branches/tags" afin de sélectionner le tag de votre version. - -## FAQ - -Avant de créer un ticket, vérifiez que votre problème n'a pas déjà sa réponse -dans la FAQ : - -* [Electron FAQ](faq/electron-faq.md) - -## Guides - -* [Plateformes supportées](tutorial/supported-platforms.md) -* [Distribution de l'Application](tutorial/application-distribution.md) -* [Guide de Soumission Mac App Store](tutorial/mac-app-store-submission-guide.md) -* [Créer une archive](tutorial/application-packaging.md) -* [Utiliser Modules Natifs de Node](tutorial/using-native-node-modules.md) -* [Debugger Processus Principal](tutorial/debugging-main-process.md) -* [Utiliser Selenium et WebDriver](tutorial/using-selenium-and-webdriver.md) -* [Extension DevTools](tutorial/devtools-extension.md) -* [Utiliser le Plugin Pepper Flash](tutorial/using-pepper-flash-plugin.md) -* [Utiliser le Plugin Widevine CDM](tutorial/using-widevine-cdm-plugin.md) - -## Tutoriels - -* [Démarrage Rapide](tutorial/quick-start.md) -* [Intégration Environnement de Bureau](tutorial/desktop-environment-integration.md) -* [Détection des Evènements En ligne/Hors ligne](tutorial/online-offline-events.md) - -## Références API - -* [Synopsis](api/synopsis.md) -* [L'objet Process](api/process.md) -* [Commandes Chromes Supportées](api/chrome-command-line-switches.md) -* [Variables d'Environnement](api/environment-variables.md) - -### Eléments DOM Personnalisés: - -* [Objet `File`](api/file-object.md) -* [Tag ``](api/webview-tag.md) -* [Fonction `window.open`](api/window-open.md) - -### Modules pour le Processus Principal : - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [webContents](api/web-contents.md) -* [Tray](api/tray.md) - -### Modules pour le Processus d'Affichage (Page Web) : - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### Modules pour les deux Processus : - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## Développement - -* [Style de Code](development/coding-style.md) -* [Hiérarchie du Code Source](development/source-code-directory-structure.md) -* [Différences Techniques par rapport à NW.js (anciennement node-webkit)](development/atom-shell-vs-node-webkit.md) -* [Aperçu du Système de Build](development/build-system-overview.md) -* [Instructions de Build (macOS)](development/build-instructions-osx.md) -* [Instructions de Build (Windows)](development/build-instructions-windows.md) -* [Instructions de Build (Linux)](development/build-instructions-linux.md) -* [Installer un Serveur de Symbol dans le debugger](development/setting-up-symbol-server.md) diff --git a/docs-translations/fr-FR/faq/electron-faq.md b/docs-translations/fr-FR/faq/electron-faq.md deleted file mode 100644 index 85540233e312..000000000000 --- a/docs-translations/fr-FR/faq/electron-faq.md +++ /dev/null @@ -1,129 +0,0 @@ -# Electron FAQ - -## Quand est mise à jour la version de Chrome utilisée par Electron ? - -La version de Chrome qu'utilise Electron est en général mise à jour une ou deux -semaines après la sortie d'une nouvelle version stable de Chrome. - -Etant donné que nous n'utilisons que les versions stables de Chrome, si un fix -important est en beta ou en dev, nous l'intégrerons à la version que nous -utilisons. - -## Quand est mise à jour la version de Node.js utilisée par Electron ? - -Quand une nouvelle version de Node.js sort, nous attendons en général un mois -avant de mettre à jour celle que nous utilisons dans Electron. Ceci afin -d'éviter les bugs introduits par les nouvelles versions, ce qui arrive très -souvent. - -Les nouvelles fonctionnalités de Node.js arrivant la plupart du temps via V8, -et Electron utilisant le V8 du navigateur Chrome, la nouvelle fonctionnalité -JavaScript de la nouvelle version de Node.js est bien souvent déjà dans -Electron. - -## La fenêtre/barre d'état de mon application disparait après quelques minutes. - -Cela se produit quand la variable qui est utilisée pour stocker la fenêtre/barre -d'état est libérée par le ramasse-miettes. - -Nous vous recommandons de lire les articles suivants quand vous rencontrez le -problème : - -* [Management de la Mémoire][memory-management] (Anglais) -* [Portée d'une Variable][variable-scope] (Anglais) - -Si vous voulez corriger rapidement le problème, vous pouvez rendre les variables -globales en changeant votre code de ça : - -```javascript -app.on('ready', function () { - var tray = new Tray('/path/to/icon.png') -}) -``` - -à ça : - -```javascript -var tray = null -app.on('ready', function () { - tray = new Tray('/path/to/icon.png') -}) -``` - -## Je n'arrive pas à utiliser jQuery/RequireJS/Meteor/AngularJS dans Electron. - -A cause de l'intégration de Node.js dans Electron, certains mots-clés sont -insérés dans la DOM, comme `module`, `exports`, `require`. Ceci pose des -problèmes pour certaines bibliothèques qui utilisent les mêmes mots-clés. - -Pour résoudre ce problème, vous pouvez désactiver l'intégration de node dans -Electron : - -```javascript -// Dans le processus principal. -var mainWindow = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -``` - -Mais si vous voulez garder la possibilité d'utiliser Node.js et les APIs -Electron, vous devez renommer les mots-clés dans la page avant d'inclure -d'autres bibliothèques : - -```html - - - - -``` - -## `require('electron').xxx` is undefined. - -Lors de l'utilisation des modules d'Electron, vous pouvez avoir une erreur : - -``` -> require('electron').webFrame.setZoomFactor(1.0); -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -Ceci se produit quand vous avez le [module npm `electron`][electron-module] -d'installé, soit en local ou en global, ce qui a pour effet d'écraser les -modules de base d'Electron. - -Vous vérifiez que vous utilisez les bons modules, vous pouvez afficher le -chemin du module `electron` : - -```javascript -console.log(require.resolve('electron')) -``` - -et vérifier si il est de la forme : - -``` -"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -S'il est de la forme `node_modules/electron/index.js`, vous devez supprimer le -module npm `electron`, ou le renommer. - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -Si vous utilisez le module de base mais que vous continuez d'avoir -l'erreur, ça vient probablement du fait que vous utilisez le module dans le -mauvais processus. Par exemple `electron.app` peut uniquement être utilisé -dans le processus principal, tandis que `electron.webFrame` est uniquement -disponible dans le processus d'affichage. - -[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron diff --git a/docs-translations/fr-FR/styleguide.md b/docs-translations/fr-FR/styleguide.md deleted file mode 100644 index 22f7a62f9382..000000000000 --- a/docs-translations/fr-FR/styleguide.md +++ /dev/null @@ -1,101 +0,0 @@ -# Règles de style pour la documentation d'Electron - -Choisissez la section appropriée : [lire la documentation d'Electron](#reading-electron-documentation) -ou [écrire de la documentation pour Electron](#writing-electron-documentation). - -## Ecrire de la documentation pour Electron - -La documentation d'Electron a été écrite en suivant les règles ci-dessous : - -- Maximum un titre `h1` par page. -- Utilisation de `bash` au lieu de `cmd` dans les blocs de code (à cause de la - coloration syntaxique). -- Les titres `h1` devraient reprendre le nom de l'objet (i.e. `browser-window` → - `BrowserWindow`). - - Cependant, les traits d'union sont acceptés pour les noms de fichier. -- Pas de titre directement après un autre, ajoutez au minimum une ligne de - description entre les deux. -- Les entêtes des méthodes sont entre accents graves (backquotes) `code`. -- Les entêtes des évènements sont entre des apostrophes 'quotation'. -- Les listes ne doivent pas dépasser 2 niveaux (à cause du formattage du - markdown). -- Ajouter des titres de section: Evènements, Méthodes de classe, et Méthodes - d'instance. -- Utiliser 'will' au lieu de 'would' lors de la description du retour. -- Les évènements et méthodes sont des titres `h3`. -- Les arguments optionnels sont notés `function (required[, optional])`. -- Les arguments optionnels sont indiqués quand appelés dans la liste. -- La longueur des lignes ne dépasse pas 80 caractères. -- Les méthodes spécifiques à une plateforme sont notées en italique. - - ```### `method(foo, bar)` _macOS_``` -- Préférer 'in the ___ process' au lieu de 'on' - -### Traductions de la Documentation - -Les traductions de la documentation d'Electron sont dans le dossier -`docs-translations`. - -Pour ajouter une nouvelle langue (ou commencer) : - -- Créer un sous-dossier avec comme nom le code langage. -- A l'intérieur de ce dossier, dupliquer le dossier `docs`, en gardant le même - nom de dossiers et de fichiers. -- Traduire les fichiers. -- Mettre à jour le `README.md` à l'intérieur du dossier de langue en mettant les - liens vers les fichiers traduits. -- Ajouter un lien vers le nouveau dossier de langue dans le [README](https://github.com/electron/electron#documentation-translations) - principal d'Electron. - -## Lire la documentation d'Electron - -Quelques indications pour comprendre la syntaxe de la documentation d'Electron. - -### Méthodes - -Un exemple de la documentation d'une [méthode](https://developer.mozilla.org/en-US/docs/Glossary/Method) -(Anglais) - ---- - -`methodName(required[, optional]))` - -* `require` String (**required**) -* `optional` Integer - ---- - -Le nom de la méthode est suivi des arguments de celle-ci. Les arguments -optionnels sont notés entre crochets, avec une virgule si ceux-ci suivent un -autre argument. - -En-dessous de la méthode, chaque argument est détaillé avec son type. -Celui-ci peut être un type générique : -[`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), -[`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), -[`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object), -[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -ou un type personnalisé comme le [`webContent`](api/web-content.md) d'Electron. - -### Evènements - -Un exemple d'une documentation d'un [évènement](https://developer.mozilla.org/en-US/docs/Web/API/Event) -(Anglais) ---- - -Event: 'wake-up' - -Returns: - -* `time` String - ---- - -L'évènement est une chaine utilisée après un listener `.on`. Si il retourne une -valeur, elle est écrite en dessous ainsi que son type. Si vous voulez écouter et -répondre à l'évènement wake-up, ça donne quelque chose comme : - -```javascript -Alarm.on('wake-up', function (time) { - console.log(time) -}) -``` diff --git a/docs-translations/fr-FR/tutorial/electron-versioning.md b/docs-translations/fr-FR/tutorial/electron-versioning.md deleted file mode 100644 index bec3f01b8e0d..000000000000 --- a/docs-translations/fr-FR/tutorial/electron-versioning.md +++ /dev/null @@ -1,14 +0,0 @@ -# Versionage d'Electron - -Si vous êtes un développeur Node expérimenté, vous êtes sûrement au courant de `semver` - et pourrez l'utiliser pour donner à vos systèmes de gestion de dépendances seulement des lignes directrices générales plutôt que des numéros de version fixes. En raison d'une forte dépendence avec Node et -Chromium, Electron est dans une position quelque peu difficile et ne suit pas -semver. Vous devez donc toujours faire référence à une version spécifique d'Electron. - -Les numéros de version sont mis à jour selon les règles suivantes: - -* Majeur: Pour les gros changements entrainant des ruptures dans l'API d'Electron - Si vous passez de la version `0.37.0` - à `1.0.0`, vous devrez effectuer une migration de votre application. -* Mineur: Pour des changements majeurs de Chrome et des changements mineurs de Node; ou des changements importants d'Electron - si vous mettez à jour de `1.0.0` vers `1.1.0`, le plus gros de votre application fonctionnera, seuls de petits changements seront à effectuer. -* Patch: Pour de nouvelles fonctionalités et des résolutions de bugs - si vous passez de la version `1.0.0` à `1.0.1`, votre application continuera de s'exécuter telle quelle. - -Si vous utilisez `electron` ou `electron-prebuilt`, nous vous recommandons de fixer le numéro de version (`1.1.0` au lieu de `^1.1.0`) pour être sûr que toutes les mises à jour d'Electron sont une opération manuelle faite par vous, le développeur. diff --git a/docs-translations/fr-FR/tutorial/quick-start.md b/docs-translations/fr-FR/tutorial/quick-start.md deleted file mode 100644 index 0eb1eac37d7f..000000000000 --- a/docs-translations/fr-FR/tutorial/quick-start.md +++ /dev/null @@ -1,245 +0,0 @@ -# Démarrage Rapide - -Electron vous permet de créer des applications de bureau avec du JavaScript -fournissant un runtime avec des API riches natives (système d'exploitation). -Vous pourriez le voir comme une variante d'un Node.js directement exécutable -sur le bureau au lieu des serveurs Web. - -Cela ne signifie pas que Electron est une liaison JavaScript à l'interface -utilisateur graphique (GUI). Au lieu de cela, Electron utilise des pages -Web comme GUI, donc vous pouvez aussi le voir comme un navigateur minimal -Chromium, contrôlé par JavaScript. - -### Processus principal - -Dans Electron, le processus qui exécute le script `main` de` package.json` -est appelé __le processus principal__. Le script qui s'exécute dans le -processus principal peut afficher une interface graphique en créant des -pages Web. - -### Processus de rendu - -Puisque Electron utilise Chromium pour afficher des pages Web, Chromium -Multi-process architecture est également utilisé. Chaque page Web d'Electron -fonctionne avec son propre processus, qui est appelé __le processus de rendu__. - -Dans les navigateurs normaux, les pages Web sont habituellement exécutées -dans un environnement aux ressources indépendantes. Les utilisateurs d'électrons -ont cependant le pouvoir d'utiliser les API Node.js dans des pages Web permettant -un système d'exploitation de niveau inférieur d'interactions. - -### Différences entre le processus principal et le processus de rendu - -Le processus principal crée des pages Web en créant des instances `BrowserWindow`. -Chaque instance `BrowserWindow` exécute la page Web dans son propre processus -de rendu. Lorsqu'une occurrence `BrowserWindow` est détruite, le processus -de rendu correspondant est également terminé. - -Le processus principal gère toutes les pages Web et leur processus rendu correspondant. -Chaque processus de rendu est isolé et ne se soucie que de la page Web en cours -d'exécution. - -Dans les pages Web, l'appel des API relatives aux GUI natives n'est pas autorisé -car la gestion des ressources natives GUI dans les pages Web est très dangereuse, -il est facile de perdre des ressources. Si vous souhaitez effectuer des opérations -GUI dans une page Web, le Processus de la page Web doit communiquer avec le -processus principal pour lui demander d'effectuer ces opérations. - -Dans Electron, nous avons plusieurs façons de communiquer entre le processus principal et -le processeurs. Comme [`ipcRenderer`](../api/ipc-renderer.md) et [`ipcMain`](../api/ipc-main.md) pour envoyer des messages, et les [Remote](../api/remote.md) -pour la communication de style RPC. Il y a aussi une entrée de FAQ sur -[comment partager des données entre des pages Web][share-data]. - -## Écrivez votre première application Electron - -Généralement, une application Electron est structurée comme ceci : - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -Le format de `package.json` est exactement le même que celui des modules de Node, et -le script spécifié par le champ `main` est le script de démarrage de votre application, -qui exécutera le processus principal. Un exemple de votre `package.json` peut être -comme cela : - -```json -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__Note__ : Si le champ `main` n'est pas présent dans` package.json`, Electron -tentera de charger un fichier `index.js`. - -Le fichier `main.js` devrait créer des fenêtres et gérer les événements du système. -Exemple : - -```javascript -const {app, BrowserWindow} = require('electron') -const path = require('path') -const url = require('url') - -// Gardez une référence globale de l'objet fenêtre, sinon, la fenêtre -// sera automatiquement fermée lorsque l'objet JavaScript est récupéré. -let win - -function createWindow () { - // Créer la fenêtre du navigateur. - win = new BrowserWindow({width: 800, height: 600}) - - // charger index.html de l'application. - win.loadURL(url.format({ - pathname: path.join(__dirname, 'index.html'), - protocol: 'file:', - slashes: true - })) - - // Ouvrir DevTools. - win.webContents.openDevTools() - - // Émis lorsque la fenêtre est fermée. - win.on('closed', () => { - // Déréférencer l'objet fenêtre, habituellement vous stockez des fenêtres - // dans un tableau si votre application prend en charge plusieurs fenêtres, - // c'est l'heure où vous devez supprimer l'élément correspondant. - win = null - }) -} - -// Cette méthode sera appelée lorsque Electron aura terminé l'initialisation -// et est prét à créer des fenêtres de navigation. Certaines API ne peuvent -// être utilisées qu'après le lancement de cet événement. -app.on('ready', createWindow) - -// Quittez lorsque toutes les fenêtres sont fermées. -app.on('window-all-closed', () => { - // Sur macOS, il est fréquent que les applications et leur barre de menus - // restent actives jusqu'à ce que l'utilisateur quitte explicitement avec Cmd + Q - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // Sur macOS, il est fréquent de recréer une fenêtre dans l'application lorsque - // l'icône du dock est cliquée et qu'il n'y a pas d'autres fenêtres ouvertes. - if (win === null) { - createWindow() - } -}) - -// Dans ce fichier, vous pouvez inclure le reste du code du processus principal -// spécifique de votre application. Vous pouvez également les mettres dans des -// fichiers distincts et les écrire ici. -``` - -Enfin, `index.html` est la page web que vous voulez afficher : - -```html - - - - - Hello World! - - -

Hello World!

- Nous utilisons le noeud , - Chrome , - et Electron . - - -``` - -## Exécuter votre application - -Une fois que vous avez créé vos fichiers `main.js`,` index.html` et `package.json`, -vous voudriez probablement essayer d'exécuter votre application localement pour la -tester et vous assurer qu'elle fonctionne comme prévu. - -### `electron` - -[`electron`](https://github.com/electron-userland/electron-prebuilt) est -un module `npm` qui contient des versions pré-compilées d'Electron. - -Si vous l'avez installé globalement avec `npm`, vous n'en aurez pas besoin -dans le répertoire source de votre application : - -```bash -electron . -``` - -Si vous l'avez installé localement : - -#### macOS / Linux - -```bash -$ ./node_modules/.bin/electron . -``` - -#### Windows - -```bash -$ .\node_modules\.bin\electron . -``` - -### Executable d'Electron téléchargé manuellement - -Si vous avez téléchargé Electron manuellement, vous pouvez également utiliser -binaire pour exécuter votre application directement. - -#### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -#### Linux - -```bash -$ ./electron/electron your-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` fait partie du package de libération de l'Electron, vous pouvez -télécharger à partir [ici](https://github.com/electron/electron/releases). - -### Exécuter en tant que distribution - -Une fois que vous avez terminé d'écrire votre application, vous pouvez -créer une distribution en suivant le guide [Distribuer une application](./application-distribution.md) puis exécuter l'application packagée. - -### Essayez cet exemple - -Clonez et exécutez le code dans ce didacticiel en utilisant le -[`electron/electron-quick-start`](https://github.com/electron/electron-quick-start). - -**Note** : Exécuter cela nécessite [Git](https://git-scm.com) et [Node.js](https://nodejs.org/en/download/) (que comprend [npm](https://npmjs.org)) sur votre système. - -```bash -# Clone the repository -$ git clone https://github.com/electron/electron-quick-start -# Go into the repository -$ cd electron-quick-start -# Install dependencies -$ npm install -# Run the app -$ npm start -``` - -Pour plus d'exemples app, consultez la section -[list of boilerplates](https://electron.atom.io/community/#boilerplates) -Créé par la communauté impressionnante d'électrons. - -[share-data]: ../faq.md#how-to-share-data-between-web-pages diff --git a/docs-translations/fr-FR/tutorial/security.md b/docs-translations/fr-FR/tutorial/security.md deleted file mode 100644 index e879aab716d2..000000000000 --- a/docs-translations/fr-FR/tutorial/security.md +++ /dev/null @@ -1,75 +0,0 @@ -# Securité, Application Natives, et Votre Responsabilité - -En tant que développeurs Web, nous avons l'habitude de bénéficier d'une sécurité élevée au niveau du navigateur - les -risques associés au code que nous écrivons sont relativement faibles. Nos sites internet ont des droits limités au sein -d'une sandbox, et nous faisons confiance à nos utilisateurs pour utiliser des navigateurs créés par de grosses équipes d'ingénieurs -capables de réagir rapidement lorsqu'une faille de sécurité est découverte. - -Quand on travaille avec Electron, il est important de comprendre qu'Electron n'est pas un navigateur web. -Il vous permet de construire des applications de bureau riches de fonctionnalités au travers de technologies web familières, -mais votre code a beaucoup plus de possibilités. Javascript peut accéder au système de fichiers, au shell, et plus. -Cela vous permet de construire des applications natives de haute qualité, mais les problèmes de sécurité sont inhérents à toutes ces possibilités. - -Avec ça en tête, soyez conscient qu'afficher du contenu arbitraire depuis des sources extérieures pose un gros risque au niveau de la sécurité qu'Electron ne peut gérer. -En fait, les applications utilisant Electron les plus populaires (Atom, Slack, Visual Studio Code, ...etc) affichent principalement du contenu local (ou de confiance, il s'agit alors de contenu distant sécurisé sans intégration avec Node) - si votre application exécute du code depuis une source extérieure, il est de votre responsabilité de vous assurer que ce code n'est pas malveillant. - - -## Problèmes de sécurité liés à Chromium et mises à jour - -Tandis qu'Electron essaie de supporter les nouvelles versions de Chromium dès que possible, -les developpeurs doivent garder à l'esprit que le fait de mettre à jour l'application est une tâche laborieuse durant laquelle plusieurs douzaines, voire plusieurs centaines de fichiers doivent être modifiés à la main. -Selon les ressources et les contributions actuelles, Electron ne fonctionnera pas toujours avec la dernière version de Chromium, un délai de quelques jours voire quelques semaines est à prévoir. - -Nous pensons que notre système actuel de mises à jour du composant Chromium correspond à un -équilibre approprié entre les ressources dont nous disposons et les besoins de la -majorité des applications construites autour du framework. -Les Pull requests et les contributions supportant cet effort sont toujours les bienvenues. - -## Ignorer les conseils précédents - -Un problème de sécurité existe quand vous recevez du code depuis une source distante puis l'exécutez localement. Prenons comme exemple l'affichage d'un site web distant affiché à l'intérieur d'une fenêtre de navigateur. -Si un attaquant parvient d'une quelconque façon de changer son contenu -(soit en attaquant la source directement, ou bien en se placant entre votre application et sa destination actuelle), ils seront capables d'executer du code natif sur la machine de l'utilisateur. - -> :warning: En aucun cas vous ne devez charger puis exécuter du code distant avec Node. A la place, utilisez seulement des fichiers locaux (regroupés avec votre application) pour exécuter du code de Node. Pour afficher du contenu distant, utilisez le tag -`webview` et assurez vous de désactiver `nodeIntegration`. - -#### Checklist - -Il ne s'agit pas d'une liste exhaustive, mais au moins, pour palier aux problèmes de sécurités vous devez essayer de: - -* Afficher seulement du contenu (https) sécurisé -* Désactiver l'intégration de Node dans tout ce qui gère le rendu avec du contenu distant - (using `webPreferences`) -* Ne pas désactiver `webSecurity`. Disabling it will disable the same-origin policy. -* Définir une [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/) -, et utiliser des règles strictes (i.e. `script-src 'self'`) -* [Surcharger et désactiver `eval`](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6-L8) -, qui permet à des chaînes de caractères d'être exécutées comme du code. -* Ne pas assigner `allowRunningInsecureContent` à true. -* Ne pas activer `experimentalFeatures` ou `experimentalCanvasFeatures` à moins d'être sûr ce que vous faites. -* Ne pas utiliser `blinkFeatures` à moins d'être sûr ce que vous faites. -* WebViews: Assigner `nodeintegration` à false -* WebViews: Ne pas utiliser `disablewebsecurity` -* WebViews: Ne pas utiliser `allowpopups` -* WebViews: Ne pas utiliser `insertCSS` ou `executeJavaScript` avec du CSS/JS distant. - -Encore une fois, cette liste permet de diminuer les risques de problème de sécurité, mais en aucun cas elle ne l'enlève complètement. Si votre objectif est d'afficher un site internet, choisir un navigateur sera une option plus sûre. - -## Buffer Global - -La classe [Buffer](https://nodejs.org/api/buffer.html) de Node est actuellement disponible -en tant que global même quand `nodeIntegration` est à `false`. Vous pouvez le supprimer en faisant la manipulation suivante dans votre script `preload`: - -```js -delete global.Buffer -``` - -Le supprimer peut casser les modules Node utilisés dans votre script preload script et votre application depuis que plusieurs librairies s'attendent à ce qu'il soit en tant que global plutôt que de le demander de manière explicite via: - -```js -const {Buffer} = require('buffer') -``` - -Le `Buffer` global risque d'être supprimé dans de futures versions d'Electron. - diff --git a/docs-translations/fr-FR/tutorial/supported-platforms.md b/docs-translations/fr-FR/tutorial/supported-platforms.md deleted file mode 100644 index cdf3849da6fb..000000000000 --- a/docs-translations/fr-FR/tutorial/supported-platforms.md +++ /dev/null @@ -1,26 +0,0 @@ -# Plateformes supportées - -Les plateformes suivantes sont supportées par Electron: - -### macOS - -Seuls les binaires en 64bit sont fournis sur macOS, et la version minimale de macOS suportée est macOS 10.9. - -### Windows - -Les systèmes d'exploitations Windows 7 et supérieur sont supportés. Les versions antérieures ne sont pas supportées (et ne marchent pas). - -Les binaires `ia32` (`x86`) et `x64` (`amd64`) sont fournis pour Windows. -Veuillez noter que la version `ARM` de Windows n'est pas supportée à ce jour. - -### Linux - -Les binaires précompilés `ia32` (`i686`) et `x64` (`amd64`) d'Electron sont compilés sous -Ubuntu 12.04, le binaire `arm` est compilé à partir d'une version ARM v7 hard-float ABI et -NEON pour Debian Wheezy. - -Pour que les binaires pré-compilés puissent s'exécuter sur une certaine distribution, il faut que cette distribution inclut les librairies dont Electron a besoin. C'est à dire que seulement Ubuntu 12.04 est garanti de fonctionner, même si les plateformes suivantes sont aussi verifiées et capables d'exécuter les binaires pré-compilés d'Electron: - -* Ubuntu 12.04 et suivantes -* Fedora 21 -* Debian 8 diff --git a/docs-translations/id/README.md b/docs-translations/id/README.md deleted file mode 100644 index 56b7cd8af341..000000000000 --- a/docs-translations/id/README.md +++ /dev/null @@ -1,84 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/bc56v83355fi3369/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron/branch/master) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -:memo: Terjemahan yg tersedia: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) | [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW/project/README.md) | [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es/project/README.md) | [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR/project/README.md) - -Framework Electron membuat Anda bisa menulis aplikasi desktop yang cross-platform menggunakan JavaScript, HTML dan CSS. Framework ini bersumber dari - -[Node.js](https://nodejs.org/) dan -[Chromium](http://www.chromium.org) dan dipakai dalam -[Atom editor](https://github.com/atom/atom) dan applikasi-applikasi lainnya [apps](https://electron.atom.io/apps). - -Ikuti [@ElectronJS](https://twitter.com/electronjs) lewat Twitter untuk informasi-informasi penting. - -Proyek ini mengikuti perjanjian kontributor [code of conduct](CODE_OF_CONDUCT.md). -Partisipasi Anda di proyek ini harus mengikuti panduan di atas. Harap laporkan perbuatan yg kurang berkenan melalui electron@github.com. - -## Unduhan - -Untuk instalasi versi binari Electron, pakai -[`npm`](https://docs.npmjs.com/): - -```sh -# Install as a development dependency -npm install electron --save-dev - -# Install the `electron` command globally in your $PATH -npm install electron -g -``` - -Ikuti [releases page](https://github.com/electron/electron/releases) untuk prebuilt binaries, debug symbols, dan lain-lain. - -### Mirrors - -- [China](https://npm.taobao.org/mirrors/electron) - -## Dokumentasi - -Panduan dan referensi API bisa ditemukan di direktori -[docs](https://github.com/electron/electron/tree/master/docs). Direktori tersebut juga berisi dokumen-dokumen yg menunjukkan bagaimana Anda bisa berkontribusi ke proyek Electron. - -## Terjemahan Dokumentasi - -- [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [Japanese](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es) -- [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [Thai](https://github.com/electron/electron/tree/master/docs-Translations/th-TH) -- [Ukrainian](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [Russian](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [French](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) -- [Indonesian](https://github.com/electron/electron/tree/master/docs-translations/id) - -## Mulai Cepat - -Klon dan jalankan repo [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) untuk melihat aplikasi sederhana menggunakan Electron. - -## Komunitas - -Anda bisa berinteraksi di lokasi-lokasi ini: -- [`electron`](http://discuss.atom.io/c/electron) kategori forum Atom -- `#atom-shell` channel di Freenode -- [`Atom`](http://atom-slack.herokuapp.com/) channel di Slack -- [`electron-ru`](https://telegram.me/electron_ru) *(Russian)* -- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Korean)* -- [`electron-jp`](https://electron-jp.slack.com) *(Japanese)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(Turkish)* -- [`electron-id`](https://electron-id.slack.com) *(Indonesia)* - -Cek [awesome-electron](https://github.com/sindresorhus/awesome-electron) -untuk menemukan daftar contoh-contoh aplikasi dan sumber-sumber berguna lainnya. - -## Lisensi - -[MIT](https://github.com/electron/electron/blob/master/LICENSE) - -Kalau menggunakan logo Electro ata logo Github lainnya gunakan panduan berikut [GitHub logo guidelines](https://github.com/logos). diff --git a/docs-translations/id/tutorial/using-widevine-cdm-plugin.md b/docs-translations/id/tutorial/using-widevine-cdm-plugin.md deleted file mode 100644 index ceae3a25a1fe..000000000000 --- a/docs-translations/id/tutorial/using-widevine-cdm-plugin.md +++ /dev/null @@ -1,92 +0,0 @@ -# Menggunakan *Plugin Widevine CDM* - -Di Electron, anda dapat menggunakan *plugin Widevine CDM* yang disertakan dengan -*browser* Chrome. - -## Mendapatkan *plugin* - -Elektron tidak disertakan dengan *plugin Widevine CDM* karena alasan lisensi, -untuk mendapatkanny, anda perlu menginstal *browser* Chrome resmi terlebih dahulu, -yang seharusnya cocok dengan arsitektur dan versi Chrome dari Elektron yang anda -gunakan. - -**Catatan:** Versi utama *browser* Chrome harus sama dengan versi Chrome yang -digunakan oleh Electron, jika tidak cocok, *plugin* tidak akan bekerja sekalipun -`Navigator.plugins` akan menunjukkan bahwa ia telah dimuat. - -### Windows & macOS - -Buka `chrome://components/` di *browser* Chrome, cari `WidevineCdm` dan pastikan -apabila itu *up-to-date*, maka Anda dapat menemukan semua plugin binari dari direktori -`APP_DATA / Google / Chrome / WidevineCDM / VERSION / _platform_specific / PLATFORM_ARCH /`. - - - -`APP_DATA` adalah lokasi sistem untuk menyimpan data aplikasi, di sistem Windows -itu ada di `% LOCALAPPDATA%`, di macOS itu ada di `~ / Library / Application Support`. -`VERSION` adalah versi *Widevine CDM plugin*, seperti `1.4.8.866`. `PLATFORM` adalah `mac` -atau `win`. `ARCH` adalah` x86` atau `x64`. - -Di Windows, binari yang dibutuhkan adalah `widevinecdm.dll` dan -`Widevinecdmadapter.dll`, di macOS adalah` libwidevinecdm.dylib` dan -`Widevinecdmadapter.plugin`. Anda bisa menyalinnya ke manapun Anda suka, tapi -mereka harus di letakkan bersama. - - -### Linux - - -Di Linux, binari plugin disertakan bersama dengan *browser* Chrome, anda bisa -menemukannya di `/ opt / google / chrome`, nama filenya adalah` libwidevinecdm.so` dan -`Libwidevinecdmadapter.so`. - - - -## Menggunakan *plugin* - -Setelah mendapatkan *file* plugin, anda harus meneruskan `widevinecdmadapter` -ke Electron dengan baris perintah penghubung `--widevine-cdm-path`, dan versi -pluginnya dengan pengubung `--widevine-cdm-version`. - -**Catatan:** Meskipun hanya binari `widevinecdmadapter` yang dilewatkan ke Electron, binari -`Widevinecdm` harus disertakan bersama. - -Penghubung baris perintah harus dilewati sebelum `ready` dari` app` modul dipancarkan, -dan halaman yang menggunakan plugin ini harus mempunyai *plugin* yang sudah diaktifkan. - - -Contoh kode: - -```javascript -const {app, BrowserWindow} = require('electron') - -// Anda harus melewatkan filename `widevinecdmadapter` di sini, yang disebut adalah: -// * `widevinecdmadapter.plugin` on macOS, -// * `libwidevinecdmadapter.so` on Linux, -// * `widevinecdmadapter.dll` on Windows. -app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin') -// Versi plugin dapat didapatkan dari halaman `chrome://plugins` di Chrome. -app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866') - -let win = null -app.on('ready', () => { - win = new BrowserWindow({ - webPreferences: { - // `plugins` harus diaktifkan. - plugins: true - } - }) - win.show() -}) -``` - -## Verifikasi plugin - -Untuk memverifikasi jika plugin telah berhasil, anda dapat menggunakan cara berikut: - -* Buka *devtools* dan periksa apakah `navigator.plugins` menyertakan *Widevine -Plugin CDM* -* Buka https://shaka-player-demo.appspot.com/ dan muat manifes yang menggunakan -`Widevine`. -* Buka http://www.dash-player.com/demo/drm-test-area/, periksa apakah di halamannya -terdapat `bitdash uses Widevine in your browser`, lalu putar videonya. diff --git a/docs-translations/id/tutorial/windows-store-guide.md b/docs-translations/id/tutorial/windows-store-guide.md deleted file mode 100644 index d85388149d54..000000000000 --- a/docs-translations/id/tutorial/windows-store-guide.md +++ /dev/null @@ -1,170 +0,0 @@ -# Panduan Windows Store - -Dengan Windows 10, eksekusi win32 yg lama mendapatkan saudara yang baru: *The -Universal Windows Platform*. Format `.appx` yang baru tidak hanya memungkinkan -sejumlah API yang baru dan hebat seperti *Cortana* atau *Push Notifications*, -tetapi juga melalui *Windows Store*, ini akan menyederhanakan instalasi dan update. - -Microsoft [telah mengembangkan sebuah alat yang mengkompilasi aplikasi Elektron sebagai paket `.appx`][electron-windows-store], memungkinkan *developer* untuk menggunakan beberapa -sarana yang dapat ditemukan di model aplikasi baru. Panduan ini menjelaskan cara -menggunakannya - dan kemampuan dan keterbatasan paket Electron AppX. - -## Latar Belakang dan Persyaratan - -Windows 10 "Anniversary Update" dapat menjalankan win32 `.exe` *binaries* dengan cara -meluncurkan mereka bersama-sama dengan *filesystem* virtual dan pendaftaran . Keduanya -dibuat saat kompilasi dengan menjalankan aplikasi and instalasi di dalam *Windows -Container*, memungkinkan *Windows* untuk mengidentifikasi secara tepat modifikasi -sistem operasi mana yang dilakukan saat instalasi. Memasangkan eksekusi -*filesystem* virtual dan pendaftaran virtual yang memungkinkan *Windows* untuk -menjalankan *one-click* instalasi and menghapus instalasi. - -Selain itu, exe diluncurkan di dalam bentuk appx - yang berarti bisa menggunakan -API banyak yang tersedia di *Windows Universal Platform*. Untuk mendapatkan -kemampuan yang lebih, aplikasi Electron dapat dipasangkan dengan *UWP background task* -tersembunyi yang dapat diluncurkan bersamaan dengan `exe` - seperti diluncurkan -sebagai dampingan untuk menjalankan *tasks* yang berjalan di *background*, -menerima *push-notification*, atau untuk berkomunikasi dengan aplikasi UWP lainnya. - -Untuk mengkompilasi aplikasi Elektron yang ada, pastikan anda memenuhi -persyaratan berikut: - -* Windows 10 with Anniversary Update (dikeluarkan August 2nd, 2016) -* The Windows 10 SDK, [unduh disini][windows-sdk] -* Setidaknya Node 4 (untuk mengecek, jalankan `node -v`) - - -Kemudian, instal `electron-windows-store` CLI: - -``` -npm install -g electron-windows-store -``` - -## Step 1: Kemas Aplikasi Elektron Anda - -Kemas aplikasi menggunakan [electron-packager][electron-packager] (atau alat serupa). -Pastikan untuk menghapus `node_modules` yang tidak anda perlukan dalam aplikasi akhir -anda, karena modul yang tidak anda butuhkan hanya akan meningkatkan ukuran aplikasi anda. - -Outputnya kira-kira akan terlihat seperti ini: -``` -├── Ghost.exe -├── LICENSE -├── content_resources_200_percent.pak -├── content_shell.pak -├── d3dcompiler_47.dll -├── ffmpeg.dll -├── icudtl.dat -├── libEGL.dll -├── libGLESv2.dll -├── locales -│   ├── am.pak -│   ├── ar.pak -│   ├── [...] -├── natives_blob.bin -├── node.dll -├── resources -│   ├── app -│   └── atom.asar -├── snapshot_blob.bin -├── squirrel.exe -└── ui_resources_200_percent.pak -``` - - -## 2: Menjalankan *electron-windows-store* - -Dari *PowerShell* (jalankan sebagai "Administrator"), jalankan -`Electron-windows-store` dengan parameter yang dibutuhkan, menggunakan kedua -direktori *input* dan *output*, nama dan versi aplikasi, dan konfirmasi -`Node_modules` harus di *flatten*. - -``` -electron-windows-store ` - --input-directory C:\myelectronapp ` - --output-directory C:\output\myelectronapp ` - --flatten true ` - --package-version 1.0.0.0 ` - --package-name myelectronapp -``` - -Setelah dijalankan, alat ini akan mulai bekerja: Ia akan menerima aplikasi Elektron -anda sebagai *input*, *flattening* `node_modules`. Kemudian, ia akan mengarsipkan -aplikasi anda sebagai `app.zip`. Dengan menggunakan *installer* dan *Windows Container* -, alat ini menciptakan paket AppX yang "diperluas" - termasuk *Windows Application -Manifest* (`AppXManifest.xml`) berserta dengan sistem *virtual file* dan pendaftaran -virtual di dalam map *output* anda. - - -Setelah *file* AppX yang diperluas telah dibuat, alat ini menggunakan -*Windows App Packager* (`MakeAppx.exe`) untuk menggabungkan paket AppX menjadi satu -*file* dari file-file yang ada di *disk*. Akhirnya, alat ini juga bisa digunakan -untuk membuat sertifikat terpercaya di komputer anda untuk menandatangani paket -AppX yang baru. Dengan paket AppX yang telah ditandatangani, CLI juga bisa -secara otomatis menginstal paket di mesin anda. - - -## 3: Menggunakan Paket AppX - -Untuk menjalankan paket, pengguna akan memerlukan Windows 10 dengan apa -yang disebutnya *"Anniversary Update"* - rincian tentang cara memperbarui Windows -dapat ditemukan [di sini][how-to-update]. - -Di sisi lain dari aplikasi-aplikasi UWP tradisional, aplikasi yang terpaket saat ini -perlu menjalani proses verifikasi manual, yang dapat anda terapkan -[disini][centennial-campaigns]. Sementara itu, semua pengguna bisa menginstal -paket anda dengan mengklik dua kali, oleh sebab itu, pengiriman submisi ke toko -tidak diperlukan jika anda hanya mencari metode instalasi yang mudah. Di lingkungan -yang dikelola (biasanya perusahaan), `Add-AppxPackage` [PowerShell Cmdlet dapat digunakan untuk menginstalnya secara otomatis][add-appxpackage]. - -Keterbatasan penting lainnya adalah paket AppX yang telah dikompilasi masih berisi -*Win32 executable* - dan karena itu tidak akan berjalan di *Xbox*, *HoloLens*, -atau Telepon. - - -## Opsional: Tambahkan Fitur UWP menggunakan *BackgroundTask* - -Anda dapat memasangkan aplikasi Elektron Anda dengan tugas *background* UWP yang -tersembunyi yang akan memanfaatkan sepenuhnya fitur Windows 10 - seperti *push-notification*, -integrasi Cortana, atau *live tiles*. - -Untuk mencari tahu bagaimana aplikasi Elektron yang menggunakan *background task* -untuk mengirim *toast notification* dan *live tiles*, [lihat contoh yang disediakan Microsoft][background-task]. - - -## Opsional: Mengkonversi menggunakan *Container Virtualization* - -Untuk menghasilkan paket AppX, `elektron-windows-store` CLI menggunakan *template* -yang seharusnya bekerja untuk sebagian besar aplikasi Electron. Namun, jika anda -menggunakan *custom installer*, atau jika anda mengalami masalah dengan paket -yang dihasilkan, anda dapat mencoba membuat paket menggunakan kompilasi dengan -bantuan Windows Container - di dalam mode itu, CLI akan menginstal dan menjalankan -aplikasi Anda di dalam *Windows Container* yang kosong untuk menentukan -modifikasi apa yang aplikasi Anda lakukan pada sistem operasi. - -Sebelum menjalankan CLI, anda harus mengatur *"Windows Desktop App Converter"*. -Ini akan memakan waktu beberapa menit, tapi jangan khawatir - anda hanya perlu -melakukan ini sekali saja. Unduh *Desktop App Converter* dari [di sini][app-converter]. -Anda akan menerima dua file: `DesktopAppConverter.zip` dan` BaseImage-14316.wim`. - -1. *Unzip* `DesktopAppConverter.zip`. Dari PowerShell (dibuka dengan - "jalankan sebagai Administrator", pastikan bahwa kebijakan eksekusi sistem -anda mengizinkan untuk menjalankan semua yang ingin dijalankan dengan menggunakan `Set-ExecutionPolicy bypass`. -2. Kemudian, jalankan instalasi *Desktop App Converter*, dengan menggunakan lokasi -*Windows Base Image* (di unduh sebagai `BaseImage-14316.wim`), dengan cara memanggil -perintah `. \ DesktopAppConverter.ps1 -Setup -BaseImage. \ BaseImage-14316.wim`. -3. Jika menjalankan perintah tersebut menyebabkan *reboot*, silakan *restart* -mesin anda dan mejalankan perintah yang telah disebutkan diatas setelah berhasil -*restart*. - -Setelah instalasi telah berhasil, anda dapat melajutkan untuk mengkompilasi -aplikasi Electron anda. - -[windows-sdk]: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk -[app-converter]: https://www.microsoft.com/en-us/download/details.aspx?id=51691 -[add-appxpackage]: https://technet.microsoft.com/en-us/library/hh856048.aspx -[electron-packager]: https://github.com/electron-userland/electron-packager -[electron-windows-store]: https://github.com/catalystcode/electron-windows-store -[background-task]: https://github.com/felixrieseberg/electron-uwp-background -[centennial-campaigns]: https://developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge -[how-to-update]: https://blogs.windows.com/windowsexperience/2016/08/02/how-to-get-the-windows-10-anniversary-update diff --git a/docs-translations/it-IT/README.md b/docs-translations/it-IT/README.md deleted file mode 100644 index 53030825c726..000000000000 --- a/docs-translations/it-IT/README.md +++ /dev/null @@ -1,100 +0,0 @@ -Sii certo di usare la documentazione che corrisponde alla tua versione di -Electron. Il numero della versione dovrebbe fare parte dell'URL della pagina. -Se cos� non fosse, stai probabilmente utilizzando una documentazione facente -parte di una branch di sviluppo che potrebbe contenere modifiche all'API che non -sono compatibili con la tua versione di Electron. In questo caso, puoi passare a -una differente versione della documentazione dalla lista di -[versioni disponibili](https://electron.atom.io/docs/) su atom.io, o nel caso tu -stia usando l'interfaccia di GitHub, apri il menu a tendina "Switch -branches/tags" e seleziona il tag che corrisponde alla tua versione. - -## FAQ - -Ci sono domande che vengono chieste abbastanza spesso, quindi controlla questa -sezione prima di creare una issue: - -* [Electron FAQ](faq.md) - -## Guide - -* [Piattaforme Supportate](tutorial/piattaforme-supportate.md) -* [Sicurezza](tutorial/sicurezza.md) -* [Versionamento Electron](tutorial/versionamento-electron.md) -* [Distribuzione dell'Applicazione](tutorial/distribuzione-applicazione.md) -* [Guida Mac App Store](tutorial/guida-mac-app-store.md) -* [Guida Windows Store](tutorial/guida-windows-store.md) -* [Packaging Applicazione](tutorial/packaging-applicazione.md) -* [Usare Moduli Node Nativi](tutorial/usare-moduli-node-nativi.md) -* [Debugging Processo Principale](tutorial/debugging-processo-principale.md) -* [Usare Selenium e WebDriver](tutorial/usare-selenium-e-webdriver.md) -* [Estensioni DevTools](tutorial/estensioni-devtools.md) -* [Usare Plugin Pepper Flash](tutorial/usare-plugin-pepper-flash.md) -* [Usare Plugin Widevine CDM](tutorial/usare-plugin-widevine-cdm.md) -* [Testare su Sistemi Headless CI (Travis, Jenkins)](tutorial/testare-su-sistemi-headless-ci.md) -* [Rendering Offscreen](tutorial/rendering-offscreen.md) - -## Tutorial - -* [Guida Rapida](tutorial/guida-rapida.md) -* [Integrazione Ambiente Desktop](tutorial/integrazione-ambiente-desktop.md) -* [Rilevazione Eventi Online/Offline](tutorial/eventi-online-offline.md) - -## Documentazione API - -* [Sinossi](api/sinossi.md) -* [Oggetto Process](api/process.md) -* [Parametri Linea di Comando Chrome Supportati](api/parametri-linea-comando-chrome.md) -* [Variabili di Ambiente](api/variabili-ambiente.md) - -### Elementi personalizzati DOM: - -* [Oggetto `File`](api/oggetto-file.md) -* [Tag ``](api/webview-tag.md) -* [Funzione `window.open`](api/window-open.md) - -### Moduli per il Processo Main: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [systemPreferences](api/system-preferences.md) -* [Tray](api/tray.md) -* [webContents](api/web-contents.md) - -### Moduli per il Processo di Rendering (Pagina Web): - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### Moduli per Entrambi i Processi: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## Sviluppo - -* [Stile Codice](development/stile-codice.md) -* [Struttura Cartella Codice Sorgente](development/struttura-cartella-codice-sorgente.md) -* [Differenze Tecniche da NW.js (precedentemente node-webkit)](development/atom-shell-vs-node-webkit.md) -* [Panoramica Sistema di Build](development/panoramica-sistema-build.md) -* [Istruzioni Build (macOS)](development/istruzioni-build-macos.md) -* [Istruzioni Build (Windows)](development/istruzioni-build-windows.md) -* [Istruzioni Build (Linux)](development/istruzioni-build-linux.md) -* [Istruzioni Debug (macOS)](development/istruzioni-debug-macos.md) -* [Istruzioni Debug (Windows)](development/istruzioni-debug-windows.md) -* [Impostare Symbol Server nel debugger](development/impostare-symbol-server.md) diff --git a/docs-translations/it-IT/faq.md b/docs-translations/it-IT/faq.md deleted file mode 100644 index 520bd61b904a..000000000000 --- a/docs-translations/it-IT/faq.md +++ /dev/null @@ -1,167 +0,0 @@ -# Electron FAQ - -## Quando verrà utilizzata l'ultima versione di Chrome per Electron? - -La versione di Chrome usata da Electron viene aggiornata solitamente entro una o -due settimane dal rilascio di una versione stabile di Chrome. Questa stima non è -garantita e dipende dall'ammontare di lavoro necessario all'aggiornamento. - -E' utilizzato solo il canale stabile di Chrome. Se un fix importante si trovasse -sui canali beta o dev, lo applicheremo a una versione precedente. - -Per maggiori informazioni, leggi l'[introduzione alla sicurezza](tutorial/sicurezza.md). - -## Quando verrà utilizzata l'ultima versione di Node.js per Electron? - -Quando una nuova versione di Node.js viene rilasciata, aspettiamo per circa un -mese prima di aggiornare quella di Electron. Possiamo così evitare di essere -influenzati dai bug introdotti nelle nuove versioni di Node.js, cosa che accade -spesso. - -Le nuove funzionalità di Node.js sono solitamente introdotte dagli aggiornamenti -di V8. Siccome Electron usa la versione di V8 integrata nel browser Chrome, le -nuove funzionalità di JavaScript implementate nella nuova versione di Node.js -sono già presenti in Electron. - -## Come condividere dati tra pagine web? - -Il modo più semplice per condividere dati tra pagine web (il processo di -rendering) è usare le API di HTML5 già disponibili nei browser. Alcune buone -opzioni sono [Storage API][storage], [`localStorage`][local-storage], -[`sessionStorage`][session-storage] e [IndexDB][indexed-db]. - -Oppure puoi usare il sistema IPC, che è specifico di Electron, per memorizzare -gli oggetti nel processo principale come variabile globale e accedervi poi -dai renderer tramite la proprietà `remote` del modulo `electron`: - -```javascript -// Nel processo principale. -global.sharedObject = { - someProperty: 'valore di default' -} -``` - -```javascript -// Nella pagina 1. -require('electron').remote.getGlobal('sharedObject').someProperty = 'nuovo valore' -``` - -```javascript -// Nella pagina 2. -console.log(require('electron').remote.getGlobal('sharedObject').someProperty) -``` - -## La finestra/icona della mia app è sparita dopo qualche minuto. - -Ciò accade quando una variabile usata per la memorizzazione della finestra/ -icona viene garbage-collected. - -Se dovessi incontrare questo problema, i seguenti articoli potrebbero esserti -d'aiuto: - -* [Gestione Memoria][memory-management] -* [Visibilità Variabili][variable-scope] - -Se hai bisogno di un fix veloce, puoi rendere le variabili globali cambiando il -tuo codice da così: - -```javascript -const {app, Tray} = require('electron') -app.on('ready', () => { - const tray = new Tray('/percorso/icona.png') - tray.setTitle('ciao mondo') -}) -``` - -a così: - -```javascript -const {app, Tray} = require('electron') -let tray = null -app.on('ready', () => { - tray = new Tray('/percorso/icona.png') - tray.setTitle('ciao mondo') -}) -``` - -## Non posso usare jQuery/RequireJS/Meteor/AngularJS in Electron. - -Data l'integrazione di Node.js di Electron, vi sono alcuni simboli extra -inseriti nel DOM quali `module`, `exports`, `require`. Ciò causa problemi ad -alcune librerie in quanto vogliono inserire simboli con gli stessi nomi. - -Per risolvere il problema, puoi disattivare l'integrazione di Node in Electron: - -```javascript -// Nel processo principale. -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -win.show() -``` - -Se invece volessi mantenere la capacità di usare Node.js e le API di Electron, -devi rinominare i simboli nella pagina prima di includere altre librerie: - -```html - - - - -``` - -## `require('electron').xxx` is undefined. - -Mentre usi il modulo integrato di Electron potresti incorrere in un errore -come questo: - -``` -> require('electron').webFrame.setZoomFactor(1.0) -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -Ciò è causato dal fatto che hai il [modulo npm `electron`][electron-module] -installato localmente o globalmente, e ciò sovrascrive il modulo integrato di -Electron. - -Per verificare che tu stia usando il modulo integrato corretto, puoi stampare a -schermo il percorso del modulo `electron`: - -```javascript -console.log(require.resolve('electron')) -``` - -e dopodiché controlla che sia in questa forma - -``` -"/percorso/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -Se dovesse essere simile a `node_modules/electron/index.js`, allora devi -rimuovere il modulo npm `electron` oppure rinominarlo. - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -Tuttavia, se usi il modulo integrato e continui a ricevere questo errore è molto -probabile che tu stia usando il modulo in un processo sbagliato. Per esempio -`electron.app` può essere usato solo nel processo principale, mentre -`electron.webFrame` è disponibile solo nel processo di rendering. - -[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron -[storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage -[local-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage -[session-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage -[indexed-db]: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API diff --git a/docs-translations/it-IT/styleguide.md b/docs-translations/it-IT/styleguide.md deleted file mode 100644 index f2f6dd858a43..000000000000 --- a/docs-translations/it-IT/styleguide.md +++ /dev/null @@ -1,246 +0,0 @@ -# Guida allo Stile della Documentazione - -Queste sono le linee guida per la stesura della documentazione di Electron. - -## Titoli - -* Ogni pagina deve avere un singolo titolo di livello `#` all'inizio. -* I capitoli di una stessa pagina devono avere titoli di livello `##`. -* I sotto-capitoli devono avere un numero crescente di `#` a seconda del loro -livello di annidamento. -* Tutte le parole nel titolo della pagina devono iniziare con la lettera -maiuscola, a eccezione delle congiunzioni come "di" ed "e". -* Solo la prima lettera della prima parola di un capitolo deve essere maiuscola. - -Prendendo `Guida Rapida` come esempio: - -```markdown -# Guida Rapida - -... - -## Processo principale - -... - -## Processo di rendering - -... - -## Esegui la tua app - -... - -### Crea una distribuzione - -... - -### Electron scaricato manualmente - -... -``` - -Esistono eccezioni a queste regole per quanto riguarda la documentazione delle -API. - -## Regole markdown - -* Usa `bash` invece di `cmd` nei blocchi di codice (per via della diversa -evidenziazione della sintassi). -* Le linee devono essere lunghe al massimo 80 caratteri. -* Non annidare le liste per pi� di due livelli (per via del rendering compiuto -da markdown). -* Tutti i blocchi di codice `js` o `javascript` sono analizzati con -[standard-markdown](http://npm.im/standard-markdown). - -## Documentazione API - -Le regole seguenti vengono applicate solo alla documentazione delle API. - -### Titolo della pagina - -Ogni pagina deve avere come titolo il nome dell'oggetto a cui si riferisce -seguito da `require('electron')`, come ad esempio `BrowserWindow`, `autoUpdater` -e `session`. - -Sotto il titolo della pagina deve esserci una descrizione della lunghezza di una -linea che comincia con `>`. - -Prendendo `session` come esempio: - -```markdown -# session - -> Gestisce le sessioni browser, cookies, cache, impostazioni proxy, etc. -``` - -### Metodi ed eventi dei moduli - -Per i moduli che non sono classi, i loro metodi ed eventi devono essere elencati -sotto i capitoli `## Metodi` ed `## Eventi`. - -Prendendo `autoUpdate` come esempio: - -```markdown -# autoUpdater - -## Eventi - -### Evento: 'error' - -## Metodi - -### `autoUpdater.setFeedURL(url[, requestHeaders])` -``` - -### Classi - -* Le classi API e le classi che sono parte di moduli devono essere elencate -sotto un capitolo `## Classe: NomeDellaClasse`. -* Una pagina pu� avere pi� classi. -* I costruttoi devono essere elencati con un titolo di livello `###`. -* I [Metodi Statici](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static) (Inglese) devono essere elencati sotto un capitolo -`### Metodi Statici`. -* I [Metodi di Istanza](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Prototype_methods) (Inglese) devono essere elencati sotto un -capitolo `### Metodi di Istanza`. -* Gli Eventi di Istanza devono essere elencati sotto un capitolo -`## Eventi di Istanza`. -* Le Propriet� di Istanza devono essere elencate sotto un capitolo `## Propriet� di Istanza`. - -Prendendo le classi `Session` e `Cookies` come esempi: - -```markdown -# session - -## Metodi - -### session.fromPartition(partition) - -## Propriet� - -### session.defaultSession - -## Classe: Session - -### Eventi di Istanza - -#### Evento: 'will-download' - -### Metodi di Istanza - -#### `ses.getCacheSize(callback)` - -### Propriet� di Istanza - -#### `ses.cookies` - -## Classe: Cookies - -### Metodi di Istanza - -#### `cookies.get(filter, callback)` -``` - -### Metodi - -Il capitolo dei metodi deve seguire il seguente formato: - -```markdown -### `objectName.methodName(required[, optional]))` - -* `required` String -* `optional` Integer (optional) - -... -``` - -Il titolo pu� essere di livello `###` o `####` a seconda che sia un metodo di -un modulo o di una classe. - -Per i moduli, il `nomeOggetto` � il nome del modulo. Per le classi, deve essere -il nome dell'istanza della classe e non deve essere lo stesso del modulo. - -Per esempio, i metodi della classe `Session` sotto il modulo `session` devono -usare `ses` come `nomeOggetto`. - -I parametri opzionali sono caratterizzati sia dalle parentesi quadre `[]` che -circondano il parametro, sia dalla virgola obbligatoria in caso il parametro -ne segua un altro. - -``` -required[, optional] -``` - -Sotto ogni metodo si trovano informazioni dettagliate su ogni parametro. Il tipo -di parametro � caratterizzato da uno dei tipi di dati comuni: - -* [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) -* [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) -* [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) -* [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -* [`Boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) -* O da un tipo di dati personalizzato come [`WebContent`](api/web-content.md) di -Electron - -Se un parametro o un metodo sono limitati a certe piattaforme, esse sono -segnalate, dopo il tipo di dato, attraverso l'uso di una lista di elementi in -corsivo e delimitati da uno spazio. I valori possono essere `macOS`, -`Windows` e `Linux`. - -```markdown -* `animate` Boolean (optional) _macOS_ _Windows_ -``` - -I parametri di tipo `Array` devono specificare nella descrizione sottostante -che elementi pu� contenere l'array. - -La descrizione per i parametri di tipo `Funzione` dovrebbero rendere chiaro come -sia possibile chiamarli, ed elencare i tipi di parametri che vi saranno passati. - -### Eventi - -Il capitolo degli eventi deve seguire il seguente formato: - -```markdown -### Evento: 'wake-up' - -Ritorna: - -* `time` String - -... -``` - -Il titolo pu� essere di livello `###` o `####` a seconda che sia di un evento di -un modulo o di una classe. - -I parametri di un evento seguono le stesse regole di quelli dei metodi. - -### Propriet� - -Il capitolo delle propriet� deve seguire il seguente formato: - -```markdown -### session.defaultSession - -... -``` - -Il titolo pu� essere di livello `###` o `####` a seconda che sia una propriet� -di un metodo o di una classe. - -## Traduzioni della Documentazione - -Le traduzioni della documentazione di Electron si trovano nella cartella -`docs-translations`. - -Per aggiungere un altro set (o set parziale): - -* Crea una sottocartella che abbia come nome il codice della lingua. -* Traduci i file. -* Aggiorna il file README.md dentro la cartella della lingua in modo che -reindirizzi ai file che hai tradotto. -* Aggiungi un collegamento alla cartella della traduzione nel [README](https://github.com/electron/electron#documentation-translations) principale di Electron. - -Nota che tutti i file nella cartella `docs-translations` devono includere solo -i file tradotti. I file originali in inglese non devono essere copiati l�. diff --git a/docs-translations/jp/README.md b/docs-translations/jp/README.md deleted file mode 100644 index 315b9b4fd914..000000000000 --- a/docs-translations/jp/README.md +++ /dev/null @@ -1,97 +0,0 @@ -使用している Electron のバージョンに応じたドキュメントを使うように確認してください。 -ドキュメントのバージョン番号はページの URL の一部になっています。 -そうでない場合、おそらくご使用の Electron のバージョンと互換性のない API 変更を含んだ development ブランチのドキュメントを使っているものと思われます。 -その場合、atom.io の [available versions](https://electron.atom.io/docs/) リストにある別のバージョンのドキュメントに切り替えることができます。また GitHub で閲覧している場合、"Switch branches/tags" ドロップダウンを開いて、バージョンに対応したタグを選ぶこともできます。 - -_リンクになっていないリストは未翻訳のものです。_ -## FAQ - -頻繁に聞かれる質問がありますので、issueを作成する前にこれをチェックしてください。 - -* [Electron FAQ](faq/electron-faq.md) - -## ガイド - -* [サポートするプラットフォーム](tutorial/supported-platforms.md) -* [セキュリティ](tutorial/security.md) -* [Electronのバージョン管理](tutorial/electron-versioning.md) -* [アプリケーションの配布](tutorial/application-distribution.md) -* [Mac App Store 提出ガイド](tutorial/mac-app-store-submission-guide.md) -* Windows Store Guide (tutorial/windows-store-guide.md) -* [アプリケーションのパッケージ化](tutorial/application-packaging.md) -* [ネイティブのNodeモジュールを使用する](tutorial/using-native-node-modules.md) -* [メインプロセスのデバッグ](tutorial/debugging-main-process.md) -* [Selenium と WebDriverを使用する](tutorial/using-selenium-and-webdriver.md) -* [DevTools エクステンション](tutorial/devtools-extension.md) -* [Pepper Flashプラグインを使用する](tutorial/using-pepper-flash-plugin.md) -* [Widevine CDMプラグインを使用する](tutorial/using-widevine-cdm-plugin.md) -* [継続的インテグレーションシステムによるテスト(Travis, Jenkins)](tutorial/testing-on-headless-ci.md) -* [キーボードショートカット](tutorial/keyboard-shortcuts.md) - - -# チュートリアル - -* [クイックスタート](tutorial/quick-start.md) -* [デスクトップ環境の統合](tutorial/desktop-environment-integration.md) -* [オンライン/オフライン イベントの検知](tutorial/online-offline-events.md) - -## API リファレンス - -* [概要](api/synopsis.md) -* [Process Object](api/process.md) -* [サポートしているChromeコマンドラインスイッチ](api/chrome-command-line-switches.md) -* [環境変数](api/environment-variables.md) - -### カスタムDOM要素: - -* [`File` Object](api/file-object.md) -* [`` タグ](api/webview-tag.md) -* [`window.open` 関数](api/window-open.md) - -### Main Processのモジュール: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* BrowserWindow (api/browser-window.md) - * [フレームの無いウィンドウ](api/frameless-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [systemPreferences](api/system-preferences.md) -* [Tray](api/tray.md) -* webContents (api/web-contents.md) - -### Renderer Processのモジュール (Web Page): - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### 両方のProcessのモジュール : - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## 開発 - - -* [コーディング規約](development/coding-style.md) -* Source Code Directory Structure (development/source-code-directory-structure.md) -* [NW.js(node-webkit) との技術的違い](development/atom-shell-vs-node-webkit.md) -* Build System Overview (development/build-system-overview.md) -* [ビルド方法(macOS)](development/build-instructions-osx.md) -* Build Instructions (Windows) (development/build-instructions-windows.md) -* [ビルド方法(Linux)](development/build-instructions-linux.md) -* Debug Instructions (Windows) (development/debug-instructions-windows.md) -* Setting Up Symbol Server in debugger (development/setting-up-symbol-server.md) diff --git a/docs-translations/jp/api/accelerator.md b/docs-translations/jp/api/accelerator.md deleted file mode 100644 index 032747ddf60e..000000000000 --- a/docs-translations/jp/api/accelerator.md +++ /dev/null @@ -1,43 +0,0 @@ -# Accelerator - -acceleratorは、キーボードショートカットを示す文字列です。複数の修飾語句とキーコードを `+` 文字で結合します。 - -例: - -* `Command+A` -* `Ctrl+Shift+Z` - -## プラットフォームの留意点 - - -macOSでは`Command` キー、LinuxとWindowsでは`Control` キーを意味する`CommandOrControl`はいくつかのacceleratorを定義しますが、LinuxとWindowsでは、`Command` キーは何の効果もありません。 - - `Super` キーは、WindowsとLinuxでは `Windows` キーに、macOSでは、`Cmd` キーに関連付けられます。 - -## 提供されている修飾語句 - -* `Command` (または、短く `Cmd`) -* `Control` (または、短く `Ctrl`) -* `CommandOrControl` (または、短く `CmdOrCtrl`) -* `Alt` -* `Shift` -* `Super` - -## 提供されているキーコード - -* `0` to `9` -* `A` to `Z` -* `F1` to `F24` -* `~`, `!`, `@`, `#`, `$`などの記号 -* `Plus` -* `Space` -* `Backspace` -* `Delete` -* `Insert` -* `Return` (またはエイリアスで `Enter`) -* `Up`と `Down`,`Left`、 `Right` -* `Home` と `End` -* `PageUp` と `PageDown` -* `Escape` (または、短く `Esc`) -* `VolumeUp`と `VolumeDown` 、 `VolumeMute` -* `MediaNextTrack`と `MediaPreviousTrack`、 `MediaStop` 、 `MediaPlayPause` diff --git a/docs-translations/jp/api/app.md b/docs-translations/jp/api/app.md deleted file mode 100644 index f2014bdc651b..000000000000 --- a/docs-translations/jp/api/app.md +++ /dev/null @@ -1,442 +0,0 @@ -# app - - `app` モジュールは、アプリケーションのライフサイクルコントロールを担います。 - -次の例は、最後のウィンドウが閉じたときにアプリケーションを終了させる方法を示しています。 - -```javascript -const app = require('electron').app -app.on('window-all-closed', function () { - app.quit() -}) -``` - -## イベント - -`app` オブジェクトは次のイベントを出力します。 - -### イベント: 'will-finish-launching' - -アプリケーションの基礎起動が終わったときに出力されます。Windows と Linuxでは、 `will-finish-launching` イベントと`ready`イベントは同じです。macOSでは、`NSApplication`の `applicationWillFinishLaunching` 通知をに相当します。通常、`open-file`と`open-url` 用のリスナーの設定、クラッシュレポートの開始、自動アップデートをします。 - -ほとんどの場合、 `ready` イベントハンドラーですべてをするべきです。 - -### イベント: 'ready' - -Electronの初期化が終わった時に出力します。 - -### イベント: 'window-all-closed' - -全てのウィンドウを閉じたときに出力します。 - -このイベントは、アプリケーションが終了する予定ではないときのみ出力します。ユーザーが `Cmd + Q`を押したり、開発者が`app.quit()`をコールすると、Electronは最初にすべてのウィンドウをクローズしようとし、`will-quit`イベントを出力します。この場合、`window-all-closed`イベントは出力されません。 - -### イベント: 'before-quit' - -戻り値: - -* `event` Event - -アプリケーションがウィンドウをクローズし始める前に出力します。`event.preventDefault()`をコールすると、アプリケーションを終了させる既定の挙動を止めることができます。 - -### イベント: 'will-quit' - -戻り値: - -* `event` Event - -全てのウィンドウが閉じて、アプリケーションを終了するときに出力します。`event.preventDefault()`をコールすると、アプリケーションを終了させる既定の挙動を止めることができます。 - -詳細は、`will-quit`イベント と `window-all-closed` イベントの違いは、`window-all-closed` イベントの説明を見てください。 - -### イベント: 'quit' - -戻り値: - -* `event` Event -* `exitCode` Integer - -アプリケーションが終了したときに出力されます。 - -### イベント: 'open-file' _macOS_ - -戻り値: - -* `event` Event -* `path` String - -アプリケーションでファイルを開こうとしたときに出力します。アプリケーションがすでに起動し、OSがファイルを開くアプリケーションを再使用したいとき、`open-file`イベントは出力します。ファイルがdockにドロップアウトされ、アプリケーションがまだ起動していないときにも`open-file` は出力します。このケースを処理するために、アプリケーションの起動のかなり早い段階で、`open-file` イベントをリッスンして確認します(まだ `ready` イベントが出力する前に)。 - -このイベントをハンドルしたいときには `event.preventDefault()` をコールすべきです。 - -Windowsでは、ファイルパスを取得するために、 `process.argv` をパースする必要があります。 - -### イベント: 'open-url' _macOS_ - -戻り値: - -* `event` Event -* `url` String - -アプリケーションでURLを開こうとしたときに出力されます。URLスキーマーは、アプリケーションが開くように登録しなければなりません。 - -このイベントをハンドルしたい場合は、`event.preventDefault()`をコールすべきです。 - -### イベント: 'activate' _macOS_ - -戻り値: - -* `event` Event -* `hasVisibleWindows` Boolean - -アプリケーションがアクティブになったときに出力されます。通常は、アプリケーションのドックアイコンをクリックしたときに発生します。 - -### イベント: 'browser-window-blur' - -戻り値: - -* `event` Event -* `window` BrowserWindow - -[browserWindow](browser-window.md) からフォーカスが外れたときに出力されます。 - -### イベント: 'browser-window-focus' - -戻り値: - -* `event` Event -* `window` BrowserWindow - -[browserWindow](browser-window.md) にフォーカスが当たったとき出力されます。 - -### イベント: 'browser-window-created' - -戻り値: - -* `event` Event -* `window` BrowserWindow - -新しい [browserWindow](browser-window.md) が作成されたときに出力されます。 - -### イベント: 'certificate-error' - -戻り値: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `url` URL -* `error` String - The error code -* `certificate` Object - * `data` Buffer - PEM encoded data - * `issuerName` String -* `callback` Function - - `url` の `certificate` 検証に失敗したときに発生します。証明書を信頼するために`event.preventDefault()` と `callback(true)`をコールして既定の動作を止める必要があります。 - -```javascript -app.on('certificate-error', (event, webContents, url, error, certificate, callback) => { - if (url === 'https://github.com') { - // Verification logic. - event.preventDefault() - callback(true) - } else { - callback(false) - } -}) -``` - -### イベント: 'select-client-certificate' - -戻り値: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `url` URL -* `certificateList` [Objects] - * `data` Buffer - PEM encoded data - * `issuerName` String - Issuer's Common Name -* `callback` Function - -クライアント証明書が要求されたときに出力されます。 - -`url` は、クライアント証明書を要求するナビゲーションエントリーに対応し、`callback` リストからエントリをフィルターしてコールするのに必要です。`event.preventDefault()` を使用して、アプリケーションの証明書ストアから最初の証明書を使用するのを止めることができます。 - -```javascript -app.on('select-client-certificate', function (event, webContents, url, list, callback) { - event.preventDefault() - callback(list[0]) -}) -``` - -### イベント: 'login' - -Returns: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `request` Object - * `method` String - * `url` URL - * `referrer` URL -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - -`webContents` がベーシック認証をしようとしたときに出力されます。 - -既定の動作ではすべての認証をキャンセルしたり、`event.preventDefault()` と `callback(username, password)` とを証明書でコールし既定の動作をとめてオーバーライドします。 - -```javascript -app.on('login', function (event, webContents, request, authInfo, callback) { - event.preventDefault() - callback('username', 'secret') -}) -``` - -### イベント: 'gpu-process-crashed' - -gpu プロセスがクラッシュしたときに出力されます。 - -## メソッド - -`app` オブジェクトは次のメソッドを持ちます。 - -**Note:** いくつかのメソッドは、特定のオペレーティングシステム向けに提供され、そのようにラベルで表示します。 - -### `app.quit()` - -全てのウィンドウを閉じようとします。`before-quit`イベントは、最初に出力されます。すべてのウィンドウを閉じることに成功したら、`will-quit`イベントが出力され、既定では、アプリケーションが終了します。 - -このメソッドは、全ての`beforeunload`と`unload`イベントハンドラは正確に発生することを保証されます。`beforeunload` イベントハンドラで、`false`を返すことでウィンドウの終了をキャンセルすることができます。 - -### `app.exit(exitCode)` - -* `exitCode` Integer - -`exitCode`で今すぐ終了します。 - -全てのウィンドウは、ユーザーに確認することなく、すぐに閉じ、`before-quit`と`will-quit` イベントは出力されません。 - -### `app.getAppPath()` - -減殺のアプリケーションディレクトリを戻します。 - -### `app.getPath(name)` - -* `name` String - -`name`に関連した特定のディレクトリやファイルへのパスを返します。失敗したら、`Error`をスローします。 - -`name`で次のパスをリクエストできます。 - -* `home` ユーザーのホームディレクトリ -* `appData` 既定で示すユーザーごとのアプリケーションディレクトリ - * `%APPDATA%` Windows上 - * `$XDG_CONFIG_HOME` or `~/.config` Linux上 - * `~/Library/Application Support` macOS上 -* `userData` アプリの設定ファイルを格納するディレクトリで、既定では`appData` ディレクトリ配下のアプリ名ディレクトリです -* `temp` 一時ディレクトリ -* `exe` 現在の実行ファイル -* `module` `libchromiumcontent` ライブラリ -* `desktop` 現在のユーザーのデスクトップディレクトリ -* `documents` ユーザーの "My Documents"用ディレクトリ -* `downloads` ユーザーのダウンロード用ディレクトリ -* `music` ユーザーのミュージック用ディレクトリ -* `pictures` ユーザーのピクチャー用ディレクトリ -* `videos` ユーザーのビデオ用ディレクトリ - -### `app.setPath(name, path)` - -* `name` String -* `path` String - -`name`に関連した特定のディレクトリやファイルへの`path` を上書きします。存在しないパスを指定した場合、このメソッドがディレクトリを作成します。失敗したら、`Error`をスローします。 - -`app.getPath`で、`name` で定義されたパスを上書きできます。 - -既定では、webページのクッキーとキャッシュは`userData`ディレクトリ配下に格納できます。ロケーションを変更したい場合、 `app` モジュールの `ready` イベントが出力される前に`userData`パスを上書きする必要があります。 - -### `app.getVersion()` - -ロードしたアプリケーションのバージョンを戻します。アプリケーションの `package.json`ファイルにversionが無ければ、現在のバンドルまたは実行ファイルのバージョンになります。 - -### `app.getName()` - -現在のアプリケーション名を戻し、`package.json` ファイルのnameです。 - -通常、 `package.json`の`name` フィールドは、短い小文字名で、npm module spec と一致します。通常、`productName`で、アプリケーションの大文字正式名を指定し、Electronでは`name`をそれで上書きます。 - -### `app.getLocale()` - -現在のアプリケーションのロケールを戻します。 - -### `app.addRecentDocument(path)` _macOS_ _Windows_ - -* `path` String - -最近のドキュメント一覧に`path`を追加します。 - -この一覧はOSが管理しています。Windowsではタスクバーからこの一覧を見れ、macOSではdockメニューから見れます。 - -### `app.clearRecentDocuments()` _macOS_ _Windows_ - -最近のドキュメント一覧をクリアします。 - -### `app.setUserTasks(tasks)` _Windows_ - -* `tasks` Array - `Task` オブジェクトの配列 - -Windowsのジャンプリストの[Tasks][tasks]カテゴリに`tasks`を追加します。 - -`tasks` は`Task`オブジェクトの配列で、次のフォーマットになります。 - -`Task` Object: - -* `program` String - 実行するプログラムのパスで、通常はプログラムが開く`process.execPath`を指定します -* `arguments` String - `program` を実行するときのコマンドライン引数です -* `title` String - ジャンプリストに表示される文字列です -* `description` String - タスクの説明 -* `iconPath` String - ジャンプリストに表示するアイコンの絶対パスで、アイコンを含む任意のリソースファイルです。通常、プログラムのアイコンを表示する`process.execPath`を指定します。 -* `iconIndex` Integer - アイコンファイルのアイコンインデックスです。アイコンファイルに2つ以上のアイコンが含まれている場合、この値でアイコンを指定します。1つしかアイコンファイルに含まれていない場合は、この値は0です。 - -### `app.allowNTLMCredentialsForAllDomains(allow)` - -* `allow` Boolean - -HTTP NTLMまたはNegotiate認証用の照明を常に送信するかどうかを動的に設定できます。通常、Electronはローカルインターネットサイト(例えば、あなたと同じドメイン名のとき)に該当するURL用のNTLM/Kerberos証明書のみ送信します。しかし、この検知はコーポレートネットワークの設定が悪いときには、頻繁に失敗するので、この挙動を共通に行うことを選べば、全てのURLで有効にできます。 - -### `app.makeSingleInstance(callback)` - -* `callback` Function - -このメソッドは、アプリケーションをシングルインスタンスアプリケーションにします。アプリの実行を複数のインスタンスで実行することを許可せず、アプリケーション実行をシングルインスタンスのみにすることを保証し、ほかのインスタンスにはこのインスタンスの存在を知らせ終了さえます。 - -2つ目のインスタンスが起動したとき、`callback` は、`callback(argv, workingDirectory)` でコールします。`argv` は、2つ目のインスタンスのコマンドライン引数の配列で、`workingDirectory` は現在のワーキングディレクトリです。通常、アプリケーションはメインのウィンドウにフォーカスをあて最小化させないことで対応します。 - -The `callback` は、 `app`の`ready` イベントの出力後に実行することを保証します。 - -プロセスがアプリケーションのプライマリインスタンスでアプリがロードし続けるなら、このメソッドは `false`を戻します。プロセスがほかのインスタンスにパラメーターを送信し、`true`を戻すと、直ちに終了します。 - -macOSは、ユーザーがFinderで2つ目のアプリインスタンスを開いたり、`open-file` 、 `open-url`イベントが出力しようとすると、システムが自動的にシングルインスタンスを強制します。しかし、コマンドラインでアプリを開始するとシステムのシングルインスタンスメカニズムは無視されるので、シングルインスタンスを強制するためには、このメソッドを使う必要があります。 - -2つ目のインスタンスを起動するとき、メインのインスタンスのウィンドウをアクティブにする例 - -```javascript -var myWindow = null - -var shouldQuit = app.makeSingleInstance(function (commandLine, workingDirectory) { - // Someone tried to run a second instance, we should focus our window - if (myWindow) { - if (myWindow.isMinimized()) myWindow.restore() - myWindow.focus() - } - return true -}) - -if (shouldQuit) { - app.quit() -} - -app.on('ready', function () { - // Create myWindow, load the rest of the app, etc... -}) -``` - -### `app.setAppUserModelId(id)` _Windows_ - -* `id` String - -[Application User Model ID][app-user-model-id] を `id`に変更します。 - -### `app.isAeroGlassEnabled()` _Windows_ - -[DWM composition](https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx)(Aero Glass) が有効なら、このメソッドは`true`を戻し、有効でなければ`false`を戻します。透明なウィンドウを作成する必要があるか、またはできないとき(DWM compositionが無効なとき用明なウィンドウは正しく動作しません)、このAPIを使うことができます。 - -使用例: - -```javascript -let browserOptions = {width: 1000, height: 800} - -// Make the window transparent only if the platform supports it. -if (process.platform !== 'win32' || app.isAeroGlassEnabled()) { - browserOptions.transparent = true - browserOptions.frame = false -} - -// Create the window. -win = new BrowserWindow(browserOptions) - -// Navigate. -if (browserOptions.transparent) { - win.loadURL(`file://${__dirname}/index.html`) -} else { - // No transparency, so we load a fallback that uses basic styles. - win.loadURL(`file://${__dirname}/fallback.html`) -} -``` - -### `app.commandLine.appendSwitch(switch[, value])` - -Chromiumのコマンドラインにスイッチ( `value`をオプションにし)を追加します。 - -**Note:** これは、`process.argv`に影響せず、開発者が、Chromiumのローレベルな挙動をコントロールするのに使用します。 - -### `app.commandLine.appendArgument(value)` - -Chromiumのコマンドダインに引数を追加します。引数は正しく引用符で囲まれます。 - -**Note:** `process.argv`に影響しません。 - -### `app.dock.bounce([type])` _macOS_ - -* `type` String (optional) - `critical` または `informational`を指定できます。既定では、 `informational`です。 - -`critical`を渡すと、アプリケーションがアクティブ、もしくはリクエストがキャンセルされるまでは、dockアイコンは、バウンスします。 - -`informational` を渡すと、1秒dockアイコンはバウンスします。しかし、アプリケーションがアクティブ、もしくはリクエストがキャンセルされるまでは、リクエストは残ります。 - -リクエストを示すIDを戻します。 - -### `app.dock.cancelBounce(id)` _macOS_ - -* `id` Integer - -`id`のバウンスをキャンセルします。 - -### `app.dock.setBadge(text)` _macOS_ - -* `text` String - -dockのバッジエリアで表示する文字列を設定します。 - -### `app.dock.getBadge()` _macOS_ - -dockのバッジ文字列を戻します。 - -### `app.dock.hide()` _macOS_ - -dock アイコンを隠します。 - -### `app.dock.show()` _macOS_ - -dock アイコンを表示します。 - -### `app.dock.setMenu(menu)` _macOS_ - -* `menu` Menu - -アプリケーションの[dock menu][dock-menu]を設定します。 - -### `app.dock.setIcon(image)` _macOS_ - -* `image` [NativeImage](native-image.md) - -dock アイコンに紐づいた`image`を設定します。 - -[dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103 -[tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx diff --git a/docs-translations/jp/api/auto-updater.md b/docs-translations/jp/api/auto-updater.md deleted file mode 100644 index 92f1fce21971..000000000000 --- a/docs-translations/jp/api/auto-updater.md +++ /dev/null @@ -1,85 +0,0 @@ -# autoUpdater - -このモジュールは、`Squirrel`オートアップデートフレームワークのインターフェイスを提供します。 - -## プラットフォーム留意点 - -`autoUpdater`は、異なるプラットフォーム用に統一したAPIを提供していますが、それぞれのプラットフォーム上で、まだ多少の差があります。 - -### macOS - -macOSでは、 `autoUpdater` モジュールは、[Squirrel.Mac][squirrel-mac]上に構築されていて、動作させるのに特別な設定が不要であることを意味します。サーバーサイドの要件は、[Server Support][server-support]を読んでください。 - -### Windows - -Windowsでは、auto-updaterを使う前に、ユーザーのPCにアプリをインストールする必要があるので、Windows インストーラーを生成するために[grunt-electron-installer][installer]モジュールを使用することをお勧めします。 - -Squirrelで生成されたインストーラーは、`com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`のフォーマット(例えば、`com.squirrel.slack.Slack` と `com.squirrel.code.Code`)で[Application User Model ID][app-user-model-id]とショートカットアイコンを作成します。`app.setAppUserModelId`APIで同じIDを使う必要があります。同じIDでないと、Windowsはタスクバーに適切にピン止めすることができません。 - -サーバーサイドのセットアップは、macOSと異なります。詳細は、[Squirrel.Windows][squirrel-windows] を参照してください。 - -### Linux - -Linuxでは、auot-updater用のサポートがビルトインされていないので、アプリをアップデートするためにディストリビューションのパッケージマネジャーを使用することをお勧めします。 - -## イベント - -`autoUpdater` オブジェクトは次のイベントを出力します。 - -### イベント: 'error' - -戻り値: - -* `error` Error - -アップデート中にエラーがあった場合に出力されます。 - -### イベント: 'checking-for-update' - -アップデートを開始したかチェックしたときに出力されます。 - -### イベント: 'update-available' - -アップデートが提供されているときに出力されます。アップデートは自動的にダウンロードされます。 - -### イベント: 'update-not-available' - -アップデートが提供されていないときに出力されます。 - -### イベント: 'update-downloaded' - -戻り値: - -* `event` Event -* `releaseNotes` String -* `releaseName` String -* `releaseDate` Date -* `updateURL` String - -アップデートをダウンロードしたときに出力されます。 - -Windowsでは、`releaseName` のみ提供されます。 - -## メソッド - -`autoUpdater` オブジェクトは次のメソッドを持っています。 - -### `autoUpdater.setFeedURL(url)` - -* `url` String - - `url`を設定し、自動アップデートを初期化します。 `url`は一度設定すると変更できません。 - -### `autoUpdater.checkForUpdates()` - -アップデートがあるかどうかサーバーに問い合わせます。APIを使う前に、`setFeedURL`をコールしなければなりません。 - -### `autoUpdater.quitAndInstall()` - -ダウンロード後、アプリを再起動して、アップデートをインストールします。`update-downloaded`が出力された後のみ、コールすべきです。 - -[squirrel-mac]: https://github.com/Squirrel/Squirrel.Mac -[server-support]: https://github.com/Squirrel/Squirrel.Mac#server-support -[squirrel-windows]: https://github.com/Squirrel/Squirrel.Windows -[installer]: https://github.com/atom/grunt-electron-installer -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx diff --git a/docs-translations/jp/api/chrome-command-line-switches.md b/docs-translations/jp/api/chrome-command-line-switches.md deleted file mode 100644 index d8845c8ef770..000000000000 --- a/docs-translations/jp/api/chrome-command-line-switches.md +++ /dev/null @@ -1,129 +0,0 @@ -#サポートしているChromeコマンドラインスイッチ - -> Electronでサポートされているコマンドラインスイッチ - -アプリケーションのメインスクリプトで[app.commandLine.appendSwitch][append-switch]を使うことで、[app][app]モジュールの[ready][ready]イベントが発行される前にコマンドラインスイッチを追加できます。 - -```javascript -const {app} = require('electron') -app.commandLine.appendSwitch('remote-debugging-port', '8315') -app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1') - -app.on('ready', () => { - // Your code here -}) -``` - - -## --ignore-connections-limit=`domains` - -`domains`で指定されたリストは接続数制限を無視します。リストは`,`で区切られます。 - -## --disable-http-cache - -HTTPリクエストのディスクキャッシュの無効化。 - -## --disable-http2 - -HTTP/2 と SPDY/3.1 プロトコルを無効にします。 - -## --remote-debugging-port=`port` - -`port`で指定したHTTP越しのリモートデバッグの有効化。 - -## --js-flags=`flags` - -JSエンジンに渡されるフラグの指定。メインプロセスで`flags`を有効化したいのなら、Electron開始時に渡される必要があります。 - -```bash -$ electron --js-flags="--harmony_proxies --harmony_collections" your-app -``` - -## --proxy-server=`address:port` - -システム設定を上書きし、指定したプロキシサーバーを使用します。HTTPS、WebSocketリクエストを含むHTTPプロトコルのリクエストのみに影響します。全てのプロキシサーバーがHTTPSとWebSocketリクエストに対応しているわけではないことに注意してください。 - -## --proxy-bypass-list=`hosts` - -プロキシを使用しないサーバーをセミコロンで区切って指定します。 -このフラグは、`--proxy-server`と同時に使われるときのみに影響します。 - -例: - -```javascript -app.commandLine.appendSwitch('proxy-bypass-list', ';*.google.com;*foo.com;1.2.3.4:5678') -``` - -ローカルアドレス(`localhost`や`127.0.0.1`など)、`google.com`サブドメイン、`foo.com` サフィックスを含むホスト、`1.2.3.4:5678`を除いてすべてのホストでプロキシサーバーが使われます。 - -## --proxy-pac-url=`url` - -`url`で指定したPACスクリプトが使われます。 - -## --no-proxy-server - -プロキシサーバーを使わず、常に直接接続します。ほかのプロキシサーバーフラグを上書きします。 - -## --host-rules=`rules` - -ホスト名がどのようにマップされているかを制御するコンマで分割された`rules`一覧 - -例: - -* `MAP * 127.0.0.1` 全てのホスト名を127.0.0.1にマッピングするよう強制します。 -* `MAP *.google.com proxy` すべてのgoogle.comサブドメインを "proxy"で解決するよう強制します。 -* `MAP test.com [::1]:77` "test.com"をIPv6ループバックで解決するよう強制します。結果ポートのをソケットアドレス77番にするよう強制します。 -* `MAP * baz, EXCLUDE www.google.com` 全てを"baz"に再マッピングし、 "www.google.com"は除外します。 - -これらのマッピングは、ネットリクエスト(直接接続で、TCP接続とホスト解決とHTTPプロキシ接続での`CONNECT`、`SOCKS`プロキシ接続でのエンドポイントホスト)でエンドポイントホストに適用されます。 - -## --host-resolver-rules=`rules` - -`--host-rules`のようですが、`rules` はホスト解決のみに適用されます。 - -## --ignore-certificate-errors - -証明書関連エラーを無視します。 - -## --ppapi-flash-path=`path` - -pepper flash pluginの`path`を設定します。 - -## --ppapi-flash-version=`version` - -pepper flash pluginの`version`を設定します。 - -## --log-net-log=`path` - -ネットログイベントを保存し、`path`に書き込みを有効化します。 - -## --disable-renderer-backgrounding - -不可視のページのレンダラープロセスの優先度を下げることからChromiumを防ぎます。 - -このフラグは、グローバルですべてのレンダラープロセスに有効で、一つのウィンドウだけで無効化したい場合、[無音を再生する][play-silent-audio]というハックで対応します。 - -## --enable-logging - -コンソールにChromiumのログを出力します。 - -ユーザーのアプリが読み込まれる前に解析されるため、`app.commandLine.appendSwitch`では使用できませんが、`ELECTRON_ENABLE_LOGGING`を環境変数に設定すると同じ効果を得ることができます。 - -## --v=`log_level` - -標準のloggingレベルを設定します。0が既定です。通常、V-loggingレベルには正の値が使用されます。 - -`--enable-logging` が渡された時だけ、このスイッチは動作します。 - -## --vmodule=`pattern` - -`--v`で付与された値を上書きするために、モジュール毎の最大V-loggingレベルを付与します。例えば、 `my_module=2,foo*=3` は、`my_module.*` と `foo*.*`のソースファイル全てのロギングレベルを変更します。 - -前方または後方スラッシュを含む任意のパターンは、全体のパス名だけでなく、モジュールに対してもテストとされます。例えば、`*/foo/bar/*=2`は`foo/bar`ディレクトリ下のソースファイルですべてのコードのロギングレベルを変更します。 - -このスイッチは、`--enable-logging`が渡された時のみ動作します。 - -[app]: app.md -[append-switch]: app.md#appcommandlineappendswitchswitch-value -[ready]: app.md#event-ready -[play-silent-audio]: https://github.com/atom/atom/pull/9485/files diff --git a/docs-translations/jp/api/clipboard.md b/docs-translations/jp/api/clipboard.md deleted file mode 100644 index 5b859dfd0fbe..000000000000 --- a/docs-translations/jp/api/clipboard.md +++ /dev/null @@ -1,103 +0,0 @@ -# clipboard - -`clipboard`モジュールは、コピーとペースト操作を実行するメソッドを提供します。次の例は、クリップボードに文字列を書き込む方法を示しています: - -```javascript -const clipboard = require('electron').clipboard -clipboard.writeText('Example String') -``` - -X Windowsシステム上では、セレクションクリップボードがあります。それを操作するために、それぞれのメソッドで、`selection`を通す必要があります。 - -```javascript -clipboard.writeText('Example String', 'selection') -console.log(clipboard.readText('selection')) -``` - -## メソッド - -`clipboard`モジュールには、次のメソッドがあります: - -**Note:** 実験的APIには、そのようにマークしてあり、将来的には削除される可能性があります。 - -### `clipboard.readText([type])` - -* `type` String (optional) - -プレーンテキストとしてクリップボードの内容を返します。 - -### `clipboard.writeText(text[, type])` - -* `text` String -* `type` String (optional) - -プレーンテキストとしてクリップボードに`text`を書き込みます。 - -### `clipboard.readHTML([type])` - -* `type` String (optional) - -HTMLマークアップとして、クリップボードの内容を返します。 - -### `clipboard.writeHTML(markup[, type])` - -* `markup` String -* `type` String (optional) - -クリップボードにHTMLマークアップとして書き込みます。 - -### `clipboard.readImage([type])` - -* `type` String (optional) - -[NativeImage](native-image.md)としてクリップボードの内容を返します。 - -### `clipboard.writeImage(image[, type])` - -* `image` [NativeImage](native-image.md) -* `type` String (optional) - -`image` としてクリップボードに書き込みます。 - -### `clipboard.clear([type])` - -* `type` String (optional) - -クリップボードの内容をクリアします。 - -### `clipboard.availableFormats([type])` - -* `type` String (optional) - -`type`のクリップボードがサポートしているフォーマット配列を返します。 - -### `clipboard.has(data[, type])` _実験_ - -* `data` String -* `type` String (optional) - -`data`で指定したフォーマットをクリップボードがサポートしているかどうかを返します。 - -```javascript -console.log(clipboard.has('

selection

')) -``` - -### `clipboard.read(data[, type])` _実験_ - -* `data` String -* `type` String (optional) - -クリップボードから`data`を読み込みます。 - -### `clipboard.write(data[, type])` - -* `data` Object - * `text` String - * `html` String - * `image` [NativeImage](native-image.md) -* `type` String (optional) - -```javascript -clipboard.write({text: 'test', html: 'test'}) -``` -クリップボードに`data`を書き込みます。 diff --git a/docs-translations/jp/api/content-tracing.md b/docs-translations/jp/api/content-tracing.md deleted file mode 100644 index 2a0347e1f6cc..000000000000 --- a/docs-translations/jp/api/content-tracing.md +++ /dev/null @@ -1,117 +0,0 @@ -# contentTracing - -`content-tracing`モジュールは、Chromiumコンテンツモジュールによって生成されるトーレスデータを収集するのに使われます。このモジュールはウェブインターフェイスを含んでいないので、Chromeブラウザーで `chrome://tracing/`を開いて、結果を表示するために生成されたファイルを読み込む必要があります。 - -```javascript -const contentTracing = require('electron').contentTracing - -const options = { - categoryFilter: '*', - traceOptions: 'record-until-full,enable-sampling' -} - -contentTracing.startRecording(options, function () { - console.log('Tracing started') - - setTimeout(function () { - contentTracing.stopRecording('', function (path) { - console.log('Tracing data recorded to ' + path) - }) - }, 5000) -}) -``` - -## メソッド - -`content-tracing`モジュールは次のメソッドを持っています。 - -### `contentTracing.getCategories(callback)` - -* `callback` Function - -カテゴリグループ一式を取得します。新しいコードパスに到達しているとしてカテゴリグループを変更できます。 - -一度、全ての子プロセスが`getCategories`リクエストを認識すると、カテゴリグループの配列で`callback`が呼び出されます。 - -### `contentTracing.startRecording(options, callback)` - -* `options` Object - * `categoryFilter` String - * `traceOptions` String -* `callback` Function - -全てのプロセスで記録を開始します。 - -EnableRecordingリクエストを受信するとすぐに、子プロセス上でただちに非同期にローカルに記録を始めます。全ての子プロセスが`startRecording`リクエストを認識すると、`callback`が呼び出されます。 - -`categoryFilter`はどのカテゴリグループをトレースすべきかをフィルタリングします。フィルターは、マッチしたカテゴリーを含むカテゴリグループを除外する`-`プレフィックスをオプションうぃ持っています。同じリストでの、対象カテゴリパターンと、除外カテゴリーパターンの両方を持つことはサポートしていません。 - -例: - -* `test_MyTest*`, -* `test_MyTest*,test_OtherStuff`, -* `"-excluded_category1,-excluded_category2` - -`traceOptions` は、どの種類のトレースを有効にするかを制御し、コンマ区切りのリストです。 - -取りうるオプション: - -* `record-until-full` -* `record-continuously` -* `trace-to-console` -* `enable-sampling` -* `enable-systrace` - -最初の3つのオプションは、トレースの記録モードで、そのため相互排他的です。`traceOptions`文字列に1つ以上のトレース記録モードが現れると、最後のモードが優先されます。トレース記録モードが指定されていない場合、記録モードは、`record-until-full`です。 - -適用される`traceOptions`からオプションをパースする前に、トレースオプションは最初に既定のオプションにリセットされます(`record_mode`は、`record-until-full`を設定し、 `enable_sampling`と `enable_systrace` は `false`に設定します)。 - -### `contentTracing.stopRecording(resultFilePath, callback)` - -* `resultFilePath` String -* `callback` Function - -全てのプロセスで記録を止めます。 - -子プロセスは基本的にトレースデータをキャッシュし、まれにフラッシュし、メインプロセスにトレースデータを送り返します。IPC越しにトレースデータを送信するのは高コストな操作なので、トレースのランタイムオーバーヘッドを最小限にするのに役立ちます。トレースが終了すると、保留されているトレースデータのフラッシュをするためにすべての子プロセスに非道に問い合わせすべきです。 - - -一度、すべての子プロセスが`stopRecording` リクエストを認識すると、トレースデータを含んだファイルで`callback`が呼び出されます。 - -トレースデータは`resultFilePath`が空でなければ、そこに書き込まれ、空の場合は一時ファイルに書き込まれます。実際のファイルパスは`null`でなければ `callback` に通します。 - -### `contentTracing.startMonitoring(options, callback)` - -* `options` Object - * `categoryFilter` String - * `traceOptions` String -* `callback` Function - -全てのプロセス上で監視を開始します。 - -`startMonitoring`リクエスト受信するとすぐに、子プロセス上でローカルに非同期にただちに監視を始めます。 - -全ての子プロセスが`startMonitoring`リクエストを認識すると、`callback`がコールされます。 - -### `contentTracing.stopMonitoring(callback)` - -* `callback` Function - -全てのプロセス上で監視を止めます。 - -全ての子プロセスが`stopMonitoring`リクエスト認識すると、`callback`がコールされます。 - -### `contentTracing.captureMonitoringSnapshot(resultFilePath, callback)` - -* `resultFilePath` String -* `callback` Function - -現在の監視トレースデータを取得します。子プロセスは基本的にトレースデータをキャッシュし、まれにフラッシュし、メインプロセスにトレースデータを送り返します。IPC越しにトレースデータを送信するのは高コストな操作なので、トレースによる不必要なランタイムオーバーヘッドを避けるます。トレースが終了するために、保留されているトレースデータのフラッシュをするためにすべての子プロセスに非道に問い合わせすべきです。 - -全ての子プロセスが`captureMonitoringSnapshot`リクエストを認識すると、トレースデータを含んだファイルで`callback`が呼び出されます。 - -### `contentTracing.getTraceBufferUsage(callback)` - -* `callback` Function - -プロセスのトレースバッファのプロセス間で最大使用量をフルの状態の何%かで取得します。TraceBufferUsage値が設定されていると、 `callback`がコールされます。 diff --git a/docs-translations/jp/api/crash-reporter.md b/docs-translations/jp/api/crash-reporter.md deleted file mode 100644 index 988669147089..000000000000 --- a/docs-translations/jp/api/crash-reporter.md +++ /dev/null @@ -1,66 +0,0 @@ -# crashReporter - -`crash-reporter`モジュールはアプリのクラッシュレポートを送信することができます。 - -リモートサーバーに自動的にクラッシュレポートを登録する例です。 - -```javascript -const crashReporter = require('electron').crashReporter - -crashReporter.start({ - productName: 'YourName', - companyName: 'YourCompany', - submitURL: 'https://your-domain.com/url-to-submit', - autoSubmit: true -}) -``` - -## メソッド - -`crash-reporter`モジュールは次のメソッドを持ちます: - -### `crashReporter.start(options)` - -`options` Object, properties: - -* `productName` String, デフォルト: Electron. -* `companyName` String (**必須**) -* `submitURL` String, (**必須**) - * クラッシュレポートがPOSTで送信されるURL -* `autoSubmit` Boolean, デフォルト: `true`. - * ユーザーの判断なくクラッシュレポートを送信します -* `ignoreSystemCrashHandler` Boolean, デフォルト: `false`. -* `extra` Object - * あなたが定義できるオブジェクトは、レポートと一緒に送信されます。 - * 文字列プロパティのみが正しく送信されます。 - * オブジェクトのネストはサポートしていません。 - -他の`crashReporter`APIを使用する前にこのメソッドをコールする必要があります。 - -**Note:** macOSでは、Electronは、WindowsとLinux上の`breakpad` とは異なる、新しい`crashpad`クライアントを使用します。クラッシュ収集機能を有効にするために、メインプロセスや、クラッシュレポートを収集したいそれぞれのレンダラープロセスで、`crashpad`を初期化するために`crashReporter.start`APIをコールする必要があります。 - -### `crashReporter.getLastCrashReport()` - -日付と最後のクラッシュレポートのIDを返します。もしなんのクラッシュレポートも送信されていないか、クラッシュレポーターが起動していない場合、`null`を返します。 - -### `crashReporter.getUploadedReports()` - -すべてのアップロードされたクラッシュレポートが返されます。それぞれのレポートには日付とアップロードされたIDが含まれます。 - -## crash-reporter Payload - -クラッシュレポーターは`POST`で`submitURL` に次のデーターが送信されます。 - -* `ver` String - Electronのバージョン -* `platform` String - 例: 'win32'. -* `process_type` String - 例: 'renderer'. -* `guid` String - 例: '5e1286fc-da97-479e-918b-6bfb0c3d1c72' -* `_version` String - `package.json`でのバージョン -* `_productName` String - `crashReporter`でのプロダクト名 `オプション` - object. -* `prod` String - 基盤となる製品の名前。この場合は、Electronです。 -* `_companyName` String - `crashReporter`での会社名 `オプション` - object. -* `upload_file_minidump` File - ファイル形式のクラッシュレポート -* `crashReporter`での`extra`オブジェクトのすべてのレベル1のプロパティ - `オプション` object diff --git a/docs-translations/jp/api/desktop-capturer.md b/docs-translations/jp/api/desktop-capturer.md deleted file mode 100644 index 4957857dd4f4..000000000000 --- a/docs-translations/jp/api/desktop-capturer.md +++ /dev/null @@ -1,65 +0,0 @@ -# desktopCapturer - -`desktopCapturer`モジュールは`getUserMedia`でキャプチャーするのに使える利用可能なソースを取得するのに使われます。 - -```javascript -// In the renderer process. -var desktopCapturer = require('electron').desktopCapturer - -desktopCapturer.getSources({types: ['window', 'screen']}, function (error, sources) { - if (error) throw error - for (var i = 0; i < sources.length; ++i) { - if (sources[i].name === 'Electron') { - navigator.webkitGetUserMedia({ - audio: false, - video: { - mandatory: { - chromeMediaSource: 'desktop', - chromeMediaSourceId: sources[i].id, - minWidth: 1280, - maxWidth: 1280, - minHeight: 720, - maxHeight: 720 - } - } - }, gotStream, getUserMediaError) - return - } - } -}) - -function gotStream (stream) { - document.querySelector('video').src = URL.createObjectURL(stream) -} - -function getUserMediaError (e) { - console.log('getUserMediaError') -} -``` - -`navigator.webkitGetUserMedia`用の制限されたオブジェクトコールを作成し、`desktopCapturer`からソースを使用するのなら、`chromeMediaSource`は`"desktop"`を設定し、`audio`は`false`を設定しなければなりません。 - -全てのデスクトップから音とビデオをキャプチャーしたいなら、`chromeMediaSource``"screen"`、`audio` に `true`.を設定します。このメソッドを使うとき、`chromeMediaSourceId`は指定できません。 - -## メソッド - -`desktopCapturer`モジュールは次のメソッドを持ちます。 - -### `desktopCapturer.getSources(options, callback)` - -* `options` Object - * `types` Array - キャプチャーされるデスクトップソースの種類一覧の文字列配列で、 提供される種類は`screen` と `window`です。 - * `thumbnailSize` Object (オプション) - サムネイルがスケールすべきサイズの指定で、既定では`{width: 150, height: 150}` です。 -* `callback` Function - -全てのデスクトップソールを取得するためのリクエストを開始し、リクエストが完了すると、`callback`は`callback(error, sources)` でコールされます。 - -`sources`は、`Source`オブジェクトの配列で、それぞれの`Source`はキャプチャーしたスクリーンか、1つのウィンドウを示し、次のプロパティを持ちます。 - - -* `id` String - The id of the captured window or screen used in - `navigator.webkitGetUserMedia`で使われるキャプチャーしたウィンドウか画面のidです。`window:XX` か`screen:XX`のようなフォーマットで、`XX`はランダムに生成された数字です。 -* `name` String - キャプチャーする画面かウィンドウの説明名ソースが画面なら名前は`Entire Screen`で、`Screen `はウィンドウで、名前はウィンドウのタイトルです。 -* `thumbnail` [NativeImage](NativeImage.md) - サムネイル画像 - -**Note:** `source.thumbnail`のサイズはいつも`options`の`thumnbailSize`と同じ保証はありません。画面またはウィンドウのサイズに依存します。 diff --git a/docs-translations/jp/api/dialog.md b/docs-translations/jp/api/dialog.md deleted file mode 100644 index cb9721b920ce..000000000000 --- a/docs-translations/jp/api/dialog.md +++ /dev/null @@ -1,87 +0,0 @@ -# dialog - -`dialog`モジュールは、ファイルやアラートを開くようなネイティブシステムダイアログを表示するためのAPIを提供します。そのため、ネイティブアプリケーションのようにウェブアプリケーションに同じユーザー体験を提供できます。 - -複数のファイルやディレクトリを選択するためのダイアログを表示する例です: - -```javascript -const {dialog} = require('electron') -console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) -``` - -**Note for macOS**: シートとしてダイアログを表示したい場合、唯一しなければならないことは、`browserWindow`パラメーターを参照する`BrowserWindow`を提供することです。 - -## メソッド - -`dialog`モジュールは次のメソッドを持っています: - -### `dialog.showOpenDialog([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (オプション) -* `options` Object - * `title` String - * `defaultPath` String - * `filters` Array - * `properties` Array - ダイアログが使うべき機能を含め、`openFile`と`openDirectory`、`multiSelections`、`createDirectory`を含められます。 -* `callback` Function (オプション) - -成功したら、このメソッドはユーザーが選択したファイルパスの配列を返し、さうでなければ`undefined`を返します。 - -ユーザーが選択できる種類を制限したいときに、`filters`で表示したり選択できるファイル種別の配列を指定します。 - -```javascript -{ - filters: [ - { name: 'Images', extensions: ['jpg', 'png', 'gif'] }, - { name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] }, - { name: 'Custom File Type', extensions: ['as'] }, - { name: 'All Files', extensions: ['*'] } - ] -} -``` - -`extensions`配列は、ワイルドカードやドットなしで拡張子を指定すべきです(例えば、`'png'`は良いですが、`'.png'` と `'*.png'`はダメです)。すべてのファイルを表示するために、`'*'`ワイルドカードを使用します(それいがいのワイルドカードはサポートしていません)。 - -`callback`を通すと、APIは非同期に読み出し、結果は`callback(filenames)`経由で通します。 - -**Note:** WindowsとLinuxでは、オープンダイアログがファイル選択とディレクトリ選択の両方を選択することはできません。プラットフォーム上で `properties`に`['openFile', 'openDirectory']`を設定すると、ディレクトリ選択が表示されます。 - -### `dialog.showSaveDialog([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (オプション) -* `options` Object - * `title` String - * `defaultPath` String - * `filters` Array -* `callback` Function (オプション) - -成功すると、このメソッドはユーザーが選択したファイルのパスが返され、そうでなければ`undefined`が返されます。 - -`filters`が表示できるファイル種別配列を指定します。例えば、`dialog.showOpenDialog`を参照してください。 - -`callback`を通すと、APIは非同期でコールされ、結果は`callback(filename)`経由で通します。 - -### `dialog.showMessageBox([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (オプション) -* `options` Object - * `type` String - `"none"`と `"info"`、 `"error"`、 `"question"`、`"warning"`を設定できます。Windowsでは、 "icon"オプションを使用してアイコンを設定しない限り、"question"は"info"として同じアイコンを表示します。 - * `buttons` Array - ボタン用のテキスト配列。 - * `defaultId` Integer - メッセージボックスを開くとき、既定で選択されるボタン配列でのボタンインデックスです - * `title` String - メッセージボックスのタイトルで、いくつかのプラットフォームでは表示されません。 - * `message` String - メッセージボックスのコンテンツ。 - * `detail` String - メッセージの外部情報 - * `icon` [NativeImage](native-image.md) - * `cancelId` Integer - ダイアログのボタンをクリックする代わりにユーザーがダイアログをキャンセルしたときに返す値です。既定では、ラベルの "cancel"や"no"を持つボタンのインデックスまたは、そのようなボタンが無ければ0を返します。macOSやWindowsでは、 すでに指定されているかどうかは関係なく、"Cancel"ボタンのインデックスはいつでも `cancelId`が使われます。 - * `noLink` Boolean - Windowsでは、Electronは、 ("Cancel" または "Yes"のような)共通ボタンである`buttons`の一つを見つけようとし、ダイアログ内のコマンドリンクとして表示します。この挙動が気に入らない場合は、 `noLink` を `true`に設定できます。 -* `callback` Function - -メッセージボックスを表示し、メッセージボックスが閉じるまでプロセスをブロックします。クリックされたボタンのインデックスを返します。 - -`callback`が通されると、APIは非同期にコールし、結果は`callback(response)`経由で通されます。 - -### `dialog.showErrorBox(title, content)` - -エラーメッセージを表示するモデルダイアログを表示します。 - - `app`モジュールが`ready`イベントを出力する前に、このAPIは安全にコールできます。スタートアップの早い段階でエラーを報告するのに通常は使われます。Linuxで、アプリの`ready`イベントの前にコールすると、メッセージは標準エラーに出力され、GUIダイアログは表示されません。 diff --git a/docs-translations/jp/api/download-item.md b/docs-translations/jp/api/download-item.md deleted file mode 100644 index f646faa4d713..000000000000 --- a/docs-translations/jp/api/download-item.md +++ /dev/null @@ -1,101 +0,0 @@ -# DownloadItem - -`DownloadItem`は、Electronでアイテムのダウンロードを示すEventEmitterです。 `Session`モジュールの`will-download`イベントで使用され、ダウンロードしたアイテムをコントロールすることができます。 - -```javascript -// In the main process. -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.webContents.session.on('will-download', (event, item, webContents) => { - // Set the save path, making Electron not to prompt a save dialog. - item.setSavePath('/tmp/save.pdf') - - item.on('updated', (event, state) => { - if (state === 'interrupted') { - console.log('Download is interrupted but can be resumed') - } else if (state === 'progressing') { - if (item.isPaused()) { - console.log('Download is paused') - } else { - console.log(`Received bytes: ${item.getReceivedBytes()}`) - } - } - }) - item.once('done', (event, state) => { - if (state === 'completed') { - console.log('Download successfully') - } else { - console.log(`Download failed: ${state}`) - } - }) -}) -``` - -## イベント - -### イベント: 'updated' - -`downloadItem`が更新されたときに出力されます。 - -### イベント: 'done' - -* `event` Event -* `state` String - * `completed` - ダウンロードが成功で完了 - * `cancelled` - ダウンロードをキャンセル - * `interrupted` - ファイルサーバーとの接続が切れてエラー - -ダウンロードが終了状態になったときに出力されます。終了状態には、ダウンロードの完了、ダウンロードのキャンセル(`downloadItem.cancel()`経由)、レジュームできないダウンロードの中断などです。 - -## メソッド - -`downloadItem`オブジェクトは次のメソッドを持ちます: - -### `downloadItem.setSavePath(path)` - -* `path` String - ダウンロードアイテムの保存ファイルパスを設定します。 - -APIはセッションの`will-download`コールバック関数のみで提供されます。API経由で保存パスを設定しなかった場合、Electronは保存パスを決めるための元のルーチン(通常は保存ダイアログ)を使用します。 - -### `downloadItem.pause()` - -ダウンロードをポーズします。 - -### `downloadItem.resume()` - -ポーズしたダウンロードを再開します。 - -### `downloadItem.cancel()` - -ダウンロード操作をキャンセルします。 - -### `downloadItem.getURL()` - -どのURLからアイテムをダウンロードするのかを示す`String`を返します。 - -### `downloadItem.getMimeType()` - -mimeタイプを示す`String`を返します。 - -### `downloadItem.hasUserGesture()` - -ダウンロードがユーザージェスチャーを持っているかどうかを示す`Boolean`を返します。 - -### `downloadItem.getFilename()` - -ダウンロードアイテムのファイル名を示す`String`を返します。 - -**Note:** ファイル名はローカルディスクに実際に保存するものといつも同じとは限りません。ダウンロード保存ダイアログでユーザーがファイル名を変更していると、保存するファイルの実際の名前は異なります。 - -### `downloadItem.getTotalBytes()` - -ダウンロードアイテムの合計バイトサイズを示す`Integer`を返します。 -サイズが不明な場合、0を返します。 - -### `downloadItem.getReceivedBytes()` - -ダウンロードしたアイテムの受信バイト数を示す`Integer`を返します。 - -### `downloadItem.getContentDisposition()` - -レスポンスヘッダーからContent-Dispositionを示す`String`を返します。 diff --git a/docs-translations/jp/api/environment-variables.md b/docs-translations/jp/api/environment-variables.md deleted file mode 100644 index 75c0ab0c2a9a..000000000000 --- a/docs-translations/jp/api/environment-variables.md +++ /dev/null @@ -1,51 +0,0 @@ -# 環境変数 - -> アプリケーションの設定や動作を、コードの変更なしで制御します。 - -コマンドラインやアプリのコードよりも早く初期化されるために、Electronのいくつかの挙動は環境変数がコントロールしています。 - -POSIX shellでの例: - -```bash -$ export ELECTRON_ENABLE_LOGGING=true -$ electron -``` - -Windows コンソール上: - -```powershell -> set ELECTRON_ENABLE_LOGGING=true -> electron -``` - -## `ELECTRON_RUN_AS_NODE` - -通常のNode.jsプロセスでプロセスを開始します。 - -## `ELECTRON_ENABLE_LOGGING` - -Chromeのインターナルログをコンソールに出力します。 - - -## `ELECTRON_LOG_ASAR_READS` - -ASARファイルからElectronが読み込んだとき、システム`tmpdir`へ読み込みオフセットとファイルのパスを記録します。ファイルの順序を最適化するために、得られたファイルはASARモジュールに提供されます。 - -## `ELECTRON_ENABLE_STACK_DUMPING` - -Electronがクラッシュしたとき、コンソールにスタックとレースを出力します。 -`crashReporter`が開始していないと、この環境変数は動作しません。 - -## `ELECTRON_DEFAULT_ERROR_MODE` _Windows_ - -Electronがクラッシュしたとき、Windowsのクラッシュダイアログを表示します。 -`crashReporter`が開始していないと、この環境変数は動作しません。 - -## `ELECTRON_NO_ATTACH_CONSOLE` _Windows_ - -現在のコンソールセッションにはアタッチできません。 - -## `ELECTRON_FORCE_WINDOW_MENU_BAR` _Linux_ - -Linuxでグローバルメニューバーを使用できません。 - diff --git a/docs-translations/jp/api/file-object.md b/docs-translations/jp/api/file-object.md deleted file mode 100644 index ec2724cff1d2..000000000000 --- a/docs-translations/jp/api/file-object.md +++ /dev/null @@ -1,29 +0,0 @@ -# `File` object - -> ファイルシステム上のファイルを扱うには、HTML5のFile APIを使用します。 - -DOMのファイルインターフェイスにより、ユーザーはHTML 5 ファイルAPIで直接、ネイティブファイルで作業できるように、ネイティブファイル周りの抽象化を提供します。Electronは、ファイルシステム上のファイルの実際のパスを公開する`File`インターフェイスの`path`属性を追加します。 - -アプリ上にドラッグしたファイルの実際のパスを取得する例: - -```html -
- Drag your file here -
- - -``` diff --git a/docs-translations/jp/api/frameless-window.md b/docs-translations/jp/api/frameless-window.md deleted file mode 100644 index 9be396bc76e3..000000000000 --- a/docs-translations/jp/api/frameless-window.md +++ /dev/null @@ -1,73 +0,0 @@ -# Frameless Window - -フレームの無いウィンドウは、ウェブページの一部ではなく、ツールバーのようなウィンドウのパーツで、[chrome](https://developer.mozilla.org/en-US/docs/Glossary/Chrome)ではないウィンドウです。 オプションとして[`BrowserWindow`](browser-window.md)クラスがあります。 - -## フレームの無いウィンドウを作成する - -フレームの無いウィンドウを作成するために、[BrowserWindow](browser-window.md)の `options`で、`frame` を `false`に設定する必要があります。 - -```javascript -const BrowserWindow = require('electron').BrowserWindow -var win = new BrowserWindow({ width: 800, height: 600, frame: false }) -``` - -### macOSでの別の方法 - -macOS 10.10 Yosemite以降では、Chrome無しのウィンドウを指定する方法があります。`frame`を`false`に設定しタイトルバーとウィンドウコントロールの両方を無効にする代わりに、タイトルバーを隠しコンテンツをフルウィンドウサイズに広げたいけど、標準的なウィンドウ操作用にウィンドウコントロール("トラフィックライト")を維持したいかもしれません。新しい`titleBarStyle`オプションを指定することで、そうできます。 - -```javascript -var win = new BrowserWindow({ 'titleBarStyle': 'hidden' }) -``` - -## 透明なウィンドウ - - `transparent`オプションを`true`に設定すると、フレームの無い透明なウィンドウを作成できます。 - -```javascript -var win = new BrowserWindow({ transparent: true, frame: false }) -``` - -### 制限 - -* 透明領域をクリックすることはできません。この問題を解決するためにウィンドウの輪郭を設定するAPIを導入しようとしています。詳細は、[our issue](https://github.com/electron/electron/issues/1335) を参照してください。 -* 透明なウィンドウはサイズ変更できません。いくつかのプラットフォーム上では、`resizable`の`true`設定は、いくつかのプラットフォーム上で、動作を停止する透明ウィンドウを作成するかもしれません。 -* `blur`フィルターはウェブページのみに適用され、ウィンドウの下のコンテンツ(例えば、ユーザーのシステム上でほかのアプリケーションを開く)に、ぼやける効果を適用する方法はありません。 -* Windows オペレーティングシステム上では、DMMが無効のとき透明なウィンドウは動作しません。 -* Linuxユーザーは、GPUを無効化するためにコマンドラインで`--enable-transparent-visuals --disable-gpu`を設定でき、透明ウィンドウを作成するためにARGBを許可でき、これは、 [いくつかのNVidiaドライバー上でアルファチャンネルが動作しない](https://code.google.com/p/chromium/issues/detail?id=369209) という上流のバグ原因になります。 -* Macでは、透明なウィンドウでネイティブのウィンドウシャドーを表示できません。 - -## ドラッグ可能領域 - -既定では、フレーム無しウィンドウはドラッグできません。(OSの標準的なタイトルバーのような)ドラッグできる領域をElectronに指定するには、CSSで`-webkit-app-region: drag`を指定する必要があり、アプリはドラッグできる領域からドラッグできない領域を除外するために、`-webkit-app-region: no-drag`を使えます。現在のところ長方形領域のみサポートしています。 - -ウィンドウ全体をドラッグできるようにするには、`body`のスタイルに`-webkit-app-region: drag`を追加します。 - -```html - - -``` - -ウィンドウ全体度ドラッグできるようにするには、ボタンをドラッグできないように指定する必要があり、そうしなければユーザーがそれをクリックする可能性があります。 - -```css -button { - -webkit-app-region: no-drag; -} -``` - -カスタムタイトルバーをドラッグできるように設定すると、タイトルバーのすべてのボタンをドラッグできないようにする必要があります。 - -## テキスト選択 - -フレームの無いウィンドウでは、ドラッグを可能にする動作とテキスト選択がぶつかるかもしれません。例えば、タイトルバーをドラッグしたとき、うっかりタイトルバーのテキストを選択してしまうかもしれません。これを防ぐために、次の例のようにドラッグできる領域内のテキスト選択を無効にする必要があります。 - -```css -.titlebar { - -webkit-user-select: none; - -webkit-app-region: drag; -} -``` - -## コンテキストメニュー - -いくつかのプラットフォームでは、ドラッグ可能な領域は、クライアントフレーム無しとして扱われるので、その上で右クリックすると、システムメニューがポップアップします。コンテキストメニューをすべてのプラットフォームで正しく動作するようにするためには、ドラッグ可能領域でカスタムコンテキストメニューを使用しないでください。 diff --git a/docs-translations/jp/api/global-shortcut.md b/docs-translations/jp/api/global-shortcut.md deleted file mode 100644 index bc266f46040d..000000000000 --- a/docs-translations/jp/api/global-shortcut.md +++ /dev/null @@ -1,64 +0,0 @@ -# globalShortcut - -さまざまなショートカットの動作をカスタマイズするために、オペレーティングシステムのグローバルのキーボードショートカットを`globalShortcut`モジュールは登録したり、解除したりできます。 - -**Note:** ショートカットはグローバルです。アプリがキーボードフォーカスを持っていなくても動作します。`app`モジュールの `ready`イベントが出力されるまでは使うべきではありません。 - -```javascript -const electron = require('electron') -const app = electron.app -const globalShortcut = electron.globalShortcut - -app.on('ready', function () { - // Register a 'ctrl+x' shortcut listener. - var ret = globalShortcut.register('ctrl+x', function () { - console.log('ctrl+x is pressed') - }) - - if (!ret) { - console.log('registration failed') - } - - // Check whether a shortcut is registered. - console.log(globalShortcut.isRegistered('ctrl+x')) -}) - -app.on('will-quit', function () { - // Unregister a shortcut. - globalShortcut.unregister('ctrl+x') - - // Unregister all shortcuts. - globalShortcut.unregisterAll() -}) -``` - -## メソッド - -`globalShortcut`モジュールは次のメソッドを持ちます: - -### `globalShortcut.register(accelerator, callback)` - -* `accelerator` [Accelerator](accelerator.md) -* `callback` Function - -`accelerator`のグローバルショートカットを登録します。`callback`は、ユーザーが登録しているショートカットを押したときにコールされます。 - -ほかのアプリケーションがすでにacceleratorを使用している時、この呼び出しは静かに失敗します。アプリケーション間でグローバルショートカットの争いをしてほしくないので、オペレーティングシステムはこの挙動を採用しています。 - -### `globalShortcut.isRegistered(accelerator)` - -* `accelerator` [Accelerator](accelerator.md) - -このアプリケーションが`accelerator`に登録されているかどうかを返します。 - -acceleratorがすでにほかのアプリケーションで取得していると、このコールは、`false`を返します。アプリケーション間でグローバルショートカットの争いをしてほしくないので、オペレーティングシステムはこの挙動を採用しています。 - -### `globalShortcut.unregister(accelerator)` - -* `accelerator` [Accelerator](accelerator.md) - -Unregisters the global shortcut of `accelerator`のグローバルショートカットを解除します。 - -### `globalShortcut.unregisterAll()` - -全てのグローバルショートカットを解除します。 diff --git a/docs-translations/jp/api/ipc-main.md b/docs-translations/jp/api/ipc-main.md deleted file mode 100644 index 0bb1cb7f0ef7..000000000000 --- a/docs-translations/jp/api/ipc-main.md +++ /dev/null @@ -1,79 +0,0 @@ -# ipcMain - -`ipcMain`モジュールは[EventEmitter](https://nodejs.org/api/events.html)クラスのインスタンスです。メインプロセスで使うと、レンダラ―プロセス(ウェブページ)から非同期、同期敵にメッセージ送信できます。レンダラ―から送信されたメッセージはこのモジュールに出力されます。 - -## メッセージ送信 - -メインプロレスからレンダラ―プロセスへメッセージ送信を可能にします。さらなる情報は、[webContents.send](web-contents.md#webcontentssendchannel-arg1-arg2-) を参照してください。 - -* メッセージを送信するとき、イベント名は`channel`です。 -* 同期的にメッセージを返信するために、`event.returnValue`を設定する必要があります。 -* 送信者に非同期に戻して送信するために、 `event.sender.send(...)`を使えます。 - -レンダラーとメインプロセス間でメッセージの送信とハンドリングをする例です: - -```javascript -// In main process. -const ipcMain = require('electron').ipcMain -ipcMain.on('asynchronous-message', function (event, arg) { - console.log(arg) // prints "ping" - event.sender.send('asynchronous-reply', 'pong') -}) - -ipcMain.on('synchronous-message', function (event, arg) { - console.log(arg) // prints "ping" - event.returnValue = 'pong' -}) -``` - -```javascript -// In renderer process (web page). -const ipcRenderer = require('electron').ipcRenderer -console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong" - -ipcRenderer.on('asynchronous-reply', function (event, arg) { - console.log(arg) // prints "pong" -}) -ipcRenderer.send('asynchronous-message', 'ping') -``` - -## メッセージ受信 - -`ipcMain`モジュールが持つイベント受信用のメソッドです。 - -### `ipcMain.on(channel, callback)` - -* `channel` String - イベント名 -* `callback` Function - -イベントが発生すると、`callback`が`event`と任意の引数でコールされます。 - -### `ipcMain.removeListener(channel, callback)` - -* `channel` String - イベント名 -* `callback` Function - 使用したのと同じ関数への参照です - `ipcMain.on(channel, callback)` - -一度メッセージを受信すると、もうコールバックをアクティブにしたくなく、何らかの理由でメッセージ送信を単に止めるには、この関数が指定したチャンネルのコールバックハンドラーを削除します。 - -### `ipcMain.removeAllListeners(channel)` - -* `channel` String - The event name. - -このipcチャンネルの *全ての* ハンドラーを削除します。 - -### `ipcMain.once(channel, callback)` - -ハンドラーの実行のために`ipcMain.on()`の代わりにこれを使うと、一度だけ発生することを意味し、`callback`の一回のコールの後にアクティブにしないのと同じです。 - -## IPC Event - -`callback`に渡される`event`オブジェクトには次のメソッドがあります。 - -### `event.returnValue` - -値にこれを設定すると同期メッセージを返します。 - -### `event.sender` - -送信したメッセージ`webContents`を返すと、非同期にメッセージを返信するために`event.sender.send`をコールできます。さらなる情報は、[webContents.send](web-contents.md#webcontentssendchannel-arg1-arg2-) を見てください。 diff --git a/docs-translations/jp/api/ipc-renderer.md b/docs-translations/jp/api/ipc-renderer.md deleted file mode 100644 index edbd862ffaa6..000000000000 --- a/docs-translations/jp/api/ipc-renderer.md +++ /dev/null @@ -1,66 +0,0 @@ -# ipcRenderer - -`ipcRenderer`モジュールは[EventEmitter](https://nodejs.org/api/events.html) クラスのインスタンスです。レンダープロセス(ウェブページ)からメインプロセスに同期、非同期にメッセージを送信できるメソッドを提供します。メインプロセスから返答を受け取ることもできます。 - - -コード例は [ipcMain](ipc-main.md) をみてください。 - -## メッセージの受信 - -`ipcRenderer`モジュールは、イベントを受信するための次のメソッドを持ちます: - -### `ipcRenderer.on(channel, callback)` - -* `channel` String - イベント名 -* `callback` Function - -イベントが発生したとき、任意の引数と `event`オブジェクトで`callback`をコールします。 - -### `ipcRenderer.removeListener(channel, callback)` - -* `channel` String - イベント名 -* `callback` Function - 使用したのと同じ関数への参照 - `ipcRenderer.on(channel, callback)` - -一度メッセージを受信すると、もうコールバックをアクティブにしたくなく、何らかの理由でメッセージ送信を単に止めるには、この関数が指定したチャンネルのコールバックハンドラーを削除します。 - -### `ipcRenderer.removeAllListeners(channel)` - -* `channel` String - The event name. - -このipcチャンネルの *全ての* ハンドラーを削除します。 - -### `ipcMain.once(channel, callback)` - -ハンドラーの実行のために`ipcMain.on()`の代わりにこれを使うと、一度だけ発生することを意味し、`callback`の一回のコールの後にアクティブにしないのと同じです。 - -## メッセージ送信 - -`ipcRenderer`モジュールは、イベントを送信するための次のメソッドを持ちます: - -### `ipcRenderer.send(channel[, arg1][, arg2][, ...])` - -* `channel` String - イベント名 -* `arg` (optional) - -`channel` - -`channel`経由でメインプロセスに非同期にイベントを送信し、任意の引数を送信できます。メインプロセスは`ipcMain`で`channel`を受信することでハンドルします。 - -### `ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])` - -* `channel` String - イベント名 -* `arg` (optional) - -`channel`経由でメインプロセスに同期的にイベントを送信し、任意の引数を送信できます。 - -メインプロセスは`ipcMain`で`channel`を受信することでハンドルし、 `event.returnValue`を設定してリプライします。 - -__Note:__ 同期的なメッセージ送信をすると全てのレンダラ―プロセスがブロックされるので、何をしているか理解できない限り、これを使うべきではありません。 - -### `ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])` - -* `channel` String - イベント名. -* `arg` (optional) - -`ipcRenderer.send`のようですが、メインプロセスの代わりにホストに``エレメントにイベントを送信します。 diff --git a/docs-translations/jp/api/menu-item.md b/docs-translations/jp/api/menu-item.md deleted file mode 100644 index 4c42f73d7e4b..000000000000 --- a/docs-translations/jp/api/menu-item.md +++ /dev/null @@ -1,50 +0,0 @@ -# MenuItem - -`menu-item`モジュールは、アプリケーションまたはコンテキスト[`メニュー`](menu.md)に項目を追加することができます。 - -具体例は、 [`menu`](menu.md) を見てください。 - -## クラス: MenuItem - -次のメソッドで、新しい`MenuItem`を作成します。 - -### new MenuItem(options) - -* `options` Object - * `click` Function - メニューアイテムがクリックされたとき、`click(menuItem, browserWindow)`がコールされます。 - * `role` String - 指定されたとき、メニューアイテムの動作が定義され、`click`プロパティは無視されます。 - * `type` String - `normal`と `separator`、`submenu`、`checkbox`、`radio`を指定できます。 - * `label` String - * `sublabel` String - * `accelerator` [Accelerator](accelerator.md) - * `icon` [NativeImage](native-image.md) - * `enabled` Boolean - * `visible` Boolean - * `checked` Boolean - * `submenu` Menu - メニューアイテムを省略できる`type: 'submenu'`を指定したとき、`submenu`種類のメニューアイテムを指定すべきです。値が`Menu`でないとき、`Menu.buildFromTemplate`を使用して自動的に変換されます。 - * `id` String - 1つのメニュー内で一意です。定義されていたら、position属性によってアイテムへの参照として使用できます。 - * `position` String - このフィールドは、指定されたメニュー内の特定の位置を細かく定義できます。 - -メニューアイテムを作成するとき、適切な動作がある場合は、メニューでベストな自然な体験を提供するために、手動で実装する代わりに`role`を指定することを推奨します。 - -`role` プロパティは次の値を持ちます: - -* `undo` -* `redo` -* `cut` -* `copy` -* `paste` -* `selectall` -* `minimize` - 現在のウィンドウの最小化 -* `close` - 現在のウィンドウを閉じます - -macOSでは、`role`は次の追加の値を取れます: - -* `about` - `orderFrontStandardAboutPanel`動作に紐づけられます -* `hide` - `hide`動作に紐づけられます -* `hideothers` - `hideOtherApplications`動作に紐づけられます -* `unhide` - `unhideAllApplications`動作に紐づけられます -* `front` - `arrangeInFront`動作に紐づけられます -* `window` - サブメニューは "Window"メニューです。 -* `help` - サブメニューは "Help"メニューです。 -* `services` - サブメニューは "Services"メニューです。 diff --git a/docs-translations/jp/api/menu.md b/docs-translations/jp/api/menu.md deleted file mode 100644 index 73869e8b7668..000000000000 --- a/docs-translations/jp/api/menu.md +++ /dev/null @@ -1,338 +0,0 @@ -# Menu - -`menu`クラスは、アプリケーションのメニューと[コンテキストメニュー](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/PopupGuide/ContextMenus)として使えるネイティブメニューを作成するのに使われます。このモジュールは、`remote`モジュール経由でレンダラープロセスで使用できるメインプロセスのモジュールです。 - -個々のメニューは複数の[menu items](menu-item.md)で成り立ち、個々のメニューアイテムはサブメニューを持てます。 - -以下は、ユーザーはページを右クリックした時、[remote](remote.md)モジュールを作成するために、(レンダラープロセス)ウェブページで動的にメニューを作成して、表示します。 - -```html - - -``` - -シンプルなテンプレートAPIでレンダラープロセスでアプリケーションメニューを作成する例です。 - -```javascript -var template = [ - { - label: 'Edit', - submenu: [ - { - label: 'Undo', - accelerator: 'CmdOrCtrl+Z', - role: 'undo' - }, - { - label: 'Redo', - accelerator: 'Shift+CmdOrCtrl+Z', - role: 'redo' - }, - { - type: 'separator' - }, - { - label: 'Cut', - accelerator: 'CmdOrCtrl+X', - role: 'cut' - }, - { - label: 'Copy', - accelerator: 'CmdOrCtrl+C', - role: 'copy' - }, - { - label: 'Paste', - accelerator: 'CmdOrCtrl+V', - role: 'paste' - }, - { - label: 'Select All', - accelerator: 'CmdOrCtrl+A', - role: 'selectall' - } - ] - }, - { - label: 'View', - submenu: [ - { - label: 'Reload', - accelerator: 'CmdOrCtrl+R', - click: function (item, focusedWindow) { - if (focusedWindow) focusedWindow.reload() - } - }, - { - label: 'Toggle Full Screen', - accelerator: (function () { - if (process.platform === 'darwin') { - return 'Ctrl+Command+F' - } else { - return 'F11' - } - })(), - click: function (item, focusedWindow) { - if (focusedWindow) { - focusedWindow.setFullScreen(!focusedWindow.isFullScreen()) - } - } - }, - { - label: 'Toggle Developer Tools', - accelerator: (function () { - if (process.platform === 'darwin') { - return 'Alt+Command+I' - } else { - return 'Ctrl+Shift+I' - } - })(), - click: function (item, focusedWindow) { - if (focusedWindow) focusedWindow.toggleDevTools() - } - } - ] - }, - { - label: 'Window', - role: 'window', - submenu: [ - { - label: 'Minimize', - accelerator: 'CmdOrCtrl+M', - role: 'minimize' - }, - { - label: 'Close', - accelerator: 'CmdOrCtrl+W', - role: 'close' - } - ] - }, - { - label: 'Help', - role: 'help', - submenu: [ - { - label: 'Learn More', - click: function () { require('electron').shell.openExternal('https://electron.atom.io') } - } - ] - } -] - -if (process.platform === 'darwin') { - var name = require('electron').remote.app.getName() - template.unshift({ - label: name, - submenu: [ - { - label: 'About ' + name, - role: 'about' - }, - { - type: 'separator' - }, - { - label: 'Services', - role: 'services', - submenu: [] - }, - { - type: 'separator' - }, - { - label: 'Hide ' + name, - accelerator: 'Command+H', - role: 'hide' - }, - { - label: 'Hide Others', - accelerator: 'Command+Alt+H', - role: 'hideothers' - }, - { - label: 'Show All', - role: 'unhide' - }, - { - type: 'separator' - }, - { - label: 'Quit', - accelerator: 'Command+Q', - click: function () { app.quit() } - } - ] - }) - // Window menu. - template[3].submenu.push( - { - type: 'separator' - }, - { - label: 'Bring All to Front', - role: 'front' - } - ) -} - -var menu = Menu.buildFromTemplate(template) -Menu.setApplicationMenu(menu) -``` - -## クラス: Menu - -### `new Menu()` - -新しいメニューを作成します。 - -## メソッド - -`menu`クラスーは次のメソッドを持ちます。 - -### `Menu.setApplicationMenu(menu)` - -* `menu` Menu - -macOSで、アプリケーションメニューとして`menu`を設定します。WindowsとLinuxでは、`menu`はそれぞれのウィンドウの上のメニューとして設定されます。 - -### `Menu.sendActionToFirstResponder(action)` _macOS_ - -* `action` String - -アプリケーションの最初のレスポンダーに`action`が送信されます。規定のCocoaメニュー動作をエミュレートするために使われ、通常は`MenuItem`の`role`プロパティーを使います。 - -### `Menu.buildFromTemplate(template)` - -* `template` Array - -一般的に、`template`は、[MenuItem](menu-item.md)を組み立てるための `options`配列です。使用方法は下のように参照します。 - -ほかのフィールドに`template`の項目を設定でき、メニューアイテムを構成するプロパティです。 - -### `Menu.popup([browserWindow, x, y, positioningItem])` - -* `browserWindow` BrowserWindow (オプション) - 既定では`null`です。 -* `x` Number (オプション) - 既定では -1です。 -* `y` Number (**必須** `x` が使われている場合) - 既定では -1です。 -* `positioningItem` Number (オプション) _macOS_ - 既定では -1です。 - -メニューアイテムのインデックスを指定した座標にマウスカーソルを配置します。 - -`browserWindow`でコンテキストメニューとしてメニューをポップアップします。メニューを表示する場所をオプションで`x, y`座標を指定でき、指定しなければ現在のマウスカーソル位置に表示します。 - -### `Menu.append(menuItem)` - -* `menuItem` MenuItem - -メニューに`menuItem`を追加します。 - -### `Menu.insert(pos, menuItem)` - -* `pos` Integer -* `menuItem` MenuItem - -メニューの`pos`位置に`menuItem`を追加します。 - -### `Menu.items()` - -メニューのアイテムを収容した配列を取得します。 - -## macOS アプリケーションメニューの注意事項 - -macOSは、WindowsとLinuxのアプリケーションのメニューとは完全に異なるスタイルを持ち、よりネイティブのようにアプリメニューを作成するのに幾つかの注意事項があります。 - -### 標準的なメニュー - -macOSでは、`Services`と`Windows`メニューのように定義された標準的な多くのメニューがあります。標準的なメニューを作成するために、メニューの`role`に次のどれかを設定する必要があり、Electronはそれを受けて標準的なメニューを作成します。 - -* `window` -* `help` -* `services` - -### 標準的なメニューアイテムの動作 - -`About xxx`と`Hide xxx`、`Hide Others`のようないくつかのメニューアイテム用にmacOSは標準的な動作を提供します。メニューアイテムの動作に標準的な動作を設定するために、メニューアイテムの`role`属性を設定すべきです。 - -### メインのメニュー名 - -macOSでは、設定したラベルに関係なく、アプリケーションの最初のアイテムのラベルはいつもアプリの名前です。変更するために、アプリにバンドルされている`Info.plist`ファイルを修正してアプリの名前を変更する必要があります。詳細は、 [About Information Property List Files][AboutInformationPropertyListFiles] を見てください。 - -## メニューアイテムの位置 - -`position`を使用することができ、`Menu.buildFromTemplate`でメニューを構築するときに`id`がアイテムを配置する方法をコントロールします。 - -`MenuItem`の`position`属性は、`[placement]=[id]`をもち、 `placement`は`before`や `after`、 `endof`の一つが設定され、`id`はメニューの設定されているアイテムで一意のIDです。 - -* `before` - IDから参照したアイテムの前にアイテムを挿入します。参照するアイテムが存在しないのなら、メニューの最後にアイテムが挿入されます。 -* `after` - IDから参照したアイテムの後にアイテムを挿入します。参照するアイテムが存在しないのなら、メニューの最後にアイテムが挿入されます。 -* `endof` -IDから参照したアイテムを含む論理グループの最後にアイテムを挿入します(グループはアイテムを分けるために作成されます)。参照するアイテムが存在しないのなら、付与されたIDで新しい分離グループが作成され、そのグループのあとにアイテムが挿入されます。 - -アイテムが配置されたとき、新しいアイテムが配置されるまで、すべての配置されていないアイテムがその後に挿入されます。同じ場所にメニューアイテムのグループを配置したいのなら、最初にアイテムで場所を指定する必要があります。 - -### 具体例 - -テンプレート: - -```javascript -[ - {label: '4', id: '4'}, - {label: '5', id: '5'}, - {label: '1', id: '1', position: 'before=4'}, - {label: '2', id: '2'}, - {label: '3', id: '3'} -] -``` - -メニュー: - -``` -- 1 -- 2 -- 3 -- 4 -- 5 -``` - -テンプレート: - -```javascript -[ - {label: 'a', position: 'endof=letters'}, - {label: '1', position: 'endof=numbers'}, - {label: 'b', position: 'endof=letters'}, - {label: '2', position: 'endof=numbers'}, - {label: 'c', position: 'endof=letters'}, - {label: '3', position: 'endof=numbers'} -] -``` - -メニュー: - -``` -- --- -- a -- b -- c -- --- -- 1 -- 2 -- 3 -``` - -[AboutInformationPropertyListFiles]: https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html diff --git a/docs-translations/jp/api/native-image.md b/docs-translations/jp/api/native-image.md deleted file mode 100644 index 119326cd05e4..000000000000 --- a/docs-translations/jp/api/native-image.md +++ /dev/null @@ -1,147 +0,0 @@ -# nativeImage - -Electronでは、画像を取得するAPI用に、ファイルパスまたは`nativeImage`インスタンスを渡します。`null`を渡すと、空のイメージが使われます。 - -例えば、トレイを作成したり、ウィンドウアイコンを設定する時、`String`としてイメージファイルパスを渡します: - -```javascript -var appIcon = new Tray('/Users/somebody/images/icon.png') -var window = new BrowserWindow({icon: '/Users/somebody/images/window.png'}) -``` - -もしくは、`nativeImage`を返すクリップボードからイメージを読み込みます: - -```javascript -var image = clipboard.readImage() -var appIcon = new Tray(image) -``` - -## 対応しているフォーマット - -今のところ、`PNG` と `JPEG`の画像フォーマットに対応しています。透明や可逆圧縮に対応しているので、`PNG` を推奨します。 - -Windowsでは、ファイルパスから`ICO`アイコンをロードできます。 - -## 高解像度画像 - -高DPIに対応しているプラットフォームで、高解像度としてマークするためにイメージの基本ファイル名の後に`@2x`を追加できます。 - -例えば、`icon.png`は一般的な解像度の通常の画像で、`icon@2x.png`は、倍のDPI密度を持つ高解像度画像として扱われます。 - - -同時に異なるDPI密度をディスプレイで対応したい場合、同じフォルダーに異なるサイズの画像を置き、DPIサフィックスなしでファイル名を使用します。 - -例: - -```text -images/ -├── icon.png -├── icon@2x.png -└── icon@3x.png -``` - - -```javascript -var appIcon = new Tray('/Users/somebody/images/icon.png') -``` - -次のDPIサフィックスに対応しています: - -* `@1x` -* `@1.25x` -* `@1.33x` -* `@1.4x` -* `@1.5x` -* `@1.8x` -* `@2x` -* `@2.5x` -* `@3x` -* `@4x` -* `@5x` - -## テンプレート画像 - -テンプレート画像は、黒とクリアな色(とアルファチャンネル)で成り立ちます。テンプレート画像は画像単体での使用は想定しておらず、通常は最終的にほしい画像を生成するためにほかのコンテンツと合成します。 - -もっとも一般的なケースは、ライトとダークなメニュバー両方に切り替え可能なメニュバーアイコン用にテンプレート画像を使います。 - - -**Note:** テンプレート画像は、macOSでのみサポートしています。 - -テンプレート画像として画像をマークするために、ファイル名の最後に`Template`をつけます。 - -例: - -* `xxxTemplate.png` -* `xxxTemplate@2x.png` - -## メソッド - -`nativeImage`クラスは次のメソッドを持ちます: - -### `nativeImage.createEmpty()` - -空の`nativeImage` インスタンスを生成します。 - -### `nativeImage.createFromPath(path)` - -* `path` String - -`path`で指定したファイルから新しい`nativeImage`を生成します。 - -### `nativeImage.createFromBuffer(buffer[, scaleFactor])` - -* `buffer` [Buffer][buffer] -* `scaleFactor` Double (optional) - - `buffer`から新しい`nativeImage`インスタンスを生成します。既定では、`scaleFactor`は1.0です。 - -### `nativeImage.createFromDataURL(dataURL)` - -* `dataURL` String - -`dataURL`から新しい `nativeImage`インスタンスを生成します。 - -## インスタンスメソッド - -`nativeImage`のインスタンス上で提供されるメソッド: - -```javascript -const nativeImage = require('electron').nativeImage - -var image = nativeImage.createFromPath('/Users/somebody/images/icon.png') -``` - -### `image.toPNG()` - -`PNG`エンコードされた画像を含む[Buffer][buffer]を返します。 - -### `image.toJPEG(quality)` - -* `quality` Integer (**required**) - Between 0 - 100. - -`JPEG`エンコードされた画像を含む[Buffer][buffer]を返します。 - -### `image.toDataURL()` - -画像のURLデータを返します。 - -### `image.isEmpty()` - -画像が空かどうかをブーリアン値で返します。 - -### `image.getSize()` - -画像サイズを返します。 - -[buffer]: https://nodejs.org/api/buffer.html#buffer_class_buffer - -### `image.setTemplateImage(option)` - -* `option` Boolean - -テンプレート画像としてマークします。 - -### `image.isTemplateImage()` - -イメージがテンプレート画像かどうかをブーリアン値で返します。 diff --git a/docs-translations/jp/api/power-monitor.md b/docs-translations/jp/api/power-monitor.md deleted file mode 100644 index f9ae0d28860a..000000000000 --- a/docs-translations/jp/api/power-monitor.md +++ /dev/null @@ -1,33 +0,0 @@ -# powerMonitor - -`power-monitor`モジュールは、パワー状態の変更の監視に使われます。メインプロセスでみ使用することができます。`app`モジュールの`ready`が出力されるまで、このモジュールを使うべきではありません。 - -例: - -```javascript -app.on('ready', function () { - require('electron').powerMonitor.on('suspend', function () { - console.log('The system is going to sleep') - }) -}) -``` - -## イベント - -`power-monitor`モジュールは次のイベントを出力します。: - -### イベント: 'suspend' - -システムがサスペンドのときに出力されます。 - -### イベント: 'resume' - -システムがレジュームのときに出力されます。 - -### イベント: 'on-ac' - -システムがACパワーに変わったときに出力されます。 - -### イベント: 'on-battery' - -システムがバッテリーパワーに変わったときに出力されます。 diff --git a/docs-translations/jp/api/power-save-blocker.md b/docs-translations/jp/api/power-save-blocker.md deleted file mode 100644 index 23d80846610f..000000000000 --- a/docs-translations/jp/api/power-save-blocker.md +++ /dev/null @@ -1,42 +0,0 @@ -# powerSaveBlocker - -`powerSaveBlocker`モジュールは、省電力(スリープ)モードからシステムをブロックするのに使用され、それ故にアプリがシステムと画面をアクティブに維持することができます。 - -例: - -```javascript -const powerSaveBlocker = require('electron').powerSaveBlocker - -var id = powerSaveBlocker.start('prevent-display-sleep') -console.log(powerSaveBlocker.isStarted(id)) - -powerSaveBlocker.stop(id) -``` - -## メソッド - -`powerSaveBlocker`モジュールは次のメソッドを持ちます: - -### `powerSaveBlocker.start(type)` - -* `type` String - パワーセーブのブロック種類です。 - * `prevent-app-suspension` - アプリケーションがサスペンドになるのを防ぎます。システムのアクティブ状態を維持できますが、画面をオフにすることができます。使用例:ファイルのダウンロードまたは音楽の再生 - * `prevent-display-sleep`- ディスプレイがスリープになるのを防ぎます。システムと画面のアクティブ状態を維持できます。使用例:ビデオ再生 - -省電力モードに入るのを防止するシステムを開始します。パワーセーブブロッカーを確認する数字を返します。 - -**Note:** `prevent-display-sleep`は`prevent-app-suspension`より高い優先権を持ちます。最も優先権が高いタイプのみが影響します。言い換えれば。`prevent-display-sleep`はいつも`prevent-app-suspension`より高い優先権をもちます。 - -例えば、APIが`prevent-app-suspension`を要求するAをコールし、ほかのAPIが`prevent-display-sleep`を要求するBをコールすると、`prevent-display-sleep`はBのリクエストが止まるまで使われ、そのあと`prevent-app-suspension`が使われます。 - -### `powerSaveBlocker.stop(id)` - -* `id` Integer - `powerSaveBlocker.start`によって、パワーセーブブロッカーIDが返されます。 - -指定したパワーセーブブロッカーを停止します。 - -### `powerSaveBlocker.isStarted(id)` - -* `id` Integer - `powerSaveBlocker.start`によって、パワーセーブブロッカーIDが返されます。 - -`powerSaveBlocker`が開始したかどうかのブーリアン値を返します。 diff --git a/docs-translations/jp/api/process.md b/docs-translations/jp/api/process.md deleted file mode 100644 index dc4924b4b827..000000000000 --- a/docs-translations/jp/api/process.md +++ /dev/null @@ -1,100 +0,0 @@ -# process - -> processオブジェクトの拡張。 - -Electronの`process`オブジェクトは次のようなAPIで拡張されています。 - -## イベント - -### イベント: 'loaded' - -このイベントはElectronが内部の初期化スクリプトをロードし、ウェブページまたはメインスクリプトのロードが始まるときに発行されます。 - -Node統合がオフになっているとき、削除したNodeグローバルシンボルをグローバルスコープへ戻すために、プリロードスクリプトで使用できます。 - -```javascript -// preload.js -var _setImmediate = setImmediate -var _clearImmediate = clearImmediate -process.once('loaded', function () { - global.setImmediate = _setImmediate - global.clearImmediate = _clearImmediate -}) -``` - -## プロパティ - -### `process.noAsar` - -これを`true`に設定すると、Nodeのビルトインモジュールで、`asar`アーカイブのサポートを無効にできます。 - -### `process.type` - -現在のプロセスのタイプで、`"browser"`(例: メインプロセス) または `"renderer"`の値をとります。 - -### `process.versions.electron` - -Electronのバージョン文字列です。 - -### `process.versions.chrome` - -Chromeのバージョン文字列です。 - -### `process.resourcesPath` - -リソースディレクトリのパスです。 - -### `process.mas` - -Mac app Store用のビルドでは値は`true`になります。ほかのビルドの場合は`undefined`です。 - -### `process.windowsStore` - -Windows Store App (appx)として動作中の場合は、値は`true`になります。それ以外では`undefined`です。 - -### `process.defaultApp` - -アプリがdefault appのパラメータとして渡されて起動された場合は、値は`true`になります。 - -訳注: [issue #4690](https://github.com/electron/electron/issues/4690)が参考になります。 - - -## メソッド - -`process`オブジェクトは次のメソッドを持ちます。 - - -### `process.crash()` - -このプロセスのメインスレッドをクラッシュさせます。 - -### `process.hang()` - -このプロセスのメインスレッドをハングさせます。 - -### `process.setFdLimit(maxDescriptors)` _macOS_ _Linux_ - -* `maxDescriptors` Integer - -ファイルデスクリプタの最大数のソフトリミットを、`maxDescriptors`かOSのハードリミットの、どちらか低い方に設定します。 - -### `process.getProcessMemoryInfo()` - -本プロセスのメモリ使用統計に関する情報を得ることのできるオブジェクトを返します。全ての報告値はキロバイト単位であることに注意してください。 - -* `workingSetSize` - 実際の物理メモリに固定されているメモリサイズです。 -* `peakWorkingSetSize` - これまでに実際の物理メモリに固定された最大のメモリサイズです。 -* `privateBytes` - JS heapやHTML contentなど、他のプロセスに共有されていないメモリサイズです。 -* `sharedBytes` - プロセス間で共有されているメモリサイズです。例えばElectronそのものにより使用されたメモリがこれに当たります。 - -### `process.getSystemMemoryInfo()` - -システム全体で使用されているメモリ使用統計に関する情報を得ることのできるオブジェクトを返します。全ての報告値はキロバイト単位であることに注意してください。 - -* `total` - システムで使用可能な全ての物理メモリのサイズ(KB)です。 -* `free` - アプリケーションやディスクキャッシュで使用されていないメモリのサイズです。 - -Windows / Linux用: - -* `swapTotal` - システムで使用可能なスワップメモリの総サイズです。 -* `swapFree` - システムで使用可能なスワップメモリの空きサイズです。 diff --git a/docs-translations/jp/api/protocol.md b/docs-translations/jp/api/protocol.md deleted file mode 100644 index b8b57378a7e1..000000000000 --- a/docs-translations/jp/api/protocol.md +++ /dev/null @@ -1,172 +0,0 @@ -# protocol - -`protocol`モジュールはカスタムプロトコルを登録したり、または既存のプロトコルをインターセプタ―することができます。 - -`file://`プロトコルの同様の効果をもつプロトコルを実装した例です。 - -```javascript -const {app} = require('electron') -const path = require('path') - -app.on('ready', function () { - var protocol = electron.protocol - protocol.registerFileProtocol('atom', function (request, callback) { - var url = request.url.substr(7) - callback({path: path.join(__dirname, url)}) - }, function (error) { - if (error) console.error('Failed to register protocol') - }) -}) -``` - -**Note:** このモジュールは、`app`モジュールで`ready`イベントが出力された後のみ使うことができます。 - -## メソッド - -`protocol`モジュールは、次のメソッドを持ちます。 - -### `protocol.registerStandardSchemes(schemes)` - -* `schemes` Array - 標準的なスキーマーを登録するためのカスタムスキーマー - -標準的な`scheme`は、RFC 3986で策定している[generic URI syntax](https://tools.ietf.org/html/rfc3986#section-3)に準拠しています。これには`file:` と `filesystem:`を含んでいます。 - -### `protocol.registerServiceWorkerSchemes(schemes)` - -* `schemes` Array - サービスワーカーをハンドルするために登録されたカスタムスキーマー - -### `protocol.registerFileProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -レスポンスとしてファイルを送信する`scheme`のプロトコルを登録します。`scheme`で`request`が生成された時、`handler`は`handler(request, callback)`で呼び出されます。`scheme` 登録が成功したり、`completion(error)`が失敗したときに、`completion` は`completion(null)`で呼び出されます。 - -* `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` Array (オプション) -* `callback` Function - -`uploadData` は `data` オブジェクトの配列です: - -* `data` Object - * `bytes` Buffer - 送信するコンテンツ - * `file` String - アップロードするファイルパス - -`request`をハンドルするために、`callback`はファイルパスまたは`path`プロパティを持つオブジェクトで呼び出すべきです。例えば、`callback(filePath)` または`callback({path: filePath})`です。 - -何もなし、数字、`error`プロパティを持つオブジェクトで、`callback`が呼び出された時、 `request`は指定した`error`番号で失敗します。使用できる提供されているエラー番号は、[net error list][net-error]を参照してください。 - -既定では、`scheme`は、`file:`のような一般的なURIの構文に続くプロトコルと違う解析がされ、`http:`のように扱われます。なので、恐らく標準的なスキーマーのように扱われるスキーマーを持つために、`protocol.registerStandardSchemes` を呼び出したくなります。 - -### `protocol.registerBufferProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -レスポンスとして`Buffer`を送信する`scheme`プロトコルを登録します。 - - `callback`は、`Buffer`オブジェクトまたは、`data`と`mimeType`、 `charset`プロパティを持つオブジェクトのどちらかで呼ばれる必要があることを除いて、この使用方法は、`registerFileProtocol`と同じです。 - -例: - -```javascript -protocol.registerBufferProtocol('atom', function (request, callback) { - callback({mimeType: 'text/html', data: Buffer.from('
Response
')}) -}, function (error) { - if (error) console.error('Failed to register protocol') -}) -``` - -### `protocol.registerStringProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -レスポンスとして`String`を送信する`scheme`プロトコルを登録します。 - -`callback`は、`String`または`data`と `mimeType`、`chart`プロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法は`registerFileProtocol`と同じです。 - -### `protocol.registerHttpProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -レスポンスとしてHTTPリクエストを送信する`scheme`プロトコルを登録します。 - -`callback`は、`url`と`method`、`referrer`、`uploadData`、`session`プロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法は`registerFileProtocol`と同じです。 - -* `redirectRequest` Object - * `url` String - * `method` String - * `session` Object (オプション) - * `uploadData` Object (オプション) - -既定では、HTTPリクエストは現在のセッションを再利用します。別のセッションでリクエストをしたい場合、`session` に `null`を設定する必要があります。 - -POSTリクエストは`uploadData`オブジェクトを提供する必要があります。 -* `uploadData` object - * `contentType` String - コンテンツのMIMEタイプ - * `data` String - 送信されるコンテンツ - -### `protocol.unregisterProtocol(scheme[, completion])` - -* `scheme` String -* `completion` Function (optional) - -`scheme`のカスタムプロトコルを解除します。 - -### `protocol.isProtocolHandled(scheme, callback)` - -* `scheme` String -* `callback` Function - -`scheme`のハンドラーがあるかないかを示すブーリアン値で`callback`がコールされます。 - -### `protocol.interceptFileProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -`scheme`プロトコルをインターセプタ―し、レスポンスとしてファイルを送信するプロトコルの新しいハンドラーとして`handler`を使います。 - -### `protocol.interceptStringProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -`scheme`プロトコルをインターセプタ―し、レスポンスとして`String`を送信するプロトコルの新しいハンドラーとして`handler`を使います。 - -### `protocol.interceptBufferProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -`scheme`プロトコルをインターセプタ―し、レスポンスとして`Buffer`を送信するプロトコルの新しいハンドラーとして`handler`を使います。 - -### `protocol.interceptHttpProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function -* `completion` Function (optional) - -`scheme`プロトコルをインターセプタ―し、レスポンスとして新しいHTTPリクエストを送信するプロトコルの新しいハンドラーとして`handler`を使います。 - -### `protocol.uninterceptProtocol(scheme[, completion])` - -* `scheme` String -* `completion` Function - -インターセプタ―したインストールされた`scheme`を削除し、オリジナルハンドラーをリストアします。 - - -[net-error]: https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h diff --git a/docs-translations/jp/api/remote.md b/docs-translations/jp/api/remote.md deleted file mode 100644 index 44816a541341..000000000000 --- a/docs-translations/jp/api/remote.md +++ /dev/null @@ -1,124 +0,0 @@ -# remote - - `remote`モジュールは、レンダラープロセス(ウェブページ)とメインプロセス間でインタープロセスコミュニケーション(IPC)をする簡単な方法を提供します。 - -Electronでは、GUI関連モジュール(`dialog`や`menu`など)はメインプロセスのみに提供されており、レンダラープロセスには提供されていません。レンダラープロセスからそれらを使うために、`ipc`モジュールはメインプロセスにインタープロセスメッセージを送信するのに必要です。`remote`モジュールで、Javaの[RMI][rmi]と同じように、はっきりとインタープロセスメッセージを送信しなくてもメインプロセスオブジェクトのメソッドを呼び出せます。 - -レンダラープロセスからブラウザーウィンドウを作成する例: - -```javascript -const remote = require('electron').remote -const BrowserWindow = remote.BrowserWindow - -var win = new BrowserWindow({ width: 800, height: 600 }) -win.loadURL('https://github.com') -``` - -**Note:** 逆には(メインプロセスからレンダラープロセスにアクセスする)、[webContents.executeJavascript](web-contents.md#webcontentsexecutejavascriptcode-usergesture)が使えます。 - -## Remote オブジェクト - -`remote`モジュールから返されるそれぞれのオブジェクト(関数含む)はメインプロセスでオブジェクトを示します(リモートオブジェクトまたはリモート関数と呼ばれます)。リモートプロジェクトのメソッドを実行したり、リモート関数をコールしたり、リモートコンストラクター(関数)で新しいオブジェクトを生成したりしたとき、実際に非同期にインタープロセスメッセージが送信されます。 - -上の例では、`BrowserWindow` と `win` はリモートオブジェクトで、`new BrowserWindow`はレンダラープロセスで `BrowserWindow`を作成しません。代わりに、メインプロセスで`BrowserWindow` オブジェクトが作成され、レンダラープロセスで対応するリモートオブジェクトを返し、すなわち`win`オブジェクトです。 - -リモート経由でのみアクセスできる [enumerable properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties)に注意してください。 - -## Remote オブジェクトのライフタイム - -Electronは、レンダラープロセスのリモートオブジェクトが生きている限り(言い換えれば、ガベージコレクションされません)、対応するメインプロセスのオブジェクトは解放されないことを確認してください。リモートオブジェクトがガベージコレクションされたとき、対応するメインプロセスのオブジェクトが間接参照されます。 - -レンダラープロセスでリモートオブジェクトがリークした場合(マップに格納されているが解放されない)、メインプロセスで対応するオブジェクトもリークするので、リモートオブジェクトがリークしないように細心の注意を払うべきです。 - -文字列や数字のようなプライマリ値は、コピーして送信します。 - -## メインプロセスにコールバックを通す - -メインプロセスのコードは、レンダラーからコールバックを受け取ることができます。例えば、`remote`モジュールです。この機能をとても慎重に使うべきです。 - -最初に、デッドロックを避けるために、メインプロセスに渡されたコールバックは非同期に呼び出されます。メインプロセスは、渡されたコールバックの戻り値を取得することを期待すべきではありません。 - -例えば、メインプロセスでコールされた`Array.map`で、レンダラープロセスから関数を使用することはできません。: - -```javascript -// main process mapNumbers.js -exports.withRendererCallback = function (mapper) { - return [1, 2, 3].map(mapper) -} - -exports.withLocalCallback = function () { - return exports.mapNumbers(function (x) { - return x + 1 - }) -} -``` - -```javascript -// renderer process -var mapNumbers = require('remote').require('./mapNumbers') - -var withRendererCb = mapNumbers.withRendererCallback(function (x) { - return x + 1 -}) - -var withLocalCb = mapNumbers.withLocalCallback() - -console.log(withRendererCb, withLocalCb) // [true, true, true], [2, 3, 4] -``` - -見ることができるように、レンダラーコールバックの同期戻り値は予想されなかったとして、メインプロセスで生きている同一のコールバックの戻り値と一致しません。 - -第二に、メインプロセスに渡されるコールバックはメインプロセスがガベージコレクトするまで存続します。 - -例えば、次のコードは一目で無害なコードのように思えます。リモートオブジェクト上で`close`イベントのコールバックをインストールしています。 - -```javascript -remote.getCurrentWindow().on('close', function () { - // blabla... -}) -``` - -りかし、明確にアンインストールするまでメインプロセスによってコールバックは参照されることを覚えておいてください。アンインストールしない場合、ウィンドウをリロードするたびに、コールバックは再度インストールされ、それぞれの再起動時にコールバックあリークします。 - -さらに悪いことに、前にインストールされたコールバックのコンテキストは解放されるので、`close`イベントを出力されると、メインプロセスで例外が発生します。 - -この問題を避けるために、メインプロセスに渡されたレンダラーコールバックへの参照をクリーンアップを確認します。これにはイベントハンドラーのクリンアップも含まれ、存在しているレンダラープロセスから来るコールバックを確実にメインプロセスが守るように確認します。 - -## メインプロセスで組み込みモジュールにアクセスする - -メインプロセスの組み込みモジュールは、`remote`モジュールでゲッターとして追加されるので、`electron`モジュールのように直接それらを使用できます。 - -```javascript -const app = remote.app -``` - -## メソッド - -`remote`モジュールは次のメソッドを持ちます。 - -### `remote.require(module)` - -* `module` String - -メインプロセスで、`require(module)`で返されるオブジェクトを返します。 - -### `remote.getCurrentWindow()` - -このウェブページに属する[`BrowserWindow`](browser-window.md) オブジェクトを返します。 - -### `remote.getCurrentWebContents()` - -このウェブページの[`WebContents`](web-contents.md) オブジェクトを返します。 - -### `remote.getGlobal(name)` - -* `name` String - -メインプロセスで、`name`のグローバル変数(例えば、`global[name]`)を返します。 - - -### `remote.process` - -メインプロセスで`process`オブジェクトを返します。これは`remote.getGlobal('process')`と同様ですが、キャッシュされます。 - -[rmi]: http://en.wikipedia.org/wiki/Java_remote_method_invocation diff --git a/docs-translations/jp/api/screen.md b/docs-translations/jp/api/screen.md deleted file mode 100644 index 9f5a197a701f..000000000000 --- a/docs-translations/jp/api/screen.md +++ /dev/null @@ -1,131 +0,0 @@ -# screen - -`screen`モジュールは、画面サイズ、ディスプレイ、カーソル位置などの情報を読み取ります。`app`モジュールの`ready`イベントが出力されるまで、このモジュールは使うべきではありません。 - -`screen`は [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)です。 - -**Note:** レンダラ―/デベロッパーツールで、`window.screen`はDOMプロパティで予約されているので、`var screen = require('electron').screen`と書いても動作しません。下の例では、代わりに変数名で`electronScreen`を使用しています。 - -画面全体にウィンドウを作成する例: - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow - -var mainWindow - -app.on('ready', function () { - var electronScreen = electron.screen - var size = electronScreen.getPrimaryDisplay().workAreaSize - mainWindow = new BrowserWindow({ width: size.width, height: size.height }) -}) -``` -外部ディスプレイにウィンドウを作成する別の例: - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow - -var mainWindow - -app.on('ready', function () { - var electronScreen = electron.screen - var displays = electronScreen.getAllDisplays() - var externalDisplay = null - for (var i in displays) { - if (displays[i].bounds.x !== 0 || displays[i].bounds.y !== 0) { - externalDisplay = displays[i] - break - } - } - - if (externalDisplay) { - mainWindow = new BrowserWindow({ - x: externalDisplay.bounds.x + 50, - y: externalDisplay.bounds.y + 50 - }) - } -}) -``` - -## `Display` オブジェクト - -`Display`オブジェクトはシステムに接続された物理ディスプレイを示します。ヘッドレスシステムでは、擬似`Display`があるかもしれませんし、`Display`はリモートや仮想ディスプレイに相当するかもしれません。 - -* `display` object - * `id` Integer - ディスプレイに紐づいた一意な識別子です。 - * `rotation` Integer - 0, 1, 2, 3を設定でき、それぞれは時計回りで、0, 90, 180, 270度の画面の回転を示します。 - * `scaleFactor` Number - 出力装置のピクセルスケールファクター - * `touchSupport` String - `available`, `unavailable`, `unknown`を設定できます。 - * `bounds` Object - * `size` Object - * `workArea` Object - * `workAreaSize` Object - -## イベント - -`screen`モジュールは次のイベントを出力します: - -### イベント: 'display-added' - -返り値: - -* `event` Event -* `newDisplay` Object - -`newDisplay`が追加されたときに出力されます。 - -### イベント: 'display-removed' - -返り値: - -* `event` Event -* `oldDisplay` Object - -`oldDisplay`が削除されたときに出力されます。 - -### イベント: 'display-metrics-changed' - -返り値: - -* `event` Event -* `display` Object -* `changedMetrics` Array - -`display`で1つ以上のメトリックが変わったときに出力されます。`changedMetrics`は変更を説明する文字列の配列です。変更内容には`bounds`と`workArea`, `scaleFactor`、 `rotation`があり得ます。 - -## メソッド - -`screen`モジュールは次のメソッドを持ちます: - -### `screen.getCursorScreenPoint()` - -現在のマウスの絶対位置を返します。 - -### `screen.getPrimaryDisplay()` - -プライマリディスプレイを返します。 - -### `screen.getAllDisplays()` - -現在利用可能なディスプレイの配列を返します。 - -### `screen.getDisplayNearestPoint(point)` - -* `point` Object - * `x` Integer - * `y` Integer - -指定したポイントに近いディスプレイを返します。 - -### `screen.getDisplayMatching(rect)` - -* `rect` Object - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer - -提供された範囲と、もっとも重複しているディスプレイを返します。 diff --git a/docs-translations/jp/api/session.md b/docs-translations/jp/api/session.md deleted file mode 100644 index d898ea6dd910..000000000000 --- a/docs-translations/jp/api/session.md +++ /dev/null @@ -1,443 +0,0 @@ -# session - -`session`モジュールは、新しい`Session`オブジェクトを作成するのに使われます。 - -[`BrowserWindow`](browser-window.md)のプロパティである [`webContents`](web-contents.md)プロパティの`session`を使うことで既存ページの `session`にアクセスできます。 - -```javascript -const BrowserWindow = require('electron').BrowserWindow - -var win = new BrowserWindow({ width: 800, height: 600 }) -win.loadURL('http://github.com') - -var ses = win.webContents.session -``` - -## メソッド - - `session`メソッドは次のメソッドを持ちます: - -### session.fromPartition(partition) - -* `partition` String - -`partition`文字列から新しい`Session`インスタンスを返します。 - -`partition`が`persist:`から始まっている場合、同じ`partition`のアプリ内のすべてのページに永続セッションを提供するのにページが使います。`persist:`プレフィックスが無い場合、ページはインメモリセッションを使います。`partition`が空の場合、アプリの既定のセッションを返します。 - -## プロパティ - -`session`モジュールは次のプロパティを持ちます: - -### session.defaultSession - -アプリの既定のセッションオブジェクトを返します。 - -## クラス: Session - -`session`モジュールで、`Session`オブジェクトを作成できます: - -```javascript -const session = require('electron').session - -var ses = session.fromPartition('persist:name') -``` - -### インスタンスイベント - -`Session`のインスタンス上で次のイベントが提供されます: - -#### イベント: 'will-download' - -* `event` Event -* `item` [DownloadItem](download-item.md) -* `webContents` [WebContents](web-contents.md) - -Electronが`webContents`で`item`をダウンロードしようとすると出力されます。 - -`event.preventDefault()` をコールするとダウンロードをキャンセルできます。 - -```javascript -session.defaultSession.on('will-download', function (event, item, webContents) { - event.preventDefault() - require('request')(item.getURL(), function (data) { - require('fs').writeFileSync('/somewhere', data) - }) -}) -``` - -### インスタンスのメソッド - -`Session`のインスタンス上で次のメソッドが提供されています: - -#### `ses.cookies` - -`cookies`は、cookiesに問い合わせしたり、修正をできるようにします。例: - -```javascript -// Query all cookies. -session.defaultSession.cookies.get({}, function (error, cookies) { - if (error) console.error(error) - console.log(cookies) -}) - -// Query all cookies associated with a specific url. -session.defaultSession.cookies.get({ url: 'http://www.github.com' }, function (error, cookies) { - if (error) console.error(error) - console.log(cookies) -}) - -// Set a cookie with the given cookie data; -// may overwrite equivalent cookies if they exist. -var cookie = { url: 'http://www.github.com', name: 'dummy_name', value: 'dummy' } -session.defaultSession.cookies.set(cookie, function (error) { - if (error) console.error(error) -}) -``` - -#### `ses.cookies.get(filter, callback)` - -* `filter` Object - * `url` String (オプション) - `url`に関連付けられているcookiesを取得します。空の場合すべてのurlのcookiesを取得します - * `name` String (オプション) - `name`でcookiesをフィルタリングします - * `domain` String (オプション) - `domains`のドメインまたはサブドメインに一致するcookiesを取得します - * `path` String (オプション) - `path`に一致するパスのcookiesを取得します - * `secure` Boolean (オプション) - Secure プロパティでcookiesをフィルターします - * `session` Boolean (オプション) - Filters out `session`または永続cookiesを除外します -* `callback` Function - -`details`に一致するすべてのcookiesを取得するためにリクエストを送信し、完了時に`callback(error, cookies)`で`callback`がコールされます。 - -`cookies` は`cookie`オブジェクトの配列です。 - -* `cookie` Object - * `name` String - cookieの名前 - * `value` String - cookieの値 - * `domain` String - cookieのドメイン - * `hostOnly` String - cookieがホストのみのcookieかどうか - * `path` String - cookieのパス - * `secure` Boolean - cookieがセキュアとマークされているかどうか - * `httpOnly` Boolean - HTTPのみとしてcookieがマークされているかどうか - * `session` Boolean - cookieがセッションcookieまたは有効期限付きの永続cookieかどうか - * `expirationDate` Double (オプション) - - -cookieの有効期限をUNIX時間で何秒かを示します。セッションcookiesは提供されません。 - -#### `ses.cookies.set(details, callback)` - -* `details` Object - * `url` String - `url`に関連付けられているcookiesを取得します。 - * `name` String - cookieの名前。省略した場合、既定では空です。 - * `value` String - cookieの名前。省略した場合、既定では空です。 - * `domain` String - cookieのドメイン。省略した場合、既定では空です。 - * `path` String - cookieのパス。 省略した場合、既定では空です。 - * `secure` Boolean - cookieをセキュアとしてマークする必要があるかどうか。既定ではfalseです。 - * `session` Boolean - cookieをHTTPのみとしてマークする必要があるかどうか。既定ではfalseです。 - * `expirationDate` Double - cookieの有効期限をUNIX時間で何秒か。省略した場合、cookieはセッションcookieになります。 -* `callback` Function - -`details`でcookieを設定し、完了すると`callback(error)`で`callback`がコールされます。 - -#### `ses.cookies.remove(url, name, callback)` - -* `url` String - cookieに関連付けられているURL -* `name` String - 削除するcookieの名前 -* `callback` Function - -`url` と `name`と一致するcookiesを削除し、完了すると`callback`が、`callback()`でコールされます。 - -#### `ses.getCacheSize(callback)` - -* `callback` Function - * `size` Integer - 使用しているキャッシュサイズバイト数 - -現在のセッションのキャッシュサイズを返します。 - -#### `ses.clearCache(callback)` - -* `callback` Function - 操作が完了したら、コールされます。 - -セッションのHTTPキャッシュをクリアします。 - -#### `ses.clearStorageData([options, ]callback)` - -* `options` Object (オプション) - * `origin` String - `window.location.origin`の説明で、`scheme://host:port`に従う - * `storages` Array - クリアするストレージの種類で、次を含められます: - `appcache`、 `cookies`、 `filesystem`、 `indexdb`、 `local storage`、 - `shadercache`、 `websql`、 `serviceworkers` - * `quotas` Array - クリアするクォーターの種類で、次を含められます: - `temporary`, `persistent`, `syncable`. -* `callback` Function - 操作をするとコールされます。 - -ウェブストレージのデータをクリアします。 - -#### `ses.flushStorageData()` - -書き込まれていないDOMStorageデータをディスクに書き込みます。 - -#### `ses.setProxy(config, callback)` - -* `config` Object - * `pacScript` String - PACファイルに関連付けらえたURL - * `proxyRules` String - 使用するプロキシを指定するルール -* `callback` Function - 操作をするとコールされます。 - -プロキシ設定を設定します。 - -`pacScript` と `proxyRules`が一緒に渡されたら、`proxyRules`オプションは無視され、`pacScript`設定が適用されます。 - - `proxyRules`は次のルールに従います。 - -``` -proxyRules = schemeProxies[";"] -schemeProxies = ["="] -urlScheme = "http" | "https" | "ftp" | "socks" -proxyURIList = [","] -proxyURL = ["://"][":"] -``` - -具体例: - -* `http=foopy:80;ftp=foopy2` - `http://`URLは`foopy:80`HTTPプロキシを使用し、`ftp://`URLは`foopy2:80` HTTPプロキシを使用します。 -* `foopy:80` - 全てのURLで`foopy:80`を使用します。 -* `foopy:80,bar,direct://` - 全てのURLで`foopy:80`HTTPプロキシを使用し、`foopy:80`が提供されていなければ`bar`を使用し、さらに使えない場合はプロキシを使いません。 -* `socks4://foopy` - 全てのURLでSOCKS `foopy:1080`プロキシを使います。 -* `http=foopy,socks5://bar.com` - http URLで`foopy`HTTPプロキシを使い、`foopy`が提供されていなければ、SOCKS5 proxy `bar.com`を使います。 -* `http=foopy,direct://` -  http URLで`foopy`HTTPプロキシを使い、`foopy`が提供されていなければ、プロキシを使いません。 -* `http=foopy;socks=foopy2` - http URLで`foopy`HTTPプロキシを使い、それ以外のすべてのURLで`socks4://foopy2`を使います。 - -### `ses.resolveProxy(url, callback)` - -* `url` URL -* `callback` Function - -`url`をプロキシ情報で解決します。リクエストが実行された時、`callback(proxy)`で `callback`がコールされます。 - -#### `ses.setDownloadPath(path)` - -* `path` String - ダウンロード場所 - -ダウンロードの保存ディレクトリを設定します。既定では、ダウンロードディレクトリは、個別のアプリフォルダー下の`Downloads`です。 - -#### `ses.enableNetworkEmulation(options)` - -* `options` Object - * `offline` Boolean - ネットワーク停止を再現するかどうか - * `latency` Double - RTT ms秒 - * `downloadThroughput` Double - Bpsでのダウンロード割合 - * `uploadThroughput` Double - Bpsでのアップロード割合 - -再現ネットワークは、`session`用の設定を付与します。 - -```javascript -// To emulate a GPRS connection with 50kbps throughput and 500 ms latency. -window.webContents.session.enableNetworkEmulation({ - latency: 500, - downloadThroughput: 6400, - uploadThroughput: 6400 -}) - -// To emulate a network outage. -window.webContents.session.enableNetworkEmulation({offline: true}) -``` - -#### `ses.disableNetworkEmulation()` - -`session`ですでに有効になっているネットワークエミュレーションを無効化します。オリジナルのネットワーク設定にリセットします。 - -#### `ses.setCertificateVerifyProc(proc)` - -* `proc` Function - -`session`の証明書検証ロジックを設定し、サーバー証明書確認がリクエストされた時、`proc(hostname, certificate, callback)`で`proc`がコールされます。`callback(true)`がコールされると証明書を受け入れ、`callback(false)`がコールされると拒否します。 - -Calling `setCertificateVerifyProc(null)`をコールして、既定の証明書検証ロジックに戻します。 - -```javascript -myWindow.webContents.session.setCertificateVerifyProc(function (hostname, cert, callback) { - callback(hostname === 'github.com') -}) -``` - -#### `ses.webRequest` - -`webRequest`APIセットをインターセプトし、そのライフタイムの様々な段階でリクエストの内容を変更できます。 - -APIのイベントが発生したとき、それぞれのAPIはオプションで`filter`と `listener`を受け入れ、`listener(details)` で`listener`がコールされ、`details`はリクエストを説明するオブジェクトです。`listener`に`null`が渡されるとイベントの購読をやめます。 - -`filter`は`urls`プロパティを持つオブジェクトで、URLパターンにマッチしないリクエストを除外するのに使われるURLパターンの配列です。`filter`を省略した場合、全てのリクエストにマッチします。 - -いくつかのイベントで`callback`で`listener`に渡され、`listener`が動作するとき、`response`オブジェクトでコールされる必要があります。 - -```javascript -// Modify the user agent for all requests to the following urls. -var filter = { - urls: ['https://*.github.com/*', '*://electron.github.io'] -} - -session.defaultSession.webRequest.onBeforeSendHeaders(filter, function (details, callback) { - details.requestHeaders['User-Agent'] = 'MyAgent' - callback({cancel: false, requestHeaders: details.requestHeaders}) -}) -``` - -#### `ses.webRequest.onBeforeRequest([filter, ]listener)` - -* `filter` Object -* `listener` Function - -リクエストが発生しようとしている時、`listener(details, callback)`で`listener` がコールされます。 - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `uploadData` Array (オプション) - * `callback` Function - -`uploadData`は `data`オブジェクトの配列です。 - -* `data` Object - * `bytes` Buffer - 送信されるコンテンツ - * `file` String - アップロードされるファイルパス - -`callback`は`response`オブジェクトでコールされる必要があります: - -* `response` Object - * `cancel` Boolean (オプション) - * `redirectURL` String (オプション) - オリジナルリクエストが送信もしくは完了するのを中断し、代わりに付与したURLにリダイレクトします。 - -#### `ses.webRequest.onBeforeSendHeaders([filter, ]listener)` - -* `filter` Object -* `listener` Function - -リクエストヘッダーが提供されれば、HTTPリクエストが送信される前に、`listener(details, callback)`で`listener`がコールされます。TCP接続がサーバーに対して行われた後に発生することがありますが、HTTPデータは送信前です。 - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `requestHeaders` Object -* `callback` Function - -The `callback` has to be called with an `response` object: - -* `response` Object - * `cancel` Boolean (オプション) - * `requestHeaders` Object (オプション) - 付与されると、リクエストはそれらのヘッダーで作成されます。 - -#### `ses.webRequest.onSendHeaders([filter, ]listener)` - -* `filter` Object -* `listener` Function - -サーバーにリクエストを送信しようする直前に`listener(details)`で、`listener` がコールされます。前回の`onBeforeSendHeaders`レスポンスの変更箇所は、このリスナーが起動した時点で表示されます。 - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `requestHeaders` Object - -#### `ses.webRequest.onHeadersReceived([filter,] listener)` - -* `filter` Object -* `listener` Function - -リクエストのHTTPレスポンスヘッダーを受信したとき、`listener`は`listener(details, callback)`でコールされます。 - -* `details` Object - * `id` String - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `statusLine` String - * `statusCode` Integer - * `responseHeaders` Object -* `callback` Function - -`callback`は`response`オブジェクトでコールされる必要があります: - -* `response` Object - * `cancel` Boolean - * `responseHeaders` Object (オプション) - 付与されていると、これらのヘッダーでサーバーはレスポンスしたと仮定します。 - -#### `ses.webRequest.onResponseStarted([filter, ]listener)` - -* `filter` Object -* `listener` Function - -レスポンスボディの最初のバイトを受信したとき、`listener` は`listener(details)` でコールされます。HTTPリクエストでは、ステータス行とレスポンスヘッダーを意味します。 - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `responseHeaders` Object - * `fromCache` Boolean -ディスクキャッシュから取得したレスポンスかどうかを示します - * `statusCode` Integer - * `statusLine` String - -#### `ses.webRequest.onBeforeRedirect([filter, ]listener)` - -* `filter` Object -* `listener` Function - -サーバーがリダイレクトを開始しはじめたとき、`listener(details)`で`listener` がコールされます。 - -* `details` Object - * `id` String - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `redirectURL` String - * `statusCode` Integer - * `ip` String (オプション) - 実際にリクエストが送信されるサーバーIPアドレス - * `fromCache` Boolean - * `responseHeaders` Object - -#### `ses.webRequest.onCompleted([filter, ]listener)` - -* `filter` Object -* `listener` Function - -リクエスト完了時、`listener`が`listener(details)`でコールされます。 - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `responseHeaders` Object - * `fromCache` Boolean - * `statusCode` Integer - * `statusLine` String - -#### `ses.webRequest.onErrorOccurred([filter, ]listener)` - -* `filter` Object -* `listener` Function - -エラー発生時、 `listener(details)` で`listener`がコールされます。 - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `fromCache` Boolean - * `error` String - エラーの説明 diff --git a/docs-translations/jp/api/shell.md b/docs-translations/jp/api/shell.md deleted file mode 100644 index da92c403e051..000000000000 --- a/docs-translations/jp/api/shell.md +++ /dev/null @@ -1,43 +0,0 @@ -# shell - -`shell`モジュールはデスクトップ統合に関係した機能を提供します。 - -ユーザーのデフォルトのブラウザでURLを開く例です: - -```javascript -const shell = require('electron').shell - -shell.openExternal('https://github.com') -``` - -## メソッド - -`shell`モジュールは次のメソッドを持ちます: - -### `shell.showItemInFolder(fullPath)` - -* `fullPath` String - -ファイルマネジャーでファイルを表示します。もし可能ならファイルを選択します。 - -### `shell.openItem(fullPath)` - -* `fullPath` String - -デスクトップの既定のやり方で指定したファイルを開きます。 - -### `shell.openExternal(url)` - -* `url` String - -デスクトップの既定のやり方で指定した外部のプロトコルURLで開きます。(例えば、mailto:URLでユーザーの既定メールエージェントを開きます) - -### `shell.moveItemToTrash(fullPath)` - -* `fullPath` String - -ゴミ箱へ指定したファイルを移動し、操作結果をブーリアン値を返します。 - -### `shell.beep()` - -ビープ音を再生します。 diff --git a/docs-translations/jp/api/synopsis.md b/docs-translations/jp/api/synopsis.md deleted file mode 100644 index aaf6e20c7a6c..000000000000 --- a/docs-translations/jp/api/synopsis.md +++ /dev/null @@ -1,65 +0,0 @@ -# 概要 - -> どうやってNode.jsとElectronのAPIを使うか。 - -Electron では全ての [Node.js のビルトインモジュール](http://nodejs.org/api/) が利用可能です。また、サードパーティの Node モジュール ([ネイティブモジュール](../tutorial/using-native-node-modules.md)も含む) も完全にサポートされています。 - -Electron はネイティブのデスクトップアプリケーション開発のための幾つかの追加のビルトインモジュールも提供しています。メインプロセスでだけ使えるモジュールもあれば、レンダラプロセス(ウェブページ)でだけ使えるモジュール、あるいはメインプロセス、レンダラプロセスどちらでも使えるモジュールもあります。 - -基本的なルールは:[GUI][gui]、または低レベルのシステムに関連するモジュールはメインモジュールでだけ利用できるべきです。これらのモジュールを使用できるようにするためには [メインプロセス対レンダラプロセス](../tutorial/quick-start.md#メインプロセス)スクリプトの概念を理解する必要があります。 - -メインプロセススクリプトは普通の Node.js スクリプトのようなものです: - -```javascript -const {app, BrowserWindow} = require('electron') - -let win = null - -app.on('ready', () => { - win = new BrowserWindow({width: 800, height: 600}) - win.loadURL('https://github.com') -}) -``` - -レンダラプロセスは Node モジュールを使うための追加機能を除いて、通常のウェブページとなんら違いはありません: - -```html - - - - - - -``` - -アプリケーションを実行については、[アプリを実行する](../tutorial/quick-start.md#アプリを実行する)を参照してください。 - -## 分割代入 - -0.37の時点で、[分割代入][desctructuring-assignment]でビルトインモジュールの使用をより簡単にできます: - -```javascript -const {app, BrowserWindow} = require('electron') -``` - -もし`electron`モジュール全体が必要であれば、requireして、それぞれのモジュールを`electron`からアクセスすることができます。 - -```javascript -const electron = require('electron') -const {app, BrowserWindow} = electron -``` - -これは、次のコードと同じ意味を持ちます。 - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow -``` - -[gui]: https://en.wikipedia.org/wiki/Graphical_user_interface -[desctructuring-assignment]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment -[issue-387]: https://github.com/electron/electron/issues/387 diff --git a/docs-translations/jp/api/system-preferences.md b/docs-translations/jp/api/system-preferences.md deleted file mode 100644 index aa78d2e880a4..000000000000 --- a/docs-translations/jp/api/system-preferences.md +++ /dev/null @@ -1,93 +0,0 @@ -# systemPreferences - -> システムの環境設定を取得します。 - -```javascript -const {systemPreferences} = require('electron') -console.log(systemPreferences.isDarkMode()) -``` - -## メソッド - -### `systemPreferences.isDarkMode()` _macOS_ - -macOS がダークモードならば `true` を返し、通常モードなら `false` を返します。 - -### `systemPreferences.subscribeNotification(event, callback)` _macOS_ - -* `event` String -* `callback` Function - -macOS のネイティブな通知を購読します。 `callback` は `callback(event, userInfo)` として `event` の発生に対応して呼ばれます。`userInfo` は通知によって送られてくるユーザー情報のオブジェクトです。 - -この関数が返す `id` は `event`の購読をやめる際に使用します。 - -内部ではこの API は `NSDistributedNotificationCenter` を購読するので、`event` の例は以下のようなものがあります。 - -* `AppleInterfaceThemeChangedNotification` -* `AppleAquaColorVariantChanged` -* `AppleColorPreferencesChangedNotification` -* `AppleShowScrollBarsSettingChanged` - -### `systemPreferences.unsubscribeNotification(id)` _macOS_ - -* `id` Integer - -`id` の購読をやめます。 - -### `systemPreferences.subscribeLocalNotification(event, callback)` _macOS_ - -`subscribeNotification` と同じですが、 `NSNotificationCenter` を購読します。下記のような `event` を捕まえるために必要です。 - -* `NSUserDefaultsDidChangeNotification` - -### `systemPreferences.unsubscribeLocalNotification(id)` _macOS_ - -`unsubscribeNotification` と同じですが、`NSNotificationCenter` による購読をやめます。 - -### `systemPreferences.getUserDefault(key, type)` _macOS_ - -* `key` String -* `type` String - 右記の値を入れられます `string`, `boolean`, `integer`, `float`, `double`, - `url`, `array`, `dictionary` - -システム環境設定の `key` の値を取得します。 - -この API は macOS の `NSUserDefaults` から情報を取得します。よく使われる `key` 及び `type` には下記のものがあります。 - -* `AppleInterfaceStyle: string` -* `AppleAquaColorVariant: integer` -* `AppleHighlightColor: string` -* `AppleShowScrollBars: string` -* `NSNavRecentPlaces: array` -* `NSPreferredWebServices: dictionary` -* `NSUserDictionaryReplacementItems: array` - -### `systemPreferences.isAeroGlassEnabled()` _Windows_ -[DWM composition][dwm-composition] (Aero Glass) が有効だと `true` を返し、そうでないと `false` を返します。 - -使用例として、例えば透過ウィンドウを作成するかしないか決めるときに使います(DWM composition が無効だと透過ウィンドウは正常に動作しません) - -```javascript -const {BrowserWindow, systemPreferences} = require('electron') -let browserOptions = {width: 1000, height: 800} - -// プラットフォームがサポートしている場合に限り透過ウィンドウを作成します。 -if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) { - browserOptions.transparent = true - browserOptions.frame = false -} - -// ウィンドウを作成 -let win = new BrowserWindow(browserOptions) - -// 分岐 -if (browserOptions.transparent) { - win.loadURL(`file://${__dirname}/index.html`) -} else { - // 透過がサポートされてないなら、通常のスタイルの html を表示する - win.loadURL(`file://${__dirname}/fallback.html`) -} -``` - -[dwm-composition]:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx diff --git a/docs-translations/jp/api/tray.md b/docs-translations/jp/api/tray.md deleted file mode 100644 index b342d2847117..000000000000 --- a/docs-translations/jp/api/tray.md +++ /dev/null @@ -1,198 +0,0 @@ -# Tray - -`Tray`は、オペレーティングシステムの通知エリアでアイコンで表示され、通常コンテキストメニューが付随します。 - -```javascript -const electron = require('electron') -const app = electron.app -const Menu = electron.Menu -const Tray = electron.Tray - -var appIcon = null -app.on('ready', function () { - appIcon = new Tray('/path/to/my/icon') - var contextMenu = Menu.buildFromTemplate([ - { label: 'Item1', type: 'radio' }, - { label: 'Item2', type: 'radio' }, - { label: 'Item3', type: 'radio', checked: true }, - { label: 'Item4', type: 'radio' } - ]) - appIcon.setToolTip('This is my application.') - appIcon.setContextMenu(contextMenu) -}) -``` - -__プラットフォームの制限:__ - -* Linuxでは、サポートしている場合アプリインディケーターが使われ、サポートされていなければ代わりに`GtkStatusIcon`が使われます。 -* アプリインディケーターを持っているLinuxディストリビューションでは、トレイアイコンを動作させるために`libappindicator1`をインストールする必要があります。 -* コンテキストメニューがあるときは、インディケーターのみが表示されます。 -* アプリインディケーターがLinuxで使われると、`click`イベントは無視されます。 - -すべてのプラットフォームで正確に同じ挙動を維持したい場合は、`click`イベントに依存せず、常にトレイアイコンにコンテキストメニューを付随させるようにします。 - -## クラス: Tray - -`Tray`は[EventEmitter][event-emitter]です。 - -### `new Tray(image)` - -* `image` [NativeImage](native-image.md) - -`image`で新しいトレイアイコンを作成します。 - -## イベント - -`Tray`モジュールは次のイベントを出力します。 - -**Note:** いくつかのイベントは、特定のオペレーティングシステム向けに提供され、そのようにラベルで表示します。 - -### イベント: 'click' - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` Object - トレイアイコンのバウンド - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer - -トレイアイコンがクリックされたときに出力されます。 - -__Note:__ `バウンド` 再生はmacOSとWindoesのみで実装されています。 - -### イベント: 'right-click' _macOS_ _Windows_ - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` Object - トレイアイコンのバウンド - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer - -トレイアイコンが右クリックされると出力されます。 - -### イベント: 'double-click' _macOS_ _Windows_ - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` Object - トレイアイコンのバウンド - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer - -トレイアイコンがダブルクリックされたら出力されます。 - -### イベント: 'balloon-show' _Windows_ - -トレイバルーンを表示したときに出力されます。 - -### イベント: 'balloon-click' _Windows_ - -トレイバルーンがクリックされたときに出力されます。 - -### イベント: 'balloon-closed' _Windows_ - -タイムアウトもしくはユーザーの操作で閉じて、トレイバルーンがクロースされたときに出力されます。 - -### イベント: 'drop' _macOS_ - -トレイアイコンでアイテムがドラグアンドドロップされたときに出力されます。 - -### イベント: 'drop-files' _macOS_ - -* `event` -* `files` Array - ドロップされたアイテムのフルパス - -トレイアイコンでファイルがドロップされたときに出力されます。 - -### イベント: 'drag-enter' _macOS_ - -トレイアイコンにドラッグ操作が入ったときに出力されます。 - -### イベント: 'drag-leave' _macOS_ - -トレイアイコンででドラッグ操作が行われたときに出力されます。 - -### イベント: 'drag-end' _macOS_ - -トレイ上でドラッグ操作が終了したか、ほかの場所で終了したときに出力されます。 - -## Methods - -`Tray`モジュールは次のメソッドを持ちます。 - -**Note:** いくつかのメソッドは、特定のオペレーティングシステム向けに提供され、そのようにラベルで表示します。 - -### `Tray.destroy()` - -ただちにトレイアイコンを終了します。 - -### `Tray.setImage(image)` - -* `image` [NativeImage](native-image.md) - -トレイアイコンの`image`を設定します。 - -### `Tray.setPressedImage(image)` _macOS_ - -* `image` [NativeImage](native-image.md) - -macOSで押されたときにトレイアイコンの`image`を設定します。 - -### `Tray.setToolTip(toolTip)` - -* `toolTip` String - -トレイアイコン用のホバーテキストを設定します。 - -### `Tray.setTitle(title)` _macOS_ - -* `title` String - -ステータスバーで、トレイアイコンのわきに表示するタイトルを設定します。 - -### `Tray.setHighlightMode(highlight)` _macOS_ - -* `highlight` Boolean - -トレイアイコンがクリックされた時、トレイアイコンの背景をハイライト(青色)するかどうかを設定します。既定ではTrueです。 - -### `Tray.displayBalloon(options)` _Windows_ - -* `options` Object - * `icon` [NativeImage](native-image.md) - * `title` String - * `content` String - -トレイバルーンを表示します。 - -### `Tray.popUpContextMenu([menu, position])` _macOS_ _Windows_ - -* `menu` Menu (optional) -* `position` Object (optional) - ポップアップ位置 - * `x` Integer - * `y` Integer - -トレイアイコンのコンテキストメニューをポップアップします。`menu`が渡されたとき、`menu`はトレイコンテキストメニューの代わりに表示されます。 - -`position`はWindowsのみで提供され、既定では(0, 0) です。 - -### `Tray.setContextMenu(menu)` - -* `menu` Menu - -アイコン用のコンテキストメニューを設定します。 - -[event-emitter]: http://nodejs.org/api/events.html#events_class_events_eventemitter diff --git a/docs-translations/jp/api/web-frame.md b/docs-translations/jp/api/web-frame.md deleted file mode 100644 index eaebd7529739..000000000000 --- a/docs-translations/jp/api/web-frame.md +++ /dev/null @@ -1,100 +0,0 @@ -# webFrame - -`web-frame`モジュールは現在のウェブページンのレンダリングのカスタマイズをできるようにします。 - -現在のページの倍率を200%にする例です。 - -```javascript -var webFrame = require('electron').webFrame - -webFrame.setZoomFactor(2) -``` - -## メソッド - -`web-frame`モジュールは次のメソッドを持ちます: - -### `webFrame.setZoomFactor(factor)` - -* `factor` Number - 拡大倍数 - -指定した倍数に拡大倍数を変更します。拡大倍数は、拡大率を100で割った数字なので、300%だと3.0です。 - -### `webFrame.getZoomFactor()` - -現在の拡大倍数を返します。 - -### `webFrame.setZoomLevel(level)` - -* `level` Number - 拡大レベル - -指定したレベルに拡大レベルを変更します。オリジナルサイズは0で、1 つ上下させると20%拡大か縮小になり、既定の制限ではオリジナルサイズの300%と50%です。 - -### `webFrame.getZoomLevel()` - -返事あの拡大レベルを返します。 - -### `webFrame.setZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -最大と最小の拡大レベルを設定します。 - -### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)` - -* `language` String -* `autoCorrectWord` Boolean -* `provider` Object - -inputフィールドやtextエリアでスペルチェックの提供を設定します。 - -`provider`は、単語が正しいスペルかどうかを返す`spellCheck`メソッドを持つオブジェクトでなければなりません。 - - -プロバイダーとして[node-spellchecker][spellchecker]を使用する例です: - -```javascript -webFrame.setSpellCheckProvider('en-US', true, { - spellCheck: function (text) { - return !(require('spellchecker').isMisspelled(text)) - } -}) -``` - -### `webFrame.registerURLSchemeAsSecure(scheme)` - -* `scheme` String - -セキュアなスキーマーとして`scheme`を登録します。 - -セキュアなスキーマーは、今テンスの混在警告をトリガーしません。例えば、アクティブなネットワーク攻撃では破壊できないので`https`と`data`はセキュアなスキーマーです。 - -### `webFrame.registerURLSchemeAsBypassingCSP(scheme)` - -* `scheme` String - -リソースは現在のページのコンテンツセキュリティポリシーにかかわらず `scheme`からロードします。 - -### `webFrame.registerURLSchemeAsPrivileged(scheme)` - -* `scheme` String - -セキュアとして`scheme`を登録し、リソースの今テンスセキュリティポリシーを回避して、ServiceWorkerの登録とAPIのフェッチをサポートします。 - -### `webFrame.insertText(text)` - -* `text` String - -フォーカスが当たっているエレメントに`text`を挿入します。 - -### `webFrame.executeJavaScript(code[, userGesture])` - -* `code` String -* `userGesture` Boolean (オプション) - 既定では`false`です。 - -ページで`code`を評価します。 - -ブラウザウィンドウで、 `requestFullScreen`のようないくつかのHTML APIは、ユーザージェスチャーによってのみ起動できます。`userGesture`を`true` に設定すると、この制限は削除されます。 - -[spellchecker]: https://github.com/atom/node-spellchecker diff --git a/docs-translations/jp/api/webview-tag.md b/docs-translations/jp/api/webview-tag.md deleted file mode 100644 index cc68f1345abd..000000000000 --- a/docs-translations/jp/api/webview-tag.md +++ /dev/null @@ -1,744 +0,0 @@ -# `` タグ - -> 外部ウェブコンテンツを別のプロセスとフレームで表示します。 - -Electronアプリ内でウェブページのような外部コンテンツを埋め込む際は、`webview`タグを使用してください。外部コンテンツは`webview`コンテナ内に閉じ込められます。 -アプリケーションの埋め込みページは、外部コンテンツがどのように表示されるかを制御することができます。 - -`iframe`と違い、`webview`はあなたのアプリと別のプロセスで動作します。あなたのウェブページとは違う実行許可レベルを持っており、あなたのアプリと埋め込みコンテンツの間のデータのやり取りは非同期で行われます。これにより、あなたのアプリケーションは埋め込みコンテンツからの安全が確保されます。 - -セキュリティ的な理由で、`webview`は`nodeIntegration`が有効な`BrowserWindow`でしか使用できません。 - -## 例 - -ウェブページをあなたのアプリに埋め込むには、`webview`タグをあなたの埋め込みページ(外部コンテンツを表示するアプリのページ)に追加してください。 -もっとも単純な方法では、`webview`タグはウェブページの`src`と、見た目を制御する`style`を持っています。 - -```html - -``` - -もし、外部コンテンツを制御したい場合、`webview`イベントを受け取り、`webview`メソッドでそれらのイベントに返答するJavaScriptコードを書くことになります。 -下記にあるのはウェブページの読み込みが開始した時と、止まった時にイベントを受け取るサンプルで、読み込み中に"loading..."というメッセージを表示します。 - -```html - -``` - -## CSS Styling Notes - -もし、flexbox layouts(v.0.36.11以降)を使用する場合は、`webview`タグは子`object`要素が`webview`自体の高さと幅いっぱいとなるよう、内部で`display: flex;`を使用しているのに注意してください。 -インラインレイアウトとしたい時に`display: inline-flex;`を指定する以外には、この`display: flex;`は上書きしないでください。 - -`webview`は`hidden`属性か、`display: none;`と使用して非表示にする際に、いくつか問題があります。 -`browserplugin`オブジェクトの中での描画や、ウェブページを再度表示するために再読み込みした際などに通常とは異なる描画となる場合があります。 -`webview`を隠すオススメの方法としては、`width`と`height`をゼロに設定し、`flex`を通じて、0pxまで小さくできるようにします。 - -```html - -``` - -## Tag 属性 - -`webview`タグは下記のような属性を持っています: - -### `src` - -```html - -``` - -表示されているURLを返します。本属性への書き込みは、トップレベルナビゲーションを開始させます。 - -`src`の値を現在の値に再度設定することで、現在のページを再読み込みさせることができます。 - -また、`src`属性はdata URLを指定することができます(例: `data:text/plain,Hello, world!`)。 - -### `autosize` - -```html - -``` - -"on"の際は、`minwidth`, `minheight`, `maxwidth`, `maxheight`で設定された範囲内で、自動的に大きさが変化します。 -これらの制限値は、`autosize`が有効でない場合は影響しません。 -`autosize`が有効の際は、`webview`コンテナサイズは指定した最小値より小さくなりませんし、最大値より大きくなりません。 - -### `nodeintegration` - -```html - -``` - -"on"の際は、`webview`内のゲストページ(外部コンテンツ)でnode integrationが有効となり、`require`や`process`と行ったnode APIでシステムリソースにアクセスできるようになります。1 - -**注意:** 親ウィンドウでnode integrationが無効の場合は、`webview`でも常に無効になります。 - - -### `plugins` - -```html - -``` - -"on"の際は、ゲストページはブラウザプラグインを使用できます。 - -### `preload` - -```html - -``` - -ゲストページ上のスクリプトより先に実行されるスクリプトを指定してください。内部では、ゲストページ内で`require`で読み込まれるので、スクリプトのURLのプロトコルはは`file:`または`asar:`でなければなりません。 - -ゲストページがnode integrationが無効の場合でも、このスクリプトは全てのNode APIにアクセスできます。ただし、グローバルオブジェクトはこのスクリプトの実行終了後にすべて削除されます。 - -### `httpreferrer` - -```html - -``` - -ゲストページのためにリファラを設定します。 - -### `useragent` - -```html - -``` - -ページ遷移の前に、User agentを指定します。すでにページが読み込まれている場合は、`setUserAgent`メソッドを利用して変更してください。 - -### `disablewebsecurity` - -```html - -``` - -"on"の際は、ゲストページのウェブセキュリティは無効となります。 - -### `partition` - -```html - - -``` - -ページで使用されるセッションを設定します。もし、`partition`が`persist:`から始まる場合、アプリ上の同じ`partition`を指定した全てのページで有効な永続セッションを使用します。 -`persist:`接頭辞なしで指定した場合、メモリ内セッションを使用します。同じセッションを指定すると複数のページで同じセッションを使用できます。 -`partition`を設定しない場合は、アプリケーションのデフォルトセッションが使用されます。 - -レンダラプロセスのセッションは変更できないため、この値は最初のページ遷移の前に変更されないといけません。 -その後に変更をしようとしても、DOM例外を起こすことになります。 - -### `allowpopups` - -```html - -``` - -"on"の場合、ゲストページは新しいウィンドウを開くことができます。 - -### `blinkfeatures` - -```html - -``` - -有効にしたいblink featureを`,`で区切って指定します。 -サポートされている全ての機能は、[setFeatureEnabledFromString][blink-feature-string]にリストがあります。 - -## メソッド - -`webview`タグは、下記のようなメソッドを持っています: - -**注意:** webview要素はメソッドを使用する前に読み込まれていないといけません。 - -**例** - -```javascript -webview.addEventListener('dom-ready', () => { - webview.openDevTools() -}) -``` - -### `.loadURL(url[, options])` - -* `url` URL -* `options` Object (optional) - * `httpReferrer` String - リファラURL - * `userAgent` String - リクエストに使用されるUser agent - * `extraHeaders` String - 追加のヘッダを"\n"で区切って指定します。 - -`url`をwebviewで読み込みます。`url`はプロトコル接頭辞(`http://`や`file://`など)を含んでいなければいけません。 - -### `.getURL()` - -ゲストページのURLを取得します。 - -### `.getTitle()` - -ゲストページのタイトルを返します。 - -### `.isLoading()` - -ゲストページが読み込み中かのbool値を返します。 - -### `.isWaitingForResponse()` - -ゲストページがページの最初の返答を待っているかのbool値を返します。 - -### `.stop()` - -実行待ち中のナビゲーションを中止します。 - -### `.reload()` - -ゲストページを再読み込みします。 - -### `.reloadIgnoringCache()` - -キャッシュを無効にして再読み込みします。 - -### `.canGoBack()` - -ページを戻ることができるかのbool値を返します。 - -### `.canGoForward()` - -ページを進むことができるかのbool値を返します。 - -### `.canGoToOffset(offset)` - -* `offset` Integer - -`offset`だけ、移動できるかのbool値を返します。 - -### `.clearHistory()` - -移動履歴をクリアします。 - -### `.goBack()` - -ページを戻ります。 - -### `.goForward()` - -ページを進みます。 - -### `.goToIndex(index)` - -* `index` Integer - -インデックスを指定して移動します。 - -### `.goToOffset(offset)` - -* `offset` Integer - -現在の場所からの移動量を指定して移動します。 - -### `.isCrashed()` - -レンダラプロセスがクラッシュしているかを返します。 - -### `.setUserAgent(userAgent)` - -* `userAgent` String - -ゲストページ用のUser agentを変更します。 - -### `.getUserAgent()` - -User agentを取得します。 - -### `.insertCSS(css)` - -* `css` String - -ゲストエージにCSSを追加します。 - -### `.executeJavaScript(code, userGesture, callback)` - -* `code` String -* `userGesture` Boolean - Default `false`. -* `callback` Function (optional) - Called after script has been executed. - * `result` - -ページ内で`code`を評価します。`userGesture`を設定した場合、ページ内でgesture contextを作成します。例えば`requestFullScreen`のようなユーザーの対応が必要なHTML APIでは、自動化時にこれが有利になる時があります。 - -### `.openDevTools()` - -DevToolsを開きます。 - -### `.closeDevTools()` - -DevToolsを閉じます。 - -### `.isDevToolsOpened()` - -DevToolsが開いているかのbool値を返します。 - -### `.isDevToolsFocused()` - -DevToolsがフォーカスを得ているかのbool値を返します。 - -### `.inspectElement(x, y)` - -* `x` Integer -* `y` Integer - -ゲストページの(`x`, `y`)の位置にある要素を調べます。 - -### `.inspectServiceWorker()` - -ゲストページのサービスワーカーのDevToolsを開きます。 - -### `.setAudioMuted(muted)` - -* `muted` Boolean - -ページをミュートするかを設定します。 - -### `.isAudioMuted()` - -ページがミュートされているかを返します。 - -### `.undo()` - -`undo` (元に戻す)を行います。 -Executes editing command `undo` in page. - -### `.redo()` - -`redo` (やり直し)を行います。 - -### `.cut()` - -`cut` (切り取り)を行います。 - -### `.copy()` - -`copy` (コピー)を行います。 - -### `.paste()` - -`paste` (貼り付け)を行います。 - -### `.pasteAndMatchStyle()` - -`pasteAndMatchStyle`(貼り付けてスタイルを合わせる)を行います。 - -### `.delete()` - -`delete` (削除)を行います。 - -### `.selectAll()` - -`selectAll` (全て選択)を行います。 - -### `.unselect()` - -`unselect` (選択を解除)を行います。 - -### `.replace(text)` - -* `text` String - -`replace` (置き換え)を行います。 - -### `.replaceMisspelling(text)` - -* `text` String - -`replaceMisspelling` (スペル違いを置き換え)を行います。 - -### `.insertText(text)` - -* `text` String - -`text`を選択された要素に挿入します。 - -### `.findInPage(text[, options])` - -* `text` String - 検索する文字列(空文字列にはできません) -* `options` Object (省略可) - * `forward` Boolean - 前方・後方のどちらを検索するかどうかです。省略時は`true`で前方に検索します。 - * `findNext` Boolean - 初回検索か、次を検索するかを選びます。省略時は`false`で、初回検索です。 - * `matchCase` Boolean - 大文字・小文字を区別するかを指定します。省略時は`false`で、区別しません。 - * `wordStart` Boolean - ワード始まりからの検索かを指定します。省略時は`false`で、語途中でもマッチします。 - * `medialCapitalAsWordStart` Boolean - `wordStart`指定時、CamelCaseの途中もワード始まりと見なすかを指定します。省略時は`false`です。 - -`text`をページ内全てから検索し、リクエストに使用するリクエストID(`Integer`)を返します。リクエストの結果は、[`found-in-page`](webview-tag.md#event-found-in-page)イベントを介して受け取ることができます。 - -### `.stopFindInPage(action)` - -* `action` String - [`.findInPage`](webview-tag.md#webviewtagfindinpage)リクエストを終わらせる時にとるアクションを指定します。 - * `clearSelection` - 選択をクリアします。 - * `keepSelection` - 選択を通常の選択へと変換します。 - * `activateSelection` - 選択ノードにフォーカスを当て、クリックします。 - -`action`にしたがって`webview`への`findInPage`リクエストを中止します。 - -### `.print([options])` - -`webview`で表示されているウェブページを印刷します。`webContents.print([options])`と同じです。 - -### `.printToPDF(options, callback)` - -`webview`のウェブサイトをPDFとして印刷します。`webContents.printToPDF(options, callback)`と同じです。 - -### `.send(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (optional) - -`channel`を通じてレンダラプロセスに非同期メッセージを送ります。合わせて、 -任意のメッセージを送ることができます。レンダラプロセスは`ipcRenderer`モジュールを -使用して、`channel`イベントでメッセージを把握することができます。 - -サンプルが[webContents.send](web-contents.md#webcontentssendchannel-args)にあります。 - -### `.sendInputEvent(event)` - -* `event` Object - -入力イベント(`event`)をページに送ります。 - -`event`に関する詳しい説明は、[webContents.sendInputEvent](web-contents.md##webcontentssendinputeventevent)を -参照してください。 - -### `.getWebContents()` - -`webview`に関連付けられた[WebContents](web-contents.md)を取得します。 - -## DOM events - -`webview`タグで有効なイベントは次の通りです: - -### Event: 'load-commit' - -返り値: - -* `url` String -* `isMainFrame` Boolean - -読み込みが行われる時に発生するイベントです。 -これには、現在のドキュメントやサブフレームの読み込みが含まれます。ただし、非同期なリソース読み込みは含まれません。 - -### Event: 'did-finish-load' - -ナビゲーションが完了した際に発生するイベントです。 -言い換えると、タブ上の"くるくる"が止まった時に発生し、`onload`イベントが配信されます。 - -### Event: 'did-fail-load' - -返り値: - -* `errorCode` Integer -* `errorDescription` String -* `validatedURL` String -* `isMainFrame` Boolean - -`did-finish-load`と同じようですが、読み込みに失敗した時やキャンセルされた時に発生します。 -例えば、`window.stop()`が呼ばれた時などです。 - -### Event: 'did-frame-finish-load' - -返り値: - -* `isMainFrame` Boolean - -フレームがナビゲーションを終えた時に発生します。 - -### Event: 'did-start-loading' - -タブ上の"くるくる"が回転を始めた時点でこのイベントが発生します。 - -### Event: 'did-stop-loading' - -タブ上の"くるくる"が回転をやめた時点でこのイベントが発生します。 - -### Event: 'did-get-response-details' - -返り値: - -* `status` Boolean -* `newURL` String -* `originalURL` String -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object -* `resourceType` String - -読み込むリソースの詳細がわかった時点で発生します。 -`status`は、リソースをダウンロードするソケット接続であるかを示します。 - -### Event: 'did-get-redirect-request' - -返り値: - -* `oldURL` String -* `newURL` String -* `isMainFrame` Boolean - -リソースの取得中に、リダイレクトを受け取った際に発生します。 - -### Event: 'dom-ready' - -該当フレーム内のドキュメントが読み込まれた時に発生します。 - -### Event: 'page-title-updated' - -返り値: - -* `title` String -* `explicitSet` Boolean - -ページのタイトルが設定された時に発生します。 -タイトルがurlから作られたものであれば、`explicitSet`は`false`になります。 - -### Event: 'page-favicon-updated' - -返り値: - -* `favicons` Array - URLの配列 - -ページのfavicon URLを受け取った時に発生します。 - -### Event: 'enter-html-full-screen' - -HTML APIでフルスクリーンになった際に発生します。 - -### Event: 'leave-html-full-screen' - -HTML APIでフルスクリーンでなくなった際に発生します。 - -### Event: 'console-message' - -返り値: - -* `level` Integer -* `message` String -* `line` Integer -* `sourceId` String - -ゲストウィンドウがコンソールメッセージを記録する際に発生します。 - -下記のサンプルは、埋め込まれたサイトのログを、log levelに関係なく親側に転送します。 - - -```javascript -webview.addEventListener('console-message', (e) => { - console.log('Guest page logged a message:', e.message) -}) -``` - -### Event: 'found-in-page' - -返り値: - -* `result` Object - * `requestId` Integer - * `finalUpdate` Boolean - 次のレスポンスが待っているかを示します。 - * `activeMatchOrdinal` Integer (optional) - このマッチの場所を示します。 - * `matches` Integer (optional) - マッチした数です。 - * `selectionArea` Object (optional) - 最初のマッチした場所です。 - -[`webview.findInPage`](webview-tag.md#webviewtagfindinpage)リクエストで結果が得られた場合に発生します。 - -```javascript -webview.addEventListener('found-in-page', (e) => { - if (e.result.finalUpdate) webview.stopFindInPage('keepSelection') -}) - -const requestId = webview.findInPage('test') -``` - -### Event: 'new-window' - -返り値: - -* `url` String -* `frameName` String -* `disposition` String -`default`, `foreground-tab`, `background-tab`, - `new-window`, `other`のどれかです。 -* `options` Object - 新しい`BrowserWindow`を作る際に使用されるoptionです。 - -ゲストページが新しいブラウザウィンドウを開こうとする際に発生します。 - -下記のサンプルは、新しいURLをシステムのデフォルトブラウザで開きます。 - -```javascript -const {shell} = require('electron') - -webview.addEventListener('new-window', (e) => { - const protocol = require('url').parse(e.url).protocol - if (protocol === 'http:' || protocol === 'https:') { - shell.openExternal(e.url) - } -}) -``` - -### Event: 'will-navigate' - -返り値: - -* `url` String - -ユーザーまたはページがナビゲーションを始めようとする際に発生します。これは、 -`window.location`が変更になる時や、ユーザーがリンクをクリックした際に発生します。 - -`.loadURL`や`.back`でプログラムによりナビゲーションが始まった場合は -このイベントは発生しません。 - -アンカーリンクのクリックや`window.location.hash`の変更といった、ページ内遷移でも、このイベントは発生しません。 -この場合は、`did-navigate-in-page`イベントを使ってください。 - -`event.preventDefault()`は使用しても__何も起こりません__。 - -### Event: 'did-navigate' - -返り値: - -* `url` String - -ナビゲーション終了時に呼ばれます。 - -アンカーリンクのクリックや`window.location.hash`の変更といった、ページ内遷移では、このイベントは発生しません。 -この場合は、`did-navigate-in-page`イベントを使ってください。 - -### Event: 'did-navigate-in-page' - -返り値: - -* `url` String - -ページ内遷移の際に発生します。 - -ページ内遷移の際は、ページURLは変更になりますが、ページ外部へのナビゲーションは発生しません。 -例として、アンカーリンクのクリック時や、DOMの`hashchange`イベントが発生した時にこれが起こります。 - -### Event: 'close' - -ゲストページそのものが、閉じられようとしている際に発生します。 - -下記のサンプルは、`webview`が閉じられる際に、`about:blank`にナビゲートします。 - -```javascript -webview.addEventListener('close', () => { - webview.src = 'about:blank' -}) -``` - -### Event: 'ipc-message' - -返り値: - -* `channel` String -* `args` Array - -ゲストページが埋め込み元に非同期メッセージを送ってきた際に発生します。 - -`sendToHost`メソッドと、`ipc-message`イベントを利用すると、ゲストページと埋め込み元のページでデータのやり取りを簡単に行うことができます。 - -```javascript -// 埋め込み元ページ(があるページ)で -webview.addEventListener('ipc-message', (event) => { - console.log(event.channel) - // Prints "pong" -}) -webview.send('ping') -``` - -```javascript -// ゲストページ(内)で -const {ipcRenderer} = require('electron') -ipcRenderer.on('ping', () => { - ipcRenderer.sendToHost('pong') -}) -``` - -### Event: 'crashed' - -プロセスがクラッシュした際に発生します。 - -### Event: 'gpu-crashed' - -GPUプロセスがクラッシュした際に発生します。 - -### Event: 'plugin-crashed' - -返り値: - -* `name` String -* `version` String - -プラグインプロセスがクラッシュした際に発生します。 - -### Event: 'destroyed' - -WebContentsが破壊された際に呼ばれます。 - -### Event: 'media-started-playing' - -メディアの再生が開始された際に呼ばれます。 - -### Event: 'media-paused' - -メディアが一時停止になるか、再生を終えた際に呼ばれます。 - -### Event: 'did-change-theme-color' - -返り値: - -* `themeColor` String - -ページのテーマカラーが変更になった際に呼ばれます。 -これは、下記のようなメタタグがある際に通常発生します: - -```html - -``` - -### Event: 'devtools-opened' - -DevToolsが開かれた際に発生します。 - -### Event: 'devtools-closed' - -DevToolsが閉じられた際に発生します。 - -### Event: 'devtools-focused' - -DevToolsにフォーカスが当たった際 / 開かれた際に発生します。 - -[blink-feature-string]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5?l=62 diff --git a/docs-translations/jp/api/window-open.md b/docs-translations/jp/api/window-open.md deleted file mode 100644 index 3cf0954a82c9..000000000000 --- a/docs-translations/jp/api/window-open.md +++ /dev/null @@ -1,59 +0,0 @@ -# `window.open` 関数 - -Webページで新しいウィンドウを作成するために`window.open`をコールすると、`url`用の`BrowserWindow`の新しいインスタンスが作成され、プロキシはそれ以上の制御を制限したページを許可する`window.open`を返します。 - -プロキシは伝統的なウェブページと互換性のある制限された標準的な機能が実装されています。新しいウィンドウの完全な制御のために、直接、`BrowserWindow`を作成する必要があります。 - -新しく作成された`BrowserWindow`は、既定で、親ウィンドウのオプションを継承し、`features`文字列で設定したオプションを継承しオーバーライドします。 - -### `window.open(url[, frameName][, features])` - -* `url` String -* `frameName` String (optional) -* `features` String (optional) - -新しいウィンドウを作成し、`BrowserWindowProxy` クラスのインスタンを返します。 - - `features`文字列は標準的なブラウザーのフォーマットに従いますが、それぞれの機能は`BrowserWindow`のオプションフィールドである必要があります。 - -### `window.opener.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -優先的なオリジンなく特定のオリジンまたは`*`で親ウィンドウにメッセージが送信されます。 - -## Class: BrowserWindowProxy - -`BrowserWindowProxy`オブジェクトは`window.open`から返り、子ウィンドウに制限された機能を提供します。 - -### `BrowserWindowProxy.blur()` - -子ウィンドウからフォーカスを削除します。 - -### `BrowserWindowProxy.close()` - -アンロードイベントをコールせず、強制的に子ウィンドウを閉じます。 - -### `BrowserWindowProxy.closed` - -子ウィンドウがクローズした後、trueを設定します。 - -### `BrowserWindowProxy.eval(code)` - -* `code` String - -子ウィンドウでコードを評価します。 - -### `BrowserWindowProxy.focus()` - -前面にウィンドウを出し、子ウィンドウにフォーカスします。 - -### `BrowserWindowProxy.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -優先的なオリジンなく特定のオリジンまたは`*`で子ウィンドウにメッセージが送信されます。 - -それらのメッセージに加え、子ウィンドウはプロパティとシグナルメッセージなしで`window.opener`オブジェクトを実装します。 diff --git a/docs-translations/jp/development/atom-shell-vs-node-webkit.md b/docs-translations/jp/development/atom-shell-vs-node-webkit.md deleted file mode 100644 index aa5e2d45ef0d..000000000000 --- a/docs-translations/jp/development/atom-shell-vs-node-webkit.md +++ /dev/null @@ -1,37 +0,0 @@ -# Electron と NW.js (node-webkit)の技術的違い - -__Note: Electron は以前は Atom Shell と呼ばれていました__ - -NW.js と同じように Electron は HTML と JavaScript でデスクトップアプリケーションを書くためのプラットフォームを提供しており、また web ページからローレベルなシステムにもアクセスできる Node との統合的な仕組みを持っていました。 - -しかし、2つのプロジェクトには根本的な違いがあり、Electron と NW.js は完全に別なプロダクトになりました。 - -__1. アプリケーションの開始__ - -NW.js ではアプリケーションは web ページから開始されます。 `package.json` にてアプリケーションのメインページURLを指定し、ブラウザウィンドウがそのページを開くことで、それがアプリケーションのメインウィンドウとなります。 - -Electron では、JavaScript のスクリプトがエントリポイントとなります。URLを直接指定するのではなく、自分でブラウザウィンドウを作成し、API を通して HTML ファイルを読み込みます。また、ウィンドウで発生するイベントを購読して、アプリケーションの終了をハンドリングする必要もあります。 - -Electron は Node.js ランタイムのように動作します。 Electron の API はローレベルなので、[PhantomJS](http://phantomjs.org/)の代わりにブラウザテストに使用することもできます。 - -__2. ビルドシステム__ - -Chromium の全てのコードをビルドする複雑さを回避するため、Electron は [`libchromiumcontent`](https://github.com/electron/libchromiumcontent) を通して Chromium の Content API にアクセスします。 - -`libchromiumcontent` は Chromium の Content モジュールとそれに依存する全てを含んだ単一の共有ライブラリです。 -おかげで Electron をビルドするためにパワフルなマシンを用意する必要はありません。 - -__3. Node との統合__ - -NW.js では web ページと Node を統合するために Chromium にパッチを適用しています。一方、Electron では Chromium を改造する方法を取らず、libuv ループとプラットフォームのメッセージループを統合する方法を私達は取りました。 -何をやっているかについては、[`node_bindings`][node-bindings] を参照してください。 - -__4. Multi-context__ - -もしあなたが経験豊かな NW.js ユーザーならば、Node のコンテキストと Web のコンテキストに精通しているかと思います。これらのコンセプトは、NW.js の実装によって導入されたものです。 - -Node の [multi-context](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/) 機能によって、Electron は Web ページに新しい Javascript のコンテキストを導入しません。 - -Note: NW.js は バージョン 0.13 からオプションとして multi-context をサポートしました。 - -[node-bindings]: https://github.com/electron/electron/tree/master/atom/common diff --git a/docs-translations/jp/development/build-instructions-linux.md b/docs-translations/jp/development/build-instructions-linux.md deleted file mode 100644 index 4c41785a8600..000000000000 --- a/docs-translations/jp/development/build-instructions-linux.md +++ /dev/null @@ -1,188 +0,0 @@ -# ビルド方法 (Linux) - -Linux で Electron をビルドする際は以下のガイドラインに従って下さい - -## 事前準備 - -* 25GB のディスク空き容量と8GB の RAM が少なくとも必要です -* Python 2.7.xが必要です。CentOS 6.x のようないくつかのディストリビューションはまだ Python 2.6.x を使ってるので、`python -V` で Python のバージョンを確認する必要があるでしょう。 -* Node.js v0.12.x が必要です。Node のインストールには色んな方法があります。[Node.js](http://nodejs.org) からソースコードをダウンロードしてビルドすることもできます。そうすることで root でないユーザーのホームディレクトリに Node をインストールすることもできます。あるいは [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories) のようなレポジトリを試してみてください。 -* Clang 3.4 以上が必要です。 -* GTK+ と libnotify の開発用ヘッダーが必要です。 - -Ubuntu では以下のライブラリをインストールしてください。 - -```bash -$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ - libnotify-dev libgnome-keyring-dev libgconf2-dev \ - libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib curl -``` - -RHEL / CentOS では以下のライブラリをインストールしてください。 - -```bash -$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -Fedora では以下のライブラリをインストールしてください。 - -```bash -$ sudo dnf install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -他のディストリビューションでは pacman のようなパッケージマネージャーを通して似たようなインストールパッケージを提供しているかもしれません。あるいはソースコードからコンパイルもできます。 - -## ソースコードの取得 - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## Bootstrapp - -bootstrap スクリプトは、ビルドに必要な全ての依存関係の解決と、プロジェクトファイルを作成してくれます。 -スクリプトの実行には Python 2.7.x が必要です。これらのファイルをダウンロードするには時間が結構かかります。Electron のビルドには [ninja](https://ninja-build.org/) を使用しているので、 `Makefile` が生成されないことに注意してください。 - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -### クロスコンパイル - -`arm` アーキテクチャ向けにビルドしたい場合、下記の依存ライブラリをインストールしてください。 - -```bash -$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \ - g++-arm-linux-gnueabihf -``` - -`arm` や `ia32` 向けにクロスコンパイルするには、`bootstrap.py` に `--target_arch` パラメータを渡してください。 - -```bash -$ ./script/bootstrap.py -v --target_arch=arm -``` - -## ビルド - -`Release` 向けと `Debug` 向けにビルドするには下記を実行してください。 - -```bash -$ ./script/build.py -``` - -このスクリプトはとても大きな Electron の実行ファイルを `out/R` に生成します。ファイルサイズは1.3GB を超えます、なぜかというと、`Release` 向けのバイナリがデバッグシンボルを含むためです。ファイルサイズを減らすには下記のように `create-dist.py` を実行してください。 - -```bash -$ ./script/create-dist.py -``` - -このスクリプトは非常に小さい小さいファイルサイズのディストリビューションを `dist` ディレクトリに生成します。`create-dist.py` 実行後、まだ `out/R` に 1.3 GB を超えたバイナリがあるので、削除したくなることでしょう。 - -`Debug` 向けのみビルドしたい時は下記を実行してください。 - -```bash -$ ./script/build.py -c D -``` - -ビルドが終われば、`out/D` ディレクトリ配下に `Electron.app`が生成されます。 - -## ビルドファイルのクリーン - -ビルドファイルを削除するには下記を実行してください。 - -```bash -$ ./script/clean.py -``` - -## トラブルシューティング - -### Error While Loading Shared Libraries: libtinfo.so.5 - -あらかじめビルドされた `clang` は `libtinfo.so.5` をリンクしようとします。 -ホストのシステムによっては 適切な `libncurses` への symlink を作成したほうがよいです。 - -```bash -$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5 -``` - -## Tests - -コーディング規約どおりになっているかテストするには下記を実行してください。 - -```bash -$ npm run lint -``` - -機能のテストは下記を実行してください。 - -```bash -$ ./script/test.py -``` - -## 高度なトピック - -デフォルトのビルド設定は、メジャーなデスクトップLinux 向けになっています。 -ある特定のディストリビューションやデバイス向けにビルドする際は、下記の情報が役に立つでしょう。 - -### `libchromiumcontent` をローカルでビルドする - -あらかじめビルドされた `libchromiumcontent` のバイナリの使用を回避するには、下記のように`--build_libchromiumcontent` オプションを `bootstrap.py` に渡してください。 - -```bash -$ ./script/bootstrap.py -v --build_libchromiumcontent -``` -`shared_library` の設定はデフォルトではビルドされないことに注意してください。以下のモードを使うことで、Electron の `Release` バージョンのみビルドすることができます。 - -```bash -$ ./script/build.py -c R -``` - -### ダウンロードした `clang` ではなくシステムの `clang` を使う - -デフォルトではElectron は Chromium プロジェクトによって提供されるあらかじめビルドされた `clang` を使ってビルドします。もしなんらかの理由でシステムにインストールされた `clang` でビルドしたい場合、 `--clang_dir=` オプションをつけて、`bootstrap.py` を実行してください。オプションを渡すことで、ビルドスクリプトは `clang` が `/bin/` にあるとして実行されます。 - -例えば、`/user/local/bin/clang` 配下に `clang` をインストールした場合、以下のようになります。 - -```bash -$ ./script/bootstrap.py -v --build_libchromiumcontent --clang_dir /usr/local -$ ./script/build.py -c R -``` - -### `clang` 以外のコンパイラを使う - -Electron のビルドに `g++` のようなコンパイラを使うためには、まず `--disable_clang` オプションで、`clang` を無効化し、そして `CC` と `CXX` 環境変数を望むように設定してください。 - -例えば GCC toolchain でビルドするには以下のようになります。 - -```bash -$ env CC=gcc CXX=g++ ./script/bootstrap.py -v --build_libchromiumcontent --disable_clang -$ ./script/build.py -c R -``` - -### 環境変数 - -また `CC` と `CXX` とは別に、下記の環境変数を設定することでもビルド設定をイジることができます。 - -* `CPPFLAGS` -* `CPPFLAGS_host` -* `CFLAGS` -* `CFLAGS_host` -* `CXXFLAGS` -* `CXXFLAGS_host` -* `AR` -* `AR_host` -* `CC` -* `CC_host` -* `CXX` -* `CXX_host` -* `LDFLAGS` - -これら環境変数は `bootstrap.py` 実行時に設定されてないといけません。 `build.py` 実行時に設定しても動きません。 diff --git a/docs-translations/jp/development/build-instructions-osx.md b/docs-translations/jp/development/build-instructions-osx.md deleted file mode 100644 index 2f766020ea99..000000000000 --- a/docs-translations/jp/development/build-instructions-osx.md +++ /dev/null @@ -1,62 +0,0 @@ -# ビルド方法 (macOS) - -macOS で Electron をビルドする際は以下のガイドラインに従って下さい - -## 前提条件 - -* macOS >= 10.8 -* [Xcode](https://developer.apple.com/technologies/tools/) >= 5.1 -* [node.js](http://nodejs.org) (external) - -Homebrew からダウンロードした Python を使用している場合、下記 python モジュールもインストールしてください - -* pyobjc - -## ソースコードの取得 - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## bootstrap - -bootstrap スクリプトは、ビルドに必要な全ての依存関係の解決と、プロジェクトファイルを作成してくれます。Electron のビルドには [ninja](https://ninja-build.org/) を使用しているので、 Xcode project が生成されないことに注意してください。 - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -## ビルド - -`Release` 向けと `Debug` 向けを両方共ビルドするには下記を実行してください。 - -```bash -$ ./script/build.py -``` - -`Debug` 向けのみビルドしたい時は下記を実行してください。 - -```bash -$ ./script/build.py -c D -``` - -ビルドが終われば、`out/D` ディレクトリ配下に `Electron.app`が生成されます。 - -## 32bit サポート - -Electron は 64bit の macOS 向けのみビルドできます。32bit macOS への対応の予定はありません。 - -## テスト - -コーディング規約を満たしているかどうかは下記でテストできます。 - -```bash -$ ./script/cpplint.py -``` - -機能のテストは下記でテストできます。 - -```bash -$ ./script/test.py -``` diff --git a/docs-translations/jp/development/coding-style.md b/docs-translations/jp/development/coding-style.md deleted file mode 100644 index becd4f9c03ec..000000000000 --- a/docs-translations/jp/development/coding-style.md +++ /dev/null @@ -1,44 +0,0 @@ -# コーディング規約 - -Electron 開発におけるコーディング規約です。 - -`npm run lint` を実行することで `cpplint` 及び `eslint` によって -検出された規約違反を検出することができます。 - -## C++ と Python - -C++ と Python は Chromium の[コーディング規約](http://www.chromium.org/developers/coding-style)を踏襲しています。`script/cpplint.py` というスクリプトを実行することで、全てのファイルがこの規約に従っているかどうかチェックできます。 - -私達が今使っている Python のバージョンは Python 2.7 です。 - -C++ のコードは Chromium の抽象型をたくさん使っているので、それに精通していることをオススメします。Chromium の [Important Abstractions and Data Structures](https://www.chromium.org/developers/coding-style/important-abstractions-and-data-structures) のドキュメントから始めるのがよいでしょう。ドキュメントでは、いくつかの特別な型や、スコープのある型(スコープ外に出ると自動でメモリが開放される型)、ログの仕組みなどが言及されています。 - -## JavaScript - -* [standard](http://npm.im/standard) JavaScript style で書いてください。 -* ファイルは改行で**終わらないでください**。Google の規約と合わないためです。 -* ファイル名はアンダーバー `_` で結合せず、ハイフン `-` で結合してください。 - 例えば `file_name.js` ではなく `file-name.js` です。なぜかというと - [github/atom](https://github.com/github/atom) モジュールの名前が - `module-name` 形式だからです。このルールは `.js` ファイルのみ適用されます。 -* 必要に応じて新しい ES6/ES2015 の構文を使用してください。 - * [`const`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) - を定数使用時に - * [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) - を変数宣言時に - * [Arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) - を `function () { }` の代わりに - * [Template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) - を `+` を使って文字結合する代わりに - -## 名前付け - -Electron の API は Node.js と同じ大文字小文字のルールを使用しています。 - -- モジュールがクラスの場合は、`BrowserWindow` のようにキャメルケースを使います。 -- モジュールが API の一部なら `globalShortcut` のように小文字大文字を混ぜて使います(`mixedCase`)。 -- `win.webContents` のように API が オブジェクトのプロパティで、かつ分けると複雑になる場合は、小文字大文字を混ぜて使います(`mixedCase`)。 -- その他のモジュールでないAPIでは、` Tag` や `Process Object` のように通常通り名づけます。 - -新しい API を作る際は、jQuery のように一つの関数で getter/setter にするより、getter と setter を分ける方が望ましいです。 -例えば `.text([text])` ではなく `.getText()` と `.setText(text)` にします。この辺りは [issue 46](https://github.com/electron/electron/issues/46) で議論されました。 diff --git a/docs-translations/jp/faq/electron-faq.md b/docs-translations/jp/faq/electron-faq.md deleted file mode 100644 index fa3c6220cee9..000000000000 --- a/docs-translations/jp/faq/electron-faq.md +++ /dev/null @@ -1,133 +0,0 @@ -# Electron FAQ - -## Electronは、いつ最新のChromeにアップグレードされますか? - -ElectronのChromeバージョンは、通常、新しいChromeのstabeleバージョンがリリースされた後、1~2週間以内に上げられます。ただし、この期間というのは保障されてはおらず、またバージョンアップでの作業量に左右されます。 - -また、Chromeのstableチャンネルのみを使用し、もし、重要な修正がbetaまたはdevチャンネルにある場合、それをバックポートします。 - -もっと知りたければ、[セキュリティについて](../tutorial/security.md)をご参照ください。 - -## Electronは、いつ最新のNode.jsにアップグレードされますか? - -Node.js の新しいバージョンがリリースされたとき、私たちは Electron の Node.js を更新するのを通常約1か月待ちます。そのようにして、とても頻繁に発生している、新しい Node.js バージョンによって取り込まれたバグによる影響を避けることができます。 - -通常、Node.js の新しい機能は V8 のアップグレードによってもたらされますが、Electron は Chrome ブラウザーに搭載されている V8 を使用しているので、新しい Node.js に入ったばかりのピカピカに新しい JavaScript 機能は Electron ではたいてい既に導入されています。 - -## ウェブページ間のデータを共有する方法は? - -ウェブページ(レンダラープロセス)間のデータを共有するために最も単純な方法は、ブラウザで、すでに提供されているHTML5 APIを使用することです。もっとも良い方法は、[Storage API][storage]、[`localStorage`][local-storage]、[`sessionStorage`][session-storage]、[IndexedDB][indexed-db]です。 - -```javascript -// In the main process. -global.sharedObject = { - someProperty: 'default value' -} -``` - -```javascript -// In page 1. -require('remote').getGlobal('sharedObject').someProperty = 'new value' -``` - -```javascript -// In page 2. -console.log(require('remote').getGlobal('sharedObject').someProperty) -``` - -## 何分か経つと、アプリの Window/tray が消えてしまいます - -これは、Window/trayを格納するのに使用している変数がガベージコレクトされたときに発生します。 - -この問題に遭遇した時には、次のドキュメントを読むことをお勧めします。 - -* [Memory Management][memory-management] -* [Variable Scope][variable-scope] - -もし簡単に修正したい場合は、コードを以下のように修正して変数をグローバルにすると良いでしょう: - -変更前: - -```javascript -app.on('ready', function () { - var tray = new Tray('/path/to/icon.png') -}) -``` - -変更後: - -```javascript -var tray = null -app.on('ready', function () { - tray = new Tray('/path/to/icon.png') -}) -``` - -## ElectronでjQuery/RequireJS/Meteor/AngularJSを使用できません - -Electronに組み込まれているNode.jsの影響で, `module`, `exports`, `require`のようなシンボルがDOMに追加されています。このため、いくつかのライブラリでは同名のシンボルを追加しようとして問題が発生することがあります。 - -これを解決するために、Electronに組み込まれているnodeを無効にすることができます。 - -```javascript -// In the main process. -var win = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -``` - -しかし、Node.jsとElectron APIを使用した機能を維持したい場合は、ほかのライブラリを読み込む前に、ページのシンボルをリネームする必要があります。 - -```html - - - - -``` - -## `require('electron').xxx` は定義されていません。 - -Electronの組み込みモジュールを使うとに、次のようなエラーに遭遇するかもしれません。 - -``` -> require('electron').webFrame.setZoomFactor(1.0); -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -これは、ローカルまたはグローバルのどちらかで [npm `electron` module][electron-module] をインストールしたことが原因で、Electronの組み込みモジュールを上書きしてしまいます。 - -正しい組み込みモジュールを使用しているかを確認するために、`electron`モジュールのパスを出力します。 - -```javascript -console.log(require.resolve('electron')) -``` - -そして、次の形式かどうかを確認します。 - -``` -"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -もし、`node_modules/electron/index.js` のような形式の場合は、npm `electron` モジュールを削除するか、それをリネームします。 - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -しかし、組み込みモジュールを使用しているのに、まだこのエラーが出る場合、不適切なプロセスでモジュールを使用しようとしている可能性が高いです。例えば、`electron.app`はメインプロセスのみで使え、一方で`electron.webFrame`はレンダラープロセスのみに提供されています。 - -[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron -[storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage -[local-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage -[session-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage -[indexed-db]: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API diff --git a/docs-translations/jp/tutorial/application-distribution.md b/docs-translations/jp/tutorial/application-distribution.md deleted file mode 100644 index 43df2adb3de5..000000000000 --- a/docs-translations/jp/tutorial/application-distribution.md +++ /dev/null @@ -1,108 +0,0 @@ -# アプリケーションの配布 - -Electronでアプリケーションを配布するために、アプリケーションを`app` という名前のディレクトリにし、Electronのリソースディレクトリ(macOS では -`Electron.app/Contents/Resources/` 、Linux と Windows では `resources/`)配下に置くべきです, - -macOS: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -Windows と Linux: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -`Electron.app` (または Linux上では、`electron`、Windows上では、 `electron.exe`)を実行すると、Electronはアプリケーションを開始します。`electron` ディレクトリを最終的なユーザーに提供するために配布します。 - -## ファイルにアプリケーションをパッケージングする - -すべてのソースコードをコピーすることでアプリケーションを提供する方法とは別に、アプリケーションのソースコードをユーザーに見えるのを避けるために、[asar](https://github.com/electron/asar) にアーカイブしてアプリケーションをパッケージ化することができます。 - -`app` フォルダの代わりに `asar` アーカイブを使用するためには、アーカイブファイルを `app.asar` という名前に変更し、Electron のリソースディレクトリに以下のように配置する必要があります。すると、Electron はアーカイブを読み込もうとし、それを開始します。 - -macOS: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -Windows と Linux: - -```text -electron/resources/ -└── app.asar -``` - -[Application packaging](application-packaging.md)で、詳細を確認できます。 - -## ダウンロードするバイナリのブランド名の変更 - -Electronにバンドルした後、ユーザーに配布する前に、 Electron名を変更したいでしょう。 - -### Windows - -`electron.exe`を任意の名前に変更でき、[rcedit](https://github.com/atom/rcedit) -のようなツールでアイコンやその他の情報を編集できます。 - -### macOS - -`Electron.app` を任意の名前に変更でき、次のファイルの `CFBundleDisplayName`と `CFBundleIdentifier`、 `CFBundleName`のフィールドの名前を変更する必要があります。 - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -ヘルパーアプリケーションの名前を変更して、アクティビティモニタに `Electron Helper` と表示されないようにすることもできますが、その際はヘルパーアプリケーションの実行可能ファイルの名前を変更したことを確認してください。 - -名前変更後のアプリケーションの構成は以下の通りです: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -`electron` を任意の名前に変更できます。 - -## ソースからElectronをリビルドしてブランド名を変更する - -プロダクト名を変更し、ソースからビルドすることで、Electronのブランド名を変更できます。これをするために、`atom.gyp` ファイルを変更し、クリーンリビルドする必要があります。 - -### grunt-build-atom-shell - -Electron のコードを手動チェックアウトして再構築するのには複雑な手順が必要ですが、これを自動的に扱うための Grunt タスクが作られています: -[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -このタスクは自動的に `.gyp` ファイルの編集、ソースからのビルド、そして新しい実行可能ファイル名に一致するようにネイティブの Node モジュールを再構築します。 - -## パッケージングツール - -手動でアプリケーションをパッケージ化する以外の方法として、サードパーティのパッケジングツールを選ぶこともできます。 - -* [electron-packager](https://github.com/maxogden/electron-packager) -* [electron-builder](https://github.com/loopline-systems/electron-builder) diff --git a/docs-translations/jp/tutorial/application-packaging.md b/docs-translations/jp/tutorial/application-packaging.md deleted file mode 100644 index 2c1e85a4180a..000000000000 --- a/docs-translations/jp/tutorial/application-packaging.md +++ /dev/null @@ -1,149 +0,0 @@ -# アプリケーションのパッケージ化 - -Windows上の長いパス名周りの[問題](https://github.com/joyent/node/issues/6960) を軽減したり、`require`を若干スピードアップしたり、簡単な調査からソースコードを隠したりするために、ソースコードを少々変更して、アプリケーションを [asar][asar] アーカイブとしてパッケージ化することもできます。 - -## `asar` アーカイブの生成 - -[asar][asar] アーカイブは、1つのファイルに連結されたtarライクのシンプルなフォーマットです。Electron はファイル全体をアンパックしなくても任意のファイルを読み込めます。 - -アプリを `asar` アーカイブにパッケージ化する手順: - -### 1. asar ユーティリティのインストール - -```bash -$ npm install -g asar -``` - -### 2. `asar pack`でパッケージ化する - -```bash -$ asar pack your-app app.asar -``` - -## `asar` アーカイブを使用する - -Electronには、2組のAPIがあります。Node.js により提供される Node API、そして Chromium により提供される Web API です。どちらの API も `asar` アーカイブからのファイル読み込みに対応しています。 - -### Node API - -Electronでは特定のパッチで、`fs.readFile` や `require` のようなNode APIは、`asar` アーカイブを仮想ディレクトリのように扱い、ファイルをファイルシステム上の通常のファイルのように扱います。 - -例えば、`/path/to` 配下に、`example.asar` アーカイブがあると仮定します: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -`asar` アーカイブ内のファイルを読み込む: - -```javascript -const fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -アーカイブのルート直下にあるすべてのファイルを一覧にする: - -```javascript -const fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -アーカイブからモジュールを使用する: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -`BrowserWindow` を使って `asar` アーカイブ内の Web ページを表示することもできます: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### Web API - -Webページで、アーカイブ内のファイルを `file:` プロトコルでリクエストできます。 -Node API と同様、`asar` アーカイブはディレクトリのように扱われます。 - -例えば、 `$.get` でファイルを取得できます: - -```html - -``` - -### `asar` アーカイブを通常のファイルのように扱う - -アーカイブのチェックサムを検証する等の幾つかのケースでは、`asar` アーカイブをファイルとして読み込む必要があります。この目的のために、 `asar` サポートしないオリジナルの `fs` API を提供するビルトインの `original-fs` モジュールを使用できます。 - -```javascript -const originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -`process.noAssar` に `true` をセットしても `fs` モジュールの `asar` サポートを無効にすることができます: - -```javascript -process.noAsar = true -fs.readFileSync('/path/to/example.asar') -``` - -## Node API の制限 - -Node APIで、`asar` アーカイブが可能な限りディレクトリのように動作するよう懸命に試してますが、低レベル環境での Node API に起因した制限が幾つかあります。 - -### アーカイブは読み取り専用です - -アーカイブは修正できないため、ファイルを変更できる変更できる全ての Node API は `asar` アーカイブに対して動作しません。 - -### 作業ディレクトリは、アーカイブ内のディレクトリに設定できません - -`asar` アーカイブはディレクトリのように扱われるにも関わらず、ファイルシステム上には実際のディレクトリが存在しないため、`asar` アーカイブ内のディレクトリを作業ディレクトリとして設定することはできません。幾つかの API の `cwd` オプションにアーカイブ内のディレクトリを渡すのも同様にエラーの原因になります。 - -### いくつかのAPIで追加のアンパッキングがされます - -たいていの `fs` APIは、アンパッキングせずに、 `asar` アーカイブからファイルを読み込んだり、ファイル情報を取得できます。しかし、システムコールに実際のファイルパスを渡すようになっている幾つかの API では、Electron は必要なファイルを一時ファイルとして抽出し、API に一時ファイルのパスを渡して、API が動作するようにします。このため、当該 API には多少のオーバーヘッドがあります。 - -追加のアンパッキングに必要なAPIです: - -* `child_process.execFile` -* `child_process.execFileSync` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - ネイティブモジュール上の `require` で使用されます - -### `fs.stat` の偽の統計情報 - -`asar` アーカイブ内のファイルはファイルシステム上に存在しないので、`fs.stat` および `asar` アーカイブ内のファイルへの関連情報によって返される`Stats` オブジェクトは、推測して生成されます。ファイルサイズの取得とファイルタイプのチェックを除いて、 `Stats` オブジェクトを信頼すべきではありません。 - -### `asar` アーカイブ内のバイナリの実行 - -`child_process.exec` と `child_process.spawn` 、 `child_process.execFile` のようなバイナリを実行できるNode APIがあります。しかし、`execFile` だけが、`asar` アーカイブ内でのバイナリ実行をサポートしています。 - -なぜならば、`exec` と `spawn` は入力として `file` の代わりに `command` を受け取り、`command` はシェル配下で実行されるからです。コマンドが asar アーカイブ内のファイルを使うかどうかを決定するための信頼できる方法はありませんし、そうするとしてもコマンドで使うファイルパスを副作用なしに置き換えることができるかどうかを確認することはできません。 - -## `asar` アーカイブ内のファイルをアンパックして追加 - -上記のように、いくつかのNode APIが呼ばれると、ファイルシステム上にファイルをアンパックしますが,パフォーマンス問題は別として、ウィルススキャナーのアラートにつながる可能性があります。 - -これに対応するために、`--unpack` オプションを使用して、アーカイブを作成する際に、いくつかのファイルをアンパックできます。例えば、ネイティブモジュールの共有ライブラリを除く場合: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -このコマンドを実行した後、`app.asar` とは別に、アンパックされたファイルを含んだ`app.asar.unpacked` フォルダーが生成されます。ユーザーに提供するときには、`app.asar` と一緒にコピーしなければなりません。 - -[asar]: https://github.com/electron/asar diff --git a/docs-translations/jp/tutorial/debugging-main-process.md b/docs-translations/jp/tutorial/debugging-main-process.md deleted file mode 100644 index e18bf5ea0841..000000000000 --- a/docs-translations/jp/tutorial/debugging-main-process.md +++ /dev/null @@ -1,70 +0,0 @@ -# メインプロセスのデバッグ - -ブラウザウィンドウ DevToolsのみ、レンダリングプロセススクリプトをデバッグすることができます。メインプロセスからスクリプトをデバッグする方法を提供するために、Electronは、`--debug` と `--debug-brk` スイッチを提供します。 - -## コマンドライン スイッチ - -Electronのメインプロセスをデバッグするために次のコマンドラインスイッチを使用します - -### `--debug=[port]` - -このスイッチを使ったとき、Electronは、 `port` 上でV8デバッガープロトコルメッセージをリッスンします。デフォルトの `port` は `5858`です。 - -### `--debug-brk=[port]` - -`--debug` のようですが、最初の行でスクリプトをポーズします。 - -## デバッグ用のnode-inspectorを使用する - -__Note:__ Electron は今のところ、明確にはnode-inspectorは動作せず、node-inspectorのコンソール下で、`process` オブジェクトを調査した場合、メインプロセスはクラッシュするでしょう。 - -### 1. インストールされた[node-gyp required tools][node-gyp-required-tools] を確認する - -### 2. [node-inspector][node-inspector]をインストールする - -```bash -$ npm install node-inspector -``` - -### 3. `node-pre-gyp`のパッチバージョンをインストールする - -```bash -$ npm install git+https://git@github.com/enlight/node-pre-gyp.git#detect-electron-runtime-in-find -``` - -### 4. Electron用の `node-inspector` `v8` モジュールをリコンパイルする(対象のElectronのバージョン番号を変更する) - -```bash -$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/electron reinstall -$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/electron reinstall -``` - -[How to install native modules](how-to-install-native-modules)を見る。 - -### 5. Electron用のデバッグモードを有効にする - -デバッグフラッグでElectronを開始する: - -```bash -$ electron --debug=5858 your/app -``` - -または、最初のライン上でスクリプトをポーズする: - -```bash -$ electron --debug-brk=5858 your/app -``` - -### 6. Electronを使用して、[node-inspector][node-inspector] サーバーを開始する - -```bash -$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js -``` - -### 7. デバッグUIを読み込みます - -Chromeブラウザで、 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 を開きます。エントリーラインを見るために、debug-brkを始めるには、ポーズをクリックします。 - -[node-inspector]: https://github.com/node-inspector/node-inspector -[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation -[how-to-install-native-modules]: using-native-node-modules.md#how-to-install-native-modules diff --git a/docs-translations/jp/tutorial/desktop-environment-integration.md b/docs-translations/jp/tutorial/desktop-environment-integration.md deleted file mode 100644 index 2dfbb634ff1a..000000000000 --- a/docs-translations/jp/tutorial/desktop-environment-integration.md +++ /dev/null @@ -1,261 +0,0 @@ -# デスクトップ環境の統合 - -異なるオペレーティングシステムは、それぞれのデスクトップ環境でデスクトップに統合されたアプリケーション用に異なる機能を提供します。例えば、Windows アプリケーションではタスクバーのジャンプバーリストにショートカットをおけ、Macではドックメニューにカスタムメニューをおけます。 - -このガイドでは、Electron APIでデスクトップ環境にアプリケーションを統合する方法を説明します。 - -## 通知 (Windows, Linux, macOS) - -3つのオペレーティングシステム全てで、アプリケーションからユーザーに通知を送る手段が提供されています。通知を表示するためにオペレーティングシステムのネイティブ通知APIを使用する[HTML5 Notification API](https://notifications.spec.whatwg.org/)で、Electronは、開発者に通知を送ることができます。 - -**注意:** これはHTML5 APIですので、レンダラプロセス内のみで有効です。 - - -```javascript -let myNotification = new Notification('Title', { - body: 'Lorem Ipsum Dolor Sit Amet' -}) - -myNotification.onclick = () => { - console.log('Notification clicked') -} -``` - -オペレーティングシステム間でコードとユーザ体験は似ていますが、細かい違いがあります。 - -### Windows - -* Windows 10では、通知はすぐに動作します。 -* Windows 8.1 と Windows 8では、[Application User -Model ID][app-user-model-id]で、アプリへのショートカットはスタートメニューにインストールされます。しかし、スタートメニューにピン止めをする必要がありません。 -* Windows 7以前は、通知はサポートされていません。 しかし、[Tray API][tray-balloon]を使用してバルーンヒントを送信することができます。 - -その上で、bodyの最大サイズは250文字であることに留意してください。Windowsチームは、通知は200文字にすることを推奨しています。 - -### Linux - -通知は、`libnotify`を使用して送信されます。[デスクトップ通知仕様][notification-spec]に対応したデスクトップ環境上(Cinnamon、Enlightenment、Unity、GNOME、KDEなど)で通知を表示できます。 - -### macOS - -通知は、そのままmacOSに通知されます。しかし、[通知に関するAppleのヒューマンインターフェイスガイドライン(英語版)](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html)を知っておくべきです。 - -通知は、256バイトサイズに制限されており、制限を超えていた場合、通知が破棄されます。 - -## 最近のドキュメント (Windows と macOS) - -Windows と macOSは、ジャンプリストやドックメニュー経由で、アプリケーションが開いた最近のドキュメント一覧に簡単にアクセスできます。 - -__JumpList:__ - -![JumpList Recent Files](http://i.msdn.microsoft.com/dynimg/IC420538.png) - -__Application dock menu:__ - - - -最近のドキュメントにファイルを追加するために、[app.addRecentDocument][addrecentdocument] APIを使用できます: - -```javascript -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -``` - -[app.clearRecentDocuments][clearrecentdocuments] API を使用して、最近のドキュメント一覧を空にできます: - -```javascript -app.clearRecentDocuments() -``` - -### Windows 留意点 - -Windows で、この機能を使用できるようにするために、アプリケーションにドキュメントのファイルタイプのハンドラーを登録すべきです。さもなければ、ジャンプリストに表示されません。[Application Registration][app-registration]で、登録しているアプリケーションをすべて見れます。 - -ユーザーがジャンプリストからファイルをクリックしたとき、アプリケーションの新しいインスタンスは、コマンドライン引数にファイルのパスを渡して開始します。 - -### macOS 留意点 - -ファイルが最近のドキュメントメニューからリクエストされた時、 `app` モジュールの `open-file` イベントが発行されます。 - -## ドックメニュー (macOS)のカスタマイズ - -通常アプリケーションで使用する共通機能用のショートカットを含める、ドック用のカスタムメニューをmacOSでは指定できます。 - -__Dock menu of Terminal.app:__ - - - -カスタムドックメニューを設定するために、macOSのみに提供されている `app.dock.setMenu` APIを使用できます。 - -```javascript -const {app, Menu} = require('electron') - -const dockMenu = Menu.buildFromTemplate([ - {label: 'New Window', click () { console.log('New Window') }}, - {label: 'New Window with Settings', - submenu: [ - {label: 'Basic'}, - {label: 'Pro'} - ] - }, - {label: 'New Command...'} -]) -app.dock.setMenu(dockMenu) -``` - - -## ユーザータスク (Windows) - -Windowsでは、ジャンプリストの `Tasks` カテゴリでカスタムアクションを指定できます。 -MSDNから引用します。 - ->アプリケーションでは、プログラムの機能とユーザーがプログラムを使用して実行する可能性が最も高い主な操作の両方に基づいてタスクを定義します。タスクを実行するためにアプリケーションが起動している必要がないように、タスクは状況に依存しないものにする必要があります。また、タスクは、一般的なユーザーがアプリケーションで実行する操作の中で、統計上最も一般的な操作です。たとえば、メール プログラムでは電子メールの作成や予定表の表示、ワード プロセッサでは新しい文書の作成、特定のモードでのアプリケーションの起動、アプリケーションのサブコマンドを実行することなどです。一般的なユーザーが必要としない高度な機能や、登録などの 1 回限りの操作によって、メニューがわかりづらくなることがないようにしてください。アップグレードやキャンペーンなどの販売促進用の項目としてタスクを使用しないでください。 - ->タスク一覧は静的なものにすることを強くお勧めします。アプリケーションの状態や状況に関係なく、タスク一覧は同じ状態にすることをお勧めします。リストを動的に変更することも可能ですが、ユーザーはターゲット一覧のこの部分が変更されると考えていないので、ユーザーを混乱させる可能性があることを考慮してください。 - -__Internet Explorerのタスク:__ - -![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png) - -実際のメニューであるmacOSのドックメニューとは異なり、ユーザーがタスクをクリックしたとき、Windowsではユーザータスクはアプリケーションのショートカットのように動作し、プログラムは指定された引数を実行します。 - -アプリケーション用のユーザータスクを設定するために、[app.setUserTasks][setusertaskstasks] APIを使用できます: - -```javascript -app.setUserTasks([ - { - program: process.execPath, - arguments: '--new-window', - iconPath: process.execPath, - iconIndex: 0, - title: 'New Window', - description: 'Create a new window' - } -]) -``` - -タスクリストをクリアするために、`app.setUserTasks` をコールし、配列を空にします。 - -```javascript -app.setUserTasks([]) -``` - -アプリケーションを閉じた後もユーザータスクは表示されていてるので、アプリケーションをアンインストールするまではタスクに指定したアイコンとプログラムのパスは存在し続けてる必要があります。 - -## サムネイルツールバー(縮小表示ツールバー) - -Windowsでは、アプリケーションウィンドウのタスクバーレイアウトに、指定のボタンを縮小表示ツールバーに追加できます。アプリケーションのウィンドウを元のサイズに戻したりアクティブ化したりすることなく、主要なコマンドにアクセスできるようにします。 - -MSDNからの引用: - ->このツール バーは、単純に、使い慣れた標準的なツール バー コモン コントロールです。最大で 7 個のボタンが配置されます。各ボタンの ID、イメージ、ツールヒント、および状態は構造体で定義され、その後タスク バーに渡されます。アプリケーションでは、現在の状態での必要に応じて、縮小表示ツール バーのボタンの表示、有効化、無効化、非表示を実行できます。 ->たとえば、Windows Media Player の縮小表示ツール バーでは、再生、一時停止、ミュート、停止などの、標準的なメディア トランスポート コントロールを提供できます。 - -__Windows Media Playerの縮小表示ツールバー:__ - -![player](https://i-msdn.sec.s-msft.com/dynimg/IC420540.png) - -アプリケーションに縮小表示ツールバーを設定するために、[BrowserWindow.setThumbarButtons][setthumbarbuttons]を使えます: - -```javascript -const {BrowserWindow} = require('electron') -const path = require('path') - -let win = new BrowserWindow({ - width: 800, - height: 600 -}) -win.setThumbarButtons([ - { - tooltip: 'button1', - icon: path.join(__dirname, 'button1.png'), - click () { console.log('button2 clicked') } - }, - { - tooltip: 'button2', - icon: path.join(__dirname, 'button2.png'), - flags: ['enabled', 'dismissonclick'], - click () { console.log('button2 clicked.') } - } -]) -``` - -縮小表示ツールバーボタンをクリアするために、 `BrowserWindow.setThumbarButtons` をコールして配列を空にします: - -```javascript -win.setThumbarButtons([]) -``` - -## Unity ランチャーショートカット (Linux) - -Unityでは、`.desktop` ファイルの修正を経由してランチャーにカスタムエントリーを追加できます。[Adding Shortcuts to a Launcher][unity-launcher]を参照してください。 - -__Audaciousのランチャーショートカット:__ - -![audacious](https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles?action=AttachFile&do=get&target=shortcuts.png) - -## タスクバーの進行状況バー (Windows, macOS, Unity) - -Windowsでは、タスクバーボタンは、進行状況バーを表示するのに使えます。ウィンドウを切り替えることなくウィンドウの進行状況情報をユーザーに提供することができます。 - -macOSではプログレスバーはドックアイコンの一部として表示されます。 -Unity DEは、ランチャーに進行状況バーの表示をするのと同様の機能を持っています。 - -__タスクバーボタン上の進行状況バー:__ - -![Taskbar Progress Bar](https://cloud.githubusercontent.com/assets/639601/5081682/16691fda-6f0e-11e4-9676-49b6418f1264.png) - -ウィンドウに進行状況バーを設定するために、[BrowserWindow.setProgressBar][setprogressbar] APIを使えます: - -```javascript -let win = new BrowserWindow() -win.setProgressBar(0.5) -``` - -## タスクバーでアイコンをオーバーレイする (Windows) - -Windowsで、タスクバーボタンはアプリケーションステータスを表示するために小さなオーバーレイを使うことができます。MSDNから引用します。 - -> アイコン オーバーレイは、状況に応じた状態通知として機能し、通知領域に状態アイコンを個別に表示する必要性をなくして、情報をユーザーに伝えることを目的としています。たとえば、現在、通知領域に表示される Microsoft Office Outlook の新着メールの通知は、タスク バー ボタンのオーバーレイとして表示できるようになります。ここでも、開発サイクルの間に、アプリケーションに最適な方法を決定する必要があります。アイコン オーバーレイは、重要で長期にわたる状態や通知 (ネットワークの状態、メッセンジャーの状態、新着メールなど) を提供することを目的としています。ユーザーに対して、絶えず変化するオーバーレイやアニメーションを表示しないようにしてください。 - -__タスクバーボタンでのオーバーレイ:__ - -![Overlay on taskbar button](https://i-msdn.sec.s-msft.com/dynimg/IC420441.png) - -ウィンドウでオーバーレイアイコンを設定するために、[BrowserWindow.setOverlayIcon][setoverlayicon] APIを使用できます。 - -```javascript -let win = new BrowserWindow() -win.setOverlayIcon('path/to/overlay.png', 'Description for overlay') -``` - -## Windowのファイル表示 (macOS) - -macOSでは、ウィンドウがrepresented fileを設定でき、タイトルバー上にファイルのアイコンを表示でき、タイトル上でCommand-クリックまたはControl-クリックをすると、パスがポップアップ表示されます。 - -ウィンドウの編集状態を設定できるように、このウィンドウのドキュメントが変更されたかどうかをファイルのアイコンで示せます。 - -__Represented file ポップアップメニュー:__ - - - -ウィンドウにrepresented fileを設定するために、[BrowserWindow.setRepresentedFilename][setrepresentedfilename] と [BrowserWindow.setDocumentEdited][setdocumentedited] APIsを使えます: - -```javascript -let win = new BrowserWindow() -win.setRepresentedFilename('/etc/passwd') -win.setDocumentEdited(true) -``` - -[addrecentdocument]: ../api/app.md#appaddrecentdocumentpath-os-x-windows -[clearrecentdocuments]: ../api/app.md#appclearrecentdocuments-os-x-windows -[setusertaskstasks]: ../api/app.md#appsetusertaskstasks-windows -[setprogressbar]: ../api/browser-window.md#winsetprogressbarprogress -[setoverlayicon]: ../api/browser-window.md#winsetoverlayiconoverlay-description-windows-7 -[setrepresentedfilename]: ../api/browser-window.md#winsetrepresentedfilenamefilename-os-x -[setdocumentedited]: ../api/browser-window.md#winsetdocumenteditededited-os-x -[app-registration]: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx -[unity-launcher]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher -[setthumbarbuttons]: ../api/browser-window.md#winsetthumbarbuttonsbuttons-windows-7 -[tray-balloon]: ../api/tray.md#traydisplayballoonoptions-windows -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[notification-spec]: https://developer.gnome.org/notification-spec/ diff --git a/docs-translations/jp/tutorial/devtools-extension.md b/docs-translations/jp/tutorial/devtools-extension.md deleted file mode 100644 index 6d9a132ffcb5..000000000000 --- a/docs-translations/jp/tutorial/devtools-extension.md +++ /dev/null @@ -1,45 +0,0 @@ -# DevTools エクステンション - -簡単にデバッグをするために、Electronは[Chrome DevTools Extension][devtools-extension]に基本的な対応しています。 - -DevToolsエクステンションのために、ソースコードをダウンローし、`BrowserWindow.addDevToolsExtension` APIを使って読み込みます。読み込んだエクステンションは維持されているので、ウィンドウを作成するとき、毎回APIをコールする必要はありません。 - -** NOTE: React DevTools は動作しません。issue https://github.com/electron/electron/issues/915 をご覧ください ** - -例えば、[React DevTools Extension](https://github.com/facebook/react-devtools)を使うために、最初にソースコードをダウンロードする必要があります。 - -```bash -$ cd /some-directory -$ git clone --recursive https://github.com/facebook/react-devtools.git -``` - -エクステンションをビルドするために、[`react-devtools/shells/chrome/Readme.md`](https://github.com/facebook/react-devtools/blob/master/shells/chrome/Readme.md)を参照してください。 - -複数のウィンドウで、DevToolsを開くために、Electronでエクステンションをロードし、DevToolsコンソールで次のコードを実行します。 - -```javascript -const BrowserWindow = require('electron').remote.BrowserWindow -BrowserWindow.addDevToolsExtension('/some-directory/react-devtools/shells/chrome') -``` - -エクステンションをアンロードするために、`BrowserWindow.removeDevToolsExtension` APIを名前を指定してコールすると、次回DevToolsを開いた時にはロードされません。 - -```javascript -BrowserWindow.removeDevToolsExtension('React Developer Tools') -``` - -## DevTools エクステンションのフォーマット - -理想的には、Chromeブラウザー用に書かれたすべてのDevToolsエクステンションをElectronがロードできることですが、それらはプレーンディレクトリにある必要があります。`crx` エクステンションパッケージは、ディレクトリに解凍できる方法がなければ、Electronはロードする方法はありません。 - -## バックグラウンドページ - -今のところ、ElectronはChromeエクステンションのバックグラウンドページ機能に対応していません。そのため、Electronでは、この機能に依存するDevToolsエクステンションは動作しません。 - -## `chrome.*` APIs - -いくつかのChromeエクステンションは、`chrome.*` APIsを使用しており、ElectronでそれらのAPIを実装するための努力をしていますが、すべては実装されていません。 - -すべては実装されていない`chrome.*` APIについて考えると、もしDevToolsエクステンションが `chrome.devtools.*` 以外のAPIを使用していると、エクステンションは動作しない可能性が非常に高いです。うまく動作しないエクステンションがあれば、APIのサポートの追加のために、issue trackerへご報告ください。 - -[devtools-extension]: https://developer.chrome.com/extensions/devtools diff --git a/docs-translations/jp/tutorial/electron-versioning.md b/docs-translations/jp/tutorial/electron-versioning.md deleted file mode 100644 index e8fc8b64c5f8..000000000000 --- a/docs-translations/jp/tutorial/electron-versioning.md +++ /dev/null @@ -1,11 +0,0 @@ -# Electronのバージョン管理 - -もしあなたが経験豊富なNodeプログラマなら、`semver`(セマンティックバージョニング)のことはご存知でしょうし、バージョン番号をきっちり固定するのではなく、大まかな指針をパッケージの依存管理システムに指定していることと思います。ElectronはNodeとChromiumに強く依存しているので、少し難しい位置付けにあってsemverにきっちり従っていません。そのため、いつでも特定バージョンのElectronを参照しないといけません。 - -バージョン番号は次のルールに沿ってあげられます。 - - * メジャーバージョン: ElectronのAPIに大きな変更があった時- 例えば、`0.37.0`から`1.0.0`にアップグレードした時は、あなたはアプリケーションのアップデートをしなければなりません。 - * マイナーバージョン: ChromeのメジャーバージョンまたはNodeのマイナーバージョンのアップデート、またはElectronの重大な変更 - 例えば`1.0.0`から`1.1.0`にアップグレードした時は、あなたのアプリは多分動きますが、もしかしたら少々の変更をしないといけないかもしれません。 - * パッチ: 新しい機能やバグフィックス - `1.0.0`から`1.0.1`へのアップグレードでは、あなたのアプリはそのまま動くはずです。 - -もし、`electron-prebuilt`を使用しているのであれば、Electronのすべてのアップデートが開発者であるあなたによって手動で行われることを保証するために、固定バージョンを指定(`^1.1.0`ではなく`1.1.0`)することをお勧めします。 diff --git a/docs-translations/jp/tutorial/keyboard-shortcuts.md b/docs-translations/jp/tutorial/keyboard-shortcuts.md deleted file mode 100644 index 507a219623e3..000000000000 --- a/docs-translations/jp/tutorial/keyboard-shortcuts.md +++ /dev/null @@ -1,89 +0,0 @@ -# Keyboard Shortcuts - -> ローカル、グローバルのキーボードショートカットを設定します - -## ローカルショートカット - -[Menu] モジュールの設定により、アプリケーションにフォーカスがあるときのキーボードショートカットを設定できます。 -[MenuItem] を作成するときの [`accelerator`] プロパティで設定します。 - -```js -const {Menu, MenuItem} = require('electron') -const menu = new Menu() - -menu.append(new MenuItem({ - label: 'Print', - accelerator: 'CmdOrCtrl+P', - click: () => { console.log('time to print stuff') } -})) -``` - -キーの組み合わせをユーザのOSに基づいて変えることも簡単です。 - -```js -{ - accelerator: process.platform === 'darwin' ? 'Alt+Cmd+I' : 'Ctrl+Shift+I' -} -``` - -## グローバルショートカット - -[globalShortcut] モジュールを使うことで、アプリケーションにフォーカスがないときのキーボードイベントを検知することができます。 - -```js -const {app, globalShortcut} = require('electron') - -app.on('ready', () => { - globalShortcut.register('CommandOrControl+X', () => { - console.log('CommandOrControl+X is pressed') - }) -}) -``` - -## BrowserWindow でのキーボードショートカット - -もしキーボードショートカットイベントを [BrowserWindow] でハンドリングしたい場合は、rendererプロセスの中でwindowオブジェクトの`keyup` と `keydown` のイベントリスナーを使ってください。 - -```js -window.addEventListener('keyup', doSomething, true) -``` - -第3引数にtrueを指定した場合には、リスナーは常に他のリスナーが起動する前にキーイベントを受け取るようになります。そのため、 `stopPropagation()` を呼び出すことができないことに注意してください。 - -[`before-input-event`](web-contents.md#event-before-input-event) イベントは表示しているページの `keydown` and `keyup` イベントが発生する前に発行されます。 -メニューに表示がないショートカットも補足することができます。 - -もし自前でショートカットキーの判定を実装したくない場合には、[mousetrap] のような高度なキー検出を行うライブラリーがあります。 - -```js -Mousetrap.bind('4', () => { console.log('4') }) -Mousetrap.bind('?', () => { console.log('show shortcuts!') }) -Mousetrap.bind('esc', () => { console.log('escape') }, 'keyup') - -// combinations -Mousetrap.bind('command+shift+k', () => { console.log('command shift k') }) - -// map multiple combinations to the same callback -Mousetrap.bind(['command+k', 'ctrl+k'], () => { - console.log('command k or control k') - - // return false to prevent default behavior and stop event from bubbling - return false -}) - -// gmail style sequences -Mousetrap.bind('g i', () => { console.log('go to inbox') }) -Mousetrap.bind('* a', () => { console.log('select all') }) - -// konami code! -Mousetrap.bind('up up down down left right left right b a enter', () => { - console.log('konami code') -}) -``` - -[Menu]: ../api/menu.md -[MenuItem]: ../api/menu-item.md -[globalShortcut]: ../api/global-shortcut.md -[`accelerator`]: ../api/accelerator.md -[BrowserWindow]: ../api/browser-window.md -[mousetrap]: https://github.com/ccampbell/mousetrap diff --git a/docs-translations/jp/tutorial/mac-app-store-submission-guide.md b/docs-translations/jp/tutorial/mac-app-store-submission-guide.md deleted file mode 100644 index f396de6091d4..000000000000 --- a/docs-translations/jp/tutorial/mac-app-store-submission-guide.md +++ /dev/null @@ -1,153 +0,0 @@ -# Mac App Store 提出ガイド - -v0.34.0から、ElectronはMac App Store (MAS)にパッケージ化したアプリを登録することができます。このガイドでは、MASビルド用の制限とアプリを登録する方法についての情報を提供します。 - -__Note:__ Mac App Storeにアプリを登録するには、費用が発生する[Apple Developer Program][developer-program]に登録する必要があります。 - -## アプリを登録する方法 - -次の手順は、Mac App Storeにアプリを登録する簡単な手順を説明します。しかし、これらの手順はAppleによってAppが承認されることを保証するものではありません。Mac App Storeの要件については、Appleの[Submitting Your App][submitting-your-app]ガイドを読んでおく必要があります。 - -### 証明書の取得 - -Mac App StoreにAppを登録するには、最初にAppleから証明書を取得しなければありません。Web上で、[existing guides][nwjs-guide] を参照してください。 - -### アプリケーションの署名 - -Appleから証明書を取得した後、[Application Distribution](application-distribution.md)を参照してアプリをパッケージ化し、アプリに証明をします。この手順は、基本的にほかのプログラムと同じですが、Electronが依存するすべてに1つ1つサインします。 - -最初に、2つの資格ファイルを用意する必要があります。 - -`child.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.inherit - - - -``` - -`parent.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.application-groups - - your.bundle.id - - - -``` - -_`your.bundle.id`は`Info.plist`で指定されているあなたのアプリのBundle IDに置き換えてください。_ -そして、次のスクリプトでアプリを署名します。 - -```bash -#!/bin/bash - -# Name of your app. -APP="YourApp" -# The path of you app to sign. -APP_PATH="/path/to/YouApp.app" -# The path to the location you want to put the signed package. -RESULT_PATH="~/Desktop/$APP.pkg" -# The name of certificates you requested. -APP_KEY="3rd Party Mac Developer Application: Company Name (APPIDENTITY)" -INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)" - -FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" - -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/Contents/MacOS/$APP Helper EH" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/Contents/MacOS/$APP Helper NP" -codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/" -codesign -s "$APP_KEY" -f --entitlements child.plist "$APP_PATH/Contents/MacOS/$APP" -codesign -s "$APP_KEY" -f --entitlements parent.plist "$APP_PATH" - -productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" -``` - -macOSでのアプリのサンドボックス化を行うことが初めてなら、Appleの[Enabling App Sandbox][enable-app-sandbox]を通読し、基本的な考え方を確認してから、、エンタイトルメントファイルにアプリに必要なパーミッションキーを追加します。 - -### Appをアップロードする。 - -アプリに署名後、iTunes ConnectにアップロードするためにApplication Loaderを使用できます。アップロードする前に[created a record][create-record]を確認してください。 - -### アプリケーションを審査に提出 - -これらのステップを終えた後、[レビュー用にアプリを登録できます][submit-for-review]. - -## MAS Buildの制限 - -アプリのサンドボックスですべての要件を満たすために、MASビルドで次のモジュールを無効にしてください。 - -* `crashReporter` -* `autoUpdater` - -次の挙動を変更してください。 - -* ビデオキャプチャーはいくつかのマシンで動作しないかもしれません。 -* 一部のアクセシビリティ機能が動作しないことがあります。 -* アプリはDNSの変更を認識しません。 - -アプリのサンドボックスでの使用では、アプリがアクセスできるリソースは厳密に制限されています。詳細は、 [App Sandboxing][app-sandboxing] を参照してください。 - -## Electronが使用する暗号化アルゴリズム - -あなたが住んでいる国や地域に依存して、Mac App Store がアプリで使用する暗号化アルゴリズムを文章化することを要求することがあり、暗号登録番号(U.S. Encryption Registration (ERN))の同意のコピーの提出を求められます。 - -Electron は次の暗号アルゴリズムを使用しています: - -* AES - [NIST SP 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf), [NIST SP 800-38D](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf), [RFC 3394](http://www.ietf.org/rfc/rfc3394.txt) -* HMAC - [FIPS 198-1](http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf) -* ECDSA - ANS X9.62–2005 -* ECDH - ANS X9.63–2001 -* HKDF - [NIST SP 800-56C](http://csrc.nist.gov/publications/nistpubs/800-56C/SP-800-56C.pdf) -* PBKDF2 - [RFC 2898](https://tools.ietf.org/html/rfc2898) -* RSA - [RFC 3447](http://www.ietf.org/rfc/rfc3447) -* SHA - [FIPS 180-4](http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf) -* Blowfish - https://www.schneier.com/cryptography/blowfish/ -* CAST - [RFC 2144](https://tools.ietf.org/html/rfc2144), [RFC 2612](https://tools.ietf.org/html/rfc2612) -* DES - [FIPS 46-3](http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf) -* DH - [RFC 2631](https://tools.ietf.org/html/rfc2631) -* DSA - [ANSI X9.30](http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.30-1%3A1997) -* EC - [SEC 1](http://www.secg.org/sec1-v2.pdf) -* IDEA - "On the Design and Security of Block Ciphers" book by X. Lai -* MD2 - [RFC 1319](http://tools.ietf.org/html/rfc1319) -* MD4 - [RFC 6150](https://tools.ietf.org/html/rfc6150) -* MD5 - [RFC 1321](https://tools.ietf.org/html/rfc1321) -* MDC2 - [ISO/IEC 10118-2](https://www.openssl.org/docs/manmaster/crypto/mdc2.html) -* RC2 - [RFC 2268](https://tools.ietf.org/html/rfc2268) -* RC4 - [RFC 4345](https://tools.ietf.org/html/rfc4345) -* RC5 - http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf -* RIPEMD - [ISO/IEC 10118-3](http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%2010118-3:2004) - -ERNの同意を取得するには、 [How to legally submit an app to Apple's App Store when it uses encryption (or how to obtain an ERN)][ern-tutorial]を参照してください。 - -[developer-program]: https://developer.apple.com/support/compare-memberships/ -[submitting-your-app]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppDistributionGuide/SubmittingYourApp/SubmittingYourApp.html -[nwjs-guide]: https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline#first-steps -[enable-app-sandbox]: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html -[create-record]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.html -[submit-for-review]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html -[app-sandboxing]: https://developer.apple.com/app-sandboxing/ -[issue-3871]: https://github.com/electron/electron/issues/3871 -[ern-tutorial]: https://carouselapps.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/ -[temporary-exception]: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html diff --git a/docs-translations/jp/tutorial/online-offline-events.md b/docs-translations/jp/tutorial/online-offline-events.md deleted file mode 100644 index 49e813663d57..000000000000 --- a/docs-translations/jp/tutorial/online-offline-events.md +++ /dev/null @@ -1,81 +0,0 @@ -# オンライン/オフライン イベントの検知 - -オンラインとオフラインイベントの検知は、以下の例で示すように、標準のHTML 5 APIを使用してレンダラプロセスに実装することができます。 - -_main.js_ - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow - -let onlineStatusWindow - -app.on('ready', () => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -メインプロセスでこれらのイベントに応答したいことがあるかもしれません。しかし、メインプロセスは `navigator` オブジェクトを持たないため、直接これらのイベントを検知することができません。Electronの inter-process communication ユーティリティを使用して、オンライン・オフラインイベントをメインプロセスに転送し、必要に応じて扱うことができます。次の例を見てみましょう。 - -_main.js_ - -```javascript -const electron = require('electron') -const app = electron.app -const ipcMain = electron.ipcMain -const BrowserWindow = electron.BrowserWindow - -let onlineStatusWindow - -app.on('ready', () => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) - -ipcMain.on('online-status-changed', (event, status) => { - console.log(status) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` diff --git a/docs-translations/jp/tutorial/quick-start.md b/docs-translations/jp/tutorial/quick-start.md deleted file mode 100644 index 419d644c1308..000000000000 --- a/docs-translations/jp/tutorial/quick-start.md +++ /dev/null @@ -1,187 +0,0 @@ -# クイックスタート - -Electron ではリッチなネイティブ API を持ったランタイムを提供することによってピュアな JavaScript でデスクトップアプリケーションをつくることができます。ウェブサーバーの代わりにデスクトップアプリケーションに焦点をあてた Node.js ランタイムであるといえばわかりやすいかもしれません。 - -Electron は JavaScript を GUI ライブラリにバインディングしません。その代わりに、Electron はウェブページを GUI として使用します。なので Electron は JavaScript によってコントロールされる最小のChromium ブラウザでもあるともいえます。 - -### メインプロセス - -Electron では、`package.json` の `main` スクリプトで実行されるプロセスを __メインプロセス__ と呼びます。メインプロセスで実行されるスクリプトがウェブページを作ることによって GUI を表示することができます。 - -### レンダラープロセス - -Electron はウェブページを表示させるために Chromium を使用しているので、Chromium のマルチプロセスアーキテクチャも使用されることになります。Electron で実行されるウェブページはそれぞれ自身のプロセスで実行されます。それを __レンダラープロセス__ と呼びます。 - -通常のブラウザでは、ウェブページはサンドボックス環境で実行されネイティブなリソースへのアクセスができません。Electron ではウェブページから Node.js の API を使えるためオペレーティングシステムと低レベルなやりとりが可能です。 - -### メインプロセスとレンダラープロセスの違い - -メインプロセスは `BrowserWindow` インスタンスを作ることによってウェブページをつくります。それぞれの `BrowserWindow` インスタンスはそれ自身のレンダラープロセス上でウェブページを実行します。`BrowserWindow` インスタンスが破棄されると、対応するレンダラープロセスも終了されます。 - -メインプロセスはすべてのウェブページとそれに対応するレンダラープロセスを管理しています。それぞれのレンダラープロセスは隔離されているので、自身の中で実行されているウェブページの面倒だけをみます。 - -ウェブページでは、GUI 関連の API を呼ぶことはできません。なぜならば、ウェブページからネイティブ GUI リソースを扱うことは非常に危険であり、簡単にリソースをリークしてしまうからです。もしウェブページ内でGUI を操作したい場合には、ウェブページのレンダラープロセスはメインプロセスにそれらの操作をするように伝える必要があります。 - -Electron では、メインプロセスとレンダラープロセスとのコミュニケーションをするために [ipc](../api/ipc-renderer.md) モジュールを提供しています。またそれと、RPC 形式の通信を行う [remote](../api/remote.md) モジュールもあります。 - -Electron では、メインプロセスとレンダラープロセスとのコミュニケーションをするには幾つかの方法があります。メッセージを送信する[`ipcRenderer`](../api/ipc-renderer.md)モジュールと[`ipcMain`](../api/ipc-main.md)モジュールのように、RPC 形式の通信を行う[remote](../api/remote.md)モジュールです。[ウェブページ間のデータを共有する方法][share-data]にFAQエントリーがあります。 - -## Electronアプリを作成する - -一般的に Electron アプリの構成は次のようになります: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -`package.json` の形式は Node モジュールとまったく同じです。 `main` フィールドで指定するスクリプトはアプリの起動スクリプトであり、メインプロセスを実行します。 `package.json` の例は次のようになります: - -```javascripton -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__注記__: `package.json` に `main` が存在しない場合、Electron は `index.js` のロードを試みます。 - -`main.js` ではウィンドウを作成してシステムイベントを管理します。典型的な例は次のようになります: - -```javascript -const electron = require('electron') -// アプリケーションを操作するモジュール -const {app} = electron -// ネイティブブラウザウィンドウを作成するモジュール -const {BrowserWindow} = electron - -// ウィンドウオブジェクトをグローバル参照をしておくこと。 -// しないと、ガベージコレクタにより自動的に閉じられてしまう。 -let win - -function createWindow () { - // ブラウザウィンドウの作成 - win = new BrowserWindow({width: 800, height: 600}) - - // アプリケーションのindex.htmlの読み込み - win.loadURL(`file://${__dirname}/index.html`) - - // DevToolsを開く - win.webContents.openDevTools() - - // ウィンドウが閉じられた時に発行される - win.on('closed', () => { - // ウィンドウオブジェクトを参照から外す。 - // もし何個かウィンドウがあるならば、配列として持っておいて、対応するウィンドウのオブジェクトを消去するべき。 - win = null - }) -} - -// このメソッドはElectronが初期化を終えて、ブラウザウィンドウを作成可能になった時に呼び出される。 -// 幾つかのAPIはこのイベントの後でしか使えない。 -app.on('ready', createWindow) - -// すべてのウィンドウが閉じられた時にアプリケーションを終了する。 -app.on('window-all-closed', () => { - // macOSでは、Cmd + Q(終了)をユーザーが実行するまではウィンドウが全て閉じられても終了しないでおく。 - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // macOS では、ドックをクリックされた時にウィンドウがなければ新しく作成する。 - if (win === null) { - createWindow() - } -}) - -// このファイルでアプリケーション固有のメインプロセスのコードを読み込むことができる。 -// ファイルを別に分けておいてここでrequireすることもできる。 -``` - -最後に、表示するウェブページ `index.html` は次のようになります: - -```html - - - - - Hello World! - - -

Hello World!

- We are using node , - Chrome , - and Electron . - - -``` - -## アプリを実行する - -最初の `main.js`、`index.html`、`package.json` を作ったら、手元でアプリを実行し、思った通りに動くのを確認したいでしょう。 - -### electron-prebuilt - -[`electron-prebuilt`](https://github.com/electron-userland/electron-prebuilt)は、コンパイル済みのElectronを含んだ`npm`モジュールです。 - -`npm`でグローバルインストールをしているなら、下記のコマンドをアプリケーションのソースディレクトリで実行するだけで済みます。 - -```bash -electron . -``` - -ローカルにインストールしているなら以下を実行してください: - -```bash -./node_modules/.bin/electron . -``` - -### 手動ダウンロードした Electron バイナリを使う場合 - -もしも Electron を手動ダウンロードしているなら、同梱されているバイナリであなたのアプリを直接実行できます。 - -#### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -#### Linux - -```bash -$ ./electron/electron your-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` は Electron のリリースパッケージの一部で、[ここ](https://github.com/electron/electron/releases) からダウンロードできます。 - -### Run as a distribution - -アプリケーションを作り終えたら、[Application distribution](./application-distribution.md) ガイドにしたがってディストリビューションを作成し、そしてパッケージされたアプリケーションとして実行することが可能です。 - -### 試してみよう - -このチュートリアルのコードは [`atom/electron-quick-start`](https://github.com/electron/electron-quick-start) リポジトリから clone して実行できます。 - -**注記**:例を試すには、[Git](https://git-scm.com) と [Node.js](https://nodejs.org/en/download/) ([npm](https://npmjs.org) もこれに含まれています) が必要です。 - -```bash -# Clone the repository -$ git clone https://github.com/electron/electron-quick-start -# Go into the repository -$ cd electron-quick-start -# Install dependencies and run the app -$ npm install && npm start -``` - -[share-data]: ../faq/electron-faq.md#how-to-share-data-between-web-pages diff --git a/docs-translations/jp/tutorial/security.md b/docs-translations/jp/tutorial/security.md deleted file mode 100644 index 70b84cce70f8..000000000000 --- a/docs-translations/jp/tutorial/security.md +++ /dev/null @@ -1,43 +0,0 @@ -# セキュリティ・ネイティブ実行で出来ること・あなたの責任 - -Web開発者として、通常私たちはブラウザの強力なセキュリティ機能の恩恵を受けていますーそのため、書いたコードによる危険性は比較的小さいものです。 -ウェブサイトはサンドボックス内で限定された能力のみを使用することが許されていて、また、新しく見つかったセキュリティ脆弱性に素早く対処してくれるたくさんのプログラマチームによって作られたブラウザをユーザーが使ってくれています。 - -Electronを使用するにあたって、「Electronはウェブブラウザではない」ということを理解するのが大切です。使い慣れたWebテクノロジで豊富な機能を持ったデスクトップアプリケーションを作ることができますが、書いたコードはより強力な力を行使することのできるものです。JavaScriptでファイルシステム・シェルなどにアクセスすることができます。これによって、高機能なネイティブアプリケーションを作ることができますが、コードが許された力に比例して、受けるセキュリティリスクも大きいものになります。 - -そのことを頭に入れて、信頼できないソースから得られた任意の内容を表示することは、Electronが意図しない重要なセキュリティリスクを生み出すことに注意してください。 -実際、多くのElectronアプリケーション(Atom, Slack, Visual Studio Code など)は主としてローカルにあるファイルの内容(やNode integration外の信頼できる内容)を表示します。もしアプリケーション上でオンライン上から得られるコードを実行する場合、内容が悪意のあるものでないことを確認するのはあなたの責任です。 - - -# Chromium のセキュリティ問題とアップグレード - -Electronは新しいバージョンのChromiumを出来るだけ早くサポートするように努力をしてはいますが、アップグレードは数十、時には数百のファイルの編集を含む大変な左表であることを後理解ください。たくさんのリソースと貢献を受けていますが、ElectronはChromium最新版に追いついてないこともあり、数日・数週間遅れることがあります。 - -現在のChromiumコンポーネントのアップデートシステムは、使用できるリソースとほとんどのアプリケーションの需要を満たす、適切なバランスの場所にあると思います。我々は、Electronを使用する個々のケースに関する意見をいただきたいと思っています。この件に関するPull requestと貢献をいつでも歓迎します。 - - -## 上記の忠告を無視した場合 -リモートで得られたコードをローカルで実行した場合、セキュリティ問題が発生することになります。 -例えば、ブラウザでリモートのウェブサイトを表示することを考えてみてください。 -もし攻撃者がどうにかして(情報源そのものの攻撃や中間者攻撃によって)得られる内容を変更した場合、ユーザーのPC上でネイティブコードを実行できることになります。 - -> :warning: Node integration有効な環境で、リモートコードの読み込みと実行を行うべきではありません。代わりに、Nodeコードの実行にはローカルのファイルを使用してください。 -リモートのデータの内容を表示するには`webview`を使用して、`nodeIntegration`を無効にしてください。 - -#### チェックリスト -このリストは、防弾チョッキのように攻撃を防げるものではないですが、最低限あなたがしなければいけないことを記載しています。 - -* セキュア(https)な内容のみを表示してください。 -* リモートの内容を表示する全てのレンダラでNode integrationを無効にしてください (`webPreferences`を使用) -* `webSecurity`を無効にしないください。無効にすると、same-origin policyが無効になります。 -* [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/)を定義して、スクリプトの読み込み元を制限してください。(例: `script-src 'self'`) -* [`eval`を無効にしてください。](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6) evalは文字列をコードとして実行してしまいます。 -* `allowRunningInsecureContent` を有効にしないでください。 -* しっかり理解していない限りは`experimentalFeatures`や`experimentalCanvasFeatures`を有効にしないでください。 -* しっかり理解していない限りは`blinkFeatures`を有効にしないでください。 -* WebView: `nodeintegration`を無効にしてください。 -* WebView: `disablewebsecurity`を使用しないでください。 -* WebView: `allowpopups`を使用しないでください。 -* WebView: `insertCSS`や`executeJavaScript`を外部のCSS/JSに使用しないでください。 - -再確認ですが、このリストは単にリスクを小さくするもので、リスクをなくすものではありません。もしウェブサイトを表示することが目的なら、ブラウザを使うのがより安全な選択肢です。 diff --git a/docs-translations/jp/tutorial/supported-platforms.md b/docs-translations/jp/tutorial/supported-platforms.md deleted file mode 100644 index 07da250f1b91..000000000000 --- a/docs-translations/jp/tutorial/supported-platforms.md +++ /dev/null @@ -1,24 +0,0 @@ -# サポートするプラットフォーム - -Electronでは次のプラットフォームをサポートします。 - -### macOS - -macOS用に提供しているバイナリは64bitのみで、サポートするmacOSのバージョンは、macOS 10.9 以降です。 - -### Windows - -Windows 7 以降をサポートしており、それ以前のオペレーティングシステムはサポートしていません(し、動作しません)。 - -`x86` と `amd64` (x64) の両方のバイナリが、Windows用に提供しています。 -ただし、`ARM` バージョンのWindowsは今のところサポートしていません。 - -### Linux - -`ia32`(`i686`) と `x64`(`amd64`) のビルド済みバイナリは、Ubuntu 12.04上でビルドされ、`arm` バイナリは、Debian Wheezy用のhard-float ABIとNEONのARM v7を対象にビルドしています。 - -Electronはビルドプラットフォームにリンクされているので、ディストリビューションに同梱されているライブラリに依存しているかどうかに関係なくディストリビューション上で動作します。そのため Ubuntu 12.04 のみを動作保証しますが、次のプラットフォームについてもビルド済みのElectronバイナリを実行できるか検証します。 - -* Ubuntu 12.04 以降 -* Fedora 21 -* Debian 8 diff --git a/docs-translations/jp/tutorial/testing-on-headless-ci.md b/docs-translations/jp/tutorial/testing-on-headless-ci.md deleted file mode 100644 index 7fba4fef7d18..000000000000 --- a/docs-translations/jp/tutorial/testing-on-headless-ci.md +++ /dev/null @@ -1,43 +0,0 @@ -# 継続的インテグレーションシステムによるテスト(Travis CI, Jenkins) - -Electron は Chromium を元にしているので、実行にはディスプレイドライバーが必要です。Chromium がディスプレイドライバーを見つけられないと、Electron は起動に失敗してテストの実行ができません。Travis や Circle、 Jenkins などの継続的インテグレーションシステムで Electron アプリをテストするにはちょっとした設定が必要です。端的に言うと仮想ディスプレイドライバーを使用します。 - -## 仮想ディスプレイサーバーの設定 - -まず [Xvfb](https://en.wikipedia.org/wiki/Xvfb) をインストールします(リンク先は英語)。Xvfb は X Window System のプロトコルを実装した仮想フレームバッファです。描画系の操作をスクリーン表示無しにメモリ内で行ってくれます。 - -その後 xvfb の仮想スクリーンを作成して、環境変数 `$DISPLAY` に作成した仮想スクリーンを指定します。Electron の Chromium は自動で`$DISPLAY`を見るので、アプリ側の設定は必要ありません。この手順は Paul Betts 氏が公開しているツール [xvfb-maybe](https://github.com/paulcbetts/xvfb-maybe) によって自動化されています。テスト実行コマンドの前に `xvfb-maybe` を追加するだけで、現在のシステムが必要とする xvfb の設定を自動で行ってくれます。xvfb の設定が必要ない Windows や macOS では何もしません。 - -``` -## Windows や macOS では以下のコマンドは electron-mocha をただ起動するだけです。 -## Linux でかつ GUI 環境でない場合、以下のコマンドは -## xvfb-run electron-mocha ./test/*.js と同等になります。 -xvfb-maybe electron-mocha ./test/*.js -``` - -### Travis CI - -Travis では `.travis.yml` を以下のようにするといいでしょう。 - -```yml -addons: - apt: - packages: - - xvfb - -install: - - export DISPLAY=':99.0' - - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & -``` - -### Jenkins - -Jenkins では [Xvfb plugin](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin) という便利なプラグインが利用可能です(リンク先は英語)。 - -### Circle CI - -Circle CI では、なんと既に xvfb 及び `$DISPLAY` が設定されているので、[何の設定も必要ありません](https://circleci.com/docs/environment#browsers)(リンク先は英語)。 - -### AppVeyor - -AppVeyor は Selenium や Chromium、Electron などをサポートしている Windows 上で動くので、特に設定は必要ありません。 diff --git a/docs-translations/jp/tutorial/using-native-node-modules.md b/docs-translations/jp/tutorial/using-native-node-modules.md deleted file mode 100644 index a29797fa654f..000000000000 --- a/docs-translations/jp/tutorial/using-native-node-modules.md +++ /dev/null @@ -1,50 +0,0 @@ -# ネイティブのNodeモジュールを使用する - -Electronは、ネイティブのNodeモジュールをサポートしていますが、Node公式とは異なるV8バージョンを使用しているので、ネイティブモジュールでビルドする時、Electronのヘッダーで指定する必要があります。 - -## ネイティブNodeモジュールとの互換性 - -Nodeが新しいV8バージョンを使用し始めた時、Nativeモジュールは動作しなくなるかもしれません。ElectronでNativeモジュールが動作するかどうかを確認するために、Electronで使用する内部のNodeバージョンがサポートしているかを確認すべきです。ElectronでNodeが使用しているバージョンを確認するには、[releases](https://github.com/electron/electron/releases)ページを見るか、`process.version` (例えば [Quick Start](https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md)を見てください)を使用してください。 - -Nodeの複数バージョンを簡単にサポートできるので、あなたのモジュールに [NAN](https://github.com/nodejs/nan/) を使うことを検討してください。古いバージョンからElectronで動作するNodeの新しいバージョンへ移植するのに役立ちます。 - -## ネイティブモジュールのインストール方法 - -ネイティブモジュールをインストールするための3つの方法: - -### 簡単な方法 - -ヘッダーをダウンロードし、ネイティブモジュールをビルドする手順をマニュアルで管理する、[`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) パッケージ経由で、ネイティブモジュールをリビルドするのが最も簡単な方法です。 - -```sh -npm install --save-dev electron-rebuild - -# Every time you run "npm install", run this -./node_modules/.bin/electron-rebuild - -# On Windows if you have trouble, try: -.\node_modules\.bin\electron-rebuild.cmd -``` - -### npmを使う方法 - -モジュールをインストールするために`npm` を使用できます。環境変数の設定を除いて、Nodeモジュールと完全に同じ手順です。 - -```bash -export npm_config_disturl=https://atom.io/download/electron -export npm_config_target=0.33.1 -export npm_config_arch=x64 -export npm_config_runtime=electron -HOME=~/.electron-gyp npm install module-name -``` - -### node-gypを使う方法 - -ElectronのヘッダーでNodeモジュールをビルドするために、どこからヘッダーをダウンロードするかとどのバージョンを使用するかを選択して`node-gyp`を実行する必要があります。 - -```bash -$ cd /path-to-module/ -$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/electron -``` - -開発ヘッダーを探し、 `HOME=~/.electron-gyp` を変更します。`--target=0.29.1`がElectronのバージョンです。 `--dist-url=...` で、どこからヘッダーをダウンロードするかを指定します。`--arch=x64`を使用して、64bit システム用にモジュールをビルドします。 diff --git a/docs-translations/jp/tutorial/using-pepper-flash-plugin.md b/docs-translations/jp/tutorial/using-pepper-flash-plugin.md deleted file mode 100644 index b6adad4089c3..000000000000 --- a/docs-translations/jp/tutorial/using-pepper-flash-plugin.md +++ /dev/null @@ -1,51 +0,0 @@ -# Pepper Flash プラグインを使用する - -Electronは、Pepper Flashプラグインをサポートしています。ElectronでPepper Flashプラグインを使用するために、マニュアルでPepper Flashプラグインのパスを指定し、アプリケーションで有効化しなければなりません。 - - -## Flash プラグインのコピー準備 - -macOSとLinuxでは、Pepper Flashプラグインの詳細は、Chromeブラウザーで、`chrome://plugins` にアクセスして確認できます。そこで表示されるパスとバージョンは、ElectronのPepper Flashサポートに役立ちます。それを別のパスにコピーすることができます。 - -## Electron スイッチの追加 - -直接、Electronコマンドラインに`--ppapi-flash-path` と `ppapi-flash-version` を追加するか、 アプリのreadyイベントの前に、`app.commandLine.appendSwitch`メソッドを使用します。`browser-window`の`plugins`スイッチを追加します。 - -例: - -```javascript -// Specify flash path. -// On Windows, it might be /path/to/pepflashplayer.dll -// On macOS, /path/to/PepperFlashPlayer.plugin -// On Linux, /path/to/libpepflashplayer.so -app.commandLine.appendSwitch('ppapi-flash-path', '/path/to/libpepflashplayer.so') - -// Specify flash version, for example, v17.0.0.169 -app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169') - -app.on('ready', function () { - mainWindow = new BrowserWindow({ - 'width': 800, - 'height': 600, - 'web-preferences': { - 'plugins': true - } - }) - mainWindow.loadURL(`file://${__dirname}/index.html`) - // Something else -}) -``` - -## `` タグでFlashプラグインを有効化 - -`` タグに`plugins`属性を追加する - -```html - -``` - -## トラブルシューティング - -Pepper Flashプラグインが読み込まれているかは、devtoolsのconsoleで`navigator.plugins`を見ることで確認することができます。(プラグインのパスが正しいかがわからなくても) - -Pepper FlashプラグインのアーキテクチャはElectronのアーキテクチャと一致している必要があります。Windowsで、64bit Electronに32bit Flashプラグインを使用するのはよくある間違いです。 diff --git a/docs-translations/jp/tutorial/using-selenium-and-webdriver.md b/docs-translations/jp/tutorial/using-selenium-and-webdriver.md deleted file mode 100644 index 1584ab736fdf..000000000000 --- a/docs-translations/jp/tutorial/using-selenium-and-webdriver.md +++ /dev/null @@ -1,159 +0,0 @@ -# Selenium と WebDriverを使用する - -[ChromeDriver - WebDriver for Chrome][chrome-driver]より: - -> WebDriverは、複数のブラウザ間でWebアプリの自動テストをするためのオープンソースツールです。Webページの移動、ユーザー入力、JavaScriptの実行などを可能にします。ChromeDriverはChromium用のWebDriverのワイヤープロトコルで実装されたスタンドアロンサーバーです。ChromiumとWebDriverチームメンバーが開発しています。 - -Electronで `chromedriver` を使用するために、Electronがどこにあるかを示し、ElectronはChromeブラウザーであると思わせます。 - -## Spectronの設定 - -[Spectron][spectron]はElectronのための公式なChromeDriverテストフレームワークです。 -[WebdriverIO](http://webdriver.io/)に基づいてビルドされており、テストの中でElectron APIを使用するヘルパーやChromeDriveを持っています。 - -```bash -$ npm install --save-dev spectron -``` - -```javascript -// 可視のウィンドウがタイトル付きで開かれているかを調べる簡単なテスト -var Application = require('spectron').Application -var assert = require('assert') - -var app = new Application({ - path: '/Applications/MyApp.app/Contents/MacOS/MyApp' -}) - -app.start().then(function () { - // ウィンドウは表示されている? - return app.browserWindow.isVisible() -}).then(function (isVisible) { - // ウィンドウが表示されているか確認 - assert.equal(isVisible, true) -}).then(function () { - // ウィンドウのタイトルを取得 - return app.client.getTitle() -}).then(function (title) { - // ウィンドウのタイトルを確認 - assert.equal(title, 'My App') -}).then(function () { - // アプリケーションを止める - return app.stop() -}).catch(function (error) { - // 失敗した場合ログを残す - console.error('Test failed', error.message) -}) -``` - -## WebDriverJsを設定 - -[WebDriverJs](https://code.google.com/p/selenium/wiki/WebDriverJs) は、web driver でテストするためのNodeパッケージを提供します。例のように使用します。 - -### 1. ChromeDriverを開始 - -最初に、 `chromedriver` バイナリをダウンロードし、実行します: - -```bash -$ ./chromedriver -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -ポート番号 `9515`を覚えておいてください、あとで使用します。 - -### 2. WebDriverJSのインストール - -```bash -$ npm install selenium-webdriver -``` - -### 3. ChromeDriverに接続する - -Electronでの `selenium-webdriver` 使用方法は、chrome driverへの接続方法とElectronバイナリがどこにあるかをマニュアルで指定する以外は、upstreamと基本的に同じです。 - -```javascript -const webdriver = require('selenium-webdriver') - -const driver = new webdriver.Builder() - // The "9515" is the port opened by chrome driver. - .usingServer('http://localhost:9515') - .withCapabilities({ - chromeOptions: { - // Here is the path to your Electron binary. - binary: '/Path-to-Your-App.app/Contents/MacOS/Electron' - } - }) - .forBrowser('electron') - .build() - -driver.get('http://www.google.com') -driver.findElement(webdriver.By.name('q')).sendKeys('webdriver') -driver.findElement(webdriver.By.name('btnG')).click() -driver.wait(function () { - return driver.getTitle().then(function (title) { - return title === 'webdriver - Google Search' - }) -}, 1000) - -driver.quit() -``` - -## WebdriverIOのセットアップをする - -[WebdriverIO](http://webdriver.io/) は、web driverでテストするNodeパッケージを提供します。 - -### 1. ChromeDriverを開始する - -最初に、 `chromedriver` バイナリをダウンロードし、実行します。: - -```bash -$ chromedriver --url-base=wd/hub --port=9515 -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -ポート番号 `9515`を覚えておいてください、あとで使用します。 - -### 2. WebdriverIOをインストールする - -```bash -$ npm install webdriverio -``` - -### 3. chrome driverに接続する - -```javascript -const webdriverio = require('webdriverio') -const options = { - host: 'localhost', // Use localhost as chrome driver server - port: 9515, // "9515" is the port opened by chrome driver. - desiredCapabilities: { - browserName: 'chrome', - chromeOptions: { - binary: '/Path-to-Your-App/electron', // Path to your Electron binary. - args: [/* cli arguments */] // Optional, perhaps 'app=' + /path/to/your/app/ - } - } -} - -let client = webdriverio.remote(options) - -client - .init() - .url('http://google.com') - .setValue('#q', 'webdriverio') - .click('#btnG') - .getTitle().then((title) => { - console.log('Title was: ' + title) - }) - .end() -``` - -## ワークフロー - -Electronはリビルドせずにアプリケーションをテストするために、単純にElectronのリソースディレクトリでアプリのソースを[配置します](https://github.com/electron/electron/blob/master/docs/tutorial/application-distribution.md)。 - -もしくは、アプリのフォルダーを引数にしてElectronバイナリを実行します。これによって、Electronのリソースディレクトリにアプリをコピー&ペーストする必要がなくなります。 - -[chrome-driver]: https://sites.google.com/a/chromium.org/chromedriver/ -[spectron]: https://electron.atom.io/spectron diff --git a/docs-translations/jp/tutorial/using-widevine-cdm-plugin.md b/docs-translations/jp/tutorial/using-widevine-cdm-plugin.md deleted file mode 100644 index 81649a7ac4c7..000000000000 --- a/docs-translations/jp/tutorial/using-widevine-cdm-plugin.md +++ /dev/null @@ -1,59 +0,0 @@ -# Widevine CDM Pluginを使用する - -Electronで、Chromeブラウザーに同梱される Widevine CDMプラグインを使用できます。 - -## プラグインを取得する - -Electronは、ライセンス的な理由でWidevine CDMプラグインは同梱されません。Widevine CDMプラグインを取得するために、最初に、使用するElectronビルドのChromeバージョンとアーキテクチャを合わせた公式のChromeブラウザーをインストールする必要があります。 - -__Note:__ Chromeブラウザのメジャーバージョンは、Electronが使用するChromeバージョンと同じでなければなりません。そうでなければ、プラグインは、`navigator.plugins`経由でロードされて表示されるにも関わらず動作しません。 - -### Windows & macOS - -Chromeブラウザーで、`chrome://components/`を開き、 `WidevineCdm` を探し、それが最新であることを確認し、`APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/`ディレクトリからすべてのプラグインバイナリを探します。 - -`APP_DATA` は、アプリデータを格納するシステムロケーションです。Windowsでは`%LOCALAPPDATA%`、macOSでは`~/Library/Application Support`です。`VERSION` は、Widevine CDM プラグインのバージョン文字列で、 `1.4.8.866`のような文字列が格納されます。`PLATFORM` は、 `mac` か `win`です。`ARCH` は `x86` か `x64`です。 - -Windowsでは、`widevinecdm.dll` と `widevinecdmadapter.dll`が必要で、macOSでは、`libwidevinecdm.dylib` と `widevinecdmadapter.plugin`です。任意の場所にコピーできますが、一緒に配置する必要があります。 - -### Linux - -Linux上では、プラグインバイナリは、Chromeブラウザーにいっほに格納され、 `/opt/google/chrome` 配下にあり、ファイル名は `libwidevinecdm.so` と `libwidevinecdmadapter.so`です。 - -## プラグインを使用する - -プラグインファイルを取得した後、Electronoの`--widevine-cdm-path`コマンドラインスイッチで`widevinecdmadapter`のパスを指定し、`--widevine-cdm-version`スイッチでプラグインのバージョンを指定します。 - -__Note:__ `widevinecdmadapter` バイナリはElectronにパスが通っていても`widevinecdm` バイナリはそこに置く必要があります。 - -コマンドラインスイッチは、`app`モジュールの`ready`イベントが発火する前に通り、プラグインが使用するページは、プラグインを有効にしなければなりません。 - -サンプルコード: - -```javascript -// You have to pass the filename of `widevinecdmadapter` here, it is -// * `widevinecdmadapter.plugin` on macOS, -// * `libwidevinecdmadapter.so` on Linux, -// * `widevinecdmadapter.dll` on Windows. -app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin') -// The version of plugin can be got from `chrome://plugins` page in Chrome. -app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866') - -let win = null -app.on('ready', () => { - win = new BrowserWindow({ - webPreferences: { - // The `plugins` have to be enabled. - plugins: true - } - }) -}) -``` - -## プラグインの検証 - -プラグインが動作するかどうかを検証するために、次の方法を使用できます。 - -* devtoolsを開き、Widevine CDMプラグインに`navigator.plugins`が含まれているかどうかを確認します。 -* https://shaka-player-demo.appspot.com/ を開き、`Widevine`で使用するマニフェストをロードします。 -* http://www.dash-player.com/demo/drm-test-area/を開き、`bitdash uses Widevine in your browser`をチェックし、ビデオを再生します。 diff --git a/docs-translations/ko-KR/README.md b/docs-translations/ko-KR/README.md deleted file mode 100644 index f5361dd360c0..000000000000 --- a/docs-translations/ko-KR/README.md +++ /dev/null @@ -1,104 +0,0 @@ -반드시 사용하는 Electron 버전과 문서 버전을 일치시켜야 합니다. 버전 숫자는 문서 -페이지 URL에 포함되어 있습니다. 만약 그렇지 않다면, 아마 개발 브랜치의 문서일 -것이며 당신의 Electron 버전과 호환되지 않는 API 변경을 포함할 것 입니다. -이전 버전 문서는 깃허브에서 [태그로 열어](https://github.com/electron/electron/tree/v1.4.0) 볼 수 있습니다. -"branches/tags 변경" 드롭다운을 열고 해당 버전의 태그를 선택하세요. - -**역자주:** 한국어 번역 문서는 `atom.io`에 반영되어 있지 않습니다. 한국어 번역 -문서는 현재 `upstream` 원본 문서의 변경에 따라 최대한 문서의 버전을 맞추려고 -노력하고 있지만 가끔 누락된 번역이 존재할 수 있습니다. - -## FAQ - -Electron에 대해 자주 묻는 질문이 있습니다. 이슈를 생성하기 전에 다음 문서를 -먼저 확인해 보세요: - -* [Electron FAQ](faq.md) - -## 개발 가이드 - -* [지원하는 플랫폼](tutorial/supported-platforms.md) -* [보안](tutorial/security.md) -* [Electron 버전 관리](tutorial/electron-versioning.md) -* [애플리케이션 배포](tutorial/application-distribution.md) -* [Mac 앱스토어 애플리케이션 제출 가이드](tutorial/mac-app-store-submission-guide.md) -* [Windows 스토어 가이드](tutorial/windows-store-guide.md) -* [애플리케이션 패키징](tutorial/application-packaging.md) -* [네이티브 Node 모듈 사용하기](tutorial/using-native-node-modules.md) -* [메인 프로세스 디버깅하기](tutorial/debugging-main-process.md) -* [Selenium 과 WebDriver 사용하기](tutorial/using-selenium-and-webdriver.md) -* [개발자 도구 확장 기능](tutorial/devtools-extension.md) -* [Pepper 플래시 플러그인 사용하기](tutorial/using-pepper-flash-plugin.md) -* [Widevine CDM 플러그인 사용하기](tutorial/using-widevine-cdm-plugin.md) -* [Headless CI 시스템에서 테스팅하기 (Travis, Jenkins)](tutorial/testing-on-headless-ci.md) -* [오프 스크린 렌더링](tutorial/offscreen-rendering.md) - -## 튜토리얼 - -* [시작하기](tutorial/quick-start.md) -* [데스크톱 환경 통합](tutorial/desktop-environment-integration.md) -* [온/오프라인 이벤트 감지](tutorial/online-offline-events.md) -* [REPL](tutorial/repl.md) - -## API 레퍼런스 - -* [개요](api/synopsis.md) -* [Process 객체](api/process.md) -* [크롬 명령줄 스위치 지원](api/chrome-command-line-switches.md) -* [환경 변수](api/environment-variables.md) - -### 커스텀 DOM 요소: - -* [`File` 객체](api/file-object.md) -* [`` 태그](api/webview-tag.md) -* [`window.open` 함수](api/window-open.md) - -### 메인 프로세스에서 사용할 수 있는 모듈: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [net](api/net.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [systemPreferences](api/system-preferences.md) -* [Tray](api/tray.md) -* [webContents](api/web-contents.md) - -### 렌더러 프로세스에서 사용할 수 있는 모듈 (웹 페이지): - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### 두 프로세스 모두 사용할 수 있는 모듈: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## 개발자용 - -* [코딩 스타일](development/coding-style.md) -* [C++ 코드에서 clang-format 사용하기](development/clang-format.md) -* [소스 코드 디렉터리 구조](development/source-code-directory-structure.md) -* [NW.js(node-webkit)와 기술적으로 다른점](development/atom-shell-vs-node-webkit.md) -* [빌드 시스템 개요](development/build-system-overview.md) -* [빌드 설명서 (macOS)](development/build-instructions-osx.md) -* [빌드 설명서 (Windows)](development/build-instructions-windows.md) -* [빌드 설명서 (Linux)](development/build-instructions-linux.md) -* [디버그 설명서 (macOS)](development/debug-instructions-macos.md) -* [디버그 설명서 (Windows)](development/debug-instructions-windows.md) -* [디버거 심볼 서버 설정](development/setting-up-symbol-server.md) -* [문서 스타일가이드](styleguide.md) diff --git a/docs-translations/ko-KR/api/accelerator.md b/docs-translations/ko-KR/api/accelerator.md deleted file mode 100644 index d9889bcee98d..000000000000 --- a/docs-translations/ko-KR/api/accelerator.md +++ /dev/null @@ -1,73 +0,0 @@ -# Accelerator - -> 키보드 단축키를 정의합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -Accelerator 는 `+` 문자로 결합된 여러 수식어와 키 코드를 포함할 수 있는 -문자열입니다. 그리고 애플리케이션의 키보드 단축키를 정의하는데 사용됩니다. - -예시: - -* `CommandOrControl+A` -* `CommandOrControl+Shift+Z` - -단축키는 [`globalShortcut`](global-shortcut.md) 모듈의 -[`register`](global-shortcut.md#globalshortcutregisteraccelerator-callback) -메소드로 등록됩니다. 예시: - -```javascript -const {app, globalShortcut} = require('electron') - -app.on('ready', () => { - // '커맨드 또는 컨트롤+Y' 단축키 리스너 등록. - globalShortcut.register('CommandOrControl+Y', () => { - // 커맨드/컨트롤과 Y 가 눌렸을 때 할 동작. - }) -}) -``` - -## 플랫폼에 관련하여 주의할 점 - -Linux와 Windows에서는 `Command`키가 없으므로 작동하지 않습니다. 대신에 -`CommandOrControl`을 사용하면 macOS의 `Command`와 Linux, Windows의 `Control` 모두 -지원할 수 있습니다. - -`Option` 대신 `Alt`을 사용하는게 좋습니다. `Option` 키는 macOS에만 있으므로 -모든 플랫폼에서 사용할 수 있는 `Alt` 키를 권장합니다. - -`Super`키는 Windows와 Linux 에서는 `윈도우`키를, macOS에서는 `Cmd`키로 맵핑됩니다. - -## 사용 가능한 혼합키 - -* `Command` (단축어 `Cmd`) -* `Control` (단축어 `Ctrl`) -* `CommandOrControl` (단축어 `CmdOrCtrl`) -* `Alt` -* `Option` -* `AltGr` -* `Shift` -* `Super` - -## 사용 가능한 전체 키코드 - -* `0` 부터 `9` 까지 -* `A` 부터 `Z` 까지 -* `F1` 부터 `F24` 까지 -* `~`, `!`, `@`, `#`, `$`, etc 와 같은 구두점 기호들 -* `Plus` -* `Space` -* `Tab` -* `Backspace` -* `Delete` -* `Insert` -* `Return` (또는 `Enter`) -* `Up`, `Down`, `Left` 와 `Right` -* `Home` 그리고 `End` -* `PageUp` 그리고 `PageDown` -* `Escape` (단축어 `Esc`) -* `VolumeUp`, `VolumeDown` 그리고 `VolumeMute` -* `MediaNextTrack`, `MediaPreviousTrack`, `MediaStop` 그리고 `MediaPlayPause` -* `PrintScreen` - -__키코드는 `단축어`로도 사용할 수 있습니다__ diff --git a/docs-translations/ko-KR/api/app.md b/docs-translations/ko-KR/api/app.md deleted file mode 100644 index ec0711e693e3..000000000000 --- a/docs-translations/ko-KR/api/app.md +++ /dev/null @@ -1,944 +0,0 @@ -# app - -> 애플리케이션의 이벤트 생명주기를 제어합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -밑의 예시는 마지막 윈도우가 종료되었을 때, 애플리케이션을 종료시키는 예시입니다: - -```javascript -const {app} = require('electron') -app.on('window-all-closed', () => { - app.quit() -}) -``` - -## Events - -`app` 객체는 다음과 같은 이벤트를 가지고 있습니다: - -### Event: 'will-finish-launching' - -애플리케이션이 기본적인 시작 준비를 마치면 발생하는 이벤트입니다. -Windows, Linux 운영체제에서의 `will-finish-launching` 이벤트는 `ready` 이벤트와 -동일합니다. macOS에서의 이벤트는 `NSApplication`의 -`applicationWillFinishLaunching`에 대한 알림으로 표현됩니다. 대개 이곳에서 -`open-file`과 `open-url` 이벤트 리스너를 설정하고 crash reporter와 auto updater를 -시작합니다. - -대부분의 경우, 모든 것을 `ready` 이벤트 핸들러 안에서 해결해야 합니다. - -### Event: 'ready' - -Returns: - -* `launchInfo` Object _macOS_ - -Electron이 초기화를 끝냈을 때 발생하는 이벤트입니다. - -### Event: 'window-all-closed' - -모든 윈도우가 종료되었을 때 발생하는 이벤트입니다. - -만약 이 이벤트를 구독하지 않은 상태로 모든 윈도우가 닫혔을 때의 기본 동작은 앱을 -종료하는 것입니다. 하지만, 이 이벤트를 구독하면, 앱을 종료할지 다른 일을 할지 제어할 -수 있습니다. 만약 사용자가 `Cmd + Q`를 입력했거나 개발자가 `app.quit()`를 호출했다면, -Electron은 먼저 모든 윈도우의 종료를 시도하고 `will-quit` 이벤트를 발생시킵니다. -그리고 `will-quit` 이벤트가 발생했을 땐 `window-all-closed` 이벤트가 발생하지 -않습니다. - -**역자주:** 이 이벤트는 말 그대로 현재 애플리케이션에서 윈도우만 완전히 종료됬을 때 -발생하는 이벤트입니다. 따라서 애플리케이션을 완전히 종료하려면 이 이벤트에서 -`app.quit()`를 호출해 주어야 합니다. - -### Event: 'before-quit' - -Returns: - -* `event` Event - -애플리케이션 윈도우들이 닫히기 시작할 때 발생하는 이벤트입니다. -`event.preventDefault()` 호출은 이벤트의 기본 동작을 방지하기 때문에 -이를 통해 애플리케이션의 종료를 방지할 수 있습니다. - -### Event: 'will-quit' - -Returns: - -* `event` Event - -모든 윈도우들이 종료되고 애플리케이션이 종료되기 시작할 때 발생하는 이벤트입니다. -`event.preventDefault()` 호출을 통해 애플리케이션의 종료를 방지할 수 있습니다. - -`will-quit` 와 `window-all-closed` 이벤트의 차이점을 확인하려면 `window-all-closed` -이벤트의 설명을 참고하세요. - -### Event: 'quit' - -Returns: - -* `event` Event -* `exitCode` Integer - -애플리케이션이 종료될 때 발생하는 이벤트입니다. - -### Event: 'open-file' _macOS_ - -Returns: - -* `event` Event -* `path` String - -사용자가 애플리케이션을 통해 파일을 열고자 할 때 발생하는 이벤트입니다. - -`open-file` 이벤트는 보통 애플리케이션이 열려 있을 때 OS가 파일을 열기 위해 -애플리케이션을 재사용할 때 발생합니다. 이 이벤트는 파일을 dock에 떨어트릴 때, -애플리케이션이 실행되기 전에도 발생합니다. 따라서 이 이벤트를 제대로 처리하려면 -`open-file` 이벤트 핸들러를 애플리케이션이 시작하기 전에 등록해 놓았는지 확실히 -확인해야 합니다. (`ready` 이벤트가 발생하기 전에) - -이 이벤트를 처리할 땐 반드시 `event.preventDefault()`를 호출해야 합니다. - -Windows에선 `process.argv` (메인 프로세스에서)를 통해 파일 경로를 얻을 수 있습니다. - -### Event: 'open-url' _macOS_ - -Returns: - -* `event` Event -* `url` String - -유저가 애플리케이션을 통해 URL을 열고자 할 때 발생하는 이벤트입니다. -애플리케이션에서 URL을 열기 위해 반드시 URL 스킴이 등록되어 있어야 합니다. - -이 이벤트를 처리할 땐 반드시 `event.preventDefault()`를 호출해야 합니다. - -### Event: 'activate' _macOS_ - -Returns: - -* `event` Event -* `hasVisibleWindows` Boolean - -애플리케이션이 활성화 되었을 때 발생하는 이벤트입니다. 이 이벤트는 사용자가 -애플리케이션의 dock 아이콘을 클릭했을 때 주로 발생합니다. - -### Event: 'continue-activity' _macOS_ - -Returns: - -* `event` Event -* `type` String - Activity를 식별하는 문자열. - [`NSUserActivity.activityType`][activity-type]을 맵핑합니다. -* `userInfo` Object - 다른 기기의 activity에서 저장된 앱-특정 상태를 포함합니다. - -다른 기기에서 받아온 activity를 재개하려고 할 때 [Handoff][handoff] 하는 동안 -발생하는 이벤트입니다. 이 이벤트를 처리하려면 반드시 `event.preventDefault()`를 -호출해야 합니다. - -사용자 activity는 activity의 소스 애플리케이션과 같은 개발자 팀 ID를 가지는 -애플리케이션 안에서만 재개될 수 있고, activity의 타입을 지원합니다. 지원하는 -activity의 타입은 애플리케이션 `Info.plist`의 `NSUserActivityTypes` 키에 열거되어 -있습니다. - -### Event: 'browser-window-blur' - -Returns: - -* `event` Event -* `window` BrowserWindow - -[browserWindow](browser-window.md)에 대한 포커스가 사라졌을 때 발생하는 이벤트입니다. - -### Event: 'browser-window-focus' - -Returns: - -* `event` Event -* `window` BrowserWindow - -[browserWindow](browser-window.md)에 대한 포커스가 발생했을 때 발생하는 이벤트입니다. - -**역자주:** _포커스_ 는 창을 클릭해서 활성화 시켰을 때를 말합니다. - -### Event: 'browser-window-created' - -Returns: - -* `event` Event -* `window` BrowserWindow - -새로운 [browserWindow](browser-window.md)가 생성되었을 때 발생하는 이벤트입니다. - -### Event: 'web-contents-created' - -Returns: - -* `event` Event -* `webContents` WebContents - -새로운 [webContents](web-contents.md)가 생성되었을 때 발생하는 이벤트입니다. - -### Event: 'certificate-error' - -Returns: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `url` URL -* `error` String - 에러 코드 -* `certificate` [Certificate](structures/certificate.md) -* `callback` Function - * `isTrusted` Boolean - 인증서를 신뢰할지 여부 - -`url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다. -인증서를 신뢰한다면 `event.preventDefault()` 와 `callback(true)`를 호출하여 -기본 동작을 방지하고 인증을 승인할 수 있습니다. - -```javascript -const {app} = require('electron') - -app.on('certificate-error', (event, webContents, url, error, certificate, callback) => { - if (url === 'https://github.com') { - // 확인 로직. - event.preventDefault() - callback(true) - } else { - callback(false) - } -}) -``` - -### Event: 'select-client-certificate' - -Returns: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `url` URL -* `certificateList` [Certificate[]](structures/certificate.md) -* `callback` Function - * `certificate` [Certificate](structures/certificate.md) - -클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다. - -`url`은 클라이언트 인증서를 요청하는 탐색 항목에 해당합니다. -그리고 `callback`은 목록에서 필터링된 항목과 함께 호출될 필요가 있습니다. -이 이벤트에서의 `event.preventDefault()` 호출은 초기 인증 때 저장된 데이터를 사용하는 -것을 막습니다. - -```javascript -const {app} = require('electron') - -app.on('select-client-certificate', (event, webContents, url, list, callback) => { - event.preventDefault() - callback(list[0]) -}) -``` - -### Event: 'login' - -Returns: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `request` Object - * `method` String - * `url` URL - * `referrer` URL -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - * `username` String - * `password` String - -`webContents`가 기본 인증을 요청할 때 발생하는 이벤트입니다. - -기본 동작은 인증 요청을 모두 취소시킵니다. -동작을 새로 정의하려면 반드시 `event.preventDefault()`를 호출한 후 -`callback(username, password)` 형태의 콜백을 호출하여 인증을 처리해야 합니다. - -```javascript -const {app} = require('electron') - -app.on('login', (event, webContents, request, authInfo, callback) => { - event.preventDefault() - callback('username', 'secret') -}) -``` - -### Event: 'gpu-process-crashed' - -Returns: - -* `event` Event -* `killed` Boolean - -GPU 처리가 충돌하거나 종료되었을 때 발생하는 이벤트입니다. - -### Event: 'accessibility-support-changed' _macOS_ _Windows_ - -Returns: - -* `event` Event -* `accessibilitySupportEnabled` Boolean - Chrome의 접근성 지원이 활성화되어있으면 - `true`를 반환하고 아니라면 `false`를 반환합니다. - -Chrome의 접근성 지원이 변경될 때 발생하는 이벤트입니다. 이 이벤트는 스크린 리더와 같은 -접근성 기술이 활성화되거나 비활성화될 때 발생합니다. -자세한 내용은 https://www.chromium.org/developers/design-documents/accessibility 를 -참고하세요. - -## Methods - -`app` 객체는 다음과 같은 메서드를 가지고 있습니다: - -**참고:** 몇몇 메서드는 특정 플랫폼에서만 작동합니다. - -### `app.quit()` - -모든 윈도우 종료를 시도합니다. `before-quit` 이벤트가 먼저 발생합니다. -모든 윈도우가 성공적으로 종료되면 `will-quit` 이벤트가 발생하고 기본 동작에 따라 -애플리케이션이 종료됩니다. - -이 함수는 모든 `beforeunload`와 `unload` 이벤트 핸들러가 제대로 실행됨을 보장합니다. -`beforeunload` 이벤트 핸들러에서 `false`를 반환했을 때 윈도우 종료가 취소 될 수 -있습니다. - -### `app.exit(exitCode)` - -* `exitCode` Integer - -`exitCode`와 함께 애플리케이션을 즉시 종료합니다. - -모든 윈도우는 사용자의 동의 여부에 상관없이 즉시 종료되며 `before-quit` 이벤트와 -`will-quit` 이벤트가 발생하지 않습니다. - -### `app.relaunch([options])` - -* `options` Object (optional) - * `args` String[] (optional) - * `execPath` String (optional) - -현재 인스턴스가 종료되면 애플리케이션을 재시작합니다. - -기본적으로 새 인스턴스는 같은 작업 디렉토리의 것과 함께 현재 인스턴스의 명령줄 인수를 -사용합니다. 만약 `args`가 지정되면, `args`가 기본 명령줄 인수 대신에 전달됩니다. -`execPath`가 지정되면, 현재 애플리케이션 대신 `execPath`가 실행됩니다. - -참고로 이 메서드는 애플리케이션을 종료하지 않으며, 애플리케이션을 다시 시작시키려면 -`app.relaunch`를 호출한 후 `app.quit` 또는 `app.exit`를 실행해주어야 합니다. - -`app.relaunch`가 여러 번 호출되면, 현재 인스턴스가 종료된 후 여러 인스턴스가 -시작됩니다. - -다음은 현재 인스턴스를 즉시 종료시킨 후 새로운 명령줄 인수를 추가하여 새 -인스턴스의 애플리케이션을 실행하는 예시입니다: - -```javascript -const {app} = require('electron') - -app.relaunch({args: process.argv.slice(1).concat(['--relaunch'])}) -app.exit(0) -``` - -### `app.isReady()` - -Returns `Boolean` - Electron 이 초기화를 마쳤으면 `true`, 아니면 `false`. - -### `app.focus()` - -Linux에선, 첫 번째로 보여지는 윈도우가 포커스됩니다. macOS에선, 애플리케이션을 활성화 -앱 상태로 만듭니다. Windows에선, 애플리케이션의 첫 윈도우에 포커스 됩니다. - -### `app.hide()` _macOS_ - -최소화를 하지 않고 애플리케이션의 모든 윈도우들을 숨깁니다. - -### `app.show()` _macOS_ - -숨긴 애플리케이션 윈도우들을 다시 보이게 만듭니다. 자동으로 포커스되지 않습니다. - -### `app.getAppPath()` - -Returns `String` - 현재 애플리케이션 디렉토리. - -### `app.getPath(name)` - -* `name` String - -Returns `String` -`name` 에 관련한 특정 디렉터리 또는 파일의 경로. 실패시 -`Error` 발생. - -**역자주:** 이 메서드는 운영체제에서 지정한 특수 디렉터리를 가져오는데 사용할 수 있습니다. - -`name`은 다음 목록에 있는 경로 중 하나를 선택해 사용할 수 있습니다: - -* `home` - 사용자의 홈 디렉터리. -* `appData` - 각 사용자의 애플리케이션 데이터 디렉터리. 기본 경로는 다음과 같습니다: - * `%APPDATA%` - Windows - * `$XDG_CONFIG_HOME` 또는 `~/.config` - Linux - * `~/Library/Application Support` - macOS -* `userData` - 애플리케이션의 설정을 저장하는 디렉터리. - 이 디렉터리는 기본적으로 `appData`에 애플리케이션 이름으로 생성된 폴더가 지정됩니다. -* `temp` - 임시 폴더 디렉터리. -* `exe` - 현재 실행중인 Electron 바이너리 파일. -* `module` - `libchromiumcontent` 라이브러리. -* `desktop` - 사용자의 데스크탑 디렉터리. -* `documents` - 사용자의 "내 문서" 디렉터리. -* `downloads` - 사용자의 다운로드 디렉터리. -* `music` - 사용자의 음악 디렉터리. -* `pictures` - 사용자의 사진 디렉터리. -* `videos` - 사용자의 동영상 디렉터리. -* `pepperFlashSystemPlugin` - 시스템 버전의 Pepper Flash 플러그인의 전체 경로. - -### `app.setPath(name, path)` - -* `name` String -* `path` String - -`name`에 대한 특정 디렉터리나 파일의 경로인 `path`를 재정의합니다. -만약 지정한 디렉터리의 경로가 존재하지 않으면 디렉터리가 이 메서드를 통해 새로 -생성됩니다. 재정의에 실패했을 땐 `Error`를 반환합니다. - -이 메서드는 `app.getPath`에 정의되어 있는 `name`의 경로만 재정의할 수 있습니다. - -기본적으로, 웹 페이지의 쿠키와 캐시는 `userData` 디렉터리에 저장됩니다. -만약 이 위치를 변경하고자 한다면, 반드시 `app` 모듈의 `ready` 이벤트가 발생하기 전에 -`userData` 경로를 재정의해야 합니다. - -### `app.getVersion()` - -Returns `String` - 로드된 애플리케이션의 버전. 만약 `package.json` 파일에서 -애플리케이션의 버전을 찾을 수 없는 경우, 현재 번들 또는 실행 파일의 버전을 -반환합니다. - -### `app.getName()` - -Returns `String` - `package.json` 에 기술된 현재 애플리케이션의 이름. - -npm 모듈 규칙에 따라 대부분의 경우 `package.json`의 `name` 필드는 소문자 이름을 -사용합니다. 하지만 Electron은 `name`대신 `productName` 필드를 주로 사용하기 때문에 -반드시 이 필드도 같이 지정해야 합니다. 이 필드는 맨 앞글자가 대문자인 애플리케이션 -전체 이름을 지정해야 합니다. - -### `app.setName(name)` - -* `name` String - -현재 애플리케이션의 이름을 덮어씌웁니다. - -### `app.getLocale()` - -Returns `String` - 현재 애플리케이션의 -[로케일](https://ko.wikipedia.org/wiki/%EB%A1%9C%EC%BC%80%EC%9D%BC). 반환될 수 -있는 값은 [여기](locales.md)에서 찾아볼 수 있습니다. - -**참고:** 패키징된 앱을 배포할 때, `locales` 폴더도 같이 배포해야 합니다. - -**참고:** Windows에선 `ready` 이벤트가 발생한 이후에 이 메서드를 호출해야 합니다. - -### `app.addRecentDocument(path)` _macOS_ _Windows_ - -* `path` String - -최근 문서 목록에 `path`를 추가합니다. - -이 목록은 OS에 의해 관리됩니다. 최근 문서 목록은 Windows의 경우 작업 표시줄에서 찾을 -수 있고, macOS의 경우 dock 메뉴에서 찾을 수 있습니다. - -### `app.clearRecentDocuments()` _macOS_ _Windows_ - -최근 문서 목록을 모두 비웁니다. - -### `app.setAsDefaultProtocolClient(protocol[, path, args])` _macOS_ _Windows_ - -* `protocol` String - 프로토콜의 이름, `://` 제외. 만약 앱을 통해 `electron://`과 - 같은 링크를 처리하고 싶다면, 이 메서드에 `electron` 인수를 담아 호출하면 됩니다. -* `path` String (optional) _Windows_ - 기본값은 `process.execPath`입니다. -* `args` String[] (optional) _Windows_ - 기본값은 빈 배열입니다. - -Returns `Boolean` - 호출 성공 여부. - -이 메서드는 지정한 프로토콜(URI scheme)에 대해 현재 실행파일을 기본 핸들러로 -등록합니다. 이를 통해 운영체제와 더 가깝게 통합할 수 있습니다. 한 번 등록되면, -`your-protocol://`과 같은 모든 링크에 대해 호출시 현재 실행 파일이 실행됩니다. -모든 링크, 프로토콜을 포함하여 애플리케이션의 인수로 전달됩니다. - -Windows에선 실행시에 선택적 매개변수를 통해 경로, 실행 파일, 인수, 실행 파일로 전달될 -인수의 배열을 제공할 수 있습니다. - -**참고:** macOS에선, 애플리케이션의 `info.plist`에 등록해둔 프로토콜만 사용할 수 -있습니다. 이는 런타임에서 변경될 수 없습니다. 이 파일은 간단히 텍스트 에디터를 -사용하거나, 애플리케이션을 빌드할 때 스크립트가 생성되도록 할 수 있습니다. 자세한 -내용은 [Apple의 참조 문서][CFBundleURLTypes]를 확인하세요. - -이 API는 내부적으로 Windows 레지스트리와 LSSetDefaultHandlerForURLScheme를 사용합니다. - -호출에 성공하면 `true`를 반환하고 그렇지 않다면 `false`를 반환합니다. - -### `app.removeAsDefaultProtocolClient(protocol[, path, args])` _macOS_ _Windows_ - -* `protocol` String - 프로토콜의 이름, `://` 제외. -* `path` String (optional) _Windows_ - 기본값은 `process.execPath` -* `args` String[] (optional) _Windows_ - 기본값은 빈 배열 - -Returns `Boolean` - 호출 성공 여부. - -이 메서드는 현재 실행파일이 지정한 프로토콜(URI scheme)에 대해 기본 핸들러인지를 -확인합니다. 만약 그렇다면, 이 메서드는 앱을 기본 핸들러에서 제거합니다. - -### `app.isDefaultProtocolClient(protocol[, path, args])` _macOS_ _Windows_ - -* `protocol` String - `://`를 제외한 프로토콜의 이름. -* `path` String (optional) _Windows_ - 기본값은 `process.execPath` -* `args` String[] (optional) _Windows_ - 기본값은 빈 배열 - -Returns `Boolean` - -이 메서드는 현재 실행 파일이 지정한 프로토콜에 대해 기본 동작인지 확인합니다. -(URI 스킴) 만약 그렇다면 `true`를 반환하고 아닌 경우 `false`를 반환합니다. - -**참고:** macOS에선, 응용 프로그램이 프로토콜에 대한 기본 프로토콜 동작으로 -등록되었는지를 확인하기 위해 이 메서드를 사용할 수 있습니다. 또한 macOS에서 -`~/Library/Preferences/com.apple.LaunchServices.plist`를 확인하여 검증할 수도 -있습니다. 자세한 내용은 [Apple의 참조 문서][LSCopyDefaultHandlerForURLScheme]를 -참고하세요. - -이 API는 내부적으로 Windows 레지스트리와 LSSetDefaultHandlerForURLScheme를 사용합니다. - -### `app.setUserTasks(tasks)` _Windows_ - -* `tasks` [Task[]](structures/task.md) - `Task` 객체의 배열 - -Windows에서 사용할 수 있는 JumpList의 [Tasks][tasks] 카테고리에 `task`를 추가합니다. - -`tasks`는 다음과 같은 구조를 가지는 `Task` 객체의 배열입니다: - -`Task` Object: - -* `program` String - 실행할 프로그램의 경로. - 보통 현재 작동중인 애플리케이션의 경로인 `process.execPath`를 지정합니다. -* `arguments` String - `program`이 실행될 때 사용될 명령줄 인수. -* `title` String - JumpList에 표시할 문자열. -* `description` String - 이 작업에 대한 설명. -* `iconPath` String - JumpList에 표시될 아이콘의 절대 경로. 아이콘을 포함하고 - 있는 임의의 리소스 파일을 사용할 수 있습니다. 보통 애플리케이션의 아이콘을 - 그대로 사용하기 위해 `process.execPath`를 지정합니다. -* `iconIndex` Integer - 아이콘 파일의 인덱스. 만약 아이콘 파일이 두 개 이상의 - 아이콘을 가지고 있을 경우, 사용할 아이콘의 인덱스를 이 옵션으로 지정해 주어야 - 합니다. 단, 아이콘을 하나만 포함하고 있는 경우 0을 지정하면 됩니다. - -Returns `Boolean` - 호출 성공 여부. - -**참고:** 점프 목록을 커스터마이징 하려면 대신 `app.setJumpList(categories)` 를 -사용하세요. - -### `app.getJumpListSettings()` _Windows_ - -Returns `Object`: - -* `minItems` Integer - 점프 목록에서 보여질 항목의 최소 수 (이 값에 대한 자세한 - 설명은 [MSDN 문서][JumpListBeginListMSDN])를 보세요. -* `removedItems` [JumpListItem[]](structures/jump-list-item.md) - 점프 목록의 사용자 정의 카테고리에서 사용자가 삭제한 - 항목에 해당하는 `JumpListItem` 객체 배열. 이 항목들은 **다음** - `app.setJumpList()` 호출로 다시 추가하면 안됩니다. 윈도우는 삭제된 항목을 - 포함하는 카테고리를 표시하지 않을 것 입니다. - -### `app.setJumpList(categories)` _Windows_ - -* `categories` [JumpListCategory[]](structures/jump-list-category.md) or `null` - `JumpListCategory` 객체의 배열. - -애플리케이션에 사용자 정의 점프 목록을 설정하거나 삭제하고 다음 문자열 중 하나를 -반환: - -* `ok` - 잘못된 것이 없음. -* `error` - 하나 이상의 에러 발생. 가능성 높은 원인을 파악하기 위해 런타임 로그 - 활성화하세요. -* `invalidSeparatorError` - 점프 목록의 사용자 정의 카테고리에서 구분자 추가 - 시도. 구분자는 표준 `Tasks` 카테고리에서만 가능 합니다. -* `fileTypeRegistrationError` - 앱이 등록하지 않은 파일 유형을 점프 목록에 - 추가하려고 시도함. -* `customCategoryAccessDeniedError` - 사용자 개인 정보 보호와 그룹 정책 설정에 - 따라 점프 목록에 사용자 정의 카테고리 추가가 불가능 합니다. - -만약 `categories` 가 `null` 이면 이전 사용자 점프 목록 설정은 앱을 위한 표준 -점프 목록으로 대체됩니다 (윈도우에 의해 관리됨). - -`JumpListCategory` 객체는 다음 속성을 가져야 합니다: - -* `type` String - 다음 중 하나: - * `tasks` - 이 카테고리의 항목은 표준 `Tasks` 카테고리에 위치할 것 입니다. - 이 카테고리는 하나만 존재하며, 항상 점프 목록의 하단에 보여집니다. - * `frequent` - 앱에 의해 자주 열린 파일의 목록을 보여줍니다. 카테고리의 - 이름과 항목들은 윈도우에 의해 설정 됩니다. - * `recent` - 앱에 의해 최근에 열린 파일의 목록을 보여줍니다. 카테고리의 - 이름과 항목들은 윈도우에 의해 설정 됩니다. `app.addRecentDocument(path)` 을 - 사용하면 간접적으로 이 카테고리에 항목이 추가될 것 입니다. - * `custom` - 작업 또는 파일 링크를 보여주며, 앱에 의해 `name` 설정되어야 합니다. -* `name` String - `type` 이 `custom` 이면 꼭 설정되어야 하고, 그 외는 생략합니다. -* `items` Array - `type` 이 `tasks` 면 `JumpListItem` 객체의 배열, 그 외는 - 생략합니다. - -**참고:** `JumpListCategory` 객체가 `type`, `name` 속성 둘 다 없다면 `type` 은 -`tasks` 로 가정합니다. `name` 속성이 설정되었지만 `type` 속성이 생략된 경우 -`type` 은 `custom` 으로 가정합니다. - -**참고:** 사용자는 사용자 카테고리에서 항목을 삭제할 수 있습니다. 그리고 윈도우는 -`app.setJumpList(categories)` 의 다음 성공적인 호출 이후까지 삭제된 항목을 다시 -추가하는 것을 금지할 것 입니다. 그 이전에 커스텀 카테고리에 삭제된 항목을 다시 -추가하려 한다면 커스텀 카테고리가 전부 점프 목록에서 빠질 것 입니다. 제거된 항목 -목록은 `app.getJumpListSettings()` 를 사용해 얻을 수 있습니다. - -`JumpListItem` 객체는 다음 속성을 가져야 합니다: - -* `type` String - 다음 중 하나: - * `task` - 특정 인수로 앱을 실행시킬 작업. - * `separator` - 표준 `Tasks` 카테고리에서 항목을 구분할 수 있습니다. - * `file` - 점프 목록을 만든 앱을 사용하여 파일을 열 파일 링크. 이것이 - 동작하려면 그 파일 형식을 앱이 처리할 수 있게 등록되있어야 합니다. (하지만, - 그것이 기본 처리기일 필요는 없습니다.). -* `path` String - 파일을 열기 위한 경로. `type` 이 `file` 경우에만 설정되어야 - 합니다. -* `program` String - 실행하기 위한 프로그램의 경로. 일반적으로 현재 프로그램을 - 열기 위해 `process.execPath` 를 지정해야 합니다. -* `args` String - `program` 이 실행됐을 때의 커맨드 라인 인수. `type` 이 - `task` 일 경우만 설정되어야 합니다. -* `title` String - 점프 목록에서 항목에 표시될 글자. `type` 이 `task` 일 경우만 - 설정되어야 합니다. -* `description` String - 작업의 설명 (툴팁으로 표시됨). `type` 이 `task` 일 - 경우만 설정되어야 합니다. -* `iconPath` String - 점프 목록에서 보여질 아이콘의 절대 경로. 아이콘을 포함하는 - 임의의 자원 파일 경로일 수 있습니다. (예. `.ico`, `.exe`, `.dll`). 일반적으로 - 프로그램 아이콘을 보여주기 위해 `process.execPath` 를 명시할 수 있습니다. -* `iconIndex` Integer - 리소스 파일의 아이콘 인덱스. 리소스 파일이 여러 아이콘을 - 포함하고 있다면 이 작업을 위해 표시되어야 할 아이콘의 0 기준 인덱스를 명시할 - 수 있다. 리소스 파일이 하나의 아이콘만 가지고 있다면 이 속성은 0 이어야 합니다. - -사용자 점프 목록을 생성하는 간단한 예제 입니다: - -```javascript -const {app} = require('electron') - -app.setJumpList([ - { - type: 'custom', - name: 'Recent Projects', - items: [ - { type: 'file', path: 'C:\\Projects\\project1.proj' }, - { type: 'file', path: 'C:\\Projects\\project2.proj' } - ] - }, - { // has a name so `type` is assumed to be "custom" - name: 'Tools', - items: [ - { - type: 'task', - title: 'Tool A', - program: process.execPath, - args: '--run-tool-a', - icon: process.execPath, - iconIndex: 0, - description: 'Runs Tool A' - }, - { - type: 'task', - title: 'Tool B', - program: process.execPath, - args: '--run-tool-b', - icon: process.execPath, - iconIndex: 0, - description: 'Runs Tool B' - } - ] - }, - { type: 'frequent' }, - { // has no name and no type so `type` is assumed to be "tasks" - items: [ - { - type: 'task', - title: 'New Project', - program: process.execPath, - args: '--new-project', - description: 'Create a new project.' - }, - { type: 'separator' }, - { - type: 'task', - title: 'Recover Project', - program: process.execPath, - args: '--recover-project', - description: 'Recover Project' - } - ] - } -]) -``` - -### `app.makeSingleInstance(callback)` - -* `callback` Function - * `argv` String[] - 두번째 인스턴스의 명령줄 인수의 배열 - * `workingDirectory` String - 두번째 인스턴스의 작업 디렉토리 - -현재 애플리케이션을 단일 인스턴스 애플리케이션으로 만들어줍니다. 이 메서드는 -애플리케이션이 여러 번 실행됐을 때 다중 인스턴스가 생성되는 대신 한 개의 주 -인스턴스만 유지되도록 만들 수 있습니다. 이때 중복 생성된 인스턴스는 주 인스턴스에 -신호를 보내고 종료됩니다. - -`callback`은 주 인스턴스가 생성된 이후 또 다른 인스턴스가 생성됐을 때 -`callback(argv, workingDirectory)` 형식으로 호출됩니다. `argv`는 두 번째 -인스턴스의 명령줄 인수이며 `workingDirectory`는 현재 작업중인 디렉터리입니다. -보통 대부분의 애플리케이션은 이러한 콜백이 호출될 때 주 윈도우를 포커스하고 -최소화되어있으면 창 복구를 실행합니다. - -`callback`은 `app`의 `ready` 이벤트가 발생한 후 실행됨을 보장합니다. - -이 메서드는 현재 실행된 애플리케이션이 주 인스턴스인 경우 `false`를 반환하고 -애플리케이션의 로드가 계속 진행 되도록 합니다. 그리고 두 번째 중복된 인스턴스 -생성인 경우 `true`를 반환합니다. (다른 인스턴스에 인수가 전달됬을 때) 이 불리언 -값을 통해 중복 생성된 인스턴스는 즉시 종료시켜야 합니다. - -macOS에선 사용자가 Finder에서 애플리케이션의 두 번째 인스턴스를 열려고 했을 때 -자동으로 단일 인스턴스화 하고 `open-file`과 `open-url` 이벤트를 발생시킵니다. -그러나 사용자가 애플리케이션을 CLI 터미널에서 실행하면 운영체제 시스템의 싱글 -인스턴스 메커니즘이 무시되며 그대로 중복 실행됩니다. 따라서 macOS에서도 이 -메서드를 통해 확실히 중복 실행을 방지하는 것이 좋습니다. - -다음 예시는 두 번째 인스턴스가 생성되었을 때 중복된 인스턴스를 종료하고 주 -애플리케이션 인스턴스의 윈도우를 활성화 시키는 예시입니다: - -```javascript -const {app} = require('electron') -let myWindow = null - -const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => { - // 애플리케이션을 중복 실행했습니다. 주 애플리케이션 인스턴스를 활성화 합니다. - if (myWindow) { - if (myWindow.isMinimized()) myWindow.restore() - myWindow.focus() - } -}) - -if (shouldQuit) { - app.quit() -} - -// 윈도우를 생성하고 각종 리소스를 로드하고 작업합니다. -app.on('ready', () => { -}) -``` - -### `app.releaseSingleInstance()` - -모든 `makeSingleInstance`에 의해 생성된 제한을 해제합니다. 이 메서드는 다시 여러 -인스턴스의 애플리케이션이 나란히 실행될 수 있도록 합니다. - -### `app.setUserActivity(type, userInfo[, webpageURL])` _macOS_ - -* `type` String - 고유하게 activity를 식별합니다. - [`NSUserActivity.activityType`][activity-type]을 맵핑합니다. -* `userInfo` Object - 다른 기기에서 사용하기 위해 저장할 앱-특정 상태. -* `webpageURL` String - 적당한 앱이 기기에 설치되지 않았을 때 브라우저에서 로드할 - 웹 페이지. 스킴은 반드시 `http` 또는 `https`가 되어야 합니다. - -`NSUserActivity`를 만들고 현재 activity에 설정합니다. 이 activity는 이후 다른 -기기와 [Handoff][handoff]할 때 자격으로 사용됩니다. - -### `app.getCurrentActivityType()` _macOS_ - -Returns `String` - 현재 작동중인 activity의 타입. - -### `app.setAppUserModelId(id)` _Windows_ - -* `id` String - -[애플리케이션의 사용자 모델 ID][app-user-model-id]를 `id`로 변경합니다. - -### `app.importCertificate(options, callback)` _LINUX_ - -* `options` Object - * `certificate` String - pkcs12 파일의 위치. - * `password` String - 인증서의 암호. -* `callback` Function - * `result` Integer - 가져오기의 결과. - -pkcs12 형식으로된 인증서를 플랫폼 인증서 저장소로 가져옵니다. `callback`은 가져오기의 -결과를 포함하는 `result` 객체를 포함하여 호출됩니다. 값이 `0` 일 경우 성공을 의미하며 -다른 값은 모두 Chrominum의 [net_error_list](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h)에 -따라 실패를 의미합니다. - -### `app.disableHardwareAcceleration()` - -현재 애플리케이션의 하드웨어 가속을 비활성화합니다. - -이 메서드는 `app`의 `ready` 이벤트가 발생하기 전에만 호출할 수 있습니다. - -### `app.setBadgeCount(count)` _Linux_ _macOS_ - -* `count` Integer - -Returns `Boolean` - 호출 성공 여부. - -현재 앱에 대해 카운터 뱃지를 설정합니다. count 를 `0`으로 설정하면 뱃지를 -숨깁니다. - -macOS에선 독 아이콘에 표시됩니다. Linux에선 Unity 런처에서만 작동합니다. - -**참고:** Unity 런처는 이 기능을 작동하기 위해 `.desktop` 파일을 필요로 합니다. -이에 대한 자세한 내용은 [데스크톱 환경 통합][unity-requiremnt]을 참고하세요. - -### `app.getBadgeCount()` _Linux_ _macOS_ - -Returns `Integer` - 현재 카운터 뱃지에 표시중인 값. - -### `app.isUnityRunning()` _Linux_ - -Returns `Boolean` - 현재 데스크톱 환경이 Unity 인지 여부. - -### `app.getLoginItemSettings()` _macOS_ _Windows_ - -Returns `Object`: - -* `openAtLogin` Boolean - 앱이 로그인시 열리도록 설정되어있는 경우 `true`를 반환. -* `openAsHidden` Boolean - 앱이 로구인시 숨겨진 채로 열리도록 설정되어있는 경우 - `true`를 반환. 이 설정은 macOS에서만 지원됩니다. -* `wasOpenedAtLogin` Boolean - 자동으로 로그인할 때 애플리케이션이 열려있었는지 - 여부. 이 설정은 macOS에서만 지원됩니다. -* `wasOpenedAsHidden` Boolean - 앱이 숨겨진 로그인 항목처럼 열려있었는지 여부. - 이는 앱이 시작시 어떤 윈도우도 열지 않을 것을 표시합니다. 이 설정은 macOS에서만 - 지원됩니다. -* `restoreState` Boolean - 앱이 이전 세션에서 상태를 복원하여 로그인 항목처럼 - 열려있었는지 여부. 이는 앱이 마지막으로 종료되었던 때에 열려있었던 윈도우를 - 복원하는 것을 표시합니다. 이 설정은 macOS에서만 지원됩니다. - -**참고:** 이 API 는 [MAS 빌드][mas-builds]에 영향을 주지 않습니다. - -### `app.setLoginItemSettings(settings)` _macOS_ _Windows_ - -* `settings` Object - * `openAtLogin` Boolean - `true`로 지정하면 로그인시 애플리케이션을 열도록 하며 - `false`로 지정시 로그인 항목에서 삭제합니다. - * `openAsHidden` Boolean - `true`로 지정하면 애플리케이션을 숨겨진 채로 열도록 - 합니다. 기본값은 `false`입니다. 사용자가 시스템 설정에서 이 설정을 변경할 수 - 있으며 앱이 열렸을 때 현재 값을 확인하려면 - `app.getLoginItemStatus().wasOpenedAsHidden`을 확인해야 합니다. 이 설정은 - macOS에서만 지원됩니다. - -앱의 로그인 항목 설정을 지정합니다. - -**참고:** 이 API 는 [MAS 빌드][mas-builds]에 영향을 주지 않습니다. - -### `app.isAccessibilitySupportEnabled()` _macOS_ _Windows_ - -Returns `Boolean` - Chrome의 접근성 지원이 활성화되어있으면 `true`를 그렇지 -않다면 `false`를 반환합니다. 이 API는 사용할 수 있는 스크린 리더와 같은 접근성 -기술이 감지되었을 때 `true`를 반환합니다. 자세한 내용은 -https://www.chromium.org/developers/design-documents/accessibility 를 참고하세요. - -### `app.setAboutPanelOptions(options)` _macOS_ - -* `options` Object - * `applicationName` String (optional) - 앱 이름. - * `applicationVersion` String (optional) - 앱 버전. - * `copyright` String (optional) - 저작권 정보. - * `credits` String (optional) - 크레딧 정보. - * `version` String (optional) - 앱 빌드 버전 숫자. - -정보 패널의 옵션을 설정합니다. 앱의 `.plist` 에 정의된 값보다 우선합니다. 자세한 -내용은 [애플 문서][about-panel-options]를 참조하세요. - -### `app.commandLine.appendSwitch(switch[, value])` - -* `switch` String -명령줄 스위치 -* `value` String (optional) - 주어진 스위치에 대한 값 - -Chrominum의 명령줄에 스위치를 추가합니다. `value`는 추가적인 값을 뜻하며 옵션입니다. - -**참고:** 이 메서드는 `process.argv`에 영향을 주지 않습니다. 개발자들은 보통 -Chrominum의 로우 레벨 수준의 동작을 제어하기 위해 주로 사용합니다. - -### `app.commandLine.appendArgument(value)` - -* `value` String - 명령줄에 덧붙여질 인수 - -Chrominum의 명령줄에 인수를 추가합니다. 인수는 올바르게 인용됩니다. - -**참고:** 이 메서드는 `process.argv`에 영향을 주지 않습니다. - -### `app.dock.bounce([type])` _macOS_ - -* `type` String (optional) - `critical` 또는 `informational`을 지정할 수 있습니다. - 기본값은 `informational` 입니다. - -`critical`이 전달되면 dock 아이콘이 애플리케이션이 활성화되거나 요청이 중지되기 -전까지 통통 튀는 바운스 효과를 적용합니다. - -`informational`이 전달되면 dock 아이콘이 1초만 통통 튑니다. 하지만 애플리케이션이 -활성화되거나 요청이 중지되기 전까지 요청은 계속 활성화로 유지 됩니다. - -또한 요청을 취소할 때 사용할 수 있는 ID를 반환합니다. - -### `app.dock.cancelBounce(id)` _macOS_ - -* `id` Integer - -`app.dock.bounce([type])` 메서드에서 반환한 `id`의 바운스 효과를 취소합니다. - -### `app.dock.downloadFinished(filePath)` _macOS_ - -* `filePath` String - -`filePath`가 다운로드 폴더에 들어있다면 다운로드 스택을 바운스합니다. - -### `app.dock.setBadge(text)` _macOS_ - -* `text` String - -dock의 badge에 표시할 문자열을 설정합니다. - -### `app.dock.getBadge()` _macOS_ - -Returns `String` - dock의 badge에 설정된 문자열. - -### `app.dock.hide()` _macOS_ - -dock 아이콘을 숨깁니다. - -### `app.dock.show()` _macOS_ - -dock 아이콘을 표시합니다. - -### `app.dock.isVisible()` _macOS_ - -Returns `Boolean` - dock 아이콘이 보이는 상태인지 여부. `app.dock.show()` 호출은 -비동기이므로 해당 메서드를 호출한 후 바로 이 메서드를 호출하면 `true`를 반환하지 -않을 수 있습니다. - -### `app.dock.setMenu(menu)` _macOS_ - -* `menu` [Menu](menu.md) - -애플리케이션의 [dock menu][dock-menu]를 설정합니다. - -### `app.dock.setIcon(image)` _macOS_ - -* `image` [NativeImage](native-image.md) - -dock 아이콘의 `image`를 설정합니다. - -[dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103 -[tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[CFBundleURLTypes]: https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102207-TPXREF115 -[LSCopyDefaultHandlerForURLScheme]: https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/#//apple_ref/c/func/LSCopyDefaultHandlerForURLScheme -[handoff]: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/HandoffFundamentals/HandoffFundamentals.html -[activity-type]: https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSUserActivity_Class/index.html#//apple_ref/occ/instp/NSUserActivity/activityType -[unity-requiremnt]: ../tutorial/desktop-environment-integration.md#unity-launcher-shortcuts-linux -[mas-builds]: docs/tutorial/mac-app-store-submission-guide.md -[JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx -[about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc diff --git a/docs-translations/ko-KR/api/auto-updater.md b/docs-translations/ko-KR/api/auto-updater.md deleted file mode 100644 index 945abd4fa32f..000000000000 --- a/docs-translations/ko-KR/api/auto-updater.md +++ /dev/null @@ -1,130 +0,0 @@ -# autoUpdater - -> 애플리케이션이 자동으로 업데이트를 진행할 수 있도록 기능을 활성화합니다. - -`autoUpdater` 모듈은 [Squirrel](https://github.com/Squirrel) 프레임워크에 대한 -인터페이스를 제공합니다. - -다음 프로젝트 중 하나를 선택하여, 애플리케이션을 배포하기 위한 멀티-플랫폼 릴리즈 -서버를 손쉽게 구축할 수 있습니다: - -- [nuts][nuts]: *애플리케이션을 위한 똑똑한 릴리즈 서버이며 GitHub를 백엔드로 - 사용합니다. Squirrel을 통해 자동 업데이트를 지원합니다. (Mac & Windows)* -- [electron-release-server][electron-release-server]: *완벽하게 모든 기능을 -지원하는 electron 애플리케이션을 위한 자가 호스트 릴리즈 서버입니다. autoUpdater와 -호환됩니다* -- [squirrel-updates-server][squirrel-updates-server]: *GitHub 릴리즈를 사용하는 -Squirrel.Mac 와 Squirrel.Windows를 위한 간단한 node.js 기반 서버입니다* - -## 플랫폼별 참고 사항 - -`autoUpdater`는 기본적으로 모든 플랫폼에 대해 같은 API를 제공하지만, 여전히 플랫폼별로 -약간씩 다른 점이 있습니다. - -### macOS - -macOS에선 `autoUpdater`가 [Squirrel.Mac][squirrel-mac]를 기반으로 작동합니다. -따라서 이 모듈을 작동시키기 위해 특별히 준비해야 할 작업은 없습니다. -서버 사이드 요구 사항은 [서버 지원][server-support]을 참고하세요. - -**참고:** macOS에서 자동 업데이트를 지원하려면 반드시 사인이 되어있어야 합니다. -이것은 `Squirrel.Mac`의 요구 사항입니다. - -### Windows - -Windows에선 `autoUpdater`를 사용하기 전에 애플리케이션을 사용자의 장치에 -설치해야 합니다. [electron-winstaller][installer-lib], -[electron-builder][electron-builder-lib] 또는 -[grunt-electron-installer][installer]를 사용하여 애플리케이션 인스톨러를 만드는 것을 -권장합니다. - -Windows에선 `autoUpdater` 모듈을 사용하기 전에 사용자의 장치에 애플리케이션을 -설치해야 합니다. 따라서 [electron-winstaller][installer-lib] 모듈이나 -[grunt-electron-installer][installer] 패키지를 사용하여 애플리케이션 인스톨러를 -만드는 것을 권장합니다. - -Squirrel로 생성된 인스톨러는 [Application User Model ID][app-user-model-id]와 함께 -`com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`으로 형식화된 바로가기 아이콘을 -생성합니다. `com.squirrel.slack.Slack` 과 `com.squirrel.code.Code`가 그 예시입니다. -`app.setAppUserModelId` API를 통해 애플리케이션 ID를 동일하게 유지해야 합니다. 그렇지 -않으면 Windows 작업 표시줄에 애플리케이션을 고정할 때 제대로 적용되지 않을 수 있습니다. - -서버 사이드 요구 사항 또한 macOS와 다르게 적용됩니다. 자세한 내용은 -[Squirrel.Windows][squirrel-windows]를 참고하세요. - -### Linux - -Linux는 따로 `autoUpdater`를 지원하지 않습니다. -각 배포판의 패키지 관리자를 통해 애플리케이션 업데이트를 제공하는 것을 권장합니다. - -## Events - -`autoUpdater` 객체는 다음과 같은 이벤트를 발생시킵니다: - -### Event: 'error' - -Returns: - -* `error` Error - -업데이트에 문제가 생기면 발생하는 이벤트입니다. - -### Event: 'checking-for-update' - -업데이트를 확인하기 시작할 때 발생하는 이벤트입니다. - -### Event: 'update-available' - -사용 가능한 업데이트가 있을 때 발생하는 이벤트입니다. 이벤트는 자동으로 다운로드 됩니다. - -### Event: 'update-not-available' - -사용 가능한 업데이트가 없을 때 발생하는 이벤트입니다. - -### Event: 'update-downloaded' - -Returns: - -* `event` Event -* `releaseNotes` String -* `releaseName` String -* `releaseDate` Date -* `updateURL` String - -업데이트의 다운로드가 완료되었을 때 발생하는 이벤트입니다. - -## Methods - -`autoUpdater` 객체에서 사용할 수 있는 메서드입니다: - -### `autoUpdater.setFeedURL(url[, requestHeaders])` - -* `url` String -* `requestHeaders` Object _macOS_ - HTTP 요청 헤더. - -`url`을 설정하고 자동 업데이터를 초기화합니다. - -### `autoUpdater.getFeedURL()` - -Returns `String` - 현재 업데이트 피드 URL. - -### `autoUpdater.checkForUpdates()` - -서버에 새로운 업데이트가 있는지 요청을 보내 확인합니다. API를 사용하기 전에 -`setFeedURL`를 호출해야 합니다. - -### `autoUpdater.quitAndInstall()` - -애플리케이션을 다시 시작하고 다운로드된 업데이트를 설치합니다. -이 메서드는 `update-downloaded` 이벤트가 발생한 이후에만 사용할 수 있습니다. - -[squirrel-mac]: https://github.com/Squirrel/Squirrel.Mac -[server-support]: https://github.com/Squirrel/Squirrel.Mac#server-support -[squirrel-windows]: https://github.com/Squirrel/Squirrel.Windows -[installer]: https://github.com/electron/grunt-electron-installer -[installer-lib]: https://github.com/electron/windows-installer -[electron-builder-lib]: https://github.com/electron-userland/electron-builder -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[electron-release-server]: https://github.com/ArekSredzki/electron-release-server -[squirrel-updates-server]: https://github.com/Aluxian/squirrel-updates-server -[nuts]: https://github.com/GitbookIO/nuts diff --git a/docs-translations/ko-KR/api/browser-window-proxy.md b/docs-translations/ko-KR/api/browser-window-proxy.md deleted file mode 100644 index fe0d41d59ffa..000000000000 --- a/docs-translations/ko-KR/api/browser-window-proxy.md +++ /dev/null @@ -1,52 +0,0 @@ -## Class: BrowserWindowProxy - -> 자식 브라우저 윈도우를 제어합니다. - -프로세스: [렌더러 프로세스](../tutorial/quick-start.md#renderer-process) - -`BrowserWindowProxy` 객체는 `window.open`에서 반환되며, 자식 윈도우와 함께 제한된 기능을 제공합니다. - -### Instance Methods (인스턴스 메소드) - -`BrowserWindowProxy` 객체는 다음과 같은 Instance Methods(인스턴스 메소드)가 있습니다. - -#### `win.blur()` - -자식 윈도우에서 포커스를 제거합니다. - -#### `win.close()` - -unload 이벤트를 호출하지 않고, 자식 윈도우를 강제로 종료합니다. - -#### `win.eval(code)` - -* `code` String - -자식 윈도우에서 코드를 실행합니다. - -#### `win.focus()` - -자식 윈도우을 강조합니다 (윈도우를 앞으로 가져옵니다). -Focuses the child window (brings the window to front). - -#### `win.print()` - -자식 윈도우에서 print dialog를 호출합니다. - -#### `win.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -지정된 origin과 함께 메시지를 보냅니다. 별도의 origin이 지정되어 있지 않다면 `*`을 작성합니다. - -이 메소드들 외에도 자식 윈도우는 속성이 없는 단일 메소드가 있는 `window.opener` 객체를 구현합니다. - -### Instance Properties (인스턴스 속성) - -`BrowserWindowProxy` 객체는 다음과 같은 instance properties(인스턴스 속성)를 가집니다. - -#### `win.closed` - -자식 윈도우가 닫힌 후에 true로 설정된 Boolean값 입니다. - diff --git a/docs-translations/ko-KR/api/browser-window.md b/docs-translations/ko-KR/api/browser-window.md deleted file mode 100644 index 0e18a95abc25..000000000000 --- a/docs-translations/ko-KR/api/browser-window.md +++ /dev/null @@ -1,1177 +0,0 @@ -# BrowserWindow - -> 브라우저 윈도우를 생성하고 제어합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -```javascript -// 메인 프로세스에서 -const {BrowserWindow} = require('electron') - -// 또는 렌더러 프로세스에서 -// const {BrowserWindow} = require('electron').remote - -let win = new BrowserWindow({width: 800, height: 600}) -win.on('closed', () => { - win = null -}) - -// 원격 URL 로드 -win.loadURL('https://github.com') - -// 또는 로컬 HTML 로드 -win.loadURL(`file://${__dirname}/app/index.html`) -``` - -## Frameless 윈도우 - -Frameless 윈도우를 만들거나 일정한 모양의 투명한 윈도우를 만드려면, -[Frameless 윈도우](frameless-window.md) API를 사용할 수 있습니다. - -## 우아하게 윈도우 표시하기 - -윈도우에서 페이지를 로딩할 때, 사용자는 페이지가 로드되는 모습을 볼 것입니다. -네이티브 어플리케이션으로써 좋지 않은 경험입니다. 윈도우가 시각적인 깜빡임 없이 -표시되도록 만드려면, 서로 다른 상황을 위해 두 가지 방법이 있습니다. - -### `ready-to-show` 이벤트 사용하기 - -페이지가 로딩되는 동안, `ready-to-show` 이벤트가 랜더러 프로세스가 랜더링이 완료되었을 -때 처음으로 발생합니다. 이 이벤트 이후로 윈도우를 표시하면 시각적인 깜빡임 없이 표시할 -수 있습니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({show: false}) -win.once('ready-to-show', () => { - win.show() -}) -``` - -이 이벤트는 보통 `did-finish-load` 이벤트 이후에 발생하지만, 페이지가 너무 많은 외부 -리소스를 가지고 있다면, `did-finish-load` 이벤트가 발생하기 이전에 발생할 수도 -있습니다. - -### `backgroundColor` 설정하기 - -복잡한 어플리케이션에선, `ready-to-show` 이벤트가 너무 늦게 발생할 수 있습니다. -이는 사용자가 어플리케이션이 느리다고 생각할 수 있습니다. 이러한 경우 어플리케이션 -윈도우를 바로 보이도록 하고 어플리케이션의 배경과 가까운 배경색을 `backgroundColor`을 -통해 설정합니다: - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({backgroundColor: '#2e2c29'}) -win.loadURL('https://github.com') -``` - -참고로 `ready-to-show` 이벤트를 사용하더라도 어플리케이션을 네이티브 느낌이 나도록 -하기 위해 `backgroundColor`도 같이 설정하는 것을 권장합니다. - -## 부모와 자식 윈도우 - -`parent` 옵션을 사용하면 자식 윈도우를 만들 수 있습니다: - -```javascript -const {BrowserWindow} = require('electron') - -let top = new BrowserWindow() -let child = new BrowserWindow({parent: top}) -child.show() -top.show() -``` - -`child` 윈도우는 언제나 `top` 윈도우의 상위에 표시됩니다. - -### 모달 윈도우 - -모달 윈도우는 부모 윈도우를 비활성화 시키는 자식 윈도우입니다. 모달 윈도우를 만드려면 -`parent`, `modal` 옵션을 동시에 설정해야 합니다: - -```javascript -const {BrowserWindow} = require('electron') - -let child = new BrowserWindow({parent: top, modal: true, show: false}) -child.loadURL('https://github.com') -child.once('ready-to-show', () => { - child.show() -}) -``` - -### 플랫폼별 특이사항 - -* macOS 에서 부모창이 이동할 때 자식창은 부모창과의 상대적 위치를 유지합니다. 윈도우즈와 - 리눅스는 자식창이 움직이지 않습니다. -* 윈도우즈에서 parent 를 동적으로 변경할 수 없습니다. -* 리눅스에서 모달창의 타입이 `dialog`로 변경됩니다. -* 리눅스에서 많은 데스크톱 환경이 모달창 숨김을 지원하지 않습니다. - -## Class: BrowserWindow - -`BrowserWindow`는 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를 -상속받은 클래스 입니다. - -`BrowserWindow`는 `options`를 통해 네이티브 속성을 포함한 새로운 윈도우를 생성합니다. - -### `new BrowserWindow([options])` - -`options` 객체 (optional), 사용할 수 있는 속성들: - -* `width` Integer - 윈도우의 가로 너비. 기본값은 `800`입니다. -* `height` Integer - 윈도우의 세로 높이. 기본값은 `600`입니다. -* `x` Integer (**required** y가 사용되면) - 화면을 기준으로 창 좌측을 오프셋 한 - 위치. 기본값은 `화면중앙`입니다. -* `y` Integer (**required** x가 사용되면) - 화면을 기준으로 창 상단을 오프셋 한 - 위치. 기본값은 `화면중앙`입니다. -* `useContentSize` Boolean - `width`와 `height`를 웹 페이지의 크기로 사용합니다. - 이 속성을 사용하면 웹 페이지의 크기에 윈도우 프레임 크기가 추가되므로 실제 - 창은 조금 더 커질 수 있습니다. 기본값은 `false`입니다. -* `center` Boolean - 윈도우를 화면 정 중앙에 위치시킵니다. -* `minWidth` Integer - 윈도우의 최소 가로 너비. 기본값은 `0`입니다. -* `minHeight` Integer - 윈도우의 최소 세로 높이. 기본값은 `0`입니다. -* `maxWidth` Integer - 윈도우의 최대 가로 너비. 기본값은 `제한없음`입니다. -* `maxHeight` Integer - 윈도우의 최대 세로 높이. 기본값은 `제한없음`입니다. -* `resizable` Boolean - 윈도우의 크기를 재조정 할 수 있는지 여부. 기본값은 - `true` 입니다. -* `movable` Boolean - 윈도우를 이동시킬 수 있는지 여부. Linux에선 구현되어있지 - 않습니다. 기본값은 `true` 입니다. -* `minimizable` Boolean - 윈도우를 최소화시킬 수 있는지 여부. Linux에선 - 구현되어있지 않습니다. 기본값은 `true` 입니다. -* `maximizable` Boolean - 윈도우를 최대화시킬 수 있는지 여부. Linux에선 - 구현되어있지 않습니다. 기본값은 `true` 입니다. -* `closable` Boolean - 윈도우를 닫을 수 있는지 여부. Linux에선 구현되어있지 - 않습니다. 기본값은 `true` 입니다. -* `focusable` Boolean - 윈도우가 포커스될 수 있는지 여부입니다. 기본값은 - `true`입니다. Windows에선 `focusable: false`를 설정함으로써 암시적으로 - `skipTaskbar: true`도 설정됩니다. Linux에선 `focusable: false`를 설정함으로써 - 윈도우가 wm과 함께 반응을 중지하며 모든 작업 영역에서 윈도우가 언제나 최상단에 - 있게 됩니다. -* `alwaysOnTop` Boolean - 윈도우이 언제나 다른 창들 위에 유지되는지 여부. - 기본값은 `false`입니다. -* `fullscreen` Boolean - 윈도우의 전체화면 활성화 여부. 이 속성을 명시적으로 - `false`로 지정했을 경우, macOS에선 전체화면 버튼이 숨겨지거나 비활성됩니다. - 기본값은 `false` 입니다. -* `fullscreenable` Boolean - 윈도우가 전체화면 모드로 전환될 수 있는지 - 여부입니다. 또한 macOS에선, 최대화/줌 버튼이 전체화면 모드 또는 윈도우 - 최대화를 실행할지 여부도 포함됩니다. 기본값은 `true`입니다. -* `skipTaskbar` Boolean - 작업표시줄 애플리케이션 아이콘 표시 스킵 여부. - 기본값은 `false`입니다. -* `kiosk` Boolean - Kiosk(키오스크) 모드. 기본값은 `false`입니다. -* `title` String - 기본 윈도우 제목. 기본값은 `"Electron"`입니다. -* `icon` [NativeImage](native-image.md) - 윈도우 아이콘, 생략하면 실행 파일의 - 아이콘이 대신 사용됩니다. -* `icon` [NativeImage](native-image.md) - 윈도우 아이콘. Windows에선 가장 좋은 - 시각적 효과를 얻기 위해 `ICO`를 사용하는 것을 권장하며, 또한 undefined로 - 남겨두면 실행 파일의 아이콘이 대신 사용됩니다. -On Windows it is - recommended to use `ICO` icons to get best visual effects, you can also - leave it undefined so the executable's icon will be used. -* `show` Boolean - 윈도우가 생성되면 보여줄지 여부. 기본값은 `true`입니다. -* `frame` Boolean - `false`로 지정하면 창을 [Frameless Window](frameless-window.md) - 형태로 생성합니다. 기본값은 `true`입니다. -* `parent` BrowserWindow - 부모 윈도우를 설정합니다. 기본 값은 `null`입니다. -* `modal` Boolean - 이 윈도우가 모달 윈도우인지 여부를 설정합니다. 이 옵션은 - 자식 윈도우에서만 작동합니다. 기본값은 `false`입니다. -* `acceptFirstMouse` Boolean - 윈도우가 비활성화 상태일 때 내부 콘텐츠 클릭 시 - 활성화 되는 동시에 단일 mouse-down 이벤트를 발생시킬지 여부. 기본값은 `false` - 입니다. -* `disableAutoHideCursor` Boolean - 타이핑중 자동으로 커서를 숨길지 여부. - 기본값은 `false`입니다. -* `autoHideMenuBar` Boolean - `Alt`를 누르지 않는 한 애플리케이션 메뉴바를 - 숨길지 여부. 기본값은 `false`입니다. -* `enableLargerThanScreen` Boolean - 윈도우 크기가 화면 크기보다 크게 재조정 될 - 수 있는지 여부. 기본값은 `false`입니다. -* `backgroundColor` String - `#66CD00` 와 `#FFF`, `#80FFFFFF` (알파 지원됨) 같이 - 16진수로 표현된 윈도우의 배경 색. 기본값은 `#FFF` (white). -* `hasShadow` Boolean - 윈도우가 그림자를 가질지 여부를 지정합니다. 이 속성은 - macOS에서만 구현되어 있습니다. 기본값은 `true`입니다. -* `darkTheme` Boolean - 설정에 상관 없이 무조건 어두운 윈도우 테마를 사용합니다. - 몇몇 GTK+3 데스크톱 환경에서만 작동합니다. 기본값은 `false`입니다. -* `transparent` Boolean - 윈도우를 [투명화](frameless-window.md)합니다. 기본값은 - `false`입니다. -* `type` String - 특정 플랫폼에만 적용되는 윈도우의 종류를 지정합니다. 기본값은 - 일반 윈도우 입니다. 사용할 수 있는 창의 종류는 아래를 참고하세요. -* `standardWindow` Boolean - macOS의 표준 윈도우를 텍스쳐 윈도우 대신 - 사용합니다. 기본 값은 `true`입니다. -* `titleBarStyle` String, macOS - 윈도우 타이틀 바 스타일을 지정합니다. 기본값은 - `default` 입니다. 가능한 값은 다음과 같습니다: - * `default` - 표준 Mac 회색 불투명 스타일을 사용합니다. - * `hidden` - 타이틀 바를 숨기고 콘텐츠 전체를 윈도우 크기에 맞춥니다. - 타이틀 바는 없어지지만 표준 창 컨트롤 ("신호등 버튼")은 왼쪽 상단에 - 유지됩니다. - * `hidden-inset` - `hidden` 타이틀 바 속성과 함께 신호등 버튼이 윈도우 - 모서리로부터 약간 더 안쪽으로 들어가도록합니다. 10.9 Mavericks에선 지원되지 - 않고 `hidden`으로 폴백합니다. -* `thickFrame` Boolean - Windows에서 테두리 없는 윈도우를 위해 표준 윈도우 - 프레임을 추가하는 `WS_THICKFRAME` 스타일을 사용합니다. `false`로 지정하면 - 윈도우의 그림자와 애니메이션을 삭제합니다. 기본값은 `true`입니다. -* `webPreferences` Object - 웹 페이지 기능을 설정합니다. - * `nodeIntegration` Boolean - node(node.js) 통합 여부. 기본값은 `true`입니다. - * `preload` String - 스크립트를 지정하면 페이지 내의 다른 스크립트가 작동하기 - 전에 로드됩니다. 여기서 지정한 스크립트는 node 통합 활성화 여부에 상관없이 - 언제나 모든 node API에 접근할 수 있습니다. 이 속성의 스크립트 경로는 절대 - 경로로 지정해야 합니다. node 통합이 비활성화되어있을 경우, 미리 로드되는 - 스크립트는 node의 전역 심볼들을 다시 전역 범위로 다시 포함 시킬 수 있습니다. - [여기](process.md#event-loaded)의 예시를 참고하세요. - * `session` [Session](session.md#class-session) - 페이지에서 사용할 세션을 - 지정합니다. Session 객체를 직접적으로 전달하는 대신, 파티션 문자열을 받는 - `partition` 옵션을 사용할 수도 있습니다. `session`과 `partition`이 같이 - 제공되었을 경우 `session`이 사용됩니다. 기본값은 기본 세션입니다. - * `partition` String - 페이지에서 사용할 세션을 지정합니다. 만약 `partition` - 이 `persist:`로 시작하면 페이지는 지속성 세션을 사용하며 다른 모든 앱 내의 - 페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로 - 시작하지 않으면 페이지는 인-메모리 세션을 사용합니다. 여러 페이지에서 같은 - `partition`을 지정하면 같은 세션을 공유할 수 있습니다. `partition`을 - 지정하지 않으면 애플리케이션의 기본 세션이 사용됩니다. - * `zoomFactor` Number - 페이지의 기본 줌 값을 지정합니다. 예를 들어 `300%`를 - 표현하려면 `3.0`으로 지정합니다. 기본값은 `1.0`입니다. - * `javascript` Boolean - 자바스크립트를 활성화합니다. 기본값은 `false`입니다. - * `webSecurity` Boolean - `false`로 지정하면 same-origin 정책을 비활성화 - 합니다. (이 속성은 보통 사람들에 의해 웹 사이트를 테스트할 때 사용합니다) - 그리고`allowRunningInsecureContent` 두 - 속성을 사용자가 `true`로 지정되지 않은 경우 `true`로 지정합니다. 기본값은 - `true`입니다. - * `allowRunningInsecureContent` Boolean - https 페이지에서 http URL에서 로드한 - JavaScript와 CSS 또는 플러그인을 실행시킬 수 있도록 허용합니다. 기본값은 - `false`입니다. - * `images` Boolean - 이미지 지원을 활성화합니다. 기본값은 `true`입니다. - * `textAreasAreResizable` Boolean - HTML TextArea 요소의 크기를 재조정을 - 허용합니다. 기본값은 `true`입니다. - * `webgl` Boolean - WebGL 지원을 활성화합니다. 기본값은 `true`입니다. - * `webaudio` Boolean - WebAudio 지원을 활성화합니다. 기본값은 `true`입니다. - * `plugins` Boolean - 플러그인 활성화 여부를 지정합니다. 기본값은 `false`입니다. - * `experimentalFeatures` Boolean - Chrome의 실험적인 기능을 활성화합니다. - 기본값은 `false`입니다. - * `experimentalCanvasFeatures` Boolean - Chrome의 실험적인 캔버스(canvas) - 기능을 활성화합니다. 기본값은 `false`입니다. - * `scrollBounce` Boolean - macOS에서 스크롤 튕기기 효과 (탄성 밴딩)를 활성화 - 합니다. 기본값은 `false`입니다. - * `blinkFeatures` String - 활성화 할 `CSSVariables,KeyboardEventKey`같이 `,`로 - 구분된 기능 문자열들의 리스트입니다. [RuntimeEnabledFeatures.json5][blink-feature-string] - 파일에서 찾을 수 있습니다. - * `disableBlinkFeatures` String - 비활성화 할 `CSSVariables,KeyboardEventKey`같이 - `,`로 구분된 기능 문자열들의 리스트입니다. [RuntimeEnabledFeatures.json5][blink-feature-string] - 파일에서 찾을 수 있습니다. - * `defaultFontFamily` Object - font-family의 기본 폰트를 지정합니다. - * `standard` String - 기본값 `Times New Roman`. - * `serif` String - 기본값 `Times New Roman`. - * `sansSerif` String - 기본값 `Arial`. - * `monospace` String - 기본값 `Courier New`. - * `defaultFontSize` Integer - 기본값 `16`. - * `defaultMonospaceFontSize` Integer - 기본값 `13`. - * `minimumFontSize` Integer - 기본값 `0`. - * `defaultEncoding` String - 기본값 `ISO-8859-1`. - * `backgroundThrottling` Boolean - 페이지가 백그라운드 상태에 진입할 때 - 애니메이션과 타이머에 스로틀을 적용할지 여부입니다. 기본값은 `true`입니다. - * `offscreen` Boolean - 브라우저 윈도우에 오프 스크린 랜더링을 적용할지 여부를 - 지정합니다. 기본값은 `false`입니다. - * `sandbox` Boolean - Chromium 운영체제 수준의 샌드박스 활성화 여부. - -`minWidth`/`maxWidth`/`minHeight`/`maxHeight`를 통해 최소 또는 최대 윈도우 -크기를 지정한 경우, 이는 사용자만을 제약하며, `setBounds`/`setSize` 또는 -`BrowserWindow`의 생성자에서 크기 제약을 따르지 않는 윈도우 크기를 전달하는 것은 -막을 수 없습니다. - -`type` 속성에서 사용할 수 있는 값과 동작은 다음과 같으며, 플랫폼에 따라 다릅니다: - -* Linux의 경우, `desktop`, `dock`, `toolbar`, `splash`, `notification` 종류를 - 사용할 수 있습니다. -* macOS의 경우, `desktop`, `textured` 종류를 사용할 수 있습니다. - * `textured`는 창에 메탈 그라디언트 외관(`NSTexturedBackgroundWindowMask`)을 - 설정합니다. - * `desktop`은 데스크탑 배경 레벨(`kCGDesktopWindowLevel - 1`)에 윈도우를 - 배치합니다. 참고로 이렇게 만들어진 윈도우는 포커스, 키보드, 마우스 이벤트를 - 받을 수 없습니다. 하지만 편법으로 `globalShortcut`을 통해 키 입력을 받을 수 - 있습니다. -* Windows의 경우, 가능한 타입으론 `toolbar`가 있습니다. - -### Instance Events - -`new BrowserWindow`로 생성된 객체는 다음과 같은 이벤트를 발생시킵니다: - -**참고:** 몇몇 이벤트는 라벨에 특정한 OS에서만 작동합니다. - -#### Event: 'page-title-updated' - -Returns: - -* `event` Event -* `title` String - -문서의 제목이 변경될 때 발생하는 이벤트입니다. `event.preventDefault()`를 호출하여 -네이티브 윈도우의 제목이 변경되는 것을 방지할 수 있습니다. - -#### Event: 'close' - -Returns: - -* `event` Event -* `title` String - -윈도우가 닫히기 시작할 때 발생하는 이벤트입니다. -이 이벤트는 DOM의 `beforeunload` 와 `unload` 이벤트 전에 발생합니다. -`event.preventDefault()`를 호출하여 윈도우 종료를 취소할 수 있습니다. - -보통 창을 닫아야 할지 결정하기 위해 `beforeunload` 이벤트를 사용하려고 할 것입니다. -이 이벤트는 윈도우 콘텐츠를 새로고칠 때도 발생합니다. -Electron에선 `undefined`가 아닌 이외의 값을 전달할 경우 윈도우 종료를 취소합니다. -예시는 다음과 같습니다: - -```javascript -window.onbeforeunload = (e) => { - console.log('I do not want to be closed') - - // 일반적인 브라우저와는 달리 사용자에게 확인 창을 보여주지 않고, non-void 값을 반환하면 - // 조용히 닫기를 취소합니다. - // Dialog API를 통해 사용자가 애플리케이션을 종료할지 정할 수 있도록 확인 창을 표시하는 것을 - // 추천합니다. - e.returnValue = false -} -``` - -#### Event: 'closed' - -윈도우 종료가 완료된 경우 발생하는 이벤트입니다. 이 이벤트가 발생했을 경우 반드시 -윈도우의 레퍼런스가 더 이상 사용되지 않도록 제거해야 합니다. - -#### Event: 'unresponsive' - -웹 페이지가 응답하지 않을 때 발생하는 이벤트입니다. - -#### Event: 'responsive' - -응답하지 않는 웹 페이지가 다시 응답하기 시작했을 때 발생하는 이벤트입니다. - -#### Event: 'blur' - -윈도우가 포커스를 잃었을 때 발생하는 이벤트입니다. - -#### Event: 'focus' - -윈도우가 포커스를 가졌을 때 발생하는 이벤트입니다. - -#### Event: 'show' - -윈도우가 보여진 상태일 때 발생하는 이벤트입니다. - -#### Event: 'hide' - -윈도우가 숨겨진 상태일 때 발생하는 이벤트입니다. - -#### Event: 'ready-to-show' - -웹 페이지가 완전히 랜더링되어 윈도우가 시각적인 깜빡임없이 콘텐츠를 보여줄 수 있을 때 -발생하는 이벤트입니다. - -#### Event: 'maximize' - -윈도우가 최대화됐을 때 발생하는 이벤트입니다. - -#### Event: 'unmaximize' - -윈도우의 최대화 상태가 해제되었을 때 발생하는 이벤트입니다. - -#### Event: 'minimize' - -윈도우가 최소화됐을 때 발생하는 이벤트입니다. - -#### Event: 'restore' - -윈도우가 최소화 상태에서 복구되었을 때 발생하는 이벤트입니다. - -#### Event: 'resize' - -윈도우의 크기가 재조정될 때 발생하는 이벤트입니다. - -#### Event: 'move' - -윈도우가 새로운 위치로 이동될 때 발생하는 이벤트입니다. - -__참고__: macOS에선 이 이벤트가 그저 `moved` 이벤트의 별칭(alias)으로 사용됩니다. - -#### Event: 'moved' _macOS_ - -윈도우가 새로운 위치로 이동되었을 때 발생하는 이벤트입니다. (한 번만) - -#### Event: 'enter-full-screen' - -윈도우가 풀 스크린 모드로 진입할 때 발생하는 이벤트입니다. - -#### Event: 'leave-full-screen' - -윈도우가 풀 스크린 모드에서 해제될 때 발생하는 이벤트입니다. - -#### Event: 'enter-html-full-screen' - -윈도우가 HTML API에 의해 풀 스크린 모드로 진입할 때 발생하는 이벤트입니다. - -#### Event: 'leave-html-full-screen' - -윈도우가 HTML API에 의해 풀 스크린 모드에서 해제될 때 발생하는 이벤트입니다. - -#### Event: 'app-command' _Windows_ - -Returns: - -* `event` Event -* `command` String - -[App Command](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx)가 -호출됐을 때 발생하는 이벤트입니다. 이 이벤트는 일반적으로 키보드 미디어 키 또는 -브라우저 커맨드(기본 동작 키)에 관련되어 있습니다. 예를 들어 Windows에서 작동하는 -몇몇 마우스는 "뒤로가기" 같은 동작을 포함하고 있습니다. - -반환되는 커맨드들은 모두 소문자화되며 언더스코어(`_`)는 하이픈(`-`)으로 변경되며 -`APPCOMMAND_` 접두어는 제거됩니다. -e.g. `APPCOMMAND_BROWSER_BACKWARD` 는 `browser-backward`와 같이 반환됩니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.on('app-command', (e, cmd) => { - // Navigate the window back when the user hits their mouse back button - if (cmd === 'browser-backward' && win.webContents.canGoBack()) { - win.webContents.goBack() - } -}) -``` - -#### Event: 'scroll-touch-begin' _macOS_ - -스크롤 휠 이벤트가 동작하기 시작했을 때 발생하는 이벤트입니다. - -#### Event: 'scroll-touch-end' _macOS_ - -스크롤 휠 이벤트가 동작을 멈췄을 때 발생하는 이벤트입니다. - -#### Event: 'scroll-touch-edge' _macOS_ - -스크롤 휠 이벤트로 요소의 끝에 도달했을 때 발생하는 이벤트입니다. - -#### Event: 'swipe' _macOS_ - -Returns: - -* `event` Event -* `direction` String - -3-손가락 스와이프가 작동할 때 발생하는 이벤트입니다. 방향은 `up`, `right`, `down`, -`left`가 될 수 있습니다. - -### Static Methods - -`BrowserWindow` 클래스는 다음과 같은 정적 메서드를 가지고 있습니다: - -#### `BrowserWindow.getAllWindows()` - -Returns `BrowserWindow[]` - 열려있는 모든 브라우저 윈도우의 배열. - -#### `BrowserWindow.getFocusedWindow()` - -Returns `BrowserWindow` - 애플리케이션에서 포커스된 윈도우. 없을 경우 `null`. - -#### `BrowserWindow.fromWebContents(webContents)` - -* `webContents` [WebContents](web-contents.md) - -Returns `BrowserWindow` - `webContents` 를 소유한 윈도우. - -#### `BrowserWindow.fromId(id)` - -* `id` Integer - -Returns `BrowserWindow` - `id` 에 해당하는 윈도우. - -#### `BrowserWindow.addDevToolsExtension(path)` - -* `path` String - -`path`에 있는 개발자 도구 확장 기능을 추가합니다. 그리고 확장 기능의 이름을 반환합니다. - -확장 기능은 기억됩니다. 따라서 API는 단 한 번만 호출되어야 합니다. 이 API는 실제 -프로그램 작성에 사용할 수 없습니다. 만약 이미 로드된 확장 기능을 추가하려 한다면, 이 -메서드는 아무것도 반환하지 않고 콘솔에 경고가 로그됩니다. - -**참고:** 이 API는 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 없습니다. - -#### `BrowserWindow.removeDevToolsExtension(name)` - -* `name` String - -`name`에 해당하는 개발자 도구 확장 기능을 제거합니다. - -**참고:** 이 API는 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 없습니다. - -#### `BrowserWindow.getDevToolsExtensions()` - -Returns `Object` - 키는 확장 기능 이름을 값은 `name`과 `version` 속성을 포함하는 -객체를 가집니다. - -개발자 도구 확장 기능이 설치되었는지 확인하려면 다음과 같이 실행할 수 있습니다: - -```javascript -const {BrowserWindow} = require('electron') - -let installed = BrowserWindow.getDevToolsExtensions().hasOwnProperty('devtron') -console.log(installed) -``` - -**참고:** 이 API는 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 없습니다. - -### Instance Properties - -`new BrowserWindow`로 생성한 객체는 다음과 같은 속성을 가지고 있습니다: - -```javascript -const {BrowserWindow} = require('electron') -// `win`은 BrowserWindow의 인스턴스입니다 -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('https://github.com') -``` - -#### `win.webContents` - -윈도우의 `WebContents` 객체입니다. 모든 웹 페이지와 관련된 이벤트와 작업이 이 객체를 -통해 수행됩니다. - -메서드나 이벤트에 대한 자세한 내용은 [`webContents` 문서](web-contents.md)를 -참고하세요. - -#### `win.id` - -`Integer` 형식의 윈도우 고유 ID 입니다. - -### Instance Methods - -`new BrowserWindow`로 생성한 객체는 다음과 같은 메서드들을 가지고 있습니다: - -**참고:** 몇몇 메서드들은 라벨에서 특정한 운영체제 시스템에서만 작동합니다. - -#### `win.destroy()` - -윈도우를 강제로 닫습니다. 웹 페이지의 `unload` 와 `beforeunload` 이벤트는 일어나지 -않습니다. 또한 이 윈도우의 `close`도 일어나지 않습니다. 하지만 `closed` 이벤트는 -반드시 발생함을 보장합니다. - -#### `win.close()` - -윈도우의 종료를 시도합니다. 이 메서드는 사용자가 윈도우의 닫기 버튼을 클릭했을 때와 -같은 효과를 냅니다. 웹 페이지는 로드가 취소되고 종료됩니다. 자세한 내용은 -[close 이벤트](#event-close)를 참고하세요. - -#### `win.focus()` - -윈도우에 포커스를 맞춥니다. - -#### `win.blur()` - -윈도우의 포커스를 없앱니다. - -#### `win.isFocused()` - -Returns `Boolean` - 윈도우가 포커스되었는지 여부. - -#### `win.isDestroyed()` - -Returns `Boolean` - 윈도우가 소멸되었는지 여부. - -#### `win.show()` - -윈도우를 표시하고 포커스합니다. - -#### `win.showInactive()` - -윈도우를 표시만 하고 포커스하지 않습니다. - -#### `win.hide()` - -윈도우를 숨깁니다. - -#### `win.isVisible()` - -Returns `Boolean` - 윈도우가 사용자에게 표시되고 있는지 여부. - -#### `win.isModal()` - -Returns `Boolean` - 현재 윈도우가 모달 윈도우인지 여부. - -#### `win.maximize()` - -윈도우를 최대화 시킵니다. - -#### `win.unmaximize()` - -윈도우 최대화를 취소합니다. - -#### `win.isMaximized()` - -Returns `Boolean` - 윈도우가 최대화 되어있는지 여부. - -#### `win.minimize()` - -윈도우를 최소화 시킵니다. 어떤 플랫폼은 최소화된 윈도우가 Dock에 표시됩니다. - -#### `win.restore()` - -최소화된 윈도우를 이전 상태로 되돌립니다. - -#### `win.isMinimized()` - -Returns `Boolean` - 윈도우가 최소화되었는지 여부. - -#### `win.setFullScreen(flag)` - -* `flag` Boolean - -윈도우의 전체화면 상태를 지정합니다. - -#### `win.isFullScreen()` - -Returns `Boolean` - 윈도우가 전체화면 모드인지 여부. - -#### `win.setAspectRatio(aspectRatio[, extraSize])` _macOS_ - -* `aspectRatio` Float - 유지하려 하는 콘텐츠 뷰 일부의 종횡비. -* `extraSize` Object (optional) - 종횡비를 유지하는 동안 포함되지 않을 엑스트라 크기. - * `width` Integer - * `height` Integer - -이 메서드는 윈도우의 종횡비를 유지하는 기능을 수행합니다. 엑스트라 크기는 개발자가 -픽셀로 특정한 공간이 있을 때 종횡비 계산에서 제외됩니다. 이 API는 윈도우의 크기와 -콘텐츠 사이즈의 차이를 이미 고려하고 있습니다. - -일반 윈도우에서 작동하는 HD 비디오 플레이어와 관련된 컨트롤을 고려합니다. -만약 15 픽셀의 컨트롤이 왼쪽 가장자리에 있고 25 픽셀의 컨트롤이 오른쪽 가장자리에 -있으며 50 픽셀의 컨트롤이 플레이어 밑에 있을 때 플레이어 자체가 16:9 종횡비(HD의 표준 -종횡비는 @1920x1080)를 유지하기 위해선 이 함수를 16/9, [ 40, 50 ] 인수와 함께 -호출해야 합니다. 두번째 인수 엑스트라 크기는 존재하는 크기만 관여하고 콘텐츠 뷰 내의 -크기는 관여하지 않습니다. 그저 전체 콘텐츠 뷰 내에 있는 모든 엑스트라 너비, 높이 영역이 -합해집니다. - -#### `win.previewFile(path[, displayName])` _macOS_ - -* `path` String - QuickLook 으로 미리 볼 파일에 대한 절대 경로. Quick Look 이 - 열기 위한 파일의 컨텐츠 형식을 결정하는데 경로의 파일명과 확장자를 사용하기 - 때문에 중요합니다. -* `displayName` String (Optional) - Quick Look 모달 뷰에 표시되는 파일의 이름. - 이것은 순전히 보여주는 용도이며 파일의 컨텐츠 형식에 영향을 주지 않습니다. - 기본값은 `path` 입니다. - -주어진 경로의 파일을 미리 보여주기 위해 [Quick Look][quick-look] 을 사용하세요. - -#### `win.setBounds(bounds[, animate])` - -* `bounds` [Rectangle](structures/rectangle.md) -* `animate` Boolean (optional) _macOS_ - -윈도우를 주어진 영역으로 크기 재조정 및 이동합니다. - -#### `win.getBounds()` - -Returns [`Rectangle`](structures/rectangle.md) - -#### `win.setContentBounds(bounds[, animate])` - -* `bounds` [Rectangle](structures/rectangle.md) -* `animate` Boolean (optional) _macOS_ - -윈도우의 내부 영역 (예. 웹페이지) 을 주어진 영역으로 크기 재조정 및 이동합니다. - -#### `win.getContentBounds()` - -* `bounds` [`Rectangle`](structures/rectangle.md) - -윈도우의 클라이언트 영역 (웹 페이지)의 너비, 높이, x, y 값을 포함하는 객체를 -반환합니다. - -#### `win.setSize(width, height[, animate])` - -* `width` Integer -* `height` Integer -* `animate` Boolean (optional) _macOS_ - -`width`와 `height` 값으로 윈도우 크기를 재조정합니다. (너비, 높이) - -#### `win.getSize()` - -Returns `Integer[]` - 윈도우의 너비, 높이를 포함. - -#### `win.setContentSize(width, height[, animate])` - -* `width` Integer -* `height` Integer -* `animate` Boolean (optional) _macOS_ - -윈도우 클라이언트 영역(웹 페이지)의 크기를 `width`, `height`로 재조정합니다. - -#### `win.getContentSize()` - -Returns `Integer[]` - 윈도우 내부 영역의 너비, 높이를 포함. - -#### `win.setMinimumSize(width, height)` - -* `width` Integer -* `height` Integer - -윈도우의 최소 `width`, `height` 크기를 지정합니다. - -#### `win.getMinimumSize()` - -Returns `Integer[]` - 윈도우의 최소 너비, 높이를 포함. - -#### `win.setMaximumSize(width, height)` - -* `width` Integer -* `height` Integer - -윈도우의 최대 `width`, `height` 크기를 지정합니다. - -#### `win.getMaximumSize()` - -Returns `Integer[]` - 윈도우의 최대 너비, 높이를 포함. - -#### `win.setResizable(resizable)` - -* `resizable` Boolean - -사용자에 의해 윈도우의 크기가 재조정될 수 있는지를 지정합니다. - -#### `win.isResizable()` - -Returns `Boolean` - 사용자에 의해 윈도우의 크기가 재조정될 수 있는지 여부. - -#### `win.setMovable(movable)` _macOS_ _Windows_ - -* `movable` Boolean - -사용자에 의해 윈도우를 이동시킬 수 있는지 여부를 지정합니다. Linux에선 아무 일도 -일어나지 않습니다. - -#### `win.isMovable()` _macOS_ _Windows_ - -Returns `Boolean` - 사용자에 의해 윈도우를 이동시킬 수 있는지 여부. - -Linux에선 항상 `true`를 반환합니다. - -#### `win.setMinimizable(minimizable)` _macOS_ _Windows_ - -* `minimizable` Boolean - -사용자에 의해 윈도우를 최소화시킬 수 있는지 여부를 지정합니다. Linux에선 아무 일도 -일어나지 않습니다. - -#### `win.isMinimizable()` _macOS_ _Windows_ - -Returns `Boolean` - 사용자에 의해 윈도우를 최소화시킬 수 있는지 여부. - -Linux에선 항상 `true`를 반환합니다. - -#### `win.setMaximizable(maximizable)` _macOS_ _Windows_ - -* `maximizable` Boolean - -사용자에 의해 윈도우를 최대화시킬 수 있는지 여부를 지정합니다. Linux에선 아무 일도 -일어나지 않습니다. - -#### `win.isMaximizable()` _macOS_ _Windows_ - -Returns `Boolean` - 사용자에 의해 윈도우를 최대화시킬 수 있는지 여부. - -Linux에선 항상 `true`를 반환합니다. - -#### `win.setFullScreenable(fullscreenable)` - -* `fullscreenable` Boolean - -최대화/줌 버튼이 전체화면 모드 또는 윈도우 최대화를 토글할 수 있게 할지 여부를 -지정합니다. - -#### `win.isFullScreenable()` - -Returns `Boolean` - 최대화/줌 버튼이 전체화면 모드 또는 윈도우 최대화를 토글할 -수 있는지 여부. - -#### `win.setClosable(closable)` _macOS_ _Windows_ - -* `closable` Boolean - -사용자에 의해 윈도우가 수동적으로 닫힐 수 있는지 여부를 지정합니다. Linux에선 아무 일도 -일어나지 않습니다. - -#### `win.isClosable()` _macOS_ _Windows_ - -Returns `Boolean` - 사용자에 의해 윈도우가 수동적으로 닫힐 수 있는지 여부. - -Linux에선 항상 `true`를 반환합니다. - -#### `win.setAlwaysOnTop(flag[, level])` - -* `flag` Boolean -* `level` String (optional) _macOS_ - 이 값은 `normal`, `floating`, - `torn-off-menu`, `modal-panel`, `main-menu`, `status`, `pop-up-menu`, - `screen-saver`, `dock` 을 포함합니다. 기본값은 `floating` 입니다. 자세한 - 내용은 [macOS 문서][window-levels] 를 보세요. - -윈도우가 언제나 다른 윈도우들 위에 표시되는지 여부를 지정합니다. 이 설정을 활성화 하면 -윈도우는 포커스 될 수 없는 툴박스 윈도우가 아닌 일반 윈도우로 유지됩니다. - -#### `win.isAlwaysOnTop()` - -윈도우가 언제나 다른 윈도우들 위에 표시되는지 여부를 반환합니다. - -#### `win.center()` - -윈도우를 화면 정 중앙으로 이동합니다. - -#### `win.setPosition(x, y[, animate])` - -* `x` Integer -* `y` Integer -* `animate` Boolean (optional) _macOS_ - -윈도우의 위치를 `x`, `y`로 이동합니다. - -#### `win.getPosition()` - -Returns `Integer[]` - 윈도우의 현재 위치. - -#### `win.setTitle(title)` - -* `title` String - -`title`을 네이티브 윈도우의 제목으로 지정합니다. - -#### `win.getTitle()` - -Returns `String` - 네이티브 윈도우의 제목. - -**참고:** 웹 페이지의 제목과 네이티브 윈도우의 제목은 서로 다를 수 있습니다. - -#### `win.setSheetOffset(offsetY[, offsetX])` _macOS_ - -* `offsetY` Float -* `offsetX` Float (optional) - -macOS에서 시트를 부착할 위치를 지정합니다. 기본적으로 시트는 윈도우의 프레임 바로 -아래의 위치에 부착됩니다. 아마도 이 기능은 보통 다음과 같이 HTML 렌더링된 툴바 밑에 -표시하기 위해 사용할 것입니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() - -let toolbarRect = document.getElementById('toolbar').getBoundingClientRect() -win.setSheetOffset(toolbarRect.height) -``` - -#### `win.flashFrame(flag)` - -* `flag` Boolean - -사용자가 윈도우에 관심을 가질 수 있도록 창을 깜빡이거나 이를 중지합니다. - -#### `win.setSkipTaskbar(skip)` - -* `skip` Boolean - -애플리케이션 아이콘을 작업표시줄에 보이지 않도록 설정합니다. - -#### `win.setKiosk(flag)` - -* `flag` Boolean - -Kiosk(키오스크) 모드를 설정합니다. - -#### `win.isKiosk()` - -Returns `Boolean' - 현재 윈도우가 kiosk 모드인지 여부. - -#### `win.getNativeWindowHandle()` - -Returns `Buffer` - 플랫폼 별 윈도우의 핸들. - -핸들의 타입에 따라 적절히 캐스팅됩니다. Windows의 `HWND`, macOS의 `NSView*`, Linux의 -`Window` (`unsigned long`)를 예로 들 수 있습니다. - -#### `win.hookWindowMessage(message, callback)` _Windows_ - -* `message` Integer -* `callback` Function - -Windows 메시지 훅을 등록합니다. `callback`은 WndProc에서 메시지를 받았을 때 -호출됩니다. - -#### `win.isWindowMessageHooked(message)` _Windows_ - -* `message` Integer - -Returns `Boolean` - 지정한 메시지가 후킹됐는지에 따라 `true` 또는 `false`. - -#### `win.unhookWindowMessage(message)` _Windows_ - -* `message` Integer - -지정한 메시지 훅을 등록 해제합니다. - -#### `win.unhookAllWindowMessages()` _Windows_ - -모든 메시지 훅을 등록 해제합니다. - -#### `win.setRepresentedFilename(filename)` _macOS_ - -* `filename` String - -윈도우 대표 파일의 경로명을 설정합니다. 파일의 아이콘이 윈도우 타이틀 바에 표시됩니다. - -#### `win.getRepresentedFilename()` _macOS_ - -Returns `String` - 윈도우 대표 파일의 경로. - -#### `win.setDocumentEdited(edited)` _macOS_ - -* `edited` Boolean - -윈도우의 문서가 변경되었는지 여부를 설정합니다. 그리고 `true`로 설정했을 때 타이틀 바의 -아이콘이 회색으로 표시됩니다. - -#### `win.isDocumentEdited()` _macOS_ - -Returns `Boolean` - 윈도우의 문서가 변경되었는지 여부. - -#### `win.focusOnWebView()` - -#### `win.blurWebView()` - -#### `win.capturePage([rect, ]callback)` - -* `rect` [Rectangle](structures/rectangle.md) (optional) - 캡쳐될 페이지의 영역 -* `callback` Function - * `image` [NativeImage](native-image.md) - -`webContents.capturePage([rect, ]callback)`와 같습니다. - -#### `win.loadURL(url[, options])` - -* `url` URL -* `options` Object (optional) - * `httpReferrer` String - HTTP 리퍼러 URL. - * `userAgent` String - 요청을 보낸 사용자의 user agent. - * `extraHeaders` String - "\n"로 구분된 부가적인 헤더 - -`webContents.loadURL(url[, options])` API와 같습니다. - -`url`은 원격 주소 (e.g. `http://`)가 되거나 `file://` 프로토콜을 사용하는 로컬 HTML -경로가 될 수 있습니다. - -파일 URL이 올바른 형식으로 지정되었는지 확인하려면 Node의 -[`url.format`](https://nodejs.org/api/url.html#url_url_format_urlobject) 메서드를 -사용하는 것을 권장합니다. - -```javascript -let url = require('url').format({ - protocol: 'file', - slashes: true, - pathname: require('path').join(__dirname, 'index.html') -}) - -win.loadURL(url) -``` - -#### `win.reload()` - -`webContents.reload` API와 같습니다. - -#### `win.setMenu(menu)` _Linux_ _Windows_ - -* `menu` Menu - -지정한 `menu`를 윈도우의 메뉴로 설정합니다 `null`을 설정하면 메뉴를 제거합니다. - -#### `win.setProgressBar(progress[, options])` - -* `progress` Double -* `options` Object (optional) - * `mode` String _Windows_ - 프로그레스 막대의 모드 (`none`, `normal`, - `indeterminate`, `error`, `paused`) - -작업표시줄에 표시되고 있는 애플리케이션 아이콘에 진행 상태를 표시합니다. [0, 1.0] -사이의 값을 지정할 수 있습니다. - -진행 상태가 < 0 이 되면 진행 상태 표시를 제거합니다. -진행 상태가 > 1 이 되면 불확정 상태 표시로 전환합니다. - -Linux 플랫폼에선 Unity 데스크톱 환경만 지원합니다. 그리고 이 기능을 사용하려면 -`*.desktop` 파일을 생성한 후 `package.json`의 `desktopName` 필드에 파일 이름을 -지정해야 합니다. 기본적으로 `app.getName().desktop`을 통해 접근합니다. - -Windows에선 모드를 전달할 수 있습니다. 사용할 수 있는 값은 `none`, `normal`, -`indeterminate`, `error`, 그리고 `paused`가 있습니다. 만약 모드 설정 없이 -`setProgressBar`를 호출하면 (올바른 범위의 값을 전달했을 때), `normal`이 기본적으로 -설정됩니다. - -#### `win.setOverlayIcon(overlay, description)` _Windows_ - -* `overlay` [NativeImage](native-image.md) - 작업표시줄 아이콘의 우측 하단에 표시될 -아이콘입니다. `null`로 지정하면 빈 오버레이가 사용됩니다 -* `description` String - 접근성 설정에 의한 스크린 리더에 제공될 설명입니다 - -현재 작업표시줄 아이콘에 16 x 16 픽셀 크기의 오버레이를 지정합니다. 보통 이 기능은 -애플리케이션의 여러 상태를 사용자에게 소극적으로 알리기 위한 방법으로 사용됩니다. - -#### `win.setHasShadow(hasShadow)` _macOS_ - -* `hasShadow` Boolean - -윈도우가 그림자를 가질지 여부를 지정합니다. Windows와 Linux에선 아무 일도 일어나지 -않습니다. - -#### `win.hasShadow()` _macOS_ - -Returns `Boolean` - 윈도우가 그림자를 가지고 있는지 여부. - -Windows와 Linux에선 항상 `true`를 반환합니다. - -#### `win.setThumbarButtons(buttons)` _Windows_ - -* `buttons` [ThumbarButton[]](structures/thumbar-button.md) - -Returns `Boolean` - 버튼이 성공적으로 추가되었는지 여부 - -윈도우 작업표시줄 버튼 레이아웃의 미리보기 이미지 영역에 미리보기 툴바와 버튼 세트를 -추가합니다. 반환되는 `Boolean` 값은 미리보기 툴바가 성공적으로 추가됬는지를 알려줍니다. - -미리보기 이미지 영역의 제한된 크기로 인해 미리보기 툴바에 추가될 수 있는 최대 버튼의 -개수는 7개이며 이 이상 추가될 수 없습니다. 플랫폼의 제약으로 인해 미리보기 툴바는 한 번 -설정되면 삭제할 수 없습니다. 하지만 이 API에 빈 배열을 전달하여 버튼들을 제거할 수 -있습니다. - -`buttons`는 `Button` 객체의 배열입니다: - -* `Button` 객체 - * `icon` [NativeImage](native-image.md) - 미리보기 툴바에 보여질 아이콘. - * `click` Function - * `tooltip` String (optional) - 버튼의 툴팁 텍스트. - * `flags` String[] (optional) - 버튼의 특정 동작 및 상태 제어. 기본적으로 - `enabled`이 사용됩니다. - -`flags` 는 다음 `String` 들을 포함할 수 있는 배열입니다: -* `enabled` - 사용자가 사용할 수 있도록 버튼이 활성화 됩니다. -* `disabled` - 버튼이 비활성화 됩니다. 버튼은 표시되지만 시각적인 상태는 사용자의 - 동작에 응답하지 않는 비활성화 상태로 표시됩니다. -* `dismissonclick` - 버튼이 클릭되면 작업표시줄 버튼의 미리보기(flyout)가 즉시 - 종료됩니다. -* `nobackground` - 버튼의 테두리를 표시하지 않습니다. 이미지에만 사용할 수 있습니다. -* `hidden` - 버튼을 사용자에게 표시되지 않도록 숨깁니다. -* `noninteractive` - 버튼은 활성화되어 있지만 반응이 제거되며 버튼을 눌러도 - 눌려지지 않은 상태를 유지합니다. 이 값은 버튼을 알림의 용도로 사용하기 위해 - 만들어졌습니다. - -#### `win.setThumbnailClip(region)` _Windows_ - -* `region` [Rectangle](structures/rectangle.md) - 윈도우의 영역 - -작업 표시줄에 윈도우의 섬네일이 표시될 때 섬네일 이미지로 사용할 윈도우의 영역을 -지정합니다. 빈 영역을 지정하는 것으로 전체 윈도우의 섬네일로 초기화할 수 있습니다: -`{x: 0, y: 0, width: 0, height: 0}`. - -#### `win.setThumbnailToolTip(toolTip)` _Windows_ - -* `toolTip` String - -작업 표시줄의 윈도우 섬네일 위에 표시될 툴팁을 설정합니다. - -#### `win.showDefinitionForSelection()` _macOS_ - -`webContents.showDefinitionForSelection()`와 같습니다. - -#### `win.setIcon(icon)` _Windows_ _Linux_ - -* `icon` [NativeImage](native-image.md) - -윈도우 아이콘을 변경합니다. - -#### `win.setAutoHideMenuBar(hide)` - -* `hide` Boolean - -메뉴 막대 자동 숨김 기능을 활성화 합니다. -숨겨진 메뉴는 사용자가 `Alt` 키를 단일 입력했을 때만 표시됩니다. - -메뉴 막대가 이미 표시되고 있을 때 `setAutoHideMenuBar(true)`를 호출한다고 해서 -메뉴가 즉시 숨겨지지는 않습니다. - -#### `win.isMenuBarAutoHide()` - -Returns `Boolean` - 메뉴 막대 자동 숨김 상태 여부. - -#### `win.setMenuBarVisibility(visible)` _Windows_ _Linux_ - -* `visible` Boolean - -메뉴 막대의 표시 여부를 설정합니다. 만약 메뉴 막대 자동 숨김 상태라면 여전히 사용자가 -`Alt` 키를 입력하여 메뉴 막대를 표시되도록 할 수 있습니다. - -**역자주:** 기본 메뉴 막대를 완전히 없애려면 `win.setMenu(null)`를 호출해야 합니다. -단순히 이 API를 사용하면 여전히 메뉴에 등록된 핫 키가 작동합니다. - -#### `win.isMenuBarVisible()` - -Returns `Boolean` - 메뉴 막대가 표시되고 있는지 여부. - -#### `win.setVisibleOnAllWorkspaces(visible)` - -* `visible` Boolean - -윈도우가 모든 워크스페이스에서 표시될지 여부를 설정합니다. - -**참고:** 이 API는 Windows에서 아무 일도 하지 않습니다. - -#### `win.isVisibleOnAllWorkspaces()` - -Returns `Boolean` - 윈도우가 모든 워크스페이스에서 표시될지 여부. - -**참고:** 이 API는 Windows에서 언제나 false를 반환합니다. - -#### `win.setIgnoreMouseEvents(ignore)` - -* `ignore` Boolean - -윈도우가 모든 마우스 이벤트를 무시하게 만듭니다. - -이 윈도우에서 일어나는 모든 마우스 이벤트가 이 윈도우 밑의 윈도우로 전달됩니다. 하지만 -이 윈도우가 포커스되어 있다면, 여전히 키보드 이벤트는 받을 수 있습니다. - -#### `win.setContentProtection(enable)` _macOS_ _Windows_ - -* `enable` Boolean - -윈도우 콘텐츠가 외부 어플리케이션에 의해 캡쳐되는 것을 막습니다. - -macOS에선 NSWindow의 sharingType을 NSWindowSharingNone로 설정합니다. -Windows에선 `WDA_MONITOR`와 함께 SetWindowDisplayAffinity를 호출합니다. - -#### `win.setFocusable(focusable)` _Windows_ - -* `focusable` Boolean - -윈도우가 포커스될 수 있는지 여부를 변경합니다. - -#### `win.setParentWindow(parent)` _Linux_ _macOS_ - -* `parent` BrowserWindow -` -`parent` 인수를 현재 윈도우의 부모 윈도우로 설정합니다. `null`로 설정하면 -현재 윈도우를 상위 윈도우로 전환합니다. - -#### `win.getParentWindow()` - -Returns `BrowserWindow` - 부모 윈도우. - -#### `win.getChildWindows()` - -Returns `BrowserWindow[]` - 모든 자식 윈도우. - -[blink-feature-string]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5?l=62 -[window-levels]: https://developer.apple.com/reference/appkit/nswindow/1664726-window_levels -[quick-look]: https://en.wikipedia.org/wiki/Quick_Look diff --git a/docs-translations/ko-KR/api/chrome-command-line-switches.md b/docs-translations/ko-KR/api/chrome-command-line-switches.md deleted file mode 100644 index b2178fa3633f..000000000000 --- a/docs-translations/ko-KR/api/chrome-command-line-switches.md +++ /dev/null @@ -1,181 +0,0 @@ -# 크롬 명령줄 스위치 지원 - -> Electron에서 지원하는 커맨드 명령줄 스위치입니다. - -애플리케이션 메인 스크립트의 [app][app] 모듈에서 [ready][ready] 이벤트가 실행되기 -전에 [app.commandLine.appendSwitch][append-switch]를 호출하면, 애플리케이션의 -명령줄 옵션을 추가로 지정할 수 있습니다: - -```javascript -const {app} = require('electron') -app.commandLine.appendSwitch('remote-debugging-port', '8315') -app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1') - -app.on('ready', () => { - // Your code here -}) -``` - -## --ignore-connections-limit=`domains` - -`domains` 리스트(`,`로 구분)의 연결 제한을 무시합니다. - -## --disable-http-cache - -HTTP 요청 캐시를 비활성화합니다. - -## --disable-http2 - -HTTP/2와 SPDY/3.1 프로토콜을 비활성화합니다. - -## --debug=`port` and --debug-brk=`port` - -디버깅관련 플래그입니다. 자세한 내용은 [메인프로세스 디버깅하기] -[debugging-main-process] 안내서를 보세요. - -## --remote-debugging-port=`port` - -지정한 `port`에 HTTP 기반의 리모트 디버거를 활성화합니다. (개발자 도구) - -## --js-flags=`flags` - -Node JS 엔진에 지정한 플래그를 전달합니다. `flags`를 메인 프로세스에서 -활성화하고자 한다면, Electron이 시작되기 전에 스위치를 전달해야 합니다. - -```bash -$ electron --js-flags="--harmony_proxies --harmony_collections" your-app -``` - -가능한 플래그 목록은 [Node 문서][node-cli]를 보거나 터미널에서 `node --help` -명령을 실행하세요. 또한, 구체적으로 노드의 V8 자바스크립트 엔진과 관련있는 -플래그의 목록을 보려면 `node --v8-options` 를 실행하세요. - -## --proxy-server=`address:port` - -시스템 설정의 프록시 서버를 무시하고 지정한 서버로 연결합니다. HTTP와 HTTPS -요청에만 적용됩니다. - -시스템 프록시 서버 설정을 무시하고 지정한 서버로 연결합니다. 이 스위치는 HTTP와 -HTTPS 그리고 WebSocket 요청에만 적용됩니다. 그리고 모든 프록시 서버가 HTTPS가 -WebSocket 요청을 지원하지 않고 있을 수 있으므로 사용시 주의해야 합니다. - -## --proxy-bypass-list=`hosts` - -Electron이 세미콜론으로 구분된 호스트 리스트에서 지정한 프록시 서버를 건너뛰도록 -지시합니다. - -예시: - -```javascript -app.commandLine.appendSwitch('proxy-bypass-list', ';*.google.com;*foo.com;1.2.3.4:5678') -``` - -위 예시는 로컬 주소(`localhost`, `127.0.0.1`, 등)와 `google.com`의 서브도메인, -`foo.com`을 접미사로 가지는 호스트, `1.2.3.4:5678` 호스트를 제외한 모든 연결에서 -프록시 서버를 사용합니다. - -## --proxy-pac-url=`url` - -지정한 `url`의 PAC 스크립트를 사용합니다. - -## --no-proxy-server - -프록시 서버를 사용하지 않습니다. 다른 프록시 서버 플래그 및 설정을 무시하고 -언제나 직접 연결을 사용합니다. - -## --host-rules=`rules` - -Hostname 맵핑 규칙을 설정합니다. (`,`로 구분) - -예시: - -* `MAP * 127.0.0.1` 강제적으로 모든 호스트네임을 127.0.0.1로 맵핑합니다 -* `MAP *.google.com proxy` 강제적으로 모든 google.com의 서브도메인을 "proxy"로 - 연결합니다 -* `MAP test.com [::1]:77` 강제적으로 "test.com"을 IPv6 루프백으로 연결합니다. - 소켓 주소의 포트 또한 77로 고정됩니다. -* `MAP * baz, EXCLUDE www.google.com` "www.google.com"을 제외한 모든 것들을 - "baz"로 맵핑합니다. - -이 맵핑은 네트워크 요청시의 endpoint를 지정합니다. (TCP 연결과 직접 연결의 호스트 -resolver, http 프록시 연결의 `CONNECT`, `SOCKS` 프록시 연결의 endpoint 호스트) - -## --host-resolver-rules=`rules` - -`--host-rules` 플래그와 비슷하지만 이 플래그는 host resolver에만 적용됩니다. - -## --auth-server-whitelist=`url` - -통합 인증을 사용하도록 설정할 쉼표로 구분된 서버의 리스트. - -예를 들어: - -``` ---auth-server-whitelist='*example.com, *foobar.com, *baz' -``` - -그리고 모든 `example.com`, `foobar.com`, `baz`로 끝나는 `url`은 통합 인증을 -사용하도록 설정됩니다. `*` 접두어가 없다면 url은 정확히 일치해야 합니다. - -## --auth-negotiate-delegate-whitelist=`url` - -필수적인 사용자 자격 증명을 보내야 할 쉼표로 구분된 서버의 리스트. -`*` 접두어가 없다면 url은 정확히 일치해야 합니다. - -## --ignore-certificate-errors - -인증서 에러를 무시합니다. - -## --ppapi-flash-path=`path` - -Pepper 플래시 플러그인의 위치를 설정합니다. - -## --ppapi-flash-version=`version` - -Pepper 플래시 플러그인의 버전을 설정합니다. - -## --log-net-log=`path` - -Net log 이벤트를 활성화하고 `path`에 로그를 기록합니다. - -## --disable-renderer-backgrounding - -Chromium이 렌더러 프로세스의 보이지 않는 페이지의 우선순위를 낮추는 것을 방지합니다. - -이 플래그는 전역적이며 모든 렌더러 프로세스에 적용됩니다. 만약 하나의 윈도우 -창에만 스로틀링을 비활성화하고 싶다면 [조용한 오디오를 재생하는][play-silent-audio] -핵을 사용할 수 있습니다. - -## --enable-logging - -Chromium의 로그를 콘솔에 출력합니다. - -이 스위치는 애플리케이션이 로드되기 전에 분석 되므로 `app.commandLine.appendSwitch` -메서드에선 사용할 수 없습니다. 하지만 `ELECTRON_ENABLE_LOGGING` 환경 변수를 -설정하면 본 스위치를 지정한 것과 같은 효과를 낼 수 있습니다. - -## --v=`log_level` - -기본 V-logging 최대 활성화 레벨을 지정합니다. 기본값은 0입니다. 기본적으로 양수를 -레벨로 사용합니다. - -이 스위치는 `--enable-logging` 스위치를 같이 지정해야 작동합니다. - -## --vmodule=`pattern` - -`--v` 옵션에 전달된 값을 덮어쓰고 모듈당 최대 V-logging 레벨을 지정합니다. -예를 들어 `my_module=2,foo*=3`는 `my_module.*`, `foo*.*`와 같은 파일 이름 패턴을 -가진 모든 소스 코드들의 로깅 레벨을 각각 2와 3으로 설정합니다. - -또한 슬래시(`/`) 또는 백슬래시(`\`)를 포함하는 패턴은 지정한 경로에 대해 패턴을 -테스트 합니다. 예를 들어 `*/foo/bar/*=2` 표현식은 `foo/bar` 디렉터리 안의 모든 -소스 코드의 로깅 레벨을 2로 지정합니다. - -이 스위치는 `--enable-logging` 스위치를 같이 지정해야 작동합니다. - -[app]: app.md -[append-switch]: app.md#appcommandlineappendswitchswitch-value -[ready]: app.md#event-ready -[play-silent-audio]: https://github.com/atom/atom/pull/9485/files -[debugging-main-process]: ../tutorial/debugging-main-process.md -[node-cli]: https://nodejs.org/api/cli.html diff --git a/docs-translations/ko-KR/api/clipboard.md b/docs-translations/ko-KR/api/clipboard.md deleted file mode 100644 index ee76187ba4fa..000000000000 --- a/docs-translations/ko-KR/api/clipboard.md +++ /dev/null @@ -1,167 +0,0 @@ -# clipboard - -> 시스템 클립보드에 복사와 붙여넣기를 수행합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process), [렌더러](../tutorial/quick-start.md#renderer-process) - -다음 예시는 클립보드에 문자열을 쓰는 방법을 보여줍니다: - -```javascript -const {clipboard} = require('electron') -clipboard.writeText('Example String') -``` - -X Window 시스템에선 selection 클립보드도 존재합니다. 이를 사용하려면 인수 뒤에 -`selection` 문자열을 같이 지정해주어야 합니다: - -```javascript -const {clipboard} = require('electron') -clipboard.writeText('Example String', 'selection') -console.log(clipboard.readText('selection')) -``` - -## Methods - -`clipboard` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -**참고:** Experimental 마크가 붙은 API는 실험적인 기능이며 차후 최신 버전에서 제거될 -수 있습니다. - -### `clipboard.readText([type])` - -* `type` String (optional) - -Returns `String` - 일반 텍스트 형식의 클립보드의 내용. - -### `clipboard.writeText(text[, type])` - -* `text` String -* `type` String (optional) - -클립보드에 `plain text`로 문자열을 씁니다. - -### `clipboard.readHTML([type])` - -* `type` String (optional) - -returns `String` - 마크업 형식의 클립보드의 내용. - -### `clipboard.writeHTML(markup[, type])` - -* `markup` String -* `type` String (optional) - -클립보드에 `markup`으로 씁니다. - -### `clipboard.readImage([type])` - -* `type` String (optional) - -Returns `NativeImage` - [NativeImage](native-image.md) 형식의 클립보드의 내용. - -### `clipboard.writeImage(image[, type])` - -* `image` [NativeImage](native-image.md) -* `type` String (optional) - -클립보드에 `image`를 씁니다. - -### `clipboard.readRTF([type])` - -* `type` String (optional) - -Returns `String` - RTF 형식의 클립보드 내용. - -### `clipboard.writeRTF(text[, type])` - -* `text` String -* `type` String (optional) - -클립보드에 `text`를 RTF 형식으로 씁니다. - -### `clipboard.readBookmark()` _macOS_ _Windows_ - -Returns `Object`: - -* `title` String -* `url` String - -클립보드로부터 북마크 형식으로 표현된 `title`와 `url` 키를 담은 객체를 반환합니다. -`title`과 `url` 값들은 북마크를 사용할 수 없을 때 빈 문자열을 포함합니다. - -### `clipboard.writeBookmark(title, url[, type])` _macOS_ _Windows_ - -* `title` String -* `url` String -* `type` String (optional) - -`title`과 `url`을 클립보드에 북마크 형식으로 씁니다. - -**참고:** 윈도우의 대부분의 앱은 북마크 붙여넣기를 지원하지 않습니다. -`clipboard.write` 를 통해 북마크와 대체 텍스트를 클립보드에 쓸 수 있습니다. - -```javascript -clipboard.write({ - text: 'https://electron.atom.io', - bookmark: 'Electron Homepage' -}) -``` - -### `clipboard.readFindText()` _macOS_ - -Returns `String` - FindPasteboard 의 텍스트. 이 메소드는 렌더러 프로세스에서 -호출되었을 떄 동기 IPC 를 사용합니다. 캐시된 값은 애플리케이션이 활성화될 때 -마다 FindPasteboard 에서 다시 읽습니다. - -### `clipboard.writeFindText(text)` _macOS_ - -* `text` String - -`text` 를 FindPasteboard 에 일반 텍스트로 씁니다. 이 메소드는 렌더러 -프로세스에서 호출되었을 떄 동기 IPC 를 사용합니다. - -### `clipboard.clear([type])` - -* `type` String (optional) - -클립보드에 저장된 모든 콘텐츠를 삭제합니다. - -### `clipboard.availableFormats([type])` - -Return `String[]` - 클립보드 `type` 에 지원되는 형식의 배열. - -### `clipboard.has(data[, type])` - -* `data` String -* `type` String (optional) - -Returns `Boolean` - 클립보드가 지정한 `data` 의 형식을 지원하는지 여부. - -```javascript -const {clipboard} = require('electron') -console.log(clipboard.has('

selection

')) -``` - -### `clipboard.read(data[, type])` _Experimental_ - -* `data` String -* `type` String (optional) - -Returns `String` - 클립보드로부터 `data`를 읽습니다. - -### `clipboard.write(data[, type])` _Experimental_ - -* `data` Object - * `text` String - * `html` String - * `image` [NativeImage](native-image.md) - * `rtf` String - * `bookmark` String - `text`에 있는 URL의 텍스트. -* `type` String (optional) - -```javascript -const {clipboard} = require('electron') -clipboard.write({text: 'test', html: 'test'}) -``` - -`data`를 클립보드에 씁니다. diff --git a/docs-translations/ko-KR/api/content-tracing.md b/docs-translations/ko-KR/api/content-tracing.md deleted file mode 100644 index 68622e10e0a2..000000000000 --- a/docs-translations/ko-KR/api/content-tracing.md +++ /dev/null @@ -1,152 +0,0 @@ -# contentTracing - -> 성능상의 병목 현상과 느린 작업을 찾기 위해 Chromium의 콘텐츠 모듈에서 추적 데이터를 -수집합니다. - -이 모듈은 웹 인터페이스를 포함하고 있지 않으며 Chrome 브라우저에서 -`chrome://tracing/` 페이지를 열고 생성된 파일을 로드하면 결과를 볼 수 있습니다. - -```javascript -const {contentTracing} = require('electron') - -const options = { - categoryFilter: '*', - traceOptions: 'record-until-full,enable-sampling' -} - -contentTracing.startRecording(options, () => { - console.log('Tracing started') - - setTimeout(() => { - contentTracing.stopRecording('', (path) => { - console.log('Tracing data recorded to ' + path) - }) - }, 5000) -}) -``` - -## Methods - -`content-tracing` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `contentTracing.getCategories(callback)` - -* `callback` - * `categories` String[] - -카테고리 그룹 세트를 가져옵니다. 카테고리 그룹은 도달된 코드 경로를 변경할 수 있습니다. - -모든 child 프로세스가 `getCategories` 요청을 승인하면 `callback`이 한 번 호출되며 -인수에 카테고리 그룹의 배열이 전달됩니다. - -### `contentTracing.startRecording(options, callback)` - -* `options` Object - * `categoryFilter` String - * `traceOptions` String -* `callback` Function - -모든 프로세스에서 레코딩을 시작합니다. - -레코딩은 지역적으로 즉시 실행됩니다. 그리고 비동기로 child 프로세스는 곧 -EnableRecording 요청을 받게 됩니다. 모든 child 프로세스가 `startRecording` 요청을 -승인하면 `callback`이 한 번 호출됩니다. - -`categoryFilter`는 어떤 카테고리 그룹이 트레이싱 되어야 하는지 필터링할 수 있습니다. -필터는 `-` 접두사를 통해 특정 카테고리 그룹을 제외할 수 있습니다. 카테고리 패턴은 같은 -리스트 내에서 포함과 제외를 함께 사용할 수 없습니다. - -예시: - -* `test_MyTest*`, -* `test_MyTest*,test_OtherStuff`, -* `"-excluded_category1,-excluded_category2` - -`traceOptions`은 어떤 종류의 트레이싱을 사용할 수 있는지 지정하고 콤마로 리스트를 -구분합니다. - -사용할 수 있는 옵션은 다음과 같습니다: - -* `record-until-full` -* `record-continuously` -* `trace-to-console` -* `enable-sampling` -* `enable-systrace` - -첫번째부터 3번째까지의 옵션은 추적 레코딩 모드입니다. 이에 따라 상호 배타적입니다. -만약 레코딩 모드가 한 개 이상 지정되면 마지막 지정한 모드만 사용됩니다. 어떤 모드도 -설정되지 않았다면 `record-until-full` 모드가 기본으로 사용됩니다. - -추적 옵션은 `traceOptions`이 파싱되어 적용되기 전까지 다음과 같은 기본값이 사용됩니다. - -`record-until-full`이 기본 모드, `enable-sampling`과 `enable-systrace`옵션은 -포함되지 않음 - -## `contentTracing.stopRecording(resultFilePath, callback)` - -* `resultFilePath` String -* `callback` Function - * `resultFilePath` String - -모든 프로세스에서 레코딩을 중지합니다. - -Child 프로세스는 일반적으로 추적 데이터와 희귀한 플러시 그리고 추적 데이터를 메인 -프로세스로 보내는 작업에 대해 캐싱 합니다. 이러한 일을 하는 이유는 IPC를 통해 추적 -데이터를 보내는 작업은 매우 비싼 연산을 동반하기 때문입니다. 우리는 추적에 의한 런타임 -오버헤드를 피하고자 합니다. 그래서 추적이 끝나면 모든 child 프로세스에 보류된 추적 -데이터를 플러시 할 것인지 물어봅니다. - -모든 child 프로세스가 `stopRecording` 요청을 승인하면 `callback`에 추적 데이터 -파일을 포함하여 한 번 호출됩니다. - -추적 데이터는 `resultFilePath` 해당 경로가 비어있는 경우에 한 해 해당 경로에 -작성되거나 임시 파일에 작성됩니다. 실제 파일 경로는 null이 아닌 이상 `callback`을 -통해 전달됩니다. - -### `contentTracing.startMonitoring(options, callback)` - -* `options` Object - * `categoryFilter` String - * `traceOptions` String -* `callback` Function - -모든 프로세스에서 모니터링을 시작합니다. - -모니터링은 지역적으로 즉시 시작됩니다. 그리고 이내 자식 프로세스들이 -`startMonitoring` 비동기 요청을 받습니다. - -모든 자식 프로세스가 `startMonitoring` 요청을 승인하면 `callback`이 한 번 호출됩니다. - -### `contentTracing.stopMonitoring(callback)` - -* `callback` Function - -모든 프로세스에서 모니터링을 중단합니다. - -모든 자식 프로세스가 `stopMonitoring` 요청을 승인하면 `callback`이 한 번 호출됩니다. - -### `contentTracing.captureMonitoringSnapshot(resultFilePath, callback)` - -* `resultFilePath` String -* `callback` Function - * `resultFilePath` String - -현재 모니터링 추적 데이터를 가져옵니다. - -자식 프로세스들은 일반적으로 추적 데이터를 캐싱하며 드물게 플러시 하거나 메인 -프로세스로 추적 데이터를 보냅니다. 왜냐하면 IPC를 통해 추적 데이터를 보내는데에는 -많은 자원을 소비하기 때문입니다. 그리고 우리는 추적시 발생하는 불필요한 런타임 -오버헤드를 피하고자 합니다. 그래서 추적이 끝나면 반드시 비동기로 자식 프로세스들의 -보류된 추적 데이터를 플러시 할 것인지 물어봅니다. - -모든 자식 프로세스가 `captureMonitoringSnapshot` 요청을 승인하면 추적 데이터 파일을 -포함하는 `callback`이 한 번 호출됩니다. - -### `contentTracing.getTraceBufferUsage(callback)` - -* `callback` Function - * `value` Number - * `percentage` Number - -추적 버퍼 % 전체 상태의 프로세스간 최대치를 가져옵니다. TraceBufferUsage 값이 -결정되면 `callback`이 한 번 호출됩니다. diff --git a/docs-translations/ko-KR/api/crash-reporter.md b/docs-translations/ko-KR/api/crash-reporter.md deleted file mode 100644 index 9d039eb9d10b..000000000000 --- a/docs-translations/ko-KR/api/crash-reporter.md +++ /dev/null @@ -1,89 +0,0 @@ -# crashReporter - -> 원격 서버에 오류 보고를 제출합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process), [렌더러](../tutorial/quick-start.md#renderer-process) - -다음은 윈격 서버에 애플리케이션 오류 보고를 자동으로 제출하는 예시입니다: - -```javascript -const {crashReporter} = require('electron') - -crashReporter.start({ - productName: 'YourName', - companyName: 'YourCompany', - submitURL: 'https://your-domain.com/url-to-submit', - autoSubmit: true -}) -``` - -서버가 오류 보고를 허용하고 처리할 수 있게 설정하기 위해, 다음 프로젝트를 사용할 -수 있습니다: - -* [socorro](https://github.com/mozilla/socorro) -* [mini-breakpad-server](https://github.com/electron/mini-breakpad-server) - -오류 보고서는 애플리케이션에 명시된 로컬 임시 디렉토리 폴더에 저장됩니다. -`YourName` 의 `productName` 의 경우, 오류 보고서는 임시 디렉토리 내의 -`YourName Crashes` 폴더에 저장됩니다. 오류 보고자를 시작하기전에 -`app.setPath('temp', '/my/custom/temp')` API 를 호출하여 이 임시 디렉토리 경로를 -정의할 수 있습니다. - -## Methods - -`crash-reporter` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `crashReporter.start(options)` - -* `options` Object - * `companyName` String - * `submitURL` String - 오류 보고는 POST 방식으로 이 URL로 전송됩니다. - * `productName` String (optional) - 기본값은 `Electron` 입니다. - * `autoSubmit` Boolean - 사용자의 승인 없이 자동으로 오류를 보고합니다. - 기본값은 `true` 입니다. - * `ignoreSystemCrashHandler` Boolean - 기본값은 `false` 입니다. - * `extra` Object - 보고서와 함께 보낼 추가 정보를 지정하는 객체입니다. - 문자열로 된 속성만 정상적으로 보내집니다. 중첩된 객체는 지원되지 않습니다. - -다른 crashReporter API를 사용하기 전에 이 메서드를 먼저 호출해야 합니다. - -**참고:** macOS에선 Windows와 Linux의 `breakpad`와 달리 새로운 `crashpad` -클라이언트를 사용합니다. 오류 수집 기능을 활성화 시키려면 오류를 수집하고 싶은 -메인 프로세스나 렌더러 프로세스에서 `crashReporter.start` 메서드를 호출하여 -`crashpad` 를 초기화해야 합니다. - -### `crashReporter.getLastCrashReport()` - -Returns `Object`: - -* `date` String -* `ID` Integer - -마지막 오류 보고의 날짜와 ID를 반환합니다. 이전 오류 보고가 없거나 오류 보고자가 -시작되지 않았을 경우 `null`이 반환됩니다. - -### `crashReporter.getUploadedReports()` - -Returns `Object[]`: - -* `date` String -* `ID` Integer - -모든 업로드된 오류 보고를 반환합니다. 각 보고는 날짜와 업로드 ID를 포함하고 -있습니다. - -## crash-reporter 업로드 형식 - -오류 보고자는 다음과 같은 데이터를 `submitURL `에 `multipart/form-data` `POST` -방식으로 전송합니다: - -* `ver` String - Electron 의 버전. -* `platform` String - 예) 'win32'. -* `process_type` String - 예) 'renderer'. -* `guid` String - 예) '5e1286fc-da97-479e-918b-6bfb0c3d1c72'. -* `_version` String - `package.json` 내의 `version` 필드. -* `_productName` String - `crashReporter` `options` 객체의 제품명. -* `prod` String - 기본 제품의 이름. 이 경우에는 Electron. -* `_companyName` String - `crashReporter` `options` 객체의 회사명. -* `upload_file_minidump` File - `minidump` 형식의 옲 보고. -* `crachReporter` `options` 객체내의 `extra` 객체의 모든 레벨1 속성들. diff --git a/docs-translations/ko-KR/api/desktop-capturer.md b/docs-translations/ko-KR/api/desktop-capturer.md deleted file mode 100644 index d3c073de95cb..000000000000 --- a/docs-translations/ko-KR/api/desktop-capturer.md +++ /dev/null @@ -1,77 +0,0 @@ -# desktopCapturer - -> 멀티미디어 소스에 대해 접근하고 [`navigator.webkitGetUserMedia`] API를 통해 -> 오디오나 비디오를 데스크톱으로부터 캡쳐할 수 있도록 합니다. - -프로세스: [렌더러](../tutorial/quick-start.md#renderer-process) - -다음 예시는 창 제목이 `Electron`인 데스크톱 창에 대해 비디오 캡쳐하는 방법을 -보여줍니다. - -```javascript -// 렌더러 프로세스에서. -const {desktopCapturer} = require('electron') - -desktopCapturer.getSources({types: ['window', 'screen']}, (error, sources) => { - if (error) throw error - for (let i = 0; i < sources.length; ++i) { - if (sources[i].name === 'Electron') { - navigator.webkitGetUserMedia({ - audio: false, - video: { - mandatory: { - chromeMediaSource: 'desktop', - chromeMediaSourceId: sources[i].id, - minWidth: 1280, - maxWidth: 1280, - minHeight: 720, - maxHeight: 720 - } - } - }, handleStream, handleError) - return - } - } -}) - -function handleStream (stream) { - document.querySelector('video').src = URL.createObjectURL(stream) -} - -function handleError (e) { - console.log(e) -} -``` - - -`desktopCapturer`로부터 제공된 소스로부터 비디오 캡쳐를 하려면 -[`navigator.webkitGetUserMedia`]로 전달되는 속성에 `chromeMediaSource: 'desktop'`, -와 `audio: false` 가 반드시 포함되어야 합니다. - -전체 데스크톱의 오디오와 비디오를 모두 캡쳐하려면 [`navigator.webkitGetUserMedia`]로 -전달되는 속성에 `chromeMediaSource: 'screen'`, 와 `audio: true` 가 반드시 -포함되어야 하지만 `chromeMediaSourceId` 속성은 포함되어선 안됩니다. - -## Methods - -`desktopCapturer` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `desktopCapturer.getSources(options, callback)` - -* `options` Object - * `types` Array - 캡쳐될 데스크톱 소스의 종류를 나열하는 문자열을 담은 배열, 종류는 - `screen` 또는 `window`가 될 수 있습니다. - * `thumbnailSize` Object (optional) - 미디어 소스 섬네일의 크기가 맞춰져야 할 - 제안된 크기, 기본값은 `{width: 150, height: 150}`입니다. -* `callback` Function - * `error` Error - * `sources` [DesktopCapturerSource[]](structures/desktop-capturer-source.md) - -사용할 수 있는 데스크톱 미디어 소스를 가져오기 시작하고 작업이 완료되면 -`callback(error, sources)`가 호출됩니다. - -`sources` 는 [`DesktopCapturerSource`](structures/desktop-capturer-source.md) -객체의 배열이며, 각 `DesktopCapturerSource` 는 캡쳐 가능한 화면 또는 개별 -윈도우입니다. - -[`navigator.webkitGetUserMedia`]: https://developer.mozilla.org/en/docs/Web/API/Navigator/getUserMedia diff --git a/docs-translations/ko-KR/api/dialog.md b/docs-translations/ko-KR/api/dialog.md deleted file mode 100644 index 25600602c4ee..000000000000 --- a/docs-translations/ko-KR/api/dialog.md +++ /dev/null @@ -1,152 +0,0 @@ -# dialog - -> 파일을 열거나 저장하고, 알림을 표시하기 위한 네이티브 시스템 대화 상자를 표시합니다. - -다음 예시는 파일과 디렉터리를 다중으로 선택프로세스: [메인](../tutorial/quick-start.md#main-process) - -하는 대화 상자를 표시하는 예시입니다: - -```javascript -const {dialog} = require('electron') -console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) -``` - -대화 상자는 Electron의 메인 스레드에서 열립니다. 만약 렌더러 프로세스에서 대화 상자 -객체를 사용하고 싶다면, `remote`를 통해 접근하는 방법을 고려해야 합니다: - -```javascript -const {dialog} = require('electron').remote -console.log(dialog) -``` - -## Methods - -`dialog` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `dialog.showOpenDialog([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (optional) -* `options` Object - * `title` String - * `defaultPath` String - * `buttonLabel` String - 확인 버튼을 위한 커스텀 라벨이며, 빈칸으로 둘 경우 기본 - 라벨이 사용됩니다. - * `filters` String[] - * `properties` String[] - 대화 상자가 사용할 기능(모드)이 담긴 배열입니다. - 다음을 포함할 수 있습니다: `openFile`, `openDirectory`, `multiSelections`, - `createDirectory`, `showHiddenFiles`. -* `callback` Function (optional) - * `filePaths` String[] - 사용자가 선택한 파일 경로의 배열 - -사용할 대화 상자의 기능이 담긴 배열입니다. 다음을 포함할 수 있습니다: `openFile`, -`openDirectory`, `multiSelections`, `createDirectory` - -작업에 성공하면 콜백으로 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외의 -경우엔 `undefined`를 반환합니다. - -`filters`를 지정하면 유저가 선택 가능한 파일 형식을 지정할 수 있습니다. 유저가 선택할 -수 있는 타입에 제한을 두려면 다음과 같이 할 수 있습니다: - -```javascript -{ - filters: [ - {name: 'Images', extensions: ['jpg', 'png', 'gif']}, - {name: 'Movies', extensions: ['mkv', 'avi', 'mp4']}, - {name: 'Custom File Type', extensions: ['as']}, - {name: 'All Files', extensions: ['*']} - ] -} -``` - -`extensions` 배열은 반드시 와일드카드와 마침표를 제외한 파일 확장자를 포함시켜야 -합니다. (예를 들어 `'png'`는 가능하지만 `'.png'`와 `'*.png'`는 안됩니다) 모든 파일을 -보여주려면 `'*'`와 같은 와일드카드를 사용하면 됩니다. (다른 와일드카드는 지원하지 - 않습니다) - -`callback`이 전달되면 메서드가 비동기로 작동되며 결과는 `callback(filenames)`을 -통해 전달됩니다. - -**참고:** Windows와 Linux에선 파일 선택 모드, 디렉터리 선택 모드를 동시에 사용할 수 -없습니다. 이러한 이유로 `properties`를 `['openFile', 'openDirectory']`로 설정하면 -디렉터리 선택 대화 상자가 표시됩니다. - -### `dialog.showSaveDialog([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (optional) -* `options` Object - * `title` String - * `defaultPath` String - * `buttonLabel` String - 확인 버튼을 위한 커스텀 라벨이며, 빈칸으로 둘 경우 기본 - 라벨이 사용됩니다. - * `filters` String[] -* `callback` Function (optional) - * `filename` String - -작업에 성공하면 콜백으로 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외엔 -`undefined`를 반환합니다. - -`filters`를 지정하면 유저가 저장 가능한 파일 형식을 지정할 수 있습니다. 사용 방법은 -`dialog.showOpenDialog`의 `filters` 속성과 같습니다. - -`callback`이 전달되면 메서드가 비동기로 작동되며 결과는 `callback(filename)`을 통해 -전달됩니다. - -### `dialog.showMessageBox([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (optional) -* `options` Object - * `type` String - `"none"`, `"info"`, `"error"`, `"question"`, `"warning"` 중 - 하나를 사용할 수 있습니다. Windows에선 따로 `icon`을 설정하지 않은 이상 - "question"과 "info"는 같은 아이콘으로 표시됩니다. - * `buttons` String[] - 버튼들의 라벨을 포함한 배열입니다. Windows에서 빈 배열로 둘 - 경우, "OK" 버튼 하나가 포함됩니다. - * `defaultId` Integer - 메시지 박스가 열렸을 때 기본적으로 선택될 버튼 배열의 - 버튼 인덱스입니다. - * `title` String - 대화 상자의 제목입니다. 몇몇 플랫폼에선 보이지 않을 수 있습니다. - * `message` String - 대화 상자의 본문 내용입니다. - * `detail` String - 메시지의 추가 정보입니다. - * `icon` [NativeImage](native-image.md) - * `cancelId` Integer - 유저가 대화 상자의 버튼을 클릭하지 않고 대화 상자를 취소했을 - 때 반환되는 버튼의 인덱스입니다. 기본적으로 버튼 리스트가 "cancel" 또는 "no" - 라벨을 가지고 있을 때 해당 버튼의 인덱스를 반환합니다. 따로 두 라벨이 지정되지 - 않은 경우 0을 반환합니다. macOS와 Windows에선 `cancelId` 지정 여부에 상관없이 - "Cancel" 버튼이 언제나 `cancelId`로 지정됩니다. - * `noLink` Boolean - Windows에서 Electron은 ("Cancel"이나 "Yes"와 같은) 흔히 - 사용되는 버튼을 찾으려고 시도하고 대화 상자 내에서 해당 버튼을 커맨드 링크처럼 - 만듭니다. 이 기능으로 앱을 좀 더 현대적인 Windows 앱처럼 만들 수 있습니다. 이 - 기능을 원하지 않으면 `noLink`를 true로 지정하면 됩니다. -* `callback` Function (optional) - * `response` Number - 눌려진 버튼의 인덱스 - -대화 상자를 표시합니다. `browserWindow`를 지정하면 대화 상자가 완전히 닫힐 때까지 -지정한 창을 사용할 수 없습니다. 완료 시 유저가 선택한 버튼의 인덱스를 반환합니다. - -**역자주:** 부정을 표현하는 "아니오", "취소"와 같은 한글 단어는 지원되지 않습니다. 만약 -macOS 또는 Windows에서 "확인", "취소"와 같은 순서로 버튼을 지정하게 될 때 Alt + f4로 -해당 대화 상자를 끄게 되면 "확인"을 누른 것으로 판단되어 버립니다. 이를 해결하려면 -"Cancel"을 대신 사용하거나 BrowserWindow API를 사용하여 대화 상자를 직접 구현해야 -합니다. - -`callback`이 전달되면 메서드가 비동기로 작동되며 결과는 `callback(response)`을 통해 -전달됩니다. - -### `dialog.showErrorBox(title, content)` - -* `title` String - 오류 상자에서 표시할 제목 -* `content` String - 오류 상자에서 표시할 텍스트 - -에러 메시지를 보여주는 대화 상자를 표시합니다. - -이 함수는 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 있습니다. 이 메서드는 -보통 애플리케이션이 시작되기 전에 특정한 에러를 표시하기 위해 사용됩니다. 만약 -Linux에서 `ready` 이벤트가 발생하기 전에 이 API를 호출할 경우, 메시지는 stderr를 -통해서 표시되며 GUI 대화 상자는 표시되지 않습니다. - -## Sheets - -macOS에선, `browserWindow` 인수에 `BrowserWindow` 객체 참조를 전달하면 대화 -상자가 해당 윈도우에 시트처럼 표시되도록 표현할 수 있습니다. 윈도우의 객체 참조가 -제공되지 않으면 모달 형태로 표시됩니다. - -`BrowserWindow.getCurrentWindow().setSheetOffset(offset)`을 통해 윈도우에 부착될 -시트의 위치를 조정할 수 있습니다. diff --git a/docs-translations/ko-KR/api/download-item.md b/docs-translations/ko-KR/api/download-item.md deleted file mode 100644 index 5256c3fb2b5b..000000000000 --- a/docs-translations/ko-KR/api/download-item.md +++ /dev/null @@ -1,151 +0,0 @@ -# DownloadItem - -> 원격 소스로부터의 파일 다운로드를 제어합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`DownloadItem`은 `EventEmitter`를 상속받았으며 Electron의 다운로드 아이템을 -표현합니다. 이 클래스 객체는 `Session` 클래스의 `will-download` 이벤트에 사용되며 -사용자가 다운로드 아이템을 다룰 수 있도록 도와줍니다. - -```javascript -// 메인 프로세스 -win.webContents.session.on('will-download', (event, item, webContents) => { - // Set the save path, making Electron not to prompt a save dialog. - item.setSavePath('/tmp/save.pdf') - - item.on('updated', (event, state) => { - if (state === 'interrupted') { - console.log('Download is interrupted but can be resumed') - } else if (state === 'progressing') { - if (item.isPaused()) { - console.log('Download is paused') - } else { - console.log(`Received bytes: ${item.getReceivedBytes()}`) - } - } - }) - item.once('done', (event, state) => { - if (state === 'completed') { - console.log('Download successfully') - } else { - console.log(`Download failed: ${state}`) - } - }) -}) -``` - -## Events - -### Event: 'updated' - -Returns: - -* `event` Event -* `state` String - -다운로드가 업데이트되었으며 아직 끝나지 않았을 때 발생하는 이벤트입니다. - -`state`는 다음 중 하나가 될 수 있습니다: - -* `progressing` - 다운로드가 진행중입니다. -* `interrupted` - 다운로드가 중지되었으며 다시 재개할 수 있습니다. - -### Event: 'done' - -Returns: - -* `event` Event -* `state` String - -다운로드가 종료될 때 발생하는 이벤트입니다. 이 이벤트는 다운로드 중 문제가 발생하여 -중단되거나, 모두 성공적으로 완료된 경우, `downloadItem.cancel()` 같은 메서드를 통해 -취소하는 경우의 종료 작업이 모두 포함됩니다. - -`state`는 다음 중 하나가 될 수 있습니다: - -* `completed` - 다운로드가 성공적으로 완료되었습니다. -* `cancelled` - 다운로드가 취소되었습니다. -* `interrupted` - 다운로드가 중지되었으며 다시 재개할 수 있습니다. - -## Methods - -`downloadItem` 객체는 다음과 같은 메서드를 가지고 있습니다: - -### `downloadItem.setSavePath(path)` - -* `path` String - 다운로드 아이템을 저장할 파일 경로를 지정합니다. - -이 API는 세션의 `will-download` 콜백 함수에서만 사용할 수 있습니다. 사용자가 API를 -통해 아무 경로도 설정하지 않을 경우 Electron은 기본 루틴 파일 저장을 실행합니다. -(파일 대화 상자를 엽니다) - -### `downloadItem.getSavePath()` - -Returns `String` - 다운로드 아이템의 저장 경로. 이 경로는 -`downloadItem.setSavePath(path)`로 설정된 경로나 나타난 저장 대화상자에서 선택한 -경로 중 하나가 될 수 있습니다. - -### `downloadItem.pause()` - -다운로드를 일시 중지합니다. - -### `downloadItem.isPaused()` - -Returns `Boolean` - 다운로드가 일시 중지되었는지 여부. - -### `downloadItem.resume()` - -중디된 다운로드를 재개합니다. - -### `downloadItem.canResume()` - -Returns `Boolean` - 다운로드를 재개할 수 있는지 여부. - -### `downloadItem.cancel()` - -다운로드를 취소합니다. - -### `downloadItem.getURL()` - -Returns `String` - 아이템을 다운로드 한 URL. - -### `downloadItem.getMimeType()` - -Returns `String` - 파일의 MIME 타입. - -### `downloadItem.hasUserGesture()` - -Returns `Boolean` - 유저 제스쳐(작업)로인한 다운로드인지 여부. - -### `downloadItem.getFilename()` - -Returns `String` - 다운로드 아이템의 파일 이름. - -**참고:** 실제 파일 이름과 로컬 디스크에 저장되는 파일의 이름은 서로 다를 수 있습니다. -예를 들어 만약 사용자가 파일을 저장할 때 파일 이름을 바꿨다면 실제 파일 이름과 저장 -파일 이름은 서로 달라지게 됩니다. - -### `downloadItem.getTotalBytes()` - -Returns `Integer` - 다운로드 아이템의 바이트 단위의 전체 크기. 크기를 알 수 -없으면 0. - -### `downloadItem.getReceivedBytes()` - -Returns `Integer` - 다운로드 아이템의 수신된 바이트. - -### `downloadItem.getContentDisposition()` - -Return `String` - 응답 헤더의 Content-Disposition 필드. - -### `downloadItem.getState()` - -Return `String` - 현재 상태. - -값은 다음이 될 수 있습니다: - -* `progressing` - 다운로드가 진행중입니다. -* `completed` - 다운로드가 성공적으로 완료되었습니다. -* `cancelled` - 다운로드가 취소되었습니다. -* `interrupted` - 다운로드가 중지되었습니다. diff --git a/docs-translations/ko-KR/api/environment-variables.md b/docs-translations/ko-KR/api/environment-variables.md deleted file mode 100644 index e088ad64873c..000000000000 --- a/docs-translations/ko-KR/api/environment-variables.md +++ /dev/null @@ -1,87 +0,0 @@ -# 환경 변수 - -> 애플리케이션의 구성과 동작을 코드 변경 없이 제어합니다. - -특정 Electron 동작은 명령줄 플래그와 애플리케이션의 코드보다 먼저 초기화되어야 하므로 -환경 변수에 의해 작동합니다. - -POSIX 쉘의 예시입니다: - -```bash -$ export ELECTRON_ENABLE_LOGGING=true -$ electron -``` - -Windows 콘솔의 예시입니다: - -```powershell -> set ELECTRON_ENABLE_LOGGING=true -> electron -``` - -## 제품 변수 - -다음 환경 변수는 Electron 애플리케이션 패키지 실행에 우선적으로 사용됩니다. - -### `GOOGLE_API_KEY` - -Electron 은 하드코딩 된 구글의 위치정보 웹서비스 요청을 위한 API 키를 포함하고 -있습니다. 이 API 키가 모든 버전의 Electron 에 포함되어 있기 때문에 종종 -사용량을 초과합니다. 이 문제를 해결하기 위해 자신의 구글 API 키를 사용할 수 -있습니다. 메인 프로세스 파일에 다음 코드를 위치정보 요청이 있는 브라우저를 열기 -전에 넣어주세요. - -```javascript -process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE' -``` - -구글 API 키를 획득하는 방법은 -[이 페이지](https://www.chromium.org/developers/how-tos/api-keys)를 참고하세요. - -기본적으로, 새로 생성된 구글 API 키는 위치정보 요청이 허용되지 않습니다. -위치정보 요청을 사용하려면 -[이 페이지](https://console.developers.google.com/apis/api/geolocation/overview)를 -방문하세요. - -### `ELECTRON_NO_ASAR` - -ASAR 지원을 비활성화합니다. 이 변수는 분기된 자식 프로세스와 -`ELECTRON_RUN_AS_NODE` 를 설정하여 생산된 자식 프로세스에서만 지원됩니다. - -## 개발 변수 - -다음 환경 변수는 개발과 디버깅시 우선적으로 사용됩니다. - -### `ELECTRON_RUN_AS_NODE` - -프로세스를 일반 Node.js 프로세스처럼 시작합니다. (electron 모듈 제외) - -### `ELECTRON_ENABLE_LOGGING` - -Chrome의 내부 로그를 콘솔에 출력합니다. - -### `ELECTRON_LOG_ASAR_READS` - -Electron이 ASAR 파일을 읽을 때, 읽기 오프셋의 로그를 남기고 시스템 `tmpdir`에 -파일로 저장합니다. 결과 파일은 ASAR 모듈의 파일 순서를 최적화 하는데 사용할 수 -있습니다. - -### `ELECTRON_ENABLE_STACK_DUMPING` - -Electron이 크래시되면, 콘솔에 stack trace를 출력합니다. - -이 환경 변수는 `crashReporter`가 시작되지 않았을 경우 작동하지 않습니다. - -### `ELECTRON_DEFAULT_ERROR_MODE` _Windows_ - -Electron이 크래시되면 스택 출력 정보를 콘솔에 출력합니다. - -이 환경 변수는 `crashReporter`가 시작되지 않았을 경우 작동하지 않습니다. - -### `ELECTRON_NO_ATTACH_CONSOLE` _Windows_ - -현재 콘솔 세션에 소속시키지 않습니다. - -### `ELECTRON_FORCE_WINDOW_MENU_BAR` _Linux_ - -Linux의 전역 메뉴바를 사용하지 않습니다. diff --git a/docs-translations/ko-KR/api/file-object.md b/docs-translations/ko-KR/api/file-object.md deleted file mode 100644 index 46c1ac4480b3..000000000000 --- a/docs-translations/ko-KR/api/file-object.md +++ /dev/null @@ -1,32 +0,0 @@ -# `File` 객체 - -> HTML5 `File` API를 기본적인 파일 시스템의 파일처럼 사용합니다. - -DOM의 File 인터페이스는 네이티브 파일을 추상화 합니다. 사용자가 직접 HTML5 File -API를 사용하여 작업할 때 선택된 파일의 경로를 알 수 있도록, Electron은 파일의 실제 -경로를 담은 `path` 속성을 File 인터페이스에 추가했습니다. - -다음 예시는 앱으로 드래그 앤 드롭한 파일의 실제 경로를 가져옵니다: - -```html -
- Drag your file here -
- - -``` diff --git a/docs-translations/ko-KR/api/frameless-window.md b/docs-translations/ko-KR/api/frameless-window.md deleted file mode 100644 index 0d27fd4abdfb..000000000000 --- a/docs-translations/ko-KR/api/frameless-window.md +++ /dev/null @@ -1,133 +0,0 @@ -# Frameless 윈도우 - -> 툴바, 테두리, 시각적인 "chrome" 없이 윈도우를 엽니다. - -Frameless 윈도우는 [창 테두리](https://developer.mozilla.org/ko/docs/Glossary/Chrome)가 -없는 윈도우를 말합니다. 이 기능은 윈도우의 일부분인 툴바와 같이 웹 페이지의 일부분이 -아닌 부분을 보이지 않도록 합니다. [`BrowserWindow`](browser-window.md) 클래스의 -옵션에서 설정할 수 있습니다. - -## Frameless 윈도우 만들기 - -Frameless 윈도우를 만드려면 [BrowserWindow](browser-window.md) 객체의 -`options` 객체에서 `frame` 옵션을 `false`로 지정하면 됩니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({width: 800, height: 600, frame: false}) -``` - -### 최신 macOS에서 사용할 수 있는 대안 - -macOS 10.9 Mavericks 이후의 최신 버전부터는 테두리가 없는 창을 만들 때 새로운 방법을 -사용할 수 있습니다. `frame` 옵션을 `false`로 지정하여 제목과 창 구성 요소를 모두 -비활성화하는 대신 새로운 `titleBarStyle` 옵션을 통해 제목만 숨기고 창 구성 요소 -("신호등 버튼")의 기능과 창 크기를 그대로 유지할 수 있습니다: - -#### `hidden` - -제목 표시줄을 숨기고 컨텐츠 창을 전체 크기로 합니다. 제목 표시줄은 여전히 왼쪽 -상단에 표준 창 컨트롤 (“신호등”) 을 가지고 있습니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({titleBarStyle: 'hidden'}) -win.show() -``` - -#### `hidden-inset` - -제목 표시줄을 숨기고 창 가장자리에 약간 더 들어간 신호등 버튼 모양으로 -대체합니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({titleBarStyle: 'hidden-inset'}) -win.show() -``` - -## 투명한 창 만들기 - -Frameless 윈도우 창의 배경을 투명하게 만들고 싶다면 `transparent` 옵션을 `true`로 -바꿔주기만 하면됩니다: - -```javascript -let win = new BrowserWindow({transparent: true, frame: false}) -``` - -### API의 한계 - -* 투명한 영역을 통과하여 클릭할 수 없습니다. 우리는 이 문제를 해결하기 위해 API를 - 제공할 예정이며 자세한 내용은 - [이슈](https://github.com/electron/electron/issues/1335)를 참고하세요. -* 투명한 창은 크기를 조절할 수 없습니다. `resizable` 속성을 `true`로 할 경우 몇몇 - 플랫폼에선 크래시가 일어납니다. -* `blur` 필터는 웹 페이지에서만 적용됩니다. 윈도우 아래 콘텐츠에는 블러 효과를 적용할 - 방법이 없습니다. (예시: 유저의 시스템에 열린 다른 애플리케이션) -* Windows에선 DWM(데스크톱 창 관리자)가 비활성화되어 있을 경우 투명한 창이 작동하지 - 않습니다. -* Linux를 사용할 경우 [alpha channel doesn't work on some NVidia drivers](https://code.google.com/p/chromium/issues/detail?id=369209) - upstream 버그가 있는 관계로 투명한 창 기능을 사용하려면 CLI 옵션에 - `--enable-transparent-visuals --disable-gpu`을 추가해야 합니다. 이 옵션은 GPU의 - 사용을 중단하고 윈도우를 생성하는데 ARGB를 사용할 수 있도록 해줍니다. -* macOS(Mac)에선 네이티브 창에서 보여지는 그림자가 투명한 창에선 보이지 않습니다. - -## 클릭이 통과될 수 있는 윈도우 - -클릭이 통과될 수 있는 윈도우를 만드려면, i.e. 모든 마우스 이벤트를 무시하는 윈도우를 -만드려면, [win.setIgnoreMouseEvents(ignore)][ignore-mouse-events] API를 사용하여 -구현할 수 있습니다: - -```javascript -win.setIgnoreMouseEvents(true) -``` - -## 드래그 가능 위치 지정 - -기본적으로 Frameless 윈도우는 드래그 할 수 없습니다. 애플리케이션의 CSS에서 특정 -범위를 `-webkit-app-region: drag`로 지정하면 OS의 기본 타이틀 바 처럼 드래그 되도록 -할 수 있습니다. 그리고 `-webkit-app-region: no-drag`를 지정해서 드래그 불가능 영역을 -만들 수도 있습니다. 현재 사각형 형태의 범위만 지원합니다. - -창 전체를 드래그 가능하게 만드려면 `-webkit-app-region: drag`을 `body`의 스타일에 -지정하면 됩니다: - -```html - - -``` - -참고로 창 전체를 드래그 영역으로 지정할 경우 사용자가 버튼을 클릭할 수 없게 되므로 -버튼은 드래그 불가능 영역으로 지정해야 합니다: - -```css -button { - -webkit-app-region: no-drag; -} -``` - -따로 커스텀 타이틀 바를 만들어 사용할 때는 타이틀 바 내부의 모든 버튼을 드래그 불가 -영역으로 지정해야 합니다. - -## 텍스트 선택 - -Frameless 윈도우에서 텍스트가 선택되는 드래그 동작은 혼란을 야기할 수 있습니다. 예를 -들어 타이틀 바를 드래그 할 때 타이틀 바의 텍스트를 실수로 선택할 수 있습니다. 이를 -방지하기 위해 다음과 같이 드래그 영역의 텍스트 선택 기능을 비활성화해야 할 필요가 -있습니다: - -```css -.titlebar { - -webkit-user-select: none; - -webkit-app-region: drag; -} -``` - -## 컨텍스트 메뉴 - -몇몇 플랫폼에선 드래그 가능 영역이 non-client 프레임으로 처리됩니다. 이러한 플랫폼에선 -드래그 가능 영역에서 오른쪽 클릭 할 경우 시스템 메뉴가 팝업 됩니다. 이러한 이유로 -컨텍스트 메뉴 지정 시 모든 플랫폼에서 정상적으로 작동하게 하려면 커스텀 컨텍스트 메뉴를 -드래그 영역 내에 만들어선 안됩니다. - -[ignore-mouse-events]: browser-window.md#winsetignoremouseeventsignore diff --git a/docs-translations/ko-KR/api/global-shortcut.md b/docs-translations/ko-KR/api/global-shortcut.md deleted file mode 100644 index c633ace6e3e6..000000000000 --- a/docs-translations/ko-KR/api/global-shortcut.md +++ /dev/null @@ -1,75 +0,0 @@ -# globalSortcut - -> 애플리케이션에 키보드 포커스가 없을 때도 키보드 이벤트를 받을 수 있도록 합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`globalShortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을 -제공합니다. 이 모듈을 사용하여 사용자가 다양한 작업을 편하게 할 수 있도록 단축키를 -정의 할 수 있습니다. - -**참고:** 등록된 단축키는 애플리케이션이 백그라운드로 작동(창이 포커스 되지 않음) 할 -때도 계속해서 작동합니다. 이 모듈은 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 -사용할 수 없습니다. - -```javascript -const {app, globalShortcut} = require('electron') - -app.on('ready', () => { - // 'CommandOrControl+X' 단축키를 리스너에 등록합니다. - const ret = globalShortcut.register('CommandOrControl+X', () => { - console.log('CommandOrControl+X is pressed') - }) - - if (!ret) { - console.log('registration failed') - } - - // 단축키가 등록되었는지 확인합니다. - console.log(globalShortcut.isRegistered('CommandOrControl+X')) -}) - -app.on('will-quit', () => { - // 단축키의 등록을 해제합니다. - globalShortcut.unregister('CommandOrControl+X') - - // 모든 단축키의 등록을 해제합니다. - globalShortcut.unregisterAll() -}) -``` - -## Methods - -`globalShortcut` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `globalShortcut.register(accelerator, callback)` - -* `accelerator` [Accelerator](accelerator.md) -* `callback` Function - -`accelerator`의 전역 단축키를 등록합니다. 유저로부터 등록된 단축키가 눌렸을 경우 -`callback` 함수가 호출됩니다. - -accelerator가 이미 다른 애플리케이션에서 사용 중일 경우, 이 작업은 조용히 실패합니다. -이러한 동작은 애플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기 -위해 운영체제에 의해 예정된 동작입니다. - -### `globalShortcut.isRegistered(accelerator)` - -* `accelerator` [Accelerator](accelerator.md) - -Returns `Boolean` - `accelerator` 가 등록되었는지 여부. - -Accelerator가 이미 다른 애플리케이션에서 사용 중일 경우, 여전히 `false`를 반환합니다. -이러한 동작은 애플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기 -위해 운영체제에 의해 예정된 동작입니다. - -### `globalShortcut.unregister(accelerator)` - -* `accelerator` [Accelerator](accelerator.md) - -`accelerator`에 해당하는 전역 단축키를 등록 해제합니다. - -### `globalShortcut.unregisterAll()` - -모든 전역 단축키의 등록을 해제합니다. diff --git a/docs-translations/ko-KR/api/ipc-main.md b/docs-translations/ko-KR/api/ipc-main.md deleted file mode 100644 index 52abfea8ae3c..000000000000 --- a/docs-translations/ko-KR/api/ipc-main.md +++ /dev/null @@ -1,101 +0,0 @@ -# ipcMain - -> 메인 프로세스에서 렌더러 프로세스로 비동기 통신을 합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`ipcMain` 모듈은 [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) -클래스의 인스턴스입니다. 메인 프로세스에서 사용하면, 렌더러 -프로세스(웹 페이지)에서 전달된 동기, 비동기 메시지를 주고 받는 방법을 -제공합니다. 렌더러 프로세스에서 메시지를 전달하면 이 모듈을 통해 메시지를 받을 -수 있습니다. - -## 메시지 전송 - -물론 메시지를 받는 것 말고도 메인 프로세스에서 렌더러 프로세스로 보내는 것도 -가능합니다. 자세한 내용은 [webContents.send][web-contents-send]를 참고하세요. - -* 메시지를 전송할 때 이벤트 이름은 `channel`이 됩니다. -* 메시지에 동기로 응답할 땐 반드시 `event.returnValue`를 설정해야 합니다. -* 메시지를 비동기로 응답할 땐 `event.sender.send(...)` 메서드를 사용할 수 있습니다. - -다음 예시는 렌더러 프로세스와 메인 프로세스간에 메시지를 전달하고 받는 예시입니다: - -```javascript -// 메인 프로세스 -const {ipcMain} = require('electron') -ipcMain.on('asynchronous-message', (event, arg) => { - console.log(arg) // "ping" 출력 - event.sender.send('asynchronous-reply', 'pong') -}) - -ipcMain.on('synchronous-message', (event, arg) => { - console.log(arg) // "ping" 출력 - event.returnValue = 'pong' -}) -``` - -```javascript -// 렌더러 프로세스 (웹 페이지) -const {ipcRenderer} = require('electron') -console.log(ipc.sendSync('synchronous-message', 'ping')) // "pong" 출력 - -ipcRenderer.on('asynchronous-reply', (event, arg) => { - console.log(arg) // "pong" 출력 -}) -ipcRenderer.send('asynchronous-message', 'ping') -``` - -## Methods - -`ipcMain`은 다음과 같은 이벤트 리스닝 메서드를 가지고 있습니다: - -### `ipcMain.on(channel, listener)` - -* `channel` String -* `listener` Function - -`channel`에 대해 이벤트를 리스닝합니다. 새로운 메시지가 도착하면 `listener`가 -`listener(event, args...)` 형식으로 호출됩니다. - -### `ipcMain.once(channel, listener)` - -* `channel` String -* `listener` Function - -이벤트에 대해 한 번만 작동하는 `listener` 함수를 등록합니다. 이 `listener`는 -등록된 후 `channel`에 보내지는 메시지에 한해 호출됩니다. 호출된 이후엔 리스너가 -삭제됩니다. - -### `ipcMain.removeListener(channel, listener)` - -* `channel` String -* `listener` Function - -메시지 수신을 완료한 후, 더 이상의 콜백이 필요하지 않을 때 또는 몇 가지 이유로 -채널의 메시지 전송을 멈출수 없을 때, 이 함수를 통해 지정한 채널에 대한 콜백을 -삭제할 수 있습니다. - -지정한 `channel`에 대한 리스너를 저장하는 배열에서 지정한 `listener`를 삭제합니다. - -### `ipcMain.removeAllListeners(channel)` - -* `channel` String (optional) - -이 ipc 채널에 등록된 모든 핸들러들을 삭제하거나 지정한 `channel`을 삭제합니다. - -## Event 객체 - -`callback`에서 전달된 `event` 객체는 다음과 같은 메서드와 속성을 가지고 있습니다: - -### `event.returnValue` - -이 메시지를 지정하면 동기 메시지를 전달합니다. - -### `event.sender` - -메시지를 보낸 `webContents` 객체를 반환합니다. `event.sender.send` 메서드를 통해 -비동기로 메시지를 전달할 수 있습니다. 자세한 내용은 -[webContents.send][web-contents-send]를 참고하세요. - -[web-contents-send]: web-contents.md#webcontentssendchannel-arg1-arg2- diff --git a/docs-translations/ko-KR/api/ipc-renderer.md b/docs-translations/ko-KR/api/ipc-renderer.md deleted file mode 100644 index 2d6ff0136aeb..000000000000 --- a/docs-translations/ko-KR/api/ipc-renderer.md +++ /dev/null @@ -1,89 +0,0 @@ -# ipcRenderer - -> 렌더러 프로세스에서 메인 프로세스로 비동기 통신을 합니다. - -프로세스: [렌더러](../tutorial/quick-start.md#renderer-process) - -`ipcRenderer` 모듈은 [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) -클래스의 인스턴스입니다. 렌더러 프로세스에서 메인 프로세스로 동기/비동기 -메시지를 주고 받는 방법을 제공합니다. 또한 메인 프로세스로부터 받은 메시지에 -응답할 수도 있습니다. - -[ipcMain](ipc-main.md)에서 코드 예시를 확인할 수 있습니다. - -## Methods - -`ipcRenderer`는 다음과 같은 이벤트 리스닝 메서드를 가지고 있습니다: - -### `ipcRenderer.on(channel, listener)` - -* `channel` String -* `listener` Function - -`channel`에 대해 이벤트를 리스닝합니다. 새로운 메시지가 도착하면 `listener`가 -`listener(event, args...)` 형식으로 호출됩니다. - -### `ipcRenderer.once(channel, listener)` - -* `channel` String -* `listener` Function - -이벤트에 대해 한 번만 작동하는 `listener` 함수를 등록합니다. 이 `listener`는 -등록된 후 `channel`에 보내지는 메시지에 한해 호출됩니다. 호출된 이후엔 리스너가 -삭제됩니다. - -### `ipcRenderer.removeListener(channel, listener)` - -* `channel` String -* `listener` Function - -메시지 수신을 완료한 후, 더 이상의 콜백이 필요하지 않을 때 또는 몇 가지 이유로 -채널의 메시지 전송을 멈출수 없을 때, 이 함수를 통해 지정한 채널에 대한 콜백을 -삭제할 수 있습니다. - -지정한 `channel`에 대한 리스너를 저장하는 배열에서 지정한 `listener`를 삭제합니다. - -### `ipcRenderer.removeAllListeners(channel)` - -* `channel` String (optional) - -이 ipc 채널에 등록된 모든 핸들러들을 삭제하거나 지정한 `channel`을 삭제합니다. - -## 메시지 보내기 - -`ipcRenderer`는 다음과 같은 메시지 전송 메서드를 가지고 있습니다: - -### `ipcRenderer.send(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (optional) - -`channel`을 통해 메인 프로세스에 비동기 메시지를 보냅니다. 그리고 필요에 따라 -임의의 인수를 사용할 수도 있습니다. 인수들은 내부적으로 JSON 포맷으로 직렬화 -되며, 이후 함수와 프로토타입 체인은 포함되지 않게 됩니다. - -메인 프로세스는 `ipcMain` 모듈의 `channel` 이벤트를 통해 -이벤트를 리스닝 할 수 있습니다. - -### `ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (optional) - -`channel`을 통해 메인 프로세스에 동기 메시지를 보냅니다. 그리고 필요에 따라 -임의의 인수를 사용할 수도 있습니다. 인수들은 내부적으로 JSON 포맷으로 직렬화 -되며, 이후 함수와 프로토타입 체인은 포함되지 않게 됩니다. - -메인 프로세스는 `ipcMain` 모듈을 통해 `channel` 이벤트를 리스닝 할 수 있고, -`event.returnValue`로 회신 할 수 있습니다. - -**참고:** 동기 메서드는 모든 렌더러 프로세스의 작업을 일시 중단시킵니다. 사용 -목적이 확실하지 않다면 사용하지 않는 것이 좋습니다. - -### `ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (optional) - -`ipcRenderer.send`와 비슷하지만 이벤트를 메인 프로세스 대신 호스트 페이지내의 -`` 요소로 보냅니다. diff --git a/docs-translations/ko-KR/api/locales.md b/docs-translations/ko-KR/api/locales.md deleted file mode 100644 index 468cbd752eea..000000000000 --- a/docs-translations/ko-KR/api/locales.md +++ /dev/null @@ -1,140 +0,0 @@ -# 로케일 - -> `app.getLocale()`에서 반환되는 로케일 값. - -Electron은 로케일을 가져오기 위해 Chromium의 `l10n_util` 라이브러리를 사용합니다. -반환될 수 있는 값은 다음과 같습니다: - - -| 언어 코드 | 언어 이름 | -|---------------|---------------| -| af | Afrikaans | -| ar-AE | Arabic (U.A.E.) | -| ar-IQ | Arabic (Iraq) | -| ar | Arabic (Standard) | -| ar-BH | Arabic (Bahrain) | -| ar-DZ | Arabic (Algeria) | -| ar-EG | Arabic (Egypt) | -| ar | Aragonese | -| ar-JO | Arabic (Jordan) | -| ar-KW | Arabic (Kuwait) | -| ar-LB | Arabic (Lebanon) | -| ar-LY | Arabic (Libya) | -| ar-MA | Arabic (Morocco) | -| ar-OM | Arabic (Oman) | -| ar-QA | Arabic (Qatar) | -| ar-SA | Arabic (Saudi Arabia) | -| ar-SY | Arabic (Syria) | -| ar-TN | Arabic (Tunisia) | -| ar-YE | Arabic (Yemen) | -| as | Assamese | -| ast | Asturian | -| az | Azerbaijani | -| be | Belarusian | -| bg | Bulgarian | -| bg | Bulgarian | -| bn | Bengali | -| br | Breton | -| bs | Bosnian | -| ca | Catalan | -| ce | Chechen | -| ch | Chamorro | -| co | Corsican | -| cr | Cree | -| cs | Czech | -| cv | Chuvash | -| da | Danish | -| de | German (Standard) | -| de-AT | German (Austria) | -| de-CH | German (Switzerland) | -| de-DE | German (Germany) | -| de-LI | German (Liechtenstein) | -| de-LU | German (Luxembourg) | -| el | Greek | -| en-AU | English (Australia) | -| en-BZ | English (Belize) | -| en | English | -| en-CA | English (Canada) | -| en-GB | English (United Kingdom) | -| en-IE | English (Ireland) | -| en-JM | English (Jamaica) | -| en-NZ | English (New Zealand) | -| en-PH | English (Philippines) | -| en-TT | English (Trinidad & Tobago) | -| en-US | English (United States) | -| en-ZA | English (South Africa) | -| en-ZW | English (Zimbabwe) | -| eo | Esperanto | -| et | Estonian | -| eu | Basque | -| fa | Persian | -| fa | Farsi | -| fa-IR | Persian/Iran | -| fi | Finnish | -| fj | Fijian | -| fo | Faeroese | -| fr-CH | French (Switzerland) | -| fr-FR | French (France) | -| fr-LU | French (Luxembourg) | -| fr-MC | French (Monaco) | -| fr | French (Standard) | -| fr-BE | French (Belgium) | -| fr-CA | French (Canada) | -| fur | Friulian | -| fy | Frisian | -| ga | Irish | -| gd-IE | Gaelic (Irish) | -| gd | Gaelic (Scots) | -| gl | Galacian | -| gu | Gujurati | -| he | Hebrew | -| hi | Hindi | -| hr | Croatian | -| ht | Haitian | -| hu | Hungarian | -| hy | Armenian | -| id | Indonesian | -| is | Icelandic | -| it-CH | Italian (Switzerland) | -| it | Italian (Standard) | -| iu | Inuktitut | -| ja | Japanese | -| ka | Georgian | -| kk | Kazakh | -| km | Khmer | -| kn | Kannada | -| ko | Korean | -| ko-KP | Korean (North Korea) | -| ko-KR | Korean (South Korea) | -| ks | Kashmiri | -| ky | Kirghiz | -| la | Latin | -| lb | Luxembourgish | -| lt | Lithuanian | -| lv | Latvian | -| mi | Maori | -| mk | FYRO Macedonian | -| ml | Malayalam | -| mo | Moldavian | -| mr | Marathi | -| ms | Malay | -| mt | Maltese | -| my | Burmese | -| nb | Norwegian (Bokmal) | -| ne | Nepali | -| ng | Ndonga | -| nl | Dutch (Standard) | -| nl-BE | Dutch (Belgian) | -| nn | Norwegian (Nynorsk) | -| no | Norwegian | -| nv | Navajo | -| oc | Occitan | -| om | Oromo | -| or | Oriya | -| sq | Albanian | -| tlh | Klingon | -| zh-TW | Chinese (Taiwan) | -| zh | Chinese | -| zh-CN | Chinese (PRC) | -| zh-HK | Chinese (Hong Kong) | -| zh-SG | Chinese (Singapore) | diff --git a/docs-translations/ko-KR/api/menu-item.md b/docs-translations/ko-KR/api/menu-item.md deleted file mode 100644 index bef54ba5d23e..000000000000 --- a/docs-translations/ko-KR/api/menu-item.md +++ /dev/null @@ -1,109 +0,0 @@ -# MenuItem - -> 네이티브 애플리케이션 메뉴와 컨텍스트 메뉴에 아이템을 추가합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -[`Menu`](menu.md)에서 예시를 확인할 수 있습니다. - -## Class: MenuItem - -`MenuItem` 인스턴스 객체에서 사용할 수 있는 메서드입니다: - -### `new MenuItem(options)` - -* `options` Object - * `click` Function - 메뉴 아이템이 클릭될 때 `click(menuItem, browserWindow, - event)` 형태로 호출 되는 콜백 함수. - * `menuItem` MenuItem - * `browserWindow` BrowserWindow - * `event` Event - * `role` String - 메뉴 아이템의 액션을 정의합니다. 이 속성을 지정하면 `click` - 속성이 무시됩니다. - * `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`, - `checkbox` 또는 `radio`를 사용할 수 있습니다. 만약 값이 `Menu`가 아니면 - `Menu.buildFromTemplate`를 통해 자동으로 변환됩니다. - * `label` String - * `sublabel` String - * `accelerator` [Accelerator](accelerator.md) - * `icon` [NativeImage](native-image.md) - * `enabled` Boolean - 만약 `false`로 설정되면, 메뉴 아이템이 회색으로 변하며 - 클릭할 수 없게 됩니다. - * `visible` Boolean - 만약 `false`로 설정되면, 메뉴 아이템이 완전히 숨겨집니다. - * `checked` Boolean - 반드시 `checkbox` 또는 `radio` 타입의 메뉴 아이템에만 - 지정해야 합니다. - * `submenu` Menu - 반드시 `submenu` 타입의 메뉴 아이템에만 지정해야 합니다. 만약 - `submenu`가 지정되면 `type: 'submenu'`는 생략될 수 있습니다. 만약 값이 `Menu`가 - 아닐 경우 `Menu.buildFromTemplate`을 통해 자동적으로 변환됩니다. - * `id` String - 현재 메뉴 아이템에 대해 유일키를 지정합니다. 이 키는 이후 - `position` 옵션에서 사용할 수 있습니다. - * `position` String - 미리 지정한 `id`를 이용하여 메뉴 아이템의 위치를 세밀하게 - 조정합니다. - -어떠한 메뉴 아이템이 표준 롤에 일치한다면, `role`을 지정하는 것이 동작을 `click` -함수로 일일이 구현하려 시도하는 것 보다 더 좋을 수 있습니다. 빌트-인 `role` 동작은 -더 좋은 네이티브 경험을 제공할 것입니다. - -`role`을 사용하는 동안에는 `label`과 `accelerator`는 필수가 아니며 각 플랫폼에 대해 -적합한 값이 기본값으로 사용됩니다. - -`role` 속성은 다음 값을 가질 수 있습니다: - -* `undo` -* `redo` -* `cut` -* `copy` -* `paste` -* `pasteandmatchstyle` -* `selectall` -* `delete` -* `minimize` - 현재 윈도우를 최소화합니다. -* `close` - 현재 윈도우를 닫습니다. -* `quit`- 애플리케이션을 닫습니다. -* `togglefullscreen` - 현재 윈도우에서 전체 화면 모드를 토글합니다. -* `resetzoom` - 포커스된 페이지의 줌 레벨을 기본 크기로 초기화합니다. -* `zoomin` - 포커스된 페이지를 10% 줌인합니다. -* `zoomout` - 포커스된 페이지를 10% 줌아웃합니다. - -macOS에서의 `role`은 다음 값을 추가로 가질 수 있습니다: - -* `about` - `orderFrontStandardAboutPanel` 액션에 대응 -* `hide` - `hide` 액션에 대응 -* `hideothers` - `hideOtherApplications` 액션에 대응 -* `unhide` - `unhideAllApplications` 액션에 대응 -* `startspeaking` - `startSpeaking` 액션에 대응 -* `stopspeaking` - `stopSpeaking` 액션에 대응 -* `front` - `arrangeInFront` 액션에 대응 -* `zoom` - `performZoom` 액션에 대응 -* `window` - 부 메뉴를 가지는 "Window" 메뉴 -* `help` - 부 메뉴를 가지는 "Help" 메뉴 -* `services` - 부 메뉴를 가지는 "Services" 메뉴 - -macOS에서는 `role`을 지정할 때, `label`과 `accelerator`만 MenuItem에 효과가 -적용되도록 변경되며, 다른 옵션들은 모두 무시됩니다. - -### Instance Properties - -다음은 `MenuItem`의 인스턴스에서 사용할 수 있는 속성입니다: - -#### `menuItem.enabled` - -아이템이 활성화되어있는지 여부를 표시하는 Boolean 값입니다. 이 속성은 동적으로 변경될 -수 있습니다. - -#### `menuItem.visible` - -아이템이 보여지고있는지 여부를 표시하는 Boolean 값입니다. 이 속성은 동적으로 변경될 -수 있습니다. - -#### `menuItem.checked` - -아이템이 선택되어있는지 여부를 반환하는 Boolean 값입니다. 이 속성은 동적으로 변경될 -수 있습니다. - -`checkbox` 메뉴 아이템은 선택되면 `checked` 속성을 토글합니다. - -`radio` 메뉴 아이템은 클릭되었을 때 `checked` 속성을 활성화 합니다. 그리고 -같은 메뉴의 모든 인접한 아이템에 대한 속성이 꺼집니다. - -추가적인 작업을 위해 `click` 함수를 추가할 수도 있습니다. diff --git a/docs-translations/ko-KR/api/menu.md b/docs-translations/ko-KR/api/menu.md deleted file mode 100644 index 505f381904ee..000000000000 --- a/docs-translations/ko-KR/api/menu.md +++ /dev/null @@ -1,406 +0,0 @@ -# Menu - -> 네이티브 애플리케이션 메뉴와 컨텍스트 메뉴를 생성합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -각 메뉴는 여러 개의 [메뉴 아이템](menu-item.md)으로 구성되고 서브 메뉴를 가질 수도 있습니다. - -## 예시 - -`Menu` 클래스는 메인 프로세스에서만 사용할 수 있지만, [`remote`](remote.md) 모듈을 -통해 랜더러 프로세스에서도 사용할 수 있습니다. - -### 메인 프로세스 - -다음은 템플릿 API를 사용하여 메인 프로세스에서 어플리케이션 메뉴를 생성하는 예시입니다: - -```javascript -const {app, Menu} = require('electron') - -const template = [ - { - label: 'Edit', - submenu: [ - { - role: 'undo' - }, - { - role: 'redo' - }, - { - type: 'separator' - }, - { - role: 'cut' - }, - { - role: 'copy' - }, - { - role: 'paste' - }, - { - role: 'pasteandmatchstyle' - }, - { - role: 'delete' - }, - { - role: 'selectall' - } - ] - }, - { - label: 'View', - submenu: [ - { - label: 'Reload', - accelerator: 'CmdOrCtrl+R', - click (item, focusedWindow) { - if (focusedWindow) focusedWindow.reload() - } - }, - { - label: 'Toggle Developer Tools', - accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I', - click (item, focusedWindow) { - if (focusedWindow) focusedWindow.webContents.toggleDevTools() - } - }, - { - type: 'separator' - }, - { - role: 'resetzoom' - }, - { - role: 'zoomin' - }, - { - role: 'zoomout' - }, - { - type: 'separator' - }, - { - role: 'togglefullscreen' - } - ] - }, - { - role: 'window', - submenu: [ - { - role: 'minimize' - }, - { - role: 'close' - } - ] - }, - { - role: 'help', - submenu: [ - { - label: 'Learn More', - click () { require('electron').shell.openExternal('https://electron.atom.io') } - } - ] - } -] - -if (process.platform === 'darwin') { - template.unshift({ - label: app.getName(), - submenu: [ - { - role: 'about' - }, - { - type: 'separator' - }, - { - role: 'services', - submenu: [] - }, - { - type: 'separator' - }, - { - role: 'hide' - }, - { - role: 'hideothers' - }, - { - role: 'unhide' - }, - { - type: 'separator' - }, - { - role: 'quit' - } - ] - }) - // Edit menu. - template[1].submenu.push( - { - type: 'separator' - }, - { - label: 'Speech', - submenu: [ - { - role: 'startspeaking' - }, - { - role: 'stopspeaking' - } - ] - } - ) - // Window menu. - template[3].submenu = [ - { - label: 'Close', - accelerator: 'CmdOrCtrl+W', - role: 'close' - }, - { - label: 'Minimize', - accelerator: 'CmdOrCtrl+M', - role: 'minimize' - }, - { - label: 'Zoom', - role: 'zoom' - }, - { - type: 'separator' - }, - { - label: 'Bring All to Front', - role: 'front' - } - ] -} - -const menu = Menu.buildFromTemplate(template) -Menu.setApplicationMenu(menu) -``` - -### 렌더러 프로세스 - -밑은 [`remote`](remote.md) 모듈을 사용하여 동적으로 웹 페이지 (렌더러 프로세스)에서 -메뉴를 직접적으로 생성하는 예시이며 오른쪽 클릭을 했을 때 메뉴를 표시합니다. - -```html - - -``` - -## Class: Menu - -### `new Menu()` - -새로운 메뉴를 생성합니다. - -## Static Methods - -`menu` 클래스는 다음과 같은 정적 메서드를 가지고 있습니다: - -#### `Menu.setApplicationMenu(menu)` - -* `menu` Menu - -지정한 `menu`를 애플리케이션 메뉴로 만듭니다. macOS에선 상단바에 표시되며 Windows와 -Linux에선 각 창의 상단에 표시됩니다. - -**참고** 이 API는 `app`의 `ready` 이벤트가 발생한 이후에 호출해야 합니다. - -#### `Menu.getApplicationMenu()` - -설정되어있는 어플리케이션 메뉴를 반환합니다. (`Menu`의 인스턴스) 만약 없다면 `null`을 -반환합니다. - -#### `Menu.sendActionToFirstResponder(action)` _macOS_ - -* `action` String - -`action`을 애플리케이션의 first responder에 전달합니다. 이 메서드는 Cocoa 메뉴 -동작을 에뮬레이트 하는데 사용되며 보통 `MenuItem`의 `role` 속성에 사용됩니다. - -macOS의 네이티브 액션에 대해 자세히 알아보려면 -[macOS Cocoa Event Handling Guide](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW7) -문서를 참고하세요. - -#### `Menu.buildFromTemplate(template)` - -* `template` MenuItem[] - -기본적으로 `template`는 [MenuItem](menu-item.md)을 생성할 때 사용하는 `options`의 -배열입니다. 사용법은 위에서 설명한 것과 같습니다. - -또한 `template`에는 다른 속성도 추가할 수 있으며 메뉴가 만들어질 때 해당 메뉴 아이템의 -프로퍼티로 변환됩니다. - -### Instance Methods - -`menu` 객체는 다음과 같은 인스턴스 메서드를 가지고 있습니다: - -#### `menu.popup([browserWindow, x, y, positioningItem])` - -* `browserWindow` BrowserWindow (optional) - 기본값은 - `BrowserWindow.getFocusedWindow()`입니다. -* `x` Number (optional) - 기본값은 현재 마우스의 위치입니다. -* `y` Number (만약 `x`를 지정한 경우 **필수 항목**) - 기본값은 현재 마우스의 위치입니다. -* `positioningItem` Number (optional) _macOS_ - 메뉴 팝업 시 마우스 커서에 바로 - 위치시킬 메뉴 아이템의 인덱스. 기본값은 -1입니다. - -메뉴를 `browserWindow` 내부 팝업으로 표시합니다. - -#### `menu.append(menuItem)` - -* `menuItem` MenuItem - -메뉴의 리스트 끝에 `menuItem`을 삽입합니다. - -#### `menu.insert(pos, menuItem)` - -* `pos` Integer -* `menuItem` MenuItem - -`pos` 위치에 `menuItem`을 삽입합니다. - -### Instance Properties - -`menu` 객체는 또한 다음과 같은 속성을 가지고 있습니다: - -#### `menu.items` - -메뉴 아이템을 포함하는 MenuItem[] 배열. - -## macOS 애플리케이션 메뉴에 대해 알아 둬야 할 것들 - -macOS에선 Windows, Linux와 달리 완전히 다른 애플리케이션 메뉴 스타일을 가지고 있습니다. -그래서 애플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해 다음 몇 가지 유의 사항을 -숙지해야 합니다. - -### 기본 메뉴 - -macOS엔 `Services`나 `Windows`와 같은 많은 시스템 지정 기본 메뉴가 있습니다. 기본 -메뉴를 만들려면 반드시 다음 리스트 중 한 가지를 선택하여 메뉴의 `role`로 지정해야 -합니다. 그러면 Electron이 자동으로 인식하여 해당 메뉴를 기본 메뉴로 만듭니다: - -* `window` -* `help` -* `services` - -### 메뉴 아이템 기본 동작 - -macOS는 몇가지 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Others`와 같은 -기본 동작을 제공하고 있습니다. 메뉴 아이템의 기본 동작을 지정하려면 반드시 메뉴 -아이템의 `role` 속성을 지정해야 합니다. - -### 메인 메뉴의 이름 - -macOS에선 지정한 애플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 애플리케이션의 -이름이 됩니다. 애플리케이션 이름을 변경하려면 앱 번들내의 `Info.plist` 파일을 수정해야 -합니다. 자세한 내용은 [About Information Property List Files][AboutInformationPropertyListFiles] -문서를 참고하세요. - -## 지정한 브라우저 윈도우에 메뉴 설정 (*Linux* *Windows*) - -브라우저 윈도우의 [`setMenu` 메서드][setMenu]는 어떤 브라우저 윈도우의 메뉴를 설정할 -수 있습니다. - -## 메뉴 아이템 위치 - -`Menu.buildFromTemplate`로 메뉴를 만들 때 `position`과 `id`를 사용해서 아이템의 -위치를 지정할 수 있습니다. - -`MenuItem`의 `position` 속성은 `[placement]=[id]`와 같은 형식을 가지며 -`placement`는 `before`, `after`, `endof` 속성 중 한가지를 사용할 수 있고 `id`는 -메뉴 아이템이 가지는 유일 ID 입니다: - -* `before` - 이 아이템을 지정한 id 이전의 위치에 삽입합니다. 만약 참조된 아이템이 - 없을 경우 메뉴의 맨 뒤에 삽입됩니다. -* `after` - 이 아이템을 지정한 id 다음의 위치에 삽입합니다. 만약 참조된 아이템이 - 없을 경우 메뉴의 맨 뒤에 삽입됩니다. -* `endof` - 이 아이템을 id의 논리 그룹에 맞춰서 각 그룹의 항목 뒤에 삽입합니다. - (그룹은 분리자 아이템에 의해 만들어집니다) 만약 참조된 아이템의 분리자 그룹이 - 존재하지 않을 경우 지정된 id로 새로운 분리자 그룹을 만든 후 해당 그룹의 뒤에 - 삽입됩니다. - -위치를 지정한 아이템의 뒤에 위치가 지정되지 않은 아이템이 있을 경우 각 아이템의 위치가 -지정되기 전까지 모든 아이템이 위치가 지정된 아이템의 뒤에 삽입됩니다. 따라서 위치를 -이동하고 싶은 특정 그룹의 아이템들이 있을 경우 해당 그룹의 맨 첫번째 메뉴 아이템의 -위치만을 지정하면 됩니다. - -### 예시 - -메뉴 템플릿: - -```javascript -[ - {label: '4', id: '4'}, - {label: '5', id: '5'}, - {label: '1', id: '1', position: 'before=4'}, - {label: '2', id: '2'}, - {label: '3', id: '3'} -] -``` - -메뉴: - -``` -- 1 -- 2 -- 3 -- 4 -- 5 -``` - -메뉴 템플릿: - -```javascript -[ - {label: 'a', position: 'endof=letters'}, - {label: '1', position: 'endof=numbers'}, - {label: 'b', position: 'endof=letters'}, - {label: '2', position: 'endof=numbers'}, - {label: 'c', position: 'endof=letters'}, - {label: '3', position: 'endof=numbers'} -] -``` - -메뉴: - -``` -- --- -- a -- b -- c -- --- -- 1 -- 2 -- 3 -``` - -[AboutInformationPropertyListFiles]: https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html -[setMenu]: ./browser-window.md#winsetmenumenu-linux-windows diff --git a/docs-translations/ko-KR/api/native-image.md b/docs-translations/ko-KR/api/native-image.md deleted file mode 100644 index da8bd1fdb8cc..000000000000 --- a/docs-translations/ko-KR/api/native-image.md +++ /dev/null @@ -1,242 +0,0 @@ -# nativeImage - -> PNG 또는 JPG 파일을 사용하여 트레이, 독, 애플리케이션 아이콘을 생성합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process), [렌더러](../tutorial/quick-start.md#renderer-process) - -Electron은 파일 경로 또는 `NativeImage` 인스턴스를 통해 이미지를 사용할 수 있는 API를 -가지고 있습니다. `null`을 전달할 경우 빈 이미지가 생성됩니다. - -예를 들어 트레이 메뉴를 만들거나 윈도우의 아이콘을 설정할 때 다음과 같이 파일 경로를 -전달하여 이미지를 사용할 수 있습니다: - -```javascript -const appIcon = new Tray('/Users/somebody/images/icon.png') -let win = new BrowserWindow({icon: '/Users/somebody/images/window.png'}) -``` - -이 예시는 클립보드로부터 가져온 `nativeImage`로 트레이 메뉴를 생성합니다: - -```javascript -const image = clipboard.readImage() -const appIcon = new Tray(image) -``` - -## 지원하는 포맷 - -현재 `PNG` 와 `JPEG` 이미지 포맷을 지원하고 있습니다. -손실 없는 이미지 압축과 투명도 지원을 위해 `PNG` 사용을 권장합니다. - -Windows에서는 파일 경로로부터 `ICO` 포맷도 사용할 수 있으며, 가장 좋은 시각적 효과를 -얻기 위해 최소한 다음 사이즈를 포함하는 것을 권장합니다: - -* 작은 아이콘 - * 16x16 (100% DPI 스케일) - * 20x20 (125% DPI 스케일) - * 24x24 (150% DPI 스케일) - * 32x32 (200% DPI 스케일) -* 큰 아이콘 - * 32x32 (100% DPI 스케일) - * 40x40 (125% DPI 스케일) - * 48x48 (150% DPI 스케일) - * 64x64 (200% DPI 스케일) -* 256x256 - -[이 글][icons]의 *Size requirements* 섹션을 확인하세요. - -[icons]:https://msdn.microsoft.com/en-us/library/windows/desktop/dn742485(v=vs.85).aspx - -## 고해상도 이미지 - -플랫폼이 Apple Retina 디스플레이와 같이 high-DPI를 지원하는 경우 `@2x`와 같이 -이미지의 파일명 뒤에 접미사를 추가하는 것으로 고해상도 이미지를 지정할 수 있습니다. - -예를 들어 `icon.png` 라는 기본 해상도의 이미지를 기준으로 크기를 두 배로 늘린 이미지를 -`icon@2x.png` 처럼 지정하면 고해상도 이미지로 처리됩니다. - -서로 다른 해상도(DPI)의 이미지를 같이 지원하고 싶다면 다중 해상도의 이미지를 접미사를 -붙여 한 폴더에 같이 넣으면 됩니다. 이 이미지를 사용(로드)할 땐 따로 접미사를 붙이지 -않습니다: - -```text -images/ -├── icon.png -├── icon@2x.png -└── icon@3x.png -``` - - -```javascript -let appIcon = new Tray('/Users/somebody/images/icon.png') -``` - -지원하는 DPI 접미사는 다음과 같습니다: - -* `@1x` -* `@1.25x` -* `@1.33x` -* `@1.4x` -* `@1.5x` -* `@1.8x` -* `@2x` -* `@2.5x` -* `@3x` -* `@4x` -* `@5x` - -## 템플릿 이미지 - -템플릿 이미지는 검은색과 명확한 색상(알파 채널)으로 이루어져 있습니다. 템플릿 이미지는 -단독 이미지로 사용되지 않고 다른 콘텐츠와 혼합되어 최종 외관 만드는데 사용됩니다. - -가장 일반적으로 템플릿 이미지는 밝고 어두운 테마 색상으로 변경할 수 있는 메뉴 바 아이콘 -등에 사용되고 있습니다. - -**참고:** 템플릿 이미지는 macOS 운영체제만 지원합니다. - -템플릿 이미지를 지정하려면 다음 예시와 같이 파일명에 `Template` 문자열을 추가해야 -합니다: - -* `xxxTemplate.png` -* `xxxTemplate@2x.png` - -## Methods - -`nativeImage` 모듈은 다음과 같은 메서드를 가지고 있으며, 모든 메서드는 -`NativeImage` 클래스의 인스턴스를 반환합니다. - -### `nativeImage.createEmpty()` - -Returns `NativeImage` - -빈 `NativeImage` 인스턴스를 만듭니다. - -### `nativeImage.createFromPath(path)` - -* `path` String - -Returns `NativeImage` - -`path`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다. -`path` 가 존재하지 않거나, 읽을 수 없거나, 유효한 이미지가 아니면 빈 이미지를 -반환합니다. - -```javascript -const nativeImage = require('electron').nativeImage -let image = nativeImage.createFromPath('/Users/somebody/images/icon.png') -``` - -### `nativeImage.createFromBuffer(buffer[, scaleFactor])` - -* `buffer` [Buffer][buffer] -* `scaleFactor` Double (optional) - -Returns `NativeImage` - -`buffer`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다. -`scaleFactor`의 기본값은 1.0 입니다. - -### `nativeImage.createFromDataURL(dataURL)` - -* `dataURL` String - -`dataURL`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다. - -## Class: NativeImage - -> 네이티브로 랩핑된 트레이, dock, 애플리케이션 아이콘을 위한 이미지입니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process), [렌더러](../tutorial/quick-start.md#renderer-process) - -### Instance Methods - -`NativeImage` 클래스 인스턴스 객체에서 사용할 수 있는 메서드입니다. - -#### `image.toPNG()` - -Return `Buffer` - `PNG` 로 인코딩된 데이터가 있는 [Buffer][buffer]. - -#### `image.toJPEG(quality)` - -* `quality` Integer (**required**) 0 - 100 사이의 값 - -Return `Buffer` - `JPEG` 로 인코딩된 데이터가 있는 [Buffer][buffer]. - -##### `image.toBitmap()` - -Return `Buffer` - 이미지의 raw 비트맵 픽셀 데이터가 있는 [Buffer][buffer]의 -복사본. - -#### `image.toDataURL()` - -Returns `String` - 이미지의 data URL. - -#### `image.getBitmap()` - -Returns `Buffer` - 이미지의 raw 비트맵 픽셀 데이터가 있는 [Buffer][buffer]. - -`getBitmap()`과 `toBitmap()`의 차이는 `getBitmap()`은 비트맵 데이터를 복사하지 -않습니다. 그래서 버퍼를 현재 이벤트 루프 틱에 바로 반환해야 할 경우 유용하게 -사용할 수 있습니다. 그렇지 않은 경우 데이터가 변경되거나 소멸될 수 있습니다. - -#### `image.getNativeHandle()` _macOS_ - -Returns `Buffer` - 이미지의 네이티브 핸들의 C 포인터를 담은 [Buffer][buffer]. -macOS에선, `NSImage` 인스턴스의 포인터가 반환됩니다. - -참고로 반환된 포인터는 복사본이 아닌 네이티브 이미지의 밑에 있는 약한 포인터이며, -따라서 반드시 관련된 `nativeImage` 인스턴스가 확실하게 유지되고 있는지를 인지해야 -합니다. - -#### `image.isEmpty()` - -Returns `Boolean` - 이미지가 비었는지 여부. - -#### `image.getSize()` - -Returns `Object`: - -* `width` Integer -* `height` Integer - -#### `image.setTemplateImage(option)` - -* `option` Boolean - -해당 이미지를 템플릿 이미지로 설정합니다. - -#### `image.isTemplateImage()` - -Returns `Boolean` - 이미지가 템플릿 이미지인지 여부. - -#### `image.crop(rect)` - -* `rect` Object - 잘라내기 위한 이미지 영역 - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer - -Returns `NativeImage` - 잘라낸 이미지. - -#### `image.resize(options)` - -* `options` Object - * `width` Integer (optional) - * `height` Integer (optional) - * `quality` String (optional) - 크기 변경된 이미지의 원하는 품질. - 가능한 값은 `good`, `better`, `best` 이며, 기본값은 `best` 입니다. - 이 값은 원하는 품질/속도 균형을 표현합니다. 이것은 기본이되는 플랫폼의 성능 - (CPU, GPU) 에 의존하는 알고리즘에 특정 방법으로 변환됩니다. 주어진 - 플랫폼에서 세가지 방법이 모두 같은 알고리즘에 매핑될 수 있습니다. - -Returns `NativeImage` - 크기 변경된 이미지. - -`height` 또는 `width` 하나만 명시한다면 크기가 변경된 이미지에서도 종횡비가 -유지될 것 입니다. - -#### `image.getAspectRatio()` - -Returns `Float` - 이미지의 종횡비. - -[buffer]: https://nodejs.org/api/buffer.html#buffer_class_buffer diff --git a/docs-translations/ko-KR/api/net.md b/docs-translations/ko-KR/api/net.md deleted file mode 100644 index ac6b01e6f613..000000000000 --- a/docs-translations/ko-KR/api/net.md +++ /dev/null @@ -1,322 +0,0 @@ -# net - -> Chromium 의 네이티브 네트워크 라이브러리를 사용한 HTTP/HTTPS 요청 실행. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`net` 모듈은 HTTP(S) 요청을 실행하기 위한 클라이언트 측 API 입니다. 이것은 -Node.js 의 [HTTP](https://nodejs.org/api/http.html) 와 -[HTTPS](https://nodejs.org/api/https.html) 모듈과 유사합니다. 하지만 Node.js -구현 대신 Chromium 의 네이티브 네트워크 라이브러리를 사용하는 것은, 웹 프록시에 -대한 더 나은 지원을 제공합니다. - -다음은 왜 네이티브 Node.js 모듈대신 `net` 모듈 사용을 고려해야하는지에 대한 -대략적인 이유입니다: - -* WPAD 프로토콜과 프록시 PAC 환경설정 파일 지원을 통한 시스템 프록시 구성 자동 - 관리. -* HTTPS 요청의 자동 터널링. -* 기본, digest, NTLM, Kerberos, 협상 인증 스킴을 사용한 프록시 인증 지원. -* 트래픽 모니터링 프록시 지원: 접근 제어와 모니터링에 사용되는 Fiddler 같은 - 프록시. - -`net` 모듈 API 는 Node.js API 와 최대한 가까워 보이도록 설계되었습니다. 클래스, -메소드, 속성, 이벤트를 포함하는 API 컴포넌트는 일반적으로 Node.js 에서 사용되는 -것과 유사합니다. - -예를 들면, 다음 예제는 `net` API 가 사용될 수 있는 방법을 빠르게 보여줍니다: - -```javascript -const {app} = require('electron') -app.on('ready', () => { - const {net} = require('electron') - const request = net.request('https://github.com') - request.on('response', (response) => { - console.log(`STATUS: ${response.statusCode}`) - console.log(`HEADERS: ${JSON.stringify(response.headers)}`) - response.on('data', (chunk) => { - console.log(`BODY: ${chunk}`) - }) - response.on('end', () => { - console.log('No more data in response.') - }) - }) - request.end() -}) -``` - -그런데, 일반적으로 Node.js 의 [HTTP](https://nodejs.org/api/http.html)/ -[HTTPS](https://nodejs.org/api/https.html) 모듈을 사용하는 방법과 거의 -동일합니다. - -`net` API 는 애플리케이션이 `ready` 이벤트를 발생한 이후부터 사용할 수 있습니다. -`ready` 이벤트 전에 모듈을 사용하려고 하면 오류가 발생할 것 입니다. - -## Methods - -`net` 모듈은 다음의 메소드를 가지고 있습니다: - -### `net.request(options)` - -* `options` (Object | String) - `ClientRequest` 생성자 옵션. - -Returns `ClientRequest` - -주어진 `options` 을 사용해 `ClientRequest` 인스턴스를 생성합니다. -`ClientRequest` 생성자에 직접 전달됩니다. `net.request` 메소드는 `options` -객체의 명시된 프로토콜 스킴에 따라 보안 및 비보안 HTTP 요청을 실행하는데 -사용됩니다. - -## Class: ClientRequest - -> HTTP/HTTPS 요청을 합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`ClientRequest` 는 -[Writable Stream](https://nodejs.org/api/stream.html#stream_writable_streams) -인터페이스를 구현하였고 따라서 -[EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) -입니다. - -### `new ClientRequest(options)` - -* `options` (Object | String) - `options` 이 문자열이면, 요청 URL 로 해석됩니다. - 객체라면, 다음 속성을 통해 HTTP 요청을 완전히 명시한 것으로 예상됩니다: - * `method` String (optional) - TheHTTP 요청 방법. 기본값은 GET 방법입니다. - * `url` String (optional) - 요청 URL. HTTP 또는 HTTPS 로 지정된 프로토콜 - 스킴과 함께 절대적인 형식으로 제공되어야 합니다. - * `session` Object (optional) - 요청과 연관된 [`Session`](session.md)인스턴스. - * `partition` String (optional) - 요청과 연관된 [`partition`](session.md) 의 - 이름. 기본값은 빈 문자열입니다. `session` 옵션은 `partition` 에 우선합니다. - 그러므로 `session` 이 명시적으로 지정된 경우, `partition` 은 무시됩니다. - * `protocol` String (optional) - 'scheme:' 형식의 프로토콜 스킴. 현재 지원되는 - 값은 'http:' 또는 'https:' 입니다. 기본값은 'http:' 입니다. - * `host` String (optional) - 호스트명과 포트번호의 연결로 제공되는 서버 호스트 - '호스트명:포트' - * `hostname` String (optional) - 서버 호스트명. - * `port` Integer (optional) - 서버의 리스닝 포트 번호. - * `path` String (optional) - 요청 URL 의 경로 부분. - -`protocol`, `host`, `hostname`, `port`, `path` 같은 `options` 속성은 -[URL](https://nodejs.org/api/url.html) 모듈에 설명 된대로 Node.js 모델을 엄격히 -따릅니다. - -예를 들어, 다음과 같이 'github.com' 에 대한 같은 요청을 만들 수 있습니다: - -```javascript -const request = net.request({ - method: 'GET', - protocol: 'https:', - hostname: 'github.com', - port: 443, - path: '/' -}) -``` - -### Instance Events - -#### Event: 'response' - -Returns: - -* `response` IncomingMessage - HTTP 응답 메시지를 나타내는 객체. - -#### Event: 'login' - -Returns: - -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - -인증 프록시가 사용자 자격 증명을 요구하는 경우 발생됩니다. - -`callback` 함수는 사용자 자격 증명으로 다시 호출될 것으로 예상됩니다: - -* `username` String -* `password` String - -```javascript -request.on('login', (authInfo, callback) => { - callback('username', 'password') -}) -``` - -빈 자격증명을 제공하면 요청이 취소되고 응답 객체에서 인증 오류가 보고될 것 -입니다: - -```javascript -request.on('response', (response) => { - console.log(`STATUS: ${response.statusCode}`) - response.on('error', (error) => { - console.log(`ERROR: ${JSON.stringify(error)}`) - }) -}) -request.on('login', (authInfo, callback) => { - callback() -}) -``` - -#### Event: 'finish' - -`request` 객체에 `request` 데이터의 마지막 덩어리가 기록된 후 발생됩니다. - -#### Event: 'abort' - -`request` 가 취소된 경우 발생됩니다. `request` 가 이미 닫힌 경우 `abort` -이벤트는 발생되지 않습니다. - -#### Event: 'error' - -Returns: - -* `error` Error - 실패에 대한 몇가지 정보를 제공하는 오류 객체입니다. - -`net` 모듈이 네트워크 요청 실행을 실패한 경우 발생됩니다. 일반적으로 `request` -객체가 `error` 이벤트를 발생할 때, `close` 이벤트가 연속적으로 발생하고 응답 -객체는 제공되지 않습니다. - -#### Event: 'close' - -HTTP 요청-응답 처리의 마지막 이벤트로써 발생됩니다. `close` 이벤트는 `request` -또는 `reponse` 객체에서 더이상 이벤트가 발생되지 않을 것임을 나타냅니다. - -### Instance Properties - -#### `request.chunkedEncoding` - -HTTP 덩어리 전송 인코딩을 사용할지 여부를 명시하는 불 값입니다. 기본값은 `false` -입니다. 속성은 읽고 쓸 수 있습니다. 그러나 HTTP 헤더가 아직 네트워크 선에 -쓰여지지 않은 첫 쓰기 작업 전에만 쓸 수 있습니다. 첫 쓰기 이후에 -`chunkedEncoding` 을 쓰려고 하면 오류가 발생합니다. - -Electron 프로세스 메모리에서 내부적으로 버퍼링하는 대신 작은 덩어리로 데이터로써 -큰 요청 본문을 전송하려면 덩어리 인코딩을 사용하는 것이 좋습니다. - -### Instance Methods - -#### `request.setHeader(name, value)` - -* `name` String - 추가 HTTP 헤더 이름. -* `value` String - 추가 HTTP 헤더 값. - -추가 HTTP 헤더를 추가합니다. 헤더 이름은 소문자화 되지 않고 실행됩니다. 첫 쓰기 -전까지만 호출할 수 있습니다. 첫 쓰기 후 이 메소드를 호출하면 오류가 발생합니다. - -#### `request.getHeader(name)` - -* `name` String - 추가 헤더 이름을 명시합니다. - -Returns String - 이전에 설정된 추가 헤더 이름에 대한 값. - -#### `request.removeHeader(name)` - -* `name` String - 추가 헤더 이름을 명시합니다. - -이전에 설정된 추가 헤더 이름을 삭제합니다. 이 메소드는 첫 쓰기 전까지만 호출할 -수 있습니다. 첫 쓰기 후 호출하면 오류가 발생합니다. - -#### `request.write(chunk[, encoding][, callback])` - -* `chunk` (String | Buffer) - 요청 본문 데이터의 덩어리. 문자열이라면, 지정된 - 인코딩을 사용한 버퍼로 변환됩니다. -* `encoding` String (optional) - 버퍼 객체로 문자열을 변환하는데 사용됩니다. - 기본값은 'utf-8' 입니다. -* `callback` Function (optional) - 쓰기 작업이 끝난 이후 호출됩니다. - -`callback` 은 근본적으로 Node.js API 와의 유사성을 유지하는 목적으로 도입된 더미 -함수입니다. 그것은 `chunk` 내용이 Chromium 네트워크 계층에 전달 된 후 다음 -틱에서 비동기적으로 호출됩니다. Node.js 구현과 달리, `callback` 호출 이전에 -`chunk` 내용이 네트워크 선에 내보내진 것을 보장하지 않습니다. - -요청 본문에 데이터의 덩어리를 추가합니다. 첫 쓰기 작업은 네트워크 선에 요청 -헤더를 쓸 것 입니다. 첫 쓰기 작업 이후, 사용자 정의 헤더 추가 또는 삭제는 -허용되지 않습니다. - -#### `request.end([chunk][, encoding][, callback])` - -* `chunk` (String | Buffer) (optional) -* `encoding` String (optional) -* `callback` Function (optional) - -요청 데이터의 마지막 덩어리를 보냅니다. 이후 쓰기 또는 종료 명령은 허용되지 -않습니다. `finish` 이벤트는 `end` 명령 이후에 발생합니다. - -#### `request.abort()` - -현재 진행중인 HTTP 처리를 취소합니다. 요청이 이미 `close` 이벤트를 발생했다면, -취소 명령은 적용되지 않습니다. 그렇지 않으면 진행중인 이벤트는 `abort` 와 -`close` 이벤트를 발생시킵니다. 또한, 현재 진행중인 응답 객체가 있다면, `aborted` -이벤트를 발생할 것 입니다. - -## Class: IncomingMessage - -> HTTP/HTTPS 요청에 대한 응답을 처리합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`IncomingMessage` 는 -[Readable Stream](https://nodejs.org/api/stream.html#stream_readable_streams) -인터페이스를 구현하였고 따라서 -[EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) -입니다. - -### Instance Events - -#### Event: 'data' - -Returns: - -* `chunk` Buffer - 응답 본문 데이터의 덩어리. - -`data` 이벤트는 응용 코드에 응답 데이터를 전송하는 통상적인 방법입니다. - -#### Event: 'end' - -응답 본문이 종료되었음을 나타냅니다. - -#### Event: 'aborted' - -요청이 계속 진행중인 HTTP 처리 도중 취소되었을 때 발생합니다. - -#### Event: 'error' - -Returns: - -`error` Error - 일반적으로 실패 원인을 식별하는 오류 문자열을 가지고 있습니다. - -스트리밍 응답 데이터 이벤트를 처리하는 동안 오류가 발생했을 때 발생됩니다. -예를 들어, 응답이 여전히 스트리밍되는 동안 서버가 닫히는 경우, 응답 객체에서 -`error` 이벤트가 발생할 것이며 그 후에 요청 객체에서 `close` 이벤트가 발생할 것 -입니다. - -### Instance Properties - -`IncomingMessage` 인스턴스는 다음의 읽을 수 있는 속성을 가지고 있습니다: - -#### `response.statusCode` - -HTTP 응답 상태 코드를 나타내는 정수. - -#### `response.statusMessage` - -HTTP 상태 메시지를 나타내는 문자열. - -#### `response.headers` - -응답 HTTP 헤더를 나타내는 객체. `headers` 객체는 다음 형식입니다: - -* 모든 헤더 이름은 소문자입니다. -* 각 헤더 이름은 헤더 객체에 배열-값 속성을 생성합니다. -* 각 헤더 값은 헤더 이름과 연관된 배열에 푸시됩니다. - -#### `response.httpVersion` - -HTTP 프로토콜 버전 번호를 나타내는 문자열. 일반적으로 '1.0' 또는 '1.1' 입니다. -또한 `httpVersionMajor` 와 `httpVersionMinor` 는 각각 HTTP 메이저와 마이너 버전 -번호를 반환하는 두개의 정수값 형태로 읽을 수 있는 속성입니다. diff --git a/docs-translations/ko-KR/api/power-monitor.md b/docs-translations/ko-KR/api/power-monitor.md deleted file mode 100644 index 769e9ca84569..000000000000 --- a/docs-translations/ko-KR/api/power-monitor.md +++ /dev/null @@ -1,41 +0,0 @@ -# powerMonitor - -> 파워의 상태 변경을 모니터링합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -이 모듈은 메인 프로세스에서만 사용할 수 있습니다. `app` 모듈의 `ready` 이벤트가 -발생한 이후에만 사용할 수 없습니다. - -예시: - -```javascript -const electron = require('electron') -const {app} = electron - -app.on('ready', () => { - electron.powerMonitor.on('suspend', () => { - console.log('절전모드로 진입합니다!') - }) -}) -``` - -## Events - -`powerMonitor` 모듈은 다음과 같은 이벤트를 가지고 있습니다: - -## Event: `suspend` - -시스템이 절전모드로 진입할 때 발생하는 이벤트입니다. - -## Event: `resume` - -시스템의 절전모드가 해제될 때 발생하는 이벤트입니다. - -## Event: `on-ac` _Windows_ - -시스템이 AC 어뎁터 충전기를 사용하기 시작할 때 발생하는 이벤트입니다. - -## Event: `on-battery` _Windows_ - -시스템이 배터리를 사용하기 시작할 때 발생하는 이벤트입니다. diff --git a/docs-translations/ko-KR/api/power-save-blocker.md b/docs-translations/ko-KR/api/power-save-blocker.md deleted file mode 100644 index 099fbb873a2c..000000000000 --- a/docs-translations/ko-KR/api/power-save-blocker.md +++ /dev/null @@ -1,57 +0,0 @@ -# powerSaveBlocker - -> 시스템이 저전력 (슬립) 모드로 진입하는 것을 막습니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -예시: - -```javascript -const {powerSaveBlocker} = require('electron') - -const id = powerSaveBlocker.start('prevent-display-sleep') -console.log(powerSaveBlocker.isStarted(id)) - -powerSaveBlocker.stop(id) -``` - -## Methods - -`powerSaveBlocker` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `powerSaveBlocker.start(type)` - -* `type` String - Power save blocker 종류 - * `prevent-app-suspension` - 저전력 모드 등으로 인한 애플리케이션 작동 중단을 - 방지합니다. 시스템을 항시 활성화 상태로 만듭니다. 하지만 화면은 자동으로 꺼질 - 수 있습니다. 사용 예시: 파일 다운로드, 음악 재생 등. - * `prevent-display-sleep` - 슬립 모드 등으로 인한 애플리케이션의 작동 중단을 - 방지합니다. 시스템을 항시 활성화 상태로 만들고 슬립 모드(화면 꺼짐)를 - 방지합니다. 사용 예시: 비디오 재생 등. - -시스템이 저전력 모드(슬립)로 진입하는 것을 막기 시작합니다. 정수로 된 식별 ID를 -반환합니다. - -**참고:** `prevent-display-sleep` 모드는 `prevent-app-suspension` 보다 우선 -순위가 높습니다. 두 모드 중 가장 높은 우선 순위의 모드만 작동합니다. 다시 말해 -`prevent-display-sleep` 모드는 언제나 `prevent-app-suspension` 모드의 효과를 -덮어씌웁니다. - -예를 들어 A-요청이 `prevent-app-suspension` 모드를 사용하고 B-요청이 -`prevent-display-sleep`를 사용하는 API 호출이 있었다 하면 `prevent-display-sleep` -모드를 사용하는 B의 작동이 중단(stop)되기 전까지 작동하다 B가 중단되면 -`prevent-app-suspension` 모드를 사용하는 A가 작동하기 시작합니다. - -### `powerSaveBlocker.stop(id)` - -* `id` Integer - `powerSaveBlocker.start`로부터 반환되는 power save blocker 식별 -ID. - -설정한 power save blocker를 중지합니다. - -### `powerSaveBlocker.isStarted(id)` - -* `id` Integer - `powerSaveBlocker.start`로부터 반환되는 power save blocker 식별 -ID. - -Returns `Boolean` - 지정한 id의 `powerSaveBlocker`가 실행 중인지 여부. diff --git a/docs-translations/ko-KR/api/process.md b/docs-translations/ko-KR/api/process.md deleted file mode 100644 index c9916788b907..000000000000 --- a/docs-translations/ko-KR/api/process.md +++ /dev/null @@ -1,113 +0,0 @@ -# process - -> process 객체에 대한 확장 기능. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`process` 객체는 Electron에서 약간 추가적인 기능이 있으며 API는 다음과 같습니다: - -## Events - -### Event: 'loaded' - -Electron 내부 초기화 스크립트의 로드가 완료되고, 웹 페이지나 메인 스크립트를 로드하기 -시작할 때 발생하는 이벤트입니다. - -이 이벤트는 preload 스크립트를 통해 node 통합이 꺼져있는 전역 스코프에 node의 전역 -심볼들을 다시 추가할 때 사용할 수 있습니다: - -```javascript -// preload.js -const _setImmediate = setImmediate -const _clearImmediate = clearImmediate -process.once('loaded', () => { - global.setImmediate = _setImmediate - global.clearImmediate = _clearImmediate -}) -``` - -## Properties - -### `process.noAsar` - -이 속성을 `true`로 지정하면 Node 빌트인 모듈의 `asar` 아카이브 지원을 비활성화 시킬 -수 있습니다. - -### `process.type` - -현재 프로세스의 종류입니다. `"browser"` (메인 프로세스) 또는 `"renderer"`가 될 수 -있습니다. - -### `process.versions.electron` - -Electron의 버전 문자열입니다. - -### `process.versions.chrome` - -Chrome의 버전 문자열입니다. - -### `process.resourcesPath` - -리소스 디렉토리의 경로입니다. - -### `process.mas` - -Mac App Store 빌드에선 이 속성이 `true`가 됩니다. 다른 빌드에선 `undefined`가 됩니다. - -### `process.windowsStore` - -애플리케이션이 Windows Store 앱 (appx) 형태로 작동하고 있을 경우 이 속성이 `true`가 -됩니다. 그렇지 않은 경우 `undefined`가 됩니다. - -### `process.defaultApp` - -애플리케이션이 기본 어플리케이션 형식으로 전달되는 인수와 함께 실행됐을 때, 메인 -프로세스에서 이 속성이 `true`가 되며 다른 경우엔 `undefined`가 됩니다. - -## Methods - -`process` 객체는 다음과 같은 메서드를 가지고 있습니다: - -### `process.crash()` - -현재 프로세스의 메인 스레드에 크래시를 일으킵니다. - -### `process.hang()` - -현재 프로세스의 메인 스레드를 중단시킵니다. - -### `process.setFdLimit(maxDescriptors)` _macOS_ _Linux_ - -* `maxDescriptors` Integer - -현재 프로세스 파일 디스크립터의 제한 값을 소프트 제한 `maxDescriptors`의 값이나 OS -하드 제한 중 낮은 값으로 설정합니다. - -### `process.getProcessMemoryInfo()` - -Returns `Object`: - -* `workingSetSize` Integer - 현재 실제 물리적 RAM에 예약된 메모리의 양. -* `peakWorkingSetSize` Integer - 물리적 RAM에 예약된 메모리의 최대 사용량. -* `privateBytes` Integer - 다른 프로세스에 공유되지 않은 JS 힙 또는 HTML 콘텐츠와 - 같은 메모리의 양. -* `sharedBytes` Integer - 다른 프로세스와 공유된, 일반적으로 Electron 코드 자체에서 - 사용하는 메모리의 양. - -현재 프로세스의 메모리 사용량에 대한 정보를 객체 형태로 반환합니다. 참고로 모든 사용량은 -킬로바이트로 표기됩니다. - -### `process.getSystemMemoryInfo()` - -Returns `Object`: - -* `total` Integer - 시스템에서 사용할 수 있는 킬로바이트 단위의 전체 물리적 메모리의 - 양. -* `free` Integer - 애플리케이션이나 디스크 캐시로 사용되지 않은 메모리의 양. -* `swapTotal` Integer - 시스템에서 사용할 수 있는 킬로바이트 단위의 스왑 메모리 - 전체 양. _Windows_ _Linux_ -* `swapFree` Integer - 시스템에서 사용할 수 있는 킬로 바이트 단위의 사용되지 않은 - 스왑 메모리의 양. _Windows_ _Linux_ - -전체 시스템의 메모리 사용량에 대한 정보를 객체 형태로 반환합니다. 참고로 모든 사용량은 -킬로바이트로 표기됩니다. diff --git a/docs-translations/ko-KR/api/protocol.md b/docs-translations/ko-KR/api/protocol.md deleted file mode 100644 index 8712f279e56f..000000000000 --- a/docs-translations/ko-KR/api/protocol.md +++ /dev/null @@ -1,288 +0,0 @@ -# protocol - -> 커스텀 프로토콜을 등록하거나 이미 존재하는 프로토콜의 요청의 동작을 변경합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -다음 예시는 `file://` 프로토콜과 비슷한 일을 하는 커스텀 프로토콜을 설정합니다: - -```javascript -const {app, protocol} = require('electron') -const path = require('path') - -app.on('ready', () => { - protocol.registerFileProtocol('atom', (request, callback) => { - const url = request.url.substr(7) - callback({path: path.normalize(`${__dirname}/${url}`)}) - }, function (error) { - if (error) console.error('프로토콜 등록 실패') - }) -}) -``` - -**참고:** 모든 메서드는 따로 표기하지 않는 한 `app` 모듈의 `ready` 이벤트가 발생한 -이후에만 사용할 수 있습니다. - -## Methods - -`protocol` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `protocol.registerStandardSchemes(schemes)` - -* `schemes` String[] - 표준 스킴으로 등록할 커스텀 스킴 리스트 - -표준 스킴의 형식은 RFC 3986 [일반 URI 문법](https://tools.ietf.org/html/rfc3986#section-3) -표준을 따릅니다. 예를 들어 `http`와 `https` 같은 표준 스킴과 `file`과 같은 표준이 -아닌 스킴이 있습니다. - -표준 스킴으로 등록하면, 상대, 절대 경로의 리소스를 올바르게 취할 수 있습니다. 다른 -경우엔 스킴이 상대 경로 URL에 대한 분석 기능이 제외된 `file` 프로토콜과 같이 -작동합니다. - -예를 들어 다음과 같은 페이지에서 표준 스킴 등록 절차 없이 커스텀 프로토콜을 사용하여 -이미지를 로드하려 했을 때, 표준 스킴으로 등록되지 않은 상대 경로 URL을 인식하지 못하고 -로드에 실패하게 됩니다: - -```html - - - -``` - -표준 스킴으로 등록하는 것은 [파일 시스템 API][file-system-api]를 통해 파일에 접근하는 -것을 허용할 것입니다. 그렇지 않은 경우 렌더러는 해당 스킴에 대해 보안 에러를 발생 할 -것입니다. - -표준 스킴에는 기본적으로 저장 API (localStorage, sessionStorage, webSQL, -indexedDB, cookies) 가 비활성화 되어있습니다. 일반적으로 `http` 프로토콜을 -대체하는 커스텀 프로토콜을 등록하고 싶다면, 표준 스킴으로 등록해야 합니다: - -```javascript -const {app, protocol} = require('electron') - -protocol.registerStandardSchemes(['atom']) -app.on('ready', () => { - protocol.registerHttpProtocol('atom', '...') -}) -``` - -**참고:** 이 메서드는 `app` 모듈의 `ready` 이벤트가 발생하기 이전에만 사용할 수 -있습니다. - -### `protocol.registerServiceWorkerSchemes(schemes)` - -* `schemes` String[] - 서비스 워커를 제어하기 위해 등록될 커스텀 스킴. - -### `protocol.registerFileProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `filePath` String (optional) -* `completion` Function (optional) - * `error` Error - -`scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다. `handler`는 `scheme`와 함께 -`request`가 생성될 때 `handler(request, callback)` 형식으로 호출됩니다. -`completion` 콜백은 `scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로 -호출되고, 등록에 실패했을 땐 `completion(error)` 형식으로 에러 내용을 담아 호출됩니다. - -`request`를 처리할 때 반드시 파일 경로 또는 `path` 속성을 포함하는 객체를 인수에 -포함하여 `callback`을 호출해야 합니다. 예: `callback(filePath)` 또는 -`callback({path: filePath})`. - -만약 `callback`이 아무 인수도 없이 호출되거나 숫자나 `error` 프로퍼티를 가진 객체가 -인수로 전달될 경우 `request`는 지정한 `error` 코드(숫자)를 출력합니다. 사용할 수 있는 -에러 코드는 [네트워크 에러 목록][net-error]에서 확인할 수 있습니다. - -기본적으로 `scheme`은 `http:`와 같이 처리됩니다. `file:`과 같이 "일반적인 URI 문법" -과는 다르게 인식되는 프로토콜은 `protocol.registerStandardSchemes`을 사용하여 표준 -스킴으로 처리되도록 할 수 있습니다. - -### `protocol.registerBufferProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `buffer` Buffer (optional) -* `completion` Function (optional) - * `error` Error - -`Buffer`를 응답으로 전송하는 `scheme`의 프로토콜을 등록합니다. - -사용법은 `callback`이 반드시 `Buffer` 객체 또는 `data`, `mimeType`, `charset` -속성을 포함하는 객체와 함께 호출되어야 한다는 점을 제외하면 `registerFileProtocol`과 -사용법이 같습니다. - -예시: - -```javascript -const {protocol} = require('electron') - -protocol.registerBufferProtocol('atom', (request, callback) => { - callback({mimeType: 'text/html', data: Buffer.from('
Response
')}) -}, (error) => { - if (error) console.error('Failed to register protocol') -}) -``` - -### `protocol.registerStringProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `buffer` Buffer (optional) -* `completion` Function (optional) - * `error` Error - -`String`을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다. - -사용법은 `callback`이 반드시 `String` 또는 `data`, `mimeType`, `charset` 속성을 -포함하는 객체와 함께 호출되어야 한다는 점을 제외하면 `registerFileProtocol`과 -사용법이 같습니다. - -### `protocol.registerHttpProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `redirectRequest` Object - * `url` String - * `method` String - * `session` Object (optional) - * `uploadData` Object (optional) - * `contentType` String - 콘텐츠의 MIME 타입. - * `data` String - 전송할 콘텐츠. -* `completion` Function (optional) - * `error` Error - -HTTP 요청을 응답으로 전송할 `scheme`의 프로토콜을 등록합니다. - -사용법은 `callback`이 반드시 `url`, `method`, `referrer`, `uploadData`와 -`session` 속성을 포함하는 `redirectRequest` 객체와 함께 호출되어야 한다는 점을 -제외하면 `registerFileProtocol`과 사용법이 같습니다. - -기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고 -싶으면 `session`을 `null`로 지정해야 합니다. - -POST 요청에는 반드시 `uploadData` 객체가 제공되어야 합니다. - -### `protocol.unregisterProtocol(scheme[, completion])` - -* `scheme` String -* `completion` Function (optional) - * `error` Error - -`scheme`의 커스텀 프로토콜 등록을 해제합니다. - -### `protocol.isProtocolHandled(scheme, callback)` - -* `scheme` String -* `callback` Function - * `error` Error - -`scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로 -결과(boolean)가 반환됩니다. - -### `protocol.interceptFileProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `filePath` String -* `completion` Function (optional) - * `error` Error - -`scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다. - -### `protocol.interceptStringProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `filePath` String -* `completion` Function (optional) - * `error` Error - -`scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다. - -### `protocol.interceptBufferProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `filePath` String -* `completion` Function (optional) - * `error` Error - -`scheme` 프로토콜을 가로채고 `handler`를 `Buffer` 전송에 대한 새로운 동작으로 -사용합니다. - -### `protocol.interceptHttpProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `redirectRequest` Object - * `url` String - * `method` String - * `session` Object (optional) - * `uploadData` Object (optional) - * `contentType` String - 콘텐츠의 MIME 타입. - * `data` String - 전송할 콘텐츠. -* `completion` Function (optional) - * `error` Error - -`scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로 -사용합니다. - -### `protocol.uninterceptProtocol(scheme[, completion])` - -* `scheme` String -* `completion` Function (optional) - * `error` Error - -가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다. - -[net-error]: https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h -[file-system-api]: https://developer.mozilla.org/en-US/docs/Web/API/LocalFileSystem diff --git a/docs-translations/ko-KR/api/remote.md b/docs-translations/ko-KR/api/remote.md deleted file mode 100644 index 92e1c74408fa..000000000000 --- a/docs-translations/ko-KR/api/remote.md +++ /dev/null @@ -1,169 +0,0 @@ -# remote - -> 메인 프로세스 모듈을 렌더러 프로세스에서 사용합니다. - -프로세스: [렌더러](../tutorial/quick-start.md#renderer-process) - -`remote` 모듈은 메인 프로세스와 렌더러 프로세스(웹 페이지) 사이의 inter-process -(IPC) 통신을 간단하게 추상화 한 모듈입니다. - -Electron의 메인 프로세스에선 GUI와 관련 있는(`dialog`, `menu`등) 모듈만 사용할 -수 있습니다. 렌더러 프로세스에서 이러한 모듈들을 사용하려면 `ipc` 모듈을 통해 -메인 프로세스와 inter-process 통신을 해야 합니다. 또한, `remote` 모듈을 사용하면 -inter-process 통신을 하지 않고도 간단한 API를 통해 직접 메인 프로세스의 모듈과 -메서드를 사용할 수 있습니다. 이 개념은 Java의 [RMI][rmi]와 비슷합니다. - -다음 예시는 렌더러 프로세스에서 브라우저 창을 만드는 예시입니다: - -```javascript -const {BrowserWindow} = require('electron').remote - -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('https://github.com') -``` - -**참고:** 반대로 메인 프로세스에서 렌더러 프로세스에 접근 하려면 -[webContents.executeJavascript](web-contents.md#contentsexecutejavascriptcode-usergesture-callback) -메서드를 사용하면 됩니다. - -## Remote 객체 - -`remote` 모듈로부터 반환된 각 객체(메서드 포함)는 메인 프로세스의 객체를 추상화 -한 객체입니다. (우리는 그것을 remote 객체 또는 remote 함수라고 부릅니다) Remote -모듈의 메서드를 호출하거나, 객체에 접근하거나, 생성자로 객체를 생성하는 등의 -작업은 실질적으로 동기형 inter-process 메시지를 보냅니다. - -위의 예시에서 사용한 두 `BrowserWindow`와 `win`은 remote 객체입니다. 그리고 -`new BrowserWindow`이 생성하는 `BrowserWindow` 객체는 렌더러 프로세스에서 -생성되지 않습니다. 대신에 이 `BrowserWindow` 객체는 메인 프로세스에서 생성되며 -렌더러 프로세스에 `win` 객체와 같이 이에 대응하는 remote 객체를 반환합니다. - -**참고:** remote 객체가 처음 참조될 때 표시되는 -[enumerable 속성][enumerable-properties]은 remote를 통해서만 접근할 수 있습니다. - -**참고:** 배열과 버퍼는 `remote` 모듈을 통해 접근할 때 IPC 를 통해 -복사됩니다. 렌더러 프로세스에서의 수정은 메인 프로세스의 것을 수정하지 않으며, -반대의 경우도 마찬가지 입니다. - -## Remote 객체의 생명 주기 - -Electron은 렌더러 프로세스의 remote 객체가 살아있는 한(다시 말해서 GC(garbage -collection)가 일어나지 않습니다) 대응하는 메인 프로세스의 객체는 릴리즈되지 -않습니다. Remote 객체가 GC 되려면 대응하는 메인 프로세스 내부 객체의 참조가 -해제되어야만 합니다. - -만약 remote 객체가 렌더러 프로세스에서 누수가 생겼다면 (예시: 맵에 저장하고 할당 -해제하지 않음) 대응하는 메인 프로세스의 객체도 누수가 생깁니다. 그래서 remote -객체를 사용할 땐 메모리 누수가 생기지 않도록 매우 주의해서 사용해야 합니다. - -참고로 문자열, 숫자와 같은 원시 값 타입은 복사에 의한 참조로 전달됩니다. - -## 메인 프로세스로 콜백 넘기기 - -메인 프로세스의 코드는 `remote` 모듈을 통해 렌더러 프로세스가 전달하는 콜백 -함수를 받을 수 있습니다. 하지만 이 작업은 반드시 주의를 기울여 사용해야 합니다. - -첫째, 데드락을 피하기 위해 메인 프로세스로 전달된 콜백들은 비동기로 호출됩니다. -이러한 이유로 메인 프로세스에 전달된 콜백의 반환 값을 내부 함수에서 언제나 -정상적으로 받을 것이라고 예측해선 안됩니다. - -예를 들어 메인 프로세스에서 `Array.map` 같은 메서드를 사용할 때 렌더러 -프로세스에서 전달된 함수를 사용해선 안됩니다: - -```javascript -// mapNumbers.js 메인 프로세스 -exports.withRendererCallback = (mapper) => { - return [1, 2, 3].map(mapper) -} - -exports.withLocalCallback = () => { - return [1, 2, 3].map(x => x + 1) -} -``` - -```javascript -// 렌더러 프로세스 -const mapNumbers = require('electron').remote.require('./mapNumbers') - -const withRendererCb = mapNumbers.withRendererCallback(x => x + 1) - -const withLocalCb = mapNumbers.withLocalCallback() - -console.log(withRendererCb, withLocalCb) // [undefined, undefined, undefined], [2, 3, 4] -``` - -보다시피 동기적인 렌더러 콜백 함수의 반환 값은 예상되지 않은 값입니다. 그리고 -메인 프로세스에서 처리한 함수의 반환 값과 일치하지 않습니다. - -둘째, 콜백들은 메인 프로세스로 전달, 호출된 이후에도 자동으로 함수의 참조가 -릴리즈 되지 않습니다. 함수 참조는 메인 프로세스에서 GC가 일어나기 전까지 계속 -프로세스에 남아있게 됩니다. - -다음 코드를 보면 느낌이 올 것입니다. 이 예시는 remote 객체에 `close` 이벤트 -콜백을 등록합니다: - -```javascript -const remote = require('remote') - -remote.getCurrentWindow().on('close', () => { - // blabla... -}) -``` - -하지만 이 코드와 같이 등록된 이벤트는 명시적으로 제거하지 않는 이상 콜백 함수의 -참조가 계속해서 메인 프로세스에 남아있게 됩니다. 만약 명시적으로 콜백을 제거하지 -않으면 매 번 창을 새로고침 할 때마다 콜백을 새로 설치합니다. 게다가 이전 콜백이 -제거되지 않고 계속해서 쌓이면서 메모리 누수가 발생합니다. - -설상가상으로 이전에 등록된 콜백의 컨텍스트가 릴리즈 되고 난 후 (e.g. 페이지 -새로고침) `close` 이벤트가 발생하면 예외가 발생하고 메인 프로세스가 작동 -중지됩니다. - -이러한 문제를 피하려면 렌더러 프로세스에서 메인 프로세스로 넘긴 함수의 참조를 -사용 후 확실하게 제거해야 합니다. 작업 후 이벤트 콜백을 포함하여 책임 있게 -함수의 참조를 제거하거나 메인 프로세스에서 렌더러 프로세스가 종료될 때 -내부적으로 함수 참조를 제거하도록 설계해야 합니다. - -## 메인 프로세스의 빌트인 모듈에 접근 - -메인 프로세스의 빌트인 모듈은 `remote` 모듈에 getter로 등록되어 있습니다. 따라서 -`remote` 모듈을 `electron` 모듈처럼 직접 사용할 수 있습니다. - -```javascript -const app = remote.app -``` - -## Methods - -`remote` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `remote.require(module)` - -* `module` String - -Returns `Object` - 메인 프로세스의 `require(module)` 에 의해 반환된 객체. - -### `remote.getCurrentWindow()` - -Returns `BrowserWindow` - 현재 웹 페이지가 들어있는 -[`BrowserWindow`](browser-window.md) 객체. - -### `remote.getCurrentWebContents()` - -Returns `WebContents` - 현재 웹 페이지의 [`WebContents`](web-contents.md) 객체. - -### `remote.getGlobal(name)` - -* `name` String - -Returns `any` - 메인 프로세스의 전역 변수 `name` (예시: `global[name]`). - -## Properties - -### `remote.process` - -메인 프로세스의 `process` 객체입니다. `remote.getGlobal('process')`와 같습니다. -하지만 캐시 됩니다. - -[rmi]: http://en.wikipedia.org/wiki/Java_remote_method_invocation -[enumerable-properties]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties diff --git a/docs-translations/ko-KR/api/screen.md b/docs-translations/ko-KR/api/screen.md deleted file mode 100644 index e62cf5385707..000000000000 --- a/docs-translations/ko-KR/api/screen.md +++ /dev/null @@ -1,121 +0,0 @@ -# screen - -> 화면 크기, 디스플레이, 커서 위치 등의 정보를 가져옵니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process), [렌더러](../tutorial/quick-start.md#renderer-process) - -이 모듈은 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 포함하거나 사용할 수 -없습니다. - -`screen`은 [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter)를 -상속 받았습니다. - -**참고:** 렌더러 / DevTools에선 이미 DOM 속성이 `window.screen`을 가지고 있으므로 -`screen = require('screen')` 형식으로 모듈을 사용할 수 없습니다. - -다음 예시는 화면 전체를 채우는 윈도우 창을 생성합니다: - - -```javascript -const electron = require('electron') -const {app, BrowserWindow} = electron - -let win - -app.on('ready', () => { - const {width, height} = electron.screen.getPrimaryDisplay().workAreaSize - win = new BrowserWindow({width, height}) -}) -``` - -다음 예시는 확장 디스플레이에 윈도우를 생성합니다: - -```javascript -const electron = require('electron') -const {app, BrowserWindow} = require('electron') - -let win - -app.on('ready', () => { - let displays = electron.screen.getAllDisplays() - let externalDisplay = displays.find((display) => { - return display.bounds.x !== 0 || display.bounds.y !== 0 - }) - - if (externalDisplay) { - win = new BrowserWindow({ - x: externalDisplay.bounds.x + 50, - y: externalDisplay.bounds.y + 50 - }) - } -}) -``` - -## Events - -`screen` 모듈은 다음과 같은 이벤트를 가지고 있습니다: - -### Event: 'display-added' - -Returns: - -* `event` Event -* `newDisplay` [Display](structures/display.md) - -`newDisplay` 가 추가되면 발생하는 이벤트입니다. - -### Event: 'display-removed' - -Returns: - -* `event` Event -* `oldDisplay` [Display](structures/display.md) - -`oldDisplay` 가 제거되면 발생하는 이벤트입니다. - -### Event: 'display-metrics-changed' - -Returns: - -* `event` Event -* `display` [Display](structures/display.md) -* `changedMetrics` String[] - -`display`에서 하나 또는 다수의 매트릭스가 변경될 때 발생하는 이벤트입니다. -`changedMetrics`는 변경에 대한 정보를 담은 문자열의 배열입니다. -`bounds`, `workArea`, `scaleFactor`, `rotation`등이 변경될 수 있습니다. - -## Methods - -`screen` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `screen.getCursorScreenPoint()` - -Returns `Object`: - -* `x` Integer -* `y` Integer - -현재 마우스 포인터의 절대 위치. - -### `screen.getPrimaryDisplay()` - -Returns `Display` - 기본 디스플레이. - -### `screen.getAllDisplays()` - -Returns `Display[]` - 사용 가능한 모든 디스플레이의 배열. - -### `screen.getDisplayNearestPoint(point)` - -* `point` Object - * `x` Integer - * `y` Integer - -Returns `Display` - 지정한 좌표에 가까운 디스플레이. - -### `screen.getDisplayMatching(rect)` - -* `rect` [Rectangle](structures/rectangle.md) - -Returns `Display` - 지정한 범위에 가장 가깝게 교차한 디스플레이. diff --git a/docs-translations/ko-KR/api/session.md b/docs-translations/ko-KR/api/session.md deleted file mode 100644 index 3bbd63ff226e..000000000000 --- a/docs-translations/ko-KR/api/session.md +++ /dev/null @@ -1,674 +0,0 @@ -# session - -> 브라우저 세션, 쿠키, 캐시, 프록시 설정 등을 관리합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`session` 모듈은 새로운 `Session` 객체를 만드는데 사용할 수 있습니다. - -또한 [`WebContents`](web-contents.md)의 `session` 속성이나 `session` 모듈을 통해 -현재 존재하는 페이지의 `session`에 접근할 수 있습니다. - -```javascript -const {session, BrowserWindow} = require('electron') - -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('http://github.com') - -let ses = win.webContents.session -``` - -## Methods - -`session` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `session.fromPartition(partition[, options])` - -* `partition` String -* `options` Object - * `cache` Boolean - 캐시를 활성화할지 여부. - -Returns `Session` - `partition` 문자열로부터 만들어진 `Session` 인스턴스. 이미 -`partition`에 해당하는 `Session`이 존재할 경우, 해당 세션이 반환됩니다. -그렇지않은 경우 `Session` 인스턴스가 `options`에 맞춰 새로 생성됩니다. - -`partition`이 `persist:`로 시작하면 페이지는 지속성 세션을 사용하며 다른 모든 앱 내의 -페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로 시작하지 -않으면 페이지는 인-메모리 세션을 사용합니다. `partition`을 지정하지 않으면 애플리케이션의 -기본 세션이 반환됩니다. - -`options`에 맞춰 `Session`을 생성하려면, `partition`에 해당하는 `Session`이 이미 -이전에 사용되지 않고 있는지 확인해야 합니다. 이미 존재하는 `Session` 객체의 -`options`를 변경하는 방법은 없습니다. - -## Properties - -`session` 모듈은 다음과 같은 속성을 가지고 있습니다: - -### `session.defaultSession` - -`Session` 객체, 애플리케이션의 기본 세션 객체. - -## Class: Session - -> 세션의 속성을 가져오거나 설정합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`session` 모듈을 사용하여 `Session` 객체를 생성할 수 있습니다: - -```javascript -const {session} = require('electron') -const ses = session.fromPartition('persist:name') -console.log(ses.getUserAgent()) -``` - -### Instance Events - -`Session` 객체는 다음과 같은 이벤트를 가지고 있습니다: - -#### Event: 'will-download' - -* `event` Event -* `item` [DownloadItem](download-item.md) -* `webContents` [WebContents](web-contents.md) - -Electron의 `webContents`에서 `item`을 다운로드할 때 발생하는 이벤트입니다. - -`event.preventDefault()` 메서드를 호출하면 다운로드를 취소하고, 프로세스의 다음 -틱부터 `item`을 사용할 수 없게 됩니다. - -```javascript -const {session} = require('electron') -session.defaultSession.on('will-download', (event, item, webContents) => { - event.preventDefault() - require('request')(item.getURL(), (data) => { - require('fs').writeFileSync('/somewhere', data) - }) -}) -``` - -### Instance Methods - -`Session` 객체는 다음과 같은 메서드를 가지고 있습니다: - -#### `ses.getCacheSize(callback)` - -* `callback` Function - * `size` Integer - 바이트로 표현된 캐시 크기 - -세션의 현재 캐시 크기를 반환합니다. - -#### `ses.clearCache(callback)` - -* `callback` Function - 작업이 완료되면 호출됩니다. - -세션의 HTTP 캐시를 비웁니다. - -#### `ses.clearStorageData([options, callback])` - -* `options` Object (optional), proprties: - * `origin` String - `scheme://host:port`와 같은 `window.location.origin` 규칙을 - 따르는 origin 문자열. - * `storages` String[] - 비우려는 스토리지의 종류, 다음과 같은 타입을 포함할 수 있습니다: - `appcache`, `cookies`, `filesystem`, `indexdb`, `local storage`, - `shadercache`, `websql`, `serviceworkers` - * `quotas` String[] - 비우려는 할당의 종류, 다음과 같은 타입을 포함할 수 있습니다: - `temporary`, `persistent`, `syncable`. -* `callback` Function (optional) - 작업이 완료되면 호출됩니다. - -웹 스토리지의 데이터를 비웁니다. - -#### `ses.flushStorageData()` - -디스크에 사용되지 않은 DOMStorage 데이터를 모두 덮어씌웁니다. - -#### `ses.setProxy(config, callback)` - -* `config` Object - * `pacScript` String - PAC 파일과 관련된 URL입니다. - * `proxyRules` String - 사용할 프록시의 규칙을 나타냅니다. - * `proxyBypassRules` String - 어떤 URL이 프록시 설정을 무시되어야 하는지를 - 지정하는 규칙입니다. -* `callback` Function - 작업이 완료되면 호출됩니다. - -프록시 설정을 적용합니다. - -`pacScript`와 `proxyRules`이 같이 제공되면 `proxyRules` 옵션은 무시되며 `pacScript` -컨픽만 적용됩니다. - -`proxyRules`는 다음과 같은 규칙을 따릅니다: - -``` -proxyRules = schemeProxies[";"] -schemeProxies = ["="] -urlScheme = "http" | "https" | "ftp" | "socks" -proxyURIList = [","] -proxyURL = ["://"][":"] -``` - -예시: - -* `http=foopy:80;ftp=foopy2` - http:// URL에 `foopy:80` HTTP 프록시를 사용합니다. - `foopy2:80` 는 ftp:// URL에 사용됩니다. -* `foopy:80` - 모든 URL에 `foopy:80` 프록시를 사용합니다. -* `foopy:80,bar,direct://` - 모든 URL에 `foopy:80` HTTP 프록시를 사용합니다. - 문제가 발생하여 `foopy:80`를 사용할 수 없는 경우 `bar`를 대신 사용하여 장애를 - 복구하며 그 다음 문제가 생긴 경우 프록시를 사용하지 않습니다. -* `socks4://foopy` - 모든 URL에 `foopy:1000` SOCKS v4 프록시를 사용합니다. -* `http=foopy,socks5://bar.com` - http:// URL에 `foopy` HTTP 프록시를 사용합니다. - 문제가 발생하여 `foopy`를 사용할 수 없는 경우 SOCKS5 `bar.com` 프록시를 대신 - 사용합니다. -* `http=foopy,direct://` - http:// URL에 `foopy` HTTP 프록시를 사용합니다. 그리고 - 문제가 발생하여 `foopy`를 사용할 수 없는 경우 프록시를 사용하지 않습니다. -* `http=foopy;socks=foopy2` - http:// URL에 `foopy` HTTP 프록시를 사용합니다. - 그리고 `socks4://foopy2` 프록시를 다른 모든 URL에 사용합니다. - -`proxyBypassRules`는 밑에서 묘사된 규칙의 콤마로 구분된 목록입니다: - -* `[ URL_SCHEME "://" ] HOSTNAME_PATTERN [ ":" ]` - - Match all hostnames that match the pattern HOSTNAME_PATTERN. - - 예시: - "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", - "https://x.*.y.com:99" - - * `"." HOSTNAME_SUFFIX_PATTERN [ ":" PORT ]` - - Match a particular domain suffix. - - 예시: - ".google.com", ".com", "http://.google.com" - -* `[ SCHEME "://" ] IP_LITERAL [ ":" PORT ]` - - Match URLs which are IP address literals. - - 예시: - "127.0.1", "[0:0::1]", "[::1]", "http://[::1]:99" - -* `IP_LITERAL "/" PREFIX_LENGHT_IN_BITS` - - Match any URL that is to an IP literal that falls between the - given range. IP range is specified using CIDR notation. - - 예시: - "192.168.1.1/16", "fefe:13::abc/33". - -* `` - - Match local addresses. The meaning of `` is whether the - host matches one of: "127.0.0.1", "::1", "localhost". - -#### `ses.resolveProxy(url, callback)` - -* `url` URL -* `callback` Function - * `proxy` Object - -`url`의 프록시 정보를 해석합니다. `callback`은 요청이 수행되었을 때 -`callback(proxy)` 형태로 호출됩니다. - -#### `ses.setDownloadPath(path)` - -* `path` String - 다운로드 위치 - -다운로드 저장 위치를 지정합니다. 기본 다운로드 위치는 각 애플리케이션 데이터 디렉터리의 -`Downloads` 폴더입니다. - -#### `ses.enableNetworkEmulation(options)` - -* `options` Object - * `offline` Boolean (optional) - 네트워크 연결 끊김을 에뮬레이트할지 여부입니다. - 기본값은 false입니다. - * `latency` Double (optional) - 밀리세컨드당 RTT입니다. 기본값은 0이며 이는 - 레이턴시 스로틀링을 비활성화합니다. - * `downloadThroughput` Double (optional) - Bps 단위의 다운로드 속도입니다. - 기본값은 0이며 이는 다운로드 스로틀링을 비활성화합니다. - * `uploadThroughput` Double (optional) - Bps 단위의 업로드 속도입니다. 기본값은 - 0이며 이는 업로드 스로틀링을 비활성화합니다. - -제공된 설정으로 `session`의 네트워크를 에뮬레이트합니다. - -```javascript -// 50kbps의 처리량과 함께 500ms의 레이턴시로 GPRS 연결을 에뮬레이트합니다. -window.webContents.session.enableNetworkEmulation({ - latency: 500, - downloadThroughput: 6400, - uploadThroughput: 6400 -}) - -// 네트워크가 끊긴 상태를 에뮬레이트합니다. -window.webContents.session.enableNetworkEmulation({offline: true}) -``` - -#### `ses.disableNetworkEmulation()` - -활성화된 `session`의 에뮬레이션을 비활성화합니다. 기본 네트워크 설정으로 돌아갑니다. - -#### `ses.setCertificateVerifyProc(proc)` - -* `proc` Function - * `hostname` String - * `certificate` [Certificate](structures/certificate.md) - * `callback` Function - * `isTrusted` Boolean - 인증서를 신뢰해야하는지 결정 - -`session`에 인증서의 유효성을 확인하는 프로세스(proc)를 등록합니다. `proc`은 서버 -인증서 유효성 검증 요청이 들어왔을 때 언제나 `proc(hostname, certificate, callback)` -형식으로 호출됩니다. `callback(true)`을 호출하면 인증을 승인하고 `callback(false)`를 -호출하면 인증을 거부합니다. - -`setCertificateVerifyProc(null)`을 호출하면 기본 검증 프로세스로 되돌립니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() - -win.webContents.session.setCertificateVerifyProc((hostname, cert, callback) => { - callback(hostname === 'github.com') -}) -``` -#### `ses.setPermissionRequestHandler(handler)` - -* `handler` Function - * `webContents` Object - [WebContents](web-contents.md) 권한을 요청. - * `permission` String - 'media', 'geolocation', 'notifications', - 'midiSysex', 'pointerLock', 'fullscreen', 'openExternal'의 나열. - * `callback` Function - * `permissionGranted` Boolean - 권한 허용 및 거부. - -`session`의 권한 요청에 응답을 하는데 사용하는 핸들러를 설정합니다. -`callback(true)`를 호출하면 권한 제공을 허용하고 `callback(false)`를 -호출하면 권한 제공을 거부합니다. - -```javascript -const {session} = require('electron') -session.fromPartition('some-partition').setPermissionRequestHandler((webContents, permission, callback) => { - if (webContents.getURL() === 'some-host' && permission === 'notifications') { - return callback(false) // 거부됨. - } - - callback(true) -}) -``` - -#### `ses.clearHostResolverCache([callback])` - -* `callback` Function (optional) - 작업이 완료되면 호출됩니다. - -호스트 리소버(resolver) 캐시를 지웁니다. - -#### `ses.allowNTLMCredentialsForDomains(domains)` - -* `domains` String - 통합 인증을 사용하도록 설정할 쉼표로 구분된 서버의 리스트. - -동적으로 HTTP NTML 또는 Negotiate 인증을 위해 언제나 자격 증명을 보낼지 여부를 -설정합니다. - -```javascript -// 통합 인증을 위해 `example.com`, `foobar.com`, `baz`로 끝나는 -// 모든 url을 지정합니다. -session.defaultSession.allowNTLMCredentialsForDomains('*example.com, *foobar.com, *baz') - -// 통합 인증을 위해 모든 url을 지정합니다. -session.defaultSession.allowNTLMCredentialsForDomains('*') -``` - -#### `ses.setUserAgent(userAgent[, acceptLanguages])` - -* `userAgent` String -* `acceptLanguages` String (optional) - -현재 세션에 대해 `userAgent`와 `acceptLanguages`를 덮어씁니다. - -`acceptLanguages`는 반드시 쉼표로 구분된 순서에 맞춘 언어 코드의 리스트여야 하며 -예를 들면 `"en-US,fr,de,ko,zh-CN,ja"` 입니다. - -이는 현재 존재하는 `WebContents`에 적용되지 않으며 각 `WebContents`는 -`webContents.setUserAgent`를 사용하여 세션 전체의 유저 에이전트를 덮어쓸 수 있습니다. - -#### `ses.getUserAgent()` - -Returns `String` - 현재 세션의 유저 에이전트. - -#### `ses.getBlobData(identifier, callback)` - -* `identifier` String - Valid UUID. -* `callback` Function - * `result` Buffer - Blob data. - -Returns `Blob` - `identifier` 에 연결된 blob 데이터. - -### Instance Properties - -다음은 `Session` 인스턴스에서 사용할 수 있는 속성들입니다: - -#### `ses.cookies` - -현재 세션의 `Cookies` 객체. - -#### `ses.webRequest` - -현재 세션의 `WebRequest` 객체. - -#### `ses.protocol` - -현재 세션의 Protocol 객체 ([protocol](protocol.md) 모듈의 인스턴스). - -```javascript -const {app, session} = require('electron') -const path = require('path') - -app.on('ready', function () { - const protocol = session.fromPartition(partitionName).protocol - protocol.registerFileProtocol('atom', function (request, callback) { - var url = request.url.substr(7) - callback({path: path.normalize(`${__dirname}/${url}`)}) - }, function (error) { - if (error) console.error('Failed to register protocol') - }) -}) -``` - -## Class: Cookies - -> 세션의 쿠키를 변경하거나 요청합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`Cookies` 클래스의 인스턴스는 `Session`의 `cookies` 속성을 통해 접근합니다. - -예를 들어: - -```javascript -// 모든 쿠키를 요청합니다. -session.defaultSession.cookies.get({}, (error, cookies) => { - console.log(error, cookies) -}) - -// url에 관련된 쿠키를 모두 가져옵니다. -session.defaultSession.cookies.get({url: 'http://www.github.com'}, (error, cookies) => { - console.log(error, cookies) -}) - -// 지정한 쿠키 데이터를 설정합니다. -// 동일한 쿠키가 있으면 해당 쿠키를 덮어씁니다. -const cookie = {url: 'http://www.github.com', name: 'dummy_name', value: 'dummy'} -session.defaultSession.cookies.set(cookie, (error) => { - if (error) console.error(error) -}) -``` - -### Instance Events - -다음은 `Cookies` 의 인스턴스의 이벤트입니다: - -#### Event: 'changed' - -* `event` Event -* `cookie` [Cookie](structures/cookie.md) - 변경된 쿠키 -* `cause` String - 다음 값 중 하나인 변경된 이유: - * `explicit` - 쿠키가 소비자의 행위에 의해 직접 변경되었습니다. - * `overwrite` - 쿠키를 덮어쓰는 삽입 동작에 의해 자동으로 제거되었습니다. - * `expired` - 쿠키가 유효기간이 만료되어 자동으로 제거되었습니다. - * `evicted` - 가비지 컬렉션에 의해 자동으로 퇴출되었습니다. - * `expired-overwrite` - 쿠키가 이미 만료된 유효기간으로 덮어써졌습니다. -* `removed` Boolean - 쿠키가 제거되었으면 `true`, 아니면 `false`. - -쿠키가 추가, 편집, 삭제, 만료되는 변경이 되면 발생합니다. - -### Instance Methods - -다음은 `Cookies` 객체에서 사용할 수 있는 메서드들입니다: - -#### `ses.cookies.get(filter, callback)` - -* `filter` Object - * `url` String (optional) - `url`에 해당하는 쿠키를 취득합니다. 이 속성을 - 생략하면 모든 url에서 찾습니다. - * `name` String (optional) - 쿠키의 이름입니다. - * `domain` String (optional) - 도메인 또는 서브 도메인에 일치하는 쿠키를 - 취득합니다. - * `path` String (optional) - `path`에 일치하는 쿠키를 취득합니다. - * `secure` Boolean (optional) - 보안 속성에 따라 쿠키를 필터링합니다. - * `session` Boolean (optional) - 세션 또는 지속성 쿠키를 필터링합니다. -* `callback` Function - * `error` Error - * `cookies` Cookies[] - -`details` 객체에서 묘사한 모든 쿠키를 요청합니다. 모든 작업이 끝나면 `callback`이 -`callback(error, cookies)` 형태로 호출됩니다. - -`cookies`는 [`cookie`](structures/cookie.md) 객체의 배열입니다. - -#### `ses.cookies.set(details, callback)` - -* `details` Object - * `url` String - 쿠키에 대한 `url` 링크. - * `name` String - 쿠키의 이름입니다. 기본적으로 비워두면 생략됩니다. - * `value` String - 쿠키의 값입니다. 기본적으로 비워두면 생략됩니다. - * `domain` String - 쿠키의 도메인입니다. 기본적으로 비워두면 생략됩니다. - * `path` String - 쿠키의 경로입니다. 기본적으로 비워두면 생략됩니다. - * `secure` Boolean - 쿠키가 안전한 것으로 표시되는지에 대한 여부입니다. 기본값은 - false입니다. - * `httpOnly` Boolean - 쿠키가 Http 전용으로 표시되는지에 대한 여부입니다. 기본값은 - false입니다. - * `expirationDate` Double (optional) - UNIX 시간으로 표시되는 쿠키의 만료일에 - 대한 초 단위 시간입니다. 생략되면 쿠키가 세션 쿠기가 되며 세션 사이에 유지되지 - 않게 됩니다. -* `callback` Function - * `error` Error - -`details` 객체에 따라 쿠키를 설정합니다. 작업이 완료되면 `callback`이 -`callback(error)` 형태로 호출됩니다. - -#### `ses.cookies.remove(url, name, callback)` - -* `url` String - 쿠키와 관련된 URL입니다. -* `name` String - 지울 쿠키의 이름입니다. -* `callback` Function - -`url`과 `name`에 일치하는 쿠키를 삭제합니다. 작업이 완료되면 `callback`이 -`callback()` 형식으로 호출됩니다. - -## Class: WebRequest - -> 생명주기 동안의 다양한 단계를 가지는 요청의 콘텐츠를 가로채고 변경합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`WebRequest` 클래스의 인스턴스는 `Session`의 `webRequest` 속성을 통해 접근할 수 -있습니다. - -`WebRequest`의 메서드는 선택적인 `filter`와 `listener` 속성을 허용하며 `listener`는 -API의 이벤트가 발생했을 때 `listener(details)` 형식으로 호출되고, `details`는 요청에 -관한 내용을 표현하는 객체입니다. `listener`에 `null`을 전달하면 이벤트의 구독을 -해제합니다. - -`filter`는 `urls` 속성을 가진 객체입니다. 이 속성은 URL 규칙의 배열이며 URL 규칙에 -일치하지 않는 요청을 모두 거르는데 사용됩니다. 만약 `filter`가 생략되면 모든 요청을 -여과 없이 통과시킵니다. - -어떤 `listener`의 이벤트들은 `callback`을 같이 전달하는데, 이벤트 처리시 -`listener`의 작업을 완료한 후 `response` 객체를 포함하여 호출해야 합니다. - -다음은 요청에 `User-Agent` 헤더를 추가하는 예시입니다: - -```javascript -// 다음 url에 대한 User Agent를 조작합니다. -const filter = { - urls: ['https://*.github.com/*', '*://electron.github.io'] -} - -session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => { - details.requestHeaders['User-Agent'] = 'MyAgent' - callback({cancel: false, requestHeaders: details.requestHeaders}) -}) -``` - -### Instance Methods - -다음은 `WebRequest` 객체에서 사용할 수 있는 메서드들입니다: - -#### `webRequest.onBeforeRequest([filter, ]listener)` - -* `filter` Object -* `listener` Function - -요청이 발생하면 `listener`가 `listener(details, callback)` 형태로 호출됩니다. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `uploadData` [UploadData[]](structures/upload-data.md) -* `callback` Function - * `response` Object - * `cancel` Boolean (optional) - * `redirectURL` String (optional) - 원래 요청이 전송되거나 완료되는 것을 - 방지하고 지정된 URL 로 리디렉션됩니다. - -`uploadData`는 `uploadData` 객체의 배열입니다. - -`callback`은 `response` 객체와 함께 호출되어야 합니다. - -#### `webRequest.onBeforeSendHeaders([filter, ]listener)` - -* `filter` Object -* `listener` Function - -HTTP 요청을 보내기 전 요청 헤더를 사용할 수 있을 때 `listener`가 -`listener(details, callback)` 형태로 호출됩니다. 이 이벤트는 서버와의 TCP 연결이 -완료된 후에 발생할 수도 있지만 http 데이터가 전송되기 전에 발생합니다. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `requestHeaders` Object -* `callback` Function - * `response` Object - * `cancel` Boolean (optional) - * `requestHeaders` Object (optional) - 이 속성이 제공되면, 요청은 이 헤더로 - 만들어 집니다. - -`callback`은 `response` 객체와 함께 호출되어야 합니다. - -#### `webRequest.onSendHeaders([filter, ]listener)` - -* `filter` Object -* `listener` Function - * `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `requestHeaders` Object - -서버에 요청이 전송되기 바로 전에 `listener`가 `listener(details)` 형태로 호출됩니다. -이전 `onBeforeSendHeaders`의 response와 다른점은 리스너가 호출되는 시간으로 볼 수 -있습니다. - -#### `webRequest.onHeadersReceived([filter, ]listener)` - -* `filter` Object -* `listener` Function - -요청의 HTTP 응답 헤더를 받았을 때 `listener`가 `listener(details, callback)` 형태로 -호출됩니다. - -* `details` Object - * `id` String - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `statusLine` String - * `statusCode` Integer - * `responseHeaders` Object -* `callback` Function - * `response` Object - * `cancel` Boolean - * `responseHeaders` Object (optional) - 이 속성이 제공되면 서버는 이 헤더와 - 함께 응답합니다. - * `statusLine` String (optional) - `responseHeaders`를 덮어쓸 땐, 헤더의 - 상태를 변경하기 위해 반드시 지정되어야 합니다. 그렇지 않은 경우, 기존의 - 응답 헤더의 상태가 사용됩니다. - -`callback`은 `response` 객체와 함께 호출되어야 합니다. - -#### `webRequest.onResponseStarted([filter, ]listener)` - -* `filter` Object -* `listener` Function - * `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `responseHeaders` Object - * `fromCache` Boolean - 응답을 디스크 캐시에서 가져올지에 대한 여부. - * `statusCode` Integer - * `statusLine` String - -요청 본문의 첫 번째 바이트를 받았을 때 `listener`가 `listener(details)` 형태로 -호출됩니다. 이는 HTTP 요청에서 상태 줄과 요청 헤더가 사용 가능한 상태를 의미합니다. - -#### `webRequest.onBeforeRedirect([filter, ]listener)` - -* `filter` Object -* `listener` Function - * `details` Object - * `id` String - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `redirectURL` String - * `statusCode` Integer - * `ip` String (optional) - 요청이 실질적으로 전송될 서버 아이피 주소. - * `fromCache` Boolean - * `responseHeaders` Object - -서버에서 시작된 리다이렉트가 발생했을 때 `listener`가 `listener(details)` 형태로 -호출됩니다. - -#### `webRequest.onCompleted([filter, ]listener)` - -* `filter` Object -* `listener` Function - * `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `responseHeaders` Object - * `fromCache` Boolean - * `statusCode` Integer - * `statusLine` String - -요청이 완료되면 `listener`가 `listener(details)` 형태로 호출됩니다. - -#### `webRequest.onErrorOccurred([filter, ]listener)` - -* `filter` Object -* `listener` Function - * `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `fromCache` Boolean - * `error` String - 에러 설명. - -에러가 발생하면 `listener`가 `listener(details)` 형태로 호출됩니다. diff --git a/docs-translations/ko-KR/api/shell.md b/docs-translations/ko-KR/api/shell.md deleted file mode 100644 index 8819e9f5a66f..000000000000 --- a/docs-translations/ko-KR/api/shell.md +++ /dev/null @@ -1,88 +0,0 @@ -# shell - -> 파일과 URL을 각 기본 애플리케이션을 통해 관리합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process), [렌더러](../tutorial/quick-start.md#renderer-process) - -`shell` 모듈은 데스크톱 환경 통합에 관련한 유틸리티를 제공하는 모듈입니다. - -다음 예시는 설정된 URL을 유저의 기본 브라우저로 엽니다: - -```javascript -const {shell} = require('electron') - -shell.openExternal('https://github.com') -``` - -## Methods - -`shell` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `shell.showItemInFolder(fullPath)` - -* `fullPath` String - -Returns `Boolean` - 아이템 성공적으로 보여졌는지 여부. - -지정한 파일을 파일 매니저에서 보여줍니다. 가능한 경우 파일을 선택합니다. - -### `shell.openItem(fullPath)` - -* `fullPath` String - -Returns `Boolean` - 아이템 성공적으로 열렸는지 여부. - -지정한 파일을 데스크톱 기본 프로그램으로 엽니다. - -### `shell.openExternal(url[, options])` - -* `url` String -* `options` Object (optional) _macOS_ - * `activate` Boolean - `true`로 설정하면 애플리케이션을 바로 활성화 상태로 - 실행합니다. 기본값은 `true`입니다. - -Returns `Boolean` - 애플리케이션이 URL 을 열 수 있었는지 여부. - -제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어 -mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다). - -**역자주:** 탐색기로 폴더만 표시하려면 `'file://경로'`와 같이 지정하여 열 수 있습니다. - -### `shell.moveItemToTrash(fullPath)` - -* `fullPath` String - -Returns `Boolean` - 아이템이 성공적으로 휴지통으로 이동되었는지 여부. - -지정한 파일을 휴지통으로 이동시키고 작업의 상태를 boolean 형으로 반환합니다. - -### `shell.beep()` - -비프음을 재생합니다. - -### `shell.writeShortcutLink(shortcutPath[, operation], options)` _Windows_ - -* `shortcutPath` String -* `operation` String (optional) - 기본값은 `create`이며 다음 값 중 한 가지가 될 수 - 있습니다: - * `create` - 새 바로가기를 생성하고 필요하다면 덮어씁니다. - * `update` - 이미 존재하는 바로가기의 특정한 속성을 갱신합니다. - * `replace` - 이미 존재하는 바로가기를 덮어씁니다. 바로가기가 존재하지 않으면 - 실패합니다. -* `options` [ShortcutDetails](structures/shortcut-details.md) - -Returns `Boolean` - 바로가기 생성 여부. - -`shortcutPath`에 바로가기 링크를 생성하거나 갱신합니다. - -### `shell.readShortcutLink(shortcutPath)` _Windows_ - -* `shortcutPath` String - -Returns [`ShortcutDetails`](structures/shortcut-details.md) - -Resolves the shortcut link at `shortcutPath`. -`shortcutPath`에 위치한 바로가기 링크를 해석합니다. `shell.writeShortcutLink` -메서드의 `options`에 묘사된 속성을 포함하는 객체를 반환합니다. - -오류가 발생하면 예외가 throw됩니다. diff --git a/docs-translations/ko-KR/api/structures/bluetooth-device.md b/docs-translations/ko-KR/api/structures/bluetooth-device.md deleted file mode 100644 index 33d3bb51f94d..000000000000 --- a/docs-translations/ko-KR/api/structures/bluetooth-device.md +++ /dev/null @@ -1,4 +0,0 @@ -# BluetoothDevice Object - -* `deviceName` String -* `deviceId` String diff --git a/docs-translations/ko-KR/api/structures/certificate.md b/docs-translations/ko-KR/api/structures/certificate.md deleted file mode 100644 index e8e26f0378a9..000000000000 --- a/docs-translations/ko-KR/api/structures/certificate.md +++ /dev/null @@ -1,9 +0,0 @@ -# Certificate Object - -* `data` String - PEM 인코딩된 데이터 -* `issuerName` String - 인증서 발급자의 공통 이름 -* `subjectName` String - 대상의 공통 이름 -* `serialNumber` String - 문자열로 표현된 hex 값 -* `validStart` Integer - 초 단위의 인증서가 유효하기 시작한 날짜 -* `validExpiry` Integer - 초 단위의 인증서가 만료되는 날짜 -* `fingerprint` String - 인증서의 지문 diff --git a/docs-translations/ko-KR/api/structures/cookie.md b/docs-translations/ko-KR/api/structures/cookie.md deleted file mode 100644 index c3bacbad74e0..000000000000 --- a/docs-translations/ko-KR/api/structures/cookie.md +++ /dev/null @@ -1,13 +0,0 @@ -# Cookie Object - -* `name` String - 쿠키의 이름. -* `value` String - 쿠키의 값. -* `domain` String - 쿠키의 도메인. -* `hostOnly` String - 쿠키가 호스트 전용인가에 대한 여부. -* `path` String - 쿠키의 경로. -* `secure` Boolean - 쿠키가 안전한 것으로 표시됐는지에 대한 여부. -* `httpOnly` Boolean - 쿠키가 HTTP 전용으로 표시됐는지에 대한 여부. -* `session` Boolean - 쿠키가 세션 쿠키인지 만료일이 있는 영구 쿠키인지에 대한 - 여부. -* `expirationDate` Double - (Optional) UNIX 시간으로 표시되는 쿠키의 만료일에 - 대한 초 단위 시간. 세션 쿠키는 지원되지 않음. diff --git a/docs-translations/ko-KR/api/structures/desktop-capturer-source.md b/docs-translations/ko-KR/api/structures/desktop-capturer-source.md deleted file mode 100644 index e0b54d02175f..000000000000 --- a/docs-translations/ko-KR/api/structures/desktop-capturer-source.md +++ /dev/null @@ -1,12 +0,0 @@ -# DesktopCapturerSource Object - -* `id` String - [`navigator.webkitGetUserMedia`] 를 호출할 때 - `chromeMediaSourceId` 제한으로 사용될 수 있는 윈도우 또는 화면의 식별자. - 식별자의 형식은 `window:XX` 또는 `screen:XX` 이 될 것 이며, `XX` 는 무작위로 - 생성된 숫자입니다. -* `name` String - 윈도우 소스의 이름이 윈도우 제목과 일치하면, 화면 소스는 - `Entire Screen` 또는 `Screen ` 으로 명명될 것 입니다. -* `thumbnail` [NativeImage](../native-image.md) - 섬네일 이미지. **참고:** - `desktopCapturer.getSources` 에 넘겨진 `options` 에 명시된 `thumbnailSize` 와 - 섬네일의 크기가 같음을 보장하지 않습니다. 실제 크기는 화면이나 윈도우의 규모에 - 의해 결정됩니다. diff --git a/docs-translations/ko-KR/api/structures/display.md b/docs-translations/ko-KR/api/structures/display.md deleted file mode 100644 index 69e7897bbd29..000000000000 --- a/docs-translations/ko-KR/api/structures/display.md +++ /dev/null @@ -1,18 +0,0 @@ -# Display Object - -* `id` Number - 디스플레이와 관련된 고유 식별자. -* `rotation` Number - 0, 90, 180, 270, 시계 방향의 화면 회전을 표시. -* `scaleFactor` Number - 출력 장치의 화소 배율. -* `touchSupport` String - `available`, `unavailable`, `unknown`. -* `bounds` [Rectangle](rectangle.md) -* `size` Object - * `height` Number - * `width` Number -* `workArea` [Rectangle](rectangle.md) -* `workAreaSize` Object - * `height` Number - * `width` Number - -`Display` 객체는 시스템에 연결된 물리 디스플레이입니다. 머리가 없는 시스템에서는 -가짜 `Display` 가 존재할 수 있습니다. 또는 `Display` 는 원격 가상 디스플레이일 -수 있습니다. diff --git a/docs-translations/ko-KR/api/structures/jump-list-category.md b/docs-translations/ko-KR/api/structures/jump-list-category.md deleted file mode 100644 index e8ddb3882c37..000000000000 --- a/docs-translations/ko-KR/api/structures/jump-list-category.md +++ /dev/null @@ -1,18 +0,0 @@ -# JumpListCategory Object - -* `type` String - 다음 중 하나: - * `tasks` - 이 카테고리의 항목은 표준 `Tasks` 카테고리에 위치할 것 입니다. - 이 카테고리는 하나만 존재하며, 항상 점프 목록의 하단에 보여집니다. - * `frequent` - 앱에 의해 자주 열린 파일의 목록을 보여줍니다. 카테고리의 - 이름과 항목들은 윈도우에 의해 설정 됩니다. - * `recent` - 앱에 의해 최근에 열린 파일의 목록을 보여줍니다. 카테고리의 - 이름과 항목들은 윈도우에 의해 설정 됩니다. `app.addRecentDocument(path)` 을 - 사용하면 간접적으로 이 카테고리에 항목이 추가될 것 입니다. - * `custom` - 작업 또는 파일 링크를 보여주며, 앱에 의해 `name` 설정되어야 합니다. -* `name` String - `type` 이 `custom` 이면 꼭 설정되어야 하고, 그 외는 생략합니다. -* `items` JumpListItem[] - `type` 이 `tasks` 또는 `custom` 이면 [`JumpListItem`] - (jump-list-item.md) 객체의 배열, 그 외는 생략합니다. - -**참고:** `JumpListCategory` 객체가 `type`, `name` 속성 둘 다 없다면 `type` 은 -`tasks` 로 가정합니다. `name` 속성이 설정되었지만 `type` 속성이 생략된 경우 -`type` 은 `custom` 으로 가정합니다. diff --git a/docs-translations/ko-KR/api/structures/jump-list-item.md b/docs-translations/ko-KR/api/structures/jump-list-item.md deleted file mode 100644 index 32b89092ddec..000000000000 --- a/docs-translations/ko-KR/api/structures/jump-list-item.md +++ /dev/null @@ -1,25 +0,0 @@ -# JumpListItem Object - -* `type` String - 다음 중 하나: - * `task` - 특정 인수로 앱을 실행시킬 작업. - * `separator` - 표준 `Tasks` 범주에서 항목을 구분하는데 사용할 수 있습니다. - * `file` - 점프 목록을 만든 앱을 사용하여 파일을 열 파일 링크. 이것이 - 동작하려면 그 파일 형식을 앱이 처리할 수 있게 등록되있어야 한다. (하지만, - 그것이 기본 처리기일 필요는 없습니다.). -* `path` String - 파일을 열기 위한 경로. `type` 이 `file` 경우에만 설정되어야 - 한다. -* `program` String - 실행하기 위한 프로그램의 경로. 일반적으로 현재 프로그램을 - 열기 위해 `process.execPath` 를 지정해야 합니다. `type` 이 `task` 일 경우만 - 설정되어야 한다. -* `args` String - `program` 이 실행됐을 때의 명령줄 인수. `type` 이 `task` 일 - 경우만 설정되어야 한다. -* `title` String - 점프 목록에서 항목에 표시될 글자. `type` 이 `task` 일 경우만 - 설정되어야 한다. -* `description` String - 작업의 설명 (툴팁으로 표시된다). `type` 이 `task` 일 - 경우만 설정되어야 한다. -* `iconPath` String - 점프 목록에서 보여질 아이콘의 절대 경로. 아이콘을 포함하는 - 임의의 자원 파일 경로일 수 있습니다. (예. `.ico`, `.exe`, `.dll`). 일반적으로 - 프로그램 아이콘을 보여주기 위해 `process.execPath` 를 명시할 수 있습니다. -* `iconIndex` Integer - 리소스 파일의 아이콘 인덱스. 리소스 파일이 여러 아이콘을 - 포함하고 있다면 이 작업을 위해 표시되어야 할 아이콘의 0 기준 인덱스를 명시할 - 수 있다. 리소스 파일이 하나의 아이콘만 가지고 있다면 이 속성은 0 이어야 한다. diff --git a/docs-translations/ko-KR/api/structures/memory-usage-details.md b/docs-translations/ko-KR/api/structures/memory-usage-details.md deleted file mode 100644 index d77e07dedfc2..000000000000 --- a/docs-translations/ko-KR/api/structures/memory-usage-details.md +++ /dev/null @@ -1,5 +0,0 @@ -# MemoryUsageDetails Object - -* `count` Number -* `size` Number -* `liveSize` Number diff --git a/docs-translations/ko-KR/api/structures/rectangle.md b/docs-translations/ko-KR/api/structures/rectangle.md deleted file mode 100644 index 642ff4f9238f..000000000000 --- a/docs-translations/ko-KR/api/structures/rectangle.md +++ /dev/null @@ -1,6 +0,0 @@ -# Rectangle Object - -* `x` Number - 사각형의 원점 x 좌표 -* `y` Number - 사각형의 원점 y 좌표 -* `width` Number -* `height` Number diff --git a/docs-translations/ko-KR/api/structures/shortcut-details.md b/docs-translations/ko-KR/api/structures/shortcut-details.md deleted file mode 100644 index dcd13c51d139..000000000000 --- a/docs-translations/ko-KR/api/structures/shortcut-details.md +++ /dev/null @@ -1,14 +0,0 @@ -# ShortcutDetails Object - -* `target` String - 이 바로가기로부터 실행될 대상입니다. -* `cwd` String (optional) - 작업 디렉토리입니다. 기본값은 없습니다. -* `args` String (optional) - 이 바로가기로부터 실행될 때 `target`에 적용될 인수 - 값입니다. 기본값은 없습니다. -* `description` String (optional) - 바로가기의 설명입니다. 기본값은 없습니다. -* `icon` String (optional) - 아이콘의 경로입니다. DLL 또는 EXE가 될 수 있습니다. - `icon`과 `iconIndex`는 항상 같이 설정되어야 합니다. 기본값은 없으며 `target`의 - 아이콘을 사용합니다. -* `iconIndex` Integer (optional) - `icon`이 DLL 또는 EXE일 때 사용되는 아이콘의 - 리소스 ID이며 기본값은 0입니다. -* `appUserModelId` String (optional) - 애플리케이션 사용자 모델 ID입니다. - 기본값은 없습니다. diff --git a/docs-translations/ko-KR/api/structures/task.md b/docs-translations/ko-KR/api/structures/task.md deleted file mode 100644 index bc1543c633bf..000000000000 --- a/docs-translations/ko-KR/api/structures/task.md +++ /dev/null @@ -1,13 +0,0 @@ -# Task Object - -* `program` String - 실행할 프로그램의 경로. - 보통 현재 작동중인 애플리케이션의 경로인 `process.execPath`를 지정합니다. -* `arguments` String - `program`이 실행될 때 사용될 명령줄 인수. -* `title` String - JumpList에 표시할 문자열. -* `description` String - 이 작업에 대한 설명. -* `iconPath` String - JumpList에 표시될 아이콘의 절대 경로. 아이콘을 포함하고 - 있는 임의의 리소스 파일을 사용할 수 있습니다. 보통 애플리케이션의 아이콘을 - 그대로 사용하기 위해 `process.execPath`를 지정합니다. -* `iconIndex` Integer - 아이콘 파일의 인덱스. 만약 아이콘 파일이 두 개 이상의 - 아이콘을 가지고 있을 경우, 사용할 아이콘의 인덱스를 이 옵션으로 지정해 주어야 - 합니다. 단, 아이콘을 하나만 포함하고 있는 경우 0을 지정하면 됩니다. diff --git a/docs-translations/ko-KR/api/structures/thumbar-button.md b/docs-translations/ko-KR/api/structures/thumbar-button.md deleted file mode 100644 index cdd4f155accd..000000000000 --- a/docs-translations/ko-KR/api/structures/thumbar-button.md +++ /dev/null @@ -1,19 +0,0 @@ -# ThumbarButton Object - -* `icon` [NativeImage](../native-image.md) - The icon showing in thumbnail - toolbar. -* `click` Function -* `tooltip` String (optional) - 버튼 툴팁 글자. -* `flags` String[] (optional) - 버튼의 컨트롤 특유의 상태와 행동. 기본값은 - `['enabled']`. - -`flags` 는 다음 `String` 들을 포함할 수 있는 배열입니다: - -* `enabled` - 버튼이 활성화되어 사용자가 이용할 수 있다. -* `disabled` - 버튼이 비활성화 되어있습니다. 존재하지만 사용자 동작에 반응할 수 - 없는 시각 상태를 표시합니다. -* `dismissonclick` - 버튼이 눌렸을 때 미리보기 창을 즉시 닫습니다. -* `nobackground` - 버튼 테두리를 그리지 않고 이미지만 사용합니다. -* `hidden` - 버튼이 사용자에게 보이지 않습니다. -* `noninteractive` - 버튼이 활성화되어있지만 상호작용하지 않습니다; 눌려지지않은 - 버튼 상태로 그려집니다. 이 값은 버튼이 알림에 사용되는 경우를 위한 것입니다. diff --git a/docs-translations/ko-KR/api/structures/upload-data.md b/docs-translations/ko-KR/api/structures/upload-data.md deleted file mode 100644 index 60940bbfc393..000000000000 --- a/docs-translations/ko-KR/api/structures/upload-data.md +++ /dev/null @@ -1,7 +0,0 @@ -# UploadData Object - -* `bytes` Buffer - 전송되는 내용. -* `file` String - 업로드되는 파일의 경로. -* `blobUUID` String - BLOB 데이터의 UUID. 데이터를 이용하려면 - [ses.getBlobData](../session.md#sesgetblobdataidentifier-callback) 메소드를 - 사용하세요. diff --git a/docs-translations/ko-KR/api/synopsis.md b/docs-translations/ko-KR/api/synopsis.md deleted file mode 100644 index 2d24b32d4aa0..000000000000 --- a/docs-translations/ko-KR/api/synopsis.md +++ /dev/null @@ -1,95 +0,0 @@ -# 개요 - -> Node.js와 Electron API를 사용하는 방법. - -Electron은 모든 [Node.js의 built-in 모듈](https://nodejs.org/api/)과 third-party -node 모듈을 완벽하게 지원합니다. ([네이티브 모듈](../tutorial/using-native-node-modules.md) -포함) - -또한 Electron은 네이티브 데스크톱 애플리케이션을 개발 할 수 있도록 추가적인 -built-in 모듈을 제공합니다. 몇몇 모듈은 메인 프로세스에서만 사용할 수 있고 어떤 -모듈은 렌더러 프로세스(웹 페이지)에서만 사용할 수 있습니다. 또한 두 프로세스 -모두 사용할 수 있는 모듈도 있습니다. - -기본적인 규칙으로 [GUI][gui]와 저 수준 시스템에 관련된 모듈들은 오직 메인 -프로세스에서만 사용할 수 있습니다. [메인 프로세스 vs. 렌더러 프로세스](../tutorial/quick-start.md#메인-프로세스) -컨셉에 익숙해야 모듈을 다루기 쉬우므로 관련 문서를 읽어 보는 것을 권장합니다. - -메인 프로세스 스크립트는 일반 Node.js 스크립트와 비슷합니다: - -```javascript -const {app, BrowserWindow} = require('electron') - -let win = null - -app.on('ready', () => { - win = new BrowserWindow({width: 800, height: 600}) - win.loadURL('https://github.com') -}) -``` - -렌더러 프로세스도 예외적인 node module들을 사용할 수 있다는 점을 제외하면 일반 웹 -페이지와 크게 다를게 없습니다: - -```html - - - - - - -``` - -애플리케이션을 실행하려면 [앱 실행하기](../tutorial/quick-start.md#앱 실행하기) -문서를 참고하기 바랍니다. - -## 분리 할당 - -0.37 버전부터, [분리 할당][destructuring-assignment]을 통해 빌트인 모듈을 더 -직관적으로 사용할 수 있습니다: - -```javascript -const {app, BrowserWindow} = require('electron') - -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -모든 `electron` 모듈이 필요하다면, 먼저 require한 후 각 독립적인 모듈을 -`electron`에서 분리 할당함으로써 모듈을 사용할 수 있습니다. - -```javascript -const electron = require('electron') -const {app, BrowserWindow} = electron - -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -위 코드는 다음과 같습니다: - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -[gui]: https://en.wikipedia.org/wiki/Graphical_user_interface -[destructuring-assignment]: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment diff --git a/docs-translations/ko-KR/api/system-preferences.md b/docs-translations/ko-KR/api/system-preferences.md deleted file mode 100644 index a8407437d264..000000000000 --- a/docs-translations/ko-KR/api/system-preferences.md +++ /dev/null @@ -1,216 +0,0 @@ -# systemPreferences - -> 시스템 설정을 가져옵니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -```javascript -const {systemPreferences} = require('electron') -console.log(systemPreferences.isDarkMode()) -``` - -## Events - -`systemPreferences` 객체는 다음 이벤트를 발생시킵니다: - -### Event: 'accent-color-changed' _Windows_ - -Returns: - -* `event` Event -* `newColor` String - 사용자에 의해 시스템 강조색으로 설정 된 새 RGBA 색상. - -### Event: 'color-changed' _Windows_ - -Returns: - -* `event` Event - -### Event: 'inverted-color-scheme-changed' _Windows_ - -Returns: - -* `event` Event -* `invertedColorScheme` Boolean - 고대비 테마 같은 반전된 색상 스킴을 - 사용중이라면 `true`, 아니면 `false`. - -## Methods - -### `systemPreferences.isDarkMode()` _macOS_ - -Returns `Boolean` - 시스템이 어두운 모드인지 여부. - -### `systemPreferences.isSwipeTrackingFromScrollEventsEnabled()` _macOS_ - -Returns `Boolean` - 페이지 간의 스와이프가 설정되어 있는지 여부. - -### `systemPreferences.postNotification(event, userInfo)` _macOS_ - -* `event` String -* `userInfo` Object - -macOS 의 기본 알림으로 `event` 를 전달합니다. `userInfo` 는 알림과 함께 전송되는 -사용자 정보 딕셔너리를 포함하는 객체입니다. - -### `systemPreferences.postLocalNotification(event, userInfo)` _macOS_ - -* `event` String -* `userInfo` Object - -macOS 의 기본 알림으로 `event` 를 전달합니다. `userInfo` 는 알림과 함께 전송되는 -사용자 정보 딕셔너리를 포함하는 객체입니다. - -### `systemPreferences.subscribeNotification(event, callback)` _macOS_ - -* `event` String -* `callback` Function - * `event` String - * `userInfo` Object - -macOS의 기본 알림을 구독하며, 해당하는 `event`가 발생하면 `callback`이 -`callback(event, userInfo)` 형태로 호출됩니다. `userInfo`는 알림과 함께 전송되는 -사용자 정보 딕셔너리를 포함하는 객체입니다. - -구독자의 `id`가 반환되며 `event`를 구독 해제할 때 사용할 수 있습니다. - -이 API는 후드에서 `NSDistributedNotificationCenter`를 구독하며, `event`의 예시 -값은 다음과 같습니다: - -* `AppleInterfaceThemeChangedNotification` -* `AppleAquaColorVariantChanged` -* `AppleColorPreferencesChangedNotification` -* `AppleShowScrollBarsSettingChanged` - -### `systemPreferences.unsubscribeNotification(id)` _macOS_ - -* `id` Integer - -`id`와 함께 구독자를 제거합니다. - -### `systemPreferences.subscribeLocalNotification(event, callback)` _macOS_ - -* `event` String -* `callback` Function - * `event` String - * `userInfo` Object - -`subscribeNotification`와 같습니다. 하지만 로컬 기본값에 대해 -`NSNotificationCenter`를 사용합니다. 이는 `NSUserDefaultsDidChangeNotification`와 -같은 이벤트에 대해 필수적입니다. - -### `systemPreferences.unsubscribeLocalNotification(id)` _macOS_ - -* `id` Integer - -`unsubscribeNotification`와 같지만, `NSNotificationCenter`에서 구독자를 제거합니다. - -### `systemPreferences.getUserDefault(key, type)` _macOS_ - -* `key` String -* `type` String - `string`, `boolean`, `integer`, `float`, `double`, `url`, - `array`, `dictionary` 값이 될 수 있습니다. - -시스템 설정에서 `key`에 해당하는 값을 가져옵니다. - -macOS에선 API가 `NSUserDefaults`를 읽어들입니다. 유명한 `key`와 `type`은 다음과 -같습니다: - -* `AppleInterfaceStyle: string` -* `AppleAquaColorVariant: integer` -* `AppleHighlightColor: string` -* `AppleShowScrollBars: string` -* `NSNavRecentPlaces: array` -* `NSPreferredWebServices: dictionary` -* `NSUserDictionaryReplacementItems: array` - -### `systemPreferences.isAeroGlassEnabled()` _Windows_ - -이 메서드는 [DWM 컴포지션][dwm-composition] (Aero Glass)가 활성화 되어있을 때 -`true`를 반환합니다. 아닌 경우 `false`를 반환합니다. - -다음은 투명한 윈도우를 만들지, 일반 윈도우를 만들지를 판단하여 윈도우를 생성하는 -예시입니다 (투명한 윈도우는 DWM 컴포지션이 비활성화되어있을 시 작동하지 않습니다): - -```javascript -const {BrowserWindow, systemPreferences} = require('electron') -let browserOptions = {width: 1000, height: 800} - -// 플랫폼이 지원하는 경우에만 투명 윈도우를 생성. -if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) { - browserOptions.transparent = true - browserOptions.frame = false -} - -// 원도우 생성 -let win = new BrowserWindow(browserOptions) - -// 페이지 로드. -if (browserOptions.transparent) { - win.loadURL(`file://${__dirname}/index.html`) -} else { - // 투명 윈도우 상태가 아니라면, 기본적인 스타일 사용 - win.loadURL(`file://${__dirname}/fallback.html`) -} -``` - -[dwm-composition]:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx - -### `systemPreferences.getAccentColor()` _Windows_ - -Returns `String` - 사용자 현재 시스템 전체 강조 색상 설정의 16진수 형식 RGBA 값. - -```javascript -const color = systemPreferences.getAccentColor() // `"aabbccdd"` -const red = color.substr(0, 2) // "aa" -const green = color.substr(2, 2) // "bb" -const blue = color.substr(4, 2) // "cc" -const alpha = color.substr(6, 2) // "dd" -``` - -### `systemPreferences.getColor(color)` _Windows_ - -* `color` String - 다음 값 중 하나: - * `3d-dark-shadow` - 3차원 요소의 어두운 그림자 색. - * `3d-face` - 3차원 요소와 대화상자 배경의 표면 색. - * `3d-highlight` - 3차원 요소의 가장 밝은 색. - * `3d-light` - 3차원 요소의 밝은 색. - * `3d-shadow` - 3차원 요소의 그림자 색. - * `active-border` - 활성창의 테두리 색. - * `active-caption` - 활성창의 제목줄. 그라데이션 효과가 활성화 되있으면 활성창 - 제목줄 그라데이션의 좌측 색. - * `active-caption-gradient` - 그라데이션 효과가 활성화 되있으면 활성창 제목줄 - 그라데이션의 우측 색. - * `app-workspace` - 다중 문서 인터페이스 (MDI) 애플리케이션의 배경색. - * `button-text` - 버튼의 글자색. - * `caption-text` - 제목줄, 크기 상자, 스크롤바 화살표 상자의 글자색. - * `desktop` - 데스크탑 배경 색. - * `disabled-text` - 회색 (비활성) 글자색. - * `highlight` - 컨트롤에서 선택된 항목(들)의 색. - * `highlight-text` - 컨트롤에서 선택된 항목(들)의 글자색. - * `hotlight` - 하이퍼링크 또는 실시간 추적되는 항목의 색. - * `inactive-border` - 비활성창의 테두리 색. - * `inactive-caption` - 비활성창의 제목줄. 그라데이션 효과가 활성화 되있으면 - 비활성창 제목줄 그라데이션의 좌측 색. - * `inactive-caption-gradient` - 그라데이션 효과가 활성화 되있으면 비활성창 - 제목줄 그라데이션의 좌측 색. - * `inactive-caption-text` - 비활성 제목줄의 글자색. - * `info-background` - 툴팁 컨트롤의 배경색. - * `info-text` - 툴팁 컨트롤의 글자색. - * `menu` - 메뉴 배경색. - * `menu-highlight` - 평면 메뉴일때 메뉴 항목 강조 색. - * `menubar` - 평면 메뉴일때 메뉴 막대의 배경색. - * `menu-text` - 메뉴의 글자. - * `scrollbar` - 스크롤바 회색 영역. - * `window` - 창의 배경. - * `window-frame` - 창 테두리. - * `window-text` - 창의 글자. - -Returns `String` - 16진수 RGB 형식 (`#ABCDEF`) 의 시스템 색상 설정. -자세한 내용은 [윈도우 문서][windows-colors]를 보세요. - -### `systemPreferences.isInvertedColorScheme()` _Windows_ - -Returns `Boolean` - 고대비 테마 같은 반전된 색상 스킴이 활성화 되있다면 `true`, -아니면 `false`. - -[windows-colors]:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724371(v=vs.85).aspx diff --git a/docs-translations/ko-KR/api/tray.md b/docs-translations/ko-KR/api/tray.md deleted file mode 100644 index 68a4ca5ce5bb..000000000000 --- a/docs-translations/ko-KR/api/tray.md +++ /dev/null @@ -1,233 +0,0 @@ -# Tray - -> 아이콘과 컨텍스트 메뉴를 시스템 알림 영역에 추가합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -```javascript -const {app, Menu, Tray} = require('electron') - -let tray = null -app.on('ready', () => { - tray = new Tray('/path/to/my/icon') // 현재 애플리케이션 디렉터리를 기준으로 하려면 `__dirname + '/images/tray.png'` 형식으로 입력해야 합니다. - const contextMenu = Menu.buildFromTemplate([ - {label: 'Item1', type: 'radio'}, - {label: 'Item2', type: 'radio'}, - {label: 'Item3', type: 'radio', checked: true}, - {label: 'Item4', type: 'radio'} - ]) - tray.setToolTip('이것은 나의 애플리케이션 입니다!') - tray.setContextMenu(contextMenu) -}) -``` - -__플랫폼별 한계:__ - -* Linux에서는 앱 알림 표시기(app indicator)가 지원되면 해당 기능을 사용합니다. 만약 - 지원하지 않으면 `GtkStatusIcon`을 대신 사용합니다. -* Linux 배포판이 앱 알림 표시기만 지원하고 있다면 `libappindicator1`를 설치하여 - 트레이 아이콘이 작동하도록 만들 수 있습니다. -* 앱 알림 표시기는 컨텍스트 메뉴를 가지고 있을 때만 보입니다. -* Linux에서 앱 표시기가 사용될 경우, `click` 이벤트는 무시됩니다. -* Windows에선 가장 좋은 시각적 효과를 얻기 위해 `ICO` 아이콘을 사용하는 것을 - 권장합니다. -* Linux에서 각각 개별 `MenuItem`의 변경을 적용하려면 `setContextMenu`를 다시 - 호출해야 합니다. 예를 들면: - -```javascript -contextMenu.items[2].checked = false -appIcon.setContextMenu(contextMenu) -``` - -이러한 이유로 Tray API가 모든 플랫폼에서 똑같이 작동하게 하고 싶다면 `click` 이벤트에 -의존해선 안되며 언제나 컨텍스트 메뉴를 포함해야 합니다. - -## Class: Tray - -`Tray`는 [EventEmitter][event-emitter]를 상속 받았습니다. - -### `new Tray(image)` - -* `image` [NativeImage](native-image.md) - -전달된 `image`를 이용하여 트레이 아이콘을 만듭니다. - -### Instance Events - -`Tray` 모듈은 다음과 같은 이벤트를 가지고 있습니다: - -#### Event: 'click' - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` [Rectangle](structures/rectangle.md) - 트레이 아이콘의 범위 - -트레이 아이콘이 클릭될 때 발생하는 이벤트입니다. - -#### Event: 'right-click' _macOS_ _Windows_ - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` [Rectangle](structures/rectangle.md) - 트레이 아이콘의 범위 - -트레이 아이콘을 오른쪽 클릭될 때 호출 됩니다. - -#### Event: 'double-click' _macOS_ _Windows_ - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` [Rectangle](structures/rectangle.md) - 트레이 아이콘의 범위 - -트레이 아이콘이 더블 클릭될 때 발생하는 이벤트입니다. - -#### Event: 'balloon-show' _Windows_ - -풍선 팝업이 보여질 때 발생하는 이벤트입니다. - -#### Event: 'balloon-click' _Windows_ - -풍선 팝업이 클릭될 때 발생하는 이벤트입니다. - -#### Event: 'balloon-closed' _Windows_ - -풍선 팝업이 시간이 지나 사라지거나 유저가 클릭하여 닫을 때 발생하는 이벤트입니다. - -#### Event: 'drop' _macOS_ - -드래그 가능한 아이템이 트레이 아이콘에 드롭되면 발생하는 이벤트입니다. - -#### Event: 'drop-files' _macOS_ - -* `event` Event -* `files` String[] - 드롭된 파일의 경로 - -트레이 아이콘에 파일이 드롭되면 발생하는 이벤트입니다. - -#### Event: 'drop-text' _macOS_ - -* `event` Event -* `text` String - 드롭된 텍스트의 문자열 - -드래그된 텍스트가 트레이 아이콘에 드롭되면 발생하는 이벤트입니다. - -#### Event: 'drag-enter' _macOS_ - -트레이 아이콘에 드래그 작업이 시작될 때 발생하는 이벤트입니다. - -#### Event: 'drag-leave' _macOS_ - -트레이 아이콘에 드래그 작업이 종료될 때 발생하는 이벤트입니다. - -#### Event: 'drag-end' _macOS_ - -트레이 아이콘에 드래그 작업이 종료되거나 다른 위치에서 종료될 때 발생하는 이벤트입니다. - -### Instance Methods - -`Tray` 클래스는 다음과 같은 메서드를 가지고 있습니다: - -#### `tray.destroy()` - -트레이 아이콘을 즉시 삭제시킵니다. - -#### `tray.setImage(image)` - -* `image` [NativeImage](native-image.md) - -`image`를 사용하여 트레이 아이콘의 이미지를 설정합니다. - -#### `tray.setPressedImage(image)` _macOS_ - -* `image` [NativeImage](native-image.md) - -`image`를 사용하여 트레이 아이콘이 눌렸을 때의 이미지를 설정합니다. - -#### `tray.setToolTip(toolTip)` - -* `toolTip` String - -트레이 아이콘의 툴팁 텍스트를 설정합니다. - -#### `tray.setTitle(title)` _macOS_ - -* `title` String - -상태바에서 트레이 아이콘 옆에 표시되는 제목 텍스트를 설정합니다. - -#### `tray.setHighlightMode(mode)` _macOS_ - -* `mode` String - 다음 값 중 하나가 될 수 있는 하이라이트 모드: - * `selection` - 트레이 아이콘이 클릭되었을 때와 콘텍스트 메뉴가 열렸을 때 - 하이라이트를 적용합니다. 이 값이 기본값입니다. - * `always` - 언제나 트레이 아이콘에 하이라이트를 적용합니다. - * `never` - 트레이 아이콘에 하이라이트를 아예 적용하지 않습니다. - -트레이 아이콘의 배경이 하이라이팅될 때를 지정합니다. (파란색) - -**참고:** [`BrowserWindow`](browser-window.md)와 함께 `highlightMode`를 윈도우 -가시성에 따라 `'never'`와 `'always'` 사이에서 키거나 끌 수 있습니다. - -```javascript -const {BrowserWindow, Tray} = require('electron') - -const win = new BrowserWindow({width: 800, height: 600}) -const tray = new Tray('/path/to/my/icon') - -tray.on('click', () => { - win.isVisible() ? win.hide() : win.show() -}) -win.on('show', () => { - tray.setHighlightMode('always') -}) -win.on('hide', () => { - tray.setHighlightMode('never') -}) -``` - -#### `tray.displayBalloon(options)` _Windows_ - -* `options` Object - * `icon` [NativeImage](native-image.md) - * `title` String - * `content` String - -트레이에 풍선 팝업을 생성합니다. - -#### `tray.popUpContextMenu([menu, position])` _macOS_ _Windows_ - -* `menu` Menu (optional) -* `position` Object (optional) - 팝업 메뉴의 위치 - * `x` Integer - * `y` Integer - -트레이 아이콘의 컨텍스트 메뉴를 팝업시킵니다. `menu`가 전달되면, `menu`가 트레이 -아이콘의 컨텍스트 메뉴 대신 표시됩니다. - -`position`은 Windows에서만 사용할 수 있으며 기본값은 (0, 0)입니다. - -#### `tray.setContextMenu(menu)` - -* `menu` Menu - -트레이에 컨텍스트 메뉴를 설정합니다. - -#### `tray.getBounds()` _macOS_ _Windows_ - -Returns [`Rectangle`](structures/rectangle.md) - -이 트레이 아이콘의 `Object` 형식의 `bounds`. - -#### `tray.isDestroyed()` - -Returns `Boolean` - 트레이 아이콘이 소멸되었는지 여부. - -[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter diff --git a/docs-translations/ko-KR/api/web-contents.md b/docs-translations/ko-KR/api/web-contents.md deleted file mode 100644 index 09bd4f58bf84..000000000000 --- a/docs-translations/ko-KR/api/web-contents.md +++ /dev/null @@ -1,1254 +0,0 @@ -# webContents - -> 웹 페이지를 렌더링하고 제어합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -`webContents`는 [EventEmitter](http://nodejs.org/api/events.html#events_class_eventemitter)를 -상속받았습니다. 웹 페이지의 렌더링과 관리를 책임지며 -[`BrowserWindow`](browser-window.md)의 속성입니다. 다음은 `webContents` 객체에 -접근하는 예시입니다: - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({width: 800, height: 1500}) -win.loadURL('http://github.com') - -let contents = win.webContents -console.log(contents) -``` - -## Methods - -다음 메서드는 `webContents` 모듈에서 접근할 수 있는 메서드입니다: - -```javascript -const {webContents} = require('electron') -console.log(webContents) -``` - -#### `webContents.getAllWebContents()` - -Returns `WebContents[]` - 모든 `WebContents` 인스턴스의 배열. 이 배열은 윈도우, -웹뷰, 열린 개발자 도구 그리고 백그라운드 페이지의 개발자 도구 확장 기능의 모든 -웹 콘텐츠를 포함합니다. - -#### `webContents.getFocusedWebContents()` - -Returns `WebContents` - 이 애플리케이션에서 포커스되어있는 웹 콘텐츠. 없을 경우 -`null` 을 반환합니다. - -### `webContents.fromId(id)` - -* `id` Integer - -Returns `WebContents` - ID 에 해당하는 WebContens 인스턴스. - -## Class: WebContents - -> BrowserWindow 인스턴스의 콘텐츠를 표시하고 제어합니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -### Instance Events - -#### Event: 'did-finish-load' - -탐색 작업이 끝났을 때 발생하는 이벤트입니다. 브라우저의 탭의 스피너가 멈추고 `onload` -이벤트가 발생했을 때를 말합니다. - -### Event: 'did-fail-load' - -Returns: - -* `event` Event -* `errorCode` Integer -* `errorDescription` String -* `validatedURL` String -* `isMainFrame` Boolean - -이 이벤트는 `did-finish-load`와 비슷하나, 로드가 실패했거나 취소되었을 때 발생합니다. -예를 들면 `window.stop()`이 실행되었을 때 발생합니다. 발생할 수 있는 전체 에러 코드의 -목록과 설명은 [여기서](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h) -확인할 수 있습니다. 참고로 리다이렉트 응답은 `errorCode` -3과 함께 발생합니다; 이 -에러는 명시적으로 무시할 수 있습니다. - -#### Event: 'did-frame-finish-load' - -Returns: - -* `event` Event -* `isMainFrame` Boolean - -프레임(Frame)이 탐색을 끝냈을 때 발생하는 이벤트입니다. - -#### Event: 'did-start-loading' - -브라우저 탭의 스피너가 회전을 시작한 때와 같은 시점에 대응하는 이벤트입니다. - -#### Event: 'did-stop-loading' - -브라우저 탭의 스피너가 회전을 멈추었을 때와 같은 시점에 대응하는 이벤트입니다. - -#### Event: 'did-get-response-details' - -Returns: - -* `event` Event -* `status` Boolean -* `newURL` String -* `originalURL` String -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object -* `resourceType` String - -요청한 리소스에 관련된 자세한 정보를 사용할 수 있을 때 발생하는 이벤트입니다. -`status`는 리소스를 다운로드하기 위한 소켓 연결을 나타냅니다. - -#### Event: 'did-get-redirect-request' - -Returns: - -* `event` Event -* `oldURL` String -* `newURL` String -* `isMainFrame` Boolean -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object - -리소스를 요청하는 동안에 리다이렉트 응답을 받았을 때 발생하는 이벤트입니다. - -#### Event: 'dom-ready' - -Returns: - -* `event` Event - -주어진 프레임의 문서가 로드되었을 때 발생하는 이벤트입니다. - -#### Event: 'page-favicon-updated' - -Returns: - -* `event` Event -* `favicons` String[] - URL 배열 - -페이지가 favicon(파비콘) URL을 받았을 때 발생하는 이벤트입니다. - -#### Event: 'new-window' - -Returns: - -* `event` Event -* `url` String -* `frameName` String -* `disposition` String - `default`, `foreground-tab`, `background-tab`, - `new-window`, `save-to-disk`, `other`중 하나일 수 있습니다. -* `options` Object - 새로운 `BrowserWindow` 객체를 만들 때 사용되는 옵션 - 객체입니다. -* `additionalFeatures` String[] - `window.open()` 에 주어진 (Chromium 또는 - Electron 에 의해 처리되지 않는) 비표준 기능. - -페이지가 `url`에 대하여 새로운 윈도우를 열기위해 요청한 경우 발생하는 이벤트입니다. -`window.open`이나 ``과 같은 외부 링크에 의해 요청될 수 있습니다. - -기본값으로 `BrowserWindow`는 `url`을 기반으로 생성됩니다. - -`event.preventDefault()`를 호출하면 새로운 창이 생성되는 것을 방지할 수 -있습니다. 이 경우, `event.newGuest` 는 Electron 의 런타임에 의해 사용할 수 있게 -`BrowserWindow` 인스턴스에 대한 참조를 설정할 수 있습니다. - -#### Event: 'will-navigate' - -Returns: - -* `event` Event -* `url` String - -사용자 또는 페이지가 새로운 페이지로 이동할 때 발생하는 이벤트입니다. -`window.location` 객체가 변경되거나 사용자가 페이지의 링크를 클릭했을 때 발생합니다. - -이 이벤트는 `webContents.loadURL`과 `webContents.back` 같은 API를 이용한 -프로그램적으로 시작된 탐색에 대해서는 발생하지 않습니다. - -이 이벤트는 앵커 링크를 클릭하거나 `window.location.hash`의 값을 변경하는 등의 페이지 -내 탐색시엔 발생하지 않습니다. 대신 `did-navigate-in-page` 이벤트를 사용해야 합니다. - -`event.preventDefault()`를 호출하면 탐색을 방지할 수 있습니다. - -#### Event: 'did-navigate' - -Returns: - -* `event` Event -* `url` String - -탐색이 완료되면 발생하는 이벤트입니다. - -이 이벤트는 앵커 링크를 클릭하거나 `window.location.hash`의 값을 변경하는 등의 페이지 -내 탐색시엔 발생하지 않습니다. 대신 `did-navigate-in-page` 이벤트를 사용해야 합니다. - -#### Event: 'did-navigate-in-page' - -Returns: - -* `event` Event -* `url` String -* `isMainFrame` Boolean - -페이지 내의 탐색이 완료되면 발생하는 이벤트입니다. - -페이지 내의 탐색이 발생하면 페이지 URL이 변경되지만 페이지 밖으로의 탐색은 일어나지 -않습니다. 예를 들어 앵커 링크를 클릭했을 때, 또는 DOM `hashchange` 이벤트가 발생했을 -때로 볼 수 있습니다. - -#### Event: 'crashed' - -Returns: - -* `event` Event -* `killed` Boolean - -렌더러 프로세스가 충돌하거나 종료될 때 발생되는 이벤트입니다. - -#### Event: 'plugin-crashed' - -Returns: - -* `event` Event -* `name` String -* `version` String - -플러그인 프로세스가 예기치 못하게 종료되었을 때 발생되는 이벤트입니다. - -#### Event: 'destroyed' - -`webContents`가 소멸될 때 발생되는 이벤트입니다. - -#### Event: 'devtools-opened' - -개발자 도구가 열렸을 때 발생되는 이벤트입니다. - -#### Event: 'devtools-closed' - -개발자 도구가 닫혔을 때 발생되는 이벤트입니다. - -#### Event: 'devtools-focused' - -개발자 도구에 포커스가 가거나 개발자 도구가 열렸을 때 발생되는 이벤트입니다. - -#### Event: 'certificate-error' - -Returns: - -* `event` Event -* `url` URL -* `error` String - 에러 코드 -* `certificate` [Certificate](structures/certificate.md) -* `callback` Function - * `isTrusted` Boolean - 인증서가 신뢰할 수 있는 것으로 간주할 수 있는지 여부를 - 나타냅니다 - -`url`에 대한 `certificate` 인증서의 유효성 검증에 실패했을 때 발생하는 이벤트입니다. - -사용법은 [`app`의 `certificate-error` 이벤트](app.md#event-certificate-error)와 -같습니다. - -#### Event: 'select-client-certificate' - -Returns: - -* `event` Event -* `url` URL -* `certificateList` [Certificate[]](structures/certificate.md) -* `callback` Function - * `certificate` [Certificate](structures/certificate.md) - 인증서는 주어진 - 목록에 있어야합니다. - -클라이언트 인증이 요청되었을 때 발생하는 이벤트입니다. - -사용법은 [`app`의 `select-client-certificate` 이벤트](app.md#event-select-client-certificate)와 -같습니다. - -#### Event: 'login' - -Returns: - -* `event` Event -* `request` Object - * `method` String - * `url` URL - * `referrer` URL -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - * `username` String - * `password` String - -`webContents`가 기본 인증을 수행하길 원할 때 발생되는 이벤트입니다. - -[`app`의 `login`이벤트](app.md#event-login)와 사용 방법은 같습니다. - -#### Event: 'found-in-page' - -Returns: - -* `event` Event -* `result` Object - * `requestId` Integer - * `finalUpdate` Boolean - 더 많은 응답이 따르는 경우를 표시합니다. - * `activeMatchOrdinal` Integer (optional) - 활성화 일치의 위치. - * `matches` Integer (optional) - 일치하는 개수. - * `selectionArea` Object (optional) - 첫 일치 부위의 좌표. - -[`webContents.findInPage`] 요청의 결과를 -사용할 수 있을 때 발생하는 이벤트입니다. - -#### Event: 'media-started-playing' - -미디어가 재생되기 시작할 때 발생하는 이벤트입니다. - -#### Event: 'media-paused' - -미디어가 중지되거나 재생이 완료되었을 때 발생하는 이벤트입니다. - -#### Event: 'did-change-theme-color' - -페이지의 테마 색이 변경될 때 발생하는 이벤트입니다. 이 이벤트는 보통 meta 태그에 -의해서 발생합니다: - -```html - -``` - -#### Event: 'update-target-url' - -Returns: - -* `event` Event -* `url` String - -마우스나 키보드를 사용해 링크에 포커스할 때 발생하는 이벤트입니다. - -#### Event: 'cursor-changed' - -Returns: - -* `event` Event -* `type` String -* `image` NativeImage (optional) -* `scale` Float (optional) - 커스텀 커서의 스케일링 수치 -* `size` Object (optional) - `image`의 사이즈 - * `width` Integer - * `height` Integer -* `hotspot` Object (optional) - 커스텀 커서의 핫스팟 좌표 - * `x` Integer - x 좌표 - * `y` Integer - y 좌표 - -커서 종류가 변경될 때 발생하는 이벤트입니다. `type` 인수는 다음 값이 될 수 있습니다: -`default`, `crosshair`, `pointer`, `text`, `wait`, `help`, `e-resize`, `n-resize`, -`ne-resize`, `nw-resize`, `s-resize`, `se-resize`, `sw-resize`, `w-resize`, -`ns-resize`, `ew-resize`, `nesw-resize`, `nwse-resize`, `col-resize`, -`row-resize`, `m-panning`, `e-panning`, `n-panning`, `ne-panning`, `nw-panning`, -`s-panning`, `se-panning`, `sw-panning`, `w-panning`, `move`, `vertical-text`, -`cell`, `context-menu`, `alias`, `progress`, `nodrop`, `copy`, `none`, -`not-allowed`, `zoom-in`, `zoom-out`, `grab`, `grabbing`, `custom`. - -만약 `type` 인수가 `custom` 이고 `image` 인수가 `NativeImage`를 통한 커스텀 -커서를 지정했을 때, 해당 이미지로 커서가 변경됩니다. 또한 `scale`, `size` 그리고 -`hotspot` 인수는 커스텀 커서의 추가적인 정보를 포함합니다. - -#### Event: 'context-menu' - -Returns: - -* `event` Event -* `params` Object - * `x` Integer - x 좌표 - * `y` Integer - y 좌표 - * `linkURL` String - 컨텍스트 메뉴가 호출된 노드를 둘러싸는 링크의 URL. - * `linkText` String - 링크에 연관된 텍스트. 콘텐츠의 링크가 이미지인 경우 빈 - 문자열이 됩니다. - * `pageURL` String - 컨텍스트 메뉴가 호출된 상위 수준 페이지의 URL. - * `frameURL` String - 컨텍스트 메뉴가 호출된 서브 프레임의 URL. - * `srcURL` String - 컨텍스트 메뉴가 호출된 요소에 대한 소스 URL. 요소와 소스 URL은 - 이미지, 오디오, 비디오입니다. - * `mediaType` String - 컨텍스트 메뉴가 호출된 노드의 종류. 값은 `none`, `image`, - `audio`, `video`, `canvas`, `file` 또는 `plugin`이 될 수 있습니다. - * `hasImageContents` Boolean - 컨텍스트 메뉴가 내용이 있는 이미지에서 호출되었는지 - 여부. - * `isEditable` Boolean - 컨텍스트를 편집할 수 있는지 여부. - * `selectionText` String - 컨텍스트 메뉴가 호출된 부분에 있는 선택된 텍스트. - * `titleText` String - 컨텍스트 메뉴가 호출된 선택된 제목 또는 알림 텍스트. - * `misspelledWord` String - 만약 있는 경우, 커서가 가르키는 곳에서 발생한 오타. - * `frameCharset` String - 메뉴가 호출된 프레임의 문자열 인코딩. - * `inputFieldType` String - 컨텍스트 메뉴가 입력 필드에서 호출되었을 때, 그 필드의 - 종류. 값은 `none`, `plainText`, `password`, `other` 중 한 가지가 될 수 있습니다. - * `menuSourceType` String - 컨텍스트 메뉴를 호출한 입력 소스. 값은 `none`, - `mouse`, `keyboard`, `touch`, `touchMenu` 중 한 가지가 될 수 있습니다. - * `mediaFlags` Object - 컨텍스트 메뉴가 호출된 미디어 요소에 대한 플래그. - * `inError` Boolean - 미디어 객체가 크래시되었는지 여부. - * `isPaused` Boolean - 미디어 객체가 일시중지되었는지 여부. - * `isMuted` Boolean - 미디어 객체가 음소거되었는지 여부. - * `hasAudio` Boolean - 미디어 객체가 오디오를 가지고 있는지 여부. - * `isLooping` Boolean - 미디어 객체가 루프중인지 여부. - * `isControlsVisible` Boolean - 미디어 객체의 컨트롤이 보이는지 여부. - * `canToggleControls` Boolean - 미디어 객체의 컨트롤을 토글할 수 있는지 여부. - * `canRotate` Boolean - 미디어 객체를 돌릴 수 있는지 여부. - * `editFlags` Object - 이 플래그는 렌더러가 어떤 행동을 이행할 수 있는지 여부를 - 표시합니다. - * `canUndo` Boolean - 렌더러에서 실행 취소할 수 있는지 여부. - * `canRedo` Boolean - 렌더러에서 다시 실행할 수 있는지 여부. - * `canCut` Boolean - 렌더러에서 잘라내기를 실행할 수 있는지 여부. - * `canCopy` Boolean - 렌더러에서 복사를 실행할 수 있는지 여부. - * `canPaste` Boolean - 렌더러에서 붙여넣기를 실행할 수 있는지 여부. - * `canDelete` Boolean - 렌더러에서 삭제를 실행할 수 있는지 여부. - * `canSelectAll` Boolean - 렌더러에서 모두 선택을 실행할 수 있는지 여부. - -새로운 컨텍스트 메뉴의 제어가 필요할 때 발생하는 이벤트입니다. - -#### Event: 'select-bluetooth-device' - -Returns: - -* `event` Event -* `devices` [BluetoothDevice[]](structures/bluetooth-device.md) -* `callback` Function - * `deviceId` String - -`navigator.bluetooth.requestDevice`의 호출에 의해 블루투스 기기가 선택되어야 할 때 -발생하는 이벤트입니다. `navigator.bluetooth` API를 사용하려면 `webBluetooth`가 -활성화되어 있어야 합니다. 만약 `event.preventDefault`이 호출되지 않으면, 첫 번째로 -사용 가능한 기기가 선택됩니다. `callback`은 반드시 선택될 `deviceId`와 함께 -호출되어야 하며, 빈 문자열을 `callback`에 보내면 요청이 취소됩니다. - -```javascript -const {app, webContents} = require('electron') -app.commandLine.appendSwitch('enable-web-bluetooth') - -app.on('ready', () => { - webContents.on('select-bluetooth-device', (event, deviceList, callback) => { - event.preventDefault() - let result = deviceList.find((device) => { - return device.deviceName === 'test' - }) - if (!result) { - callback('') - } else { - callback(result.deviceId) - } - }) -}) -``` - -#### Event: 'paint' - -Returns: - -* `event` Event -* `dirtyRect` Object - * `x` Integer - 이미지의 x 좌표. - * `y` Integer - 이미지의 y 좌표. - * `width` Integer - Dirty 영역의 너비. - * `height` Integer - Dirty 영역의 높이. -* `image` [NativeImage](native-image.md) - 전체 프레임의 이미지 데이터. - -새 프레임이 생성되었을 때 발생하는 이벤트입니다. Dirty 영역만이 버퍼로 전달됩니다. - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({webPreferences: {offscreen: true}}) -win.webContents.on('paint', (event, dirty, image) => { - // updateBitmap(dirty, image.toBitmap()) -}) -win.loadURL('http://github.com') -``` - -### Instance Methods - -#### `contents.loadURL(url[, options])` - -* `url` URL -* `options` Object (optional) - * `httpReferrer` String - HTTP 레퍼러 url. - * `userAgent` String - 요청을 시작한 유저 에이전트. - * `extraHeaders` String - "\n"로 구분된 Extra 헤더들. - -윈도우에 웹 페이지 `url`을 로드합니다. `url`은 `http://`, `file://`과 같은 -프로토콜 접두사를 가지고 있어야 합니다. 만약 반드시 http 캐시를 사용하지 않고 로드해야 -하는 경우 `pragma` 헤더를 사용할 수 있습니다. - -```javascript -const {webContents} = require('electron') -const options = {extraHeaders: 'pragma: no-cache\n'} -webContents.loadURL(url, options) -``` - -#### `contents.downloadURL(url)` - -* `url` URL - -`url`의 리소스를 탐색 없이 다운로드를 시작합니다. `session`의 `will-download` -이벤트가 발생합니다. - -#### `contents.getURL()` - -현재 웹 페이지의 URL을 반환합니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('http://github.com') - -let currentURL = win.webContents.getURL() -console.log(currentURL) -``` - -#### `contents.getTitle()` - -현재 웹 페이지의 제목을 반환합니다. - -#### `win.isDestroyed()` - -윈도우가 소멸되었는지 여부를 반환합니다. - -#### `contents.isFocused()` - -웹 페이지가 포커스되어있는지 여부를 반환합니다. - -#### `contents.isLoading()` - -현재 웹 페이지가 리소스를 로드중인지 여부를 반환합니다. - -#### `contents.isLoadingMainFrame()` - -메인 프레임이 여전히 로딩중인지 여부를 반환합니다. (내부 iframe 또는 frame 포함) - -#### `contents.isWaitingForResponse()` - -현재 웹 페이지가 페이지의 메인 리소스로부터 첫 응답을 기다리고있는지 여부를 반환합니다. - -#### `contents.stop()` - -대기중인 탐색 작업을 모두 멈춥니다. - -#### `contents.reload()` - -현재 웹 페이지를 새로고침합니다. - -#### `contents.reloadIgnoringCache()` - -현재 웹 페이지의 캐시를 무시한 채로 새로고침합니다. - -#### `contents.canGoBack()` - -브라우저가 이전 웹 페이지로 돌아갈 수 있는지 여부를 반환합니다. - -#### `contents.canGoForward()` - -브라우저가 다음 웹 페이지로 이동할 수 있는지 여부를 반환합니다. - -#### `contents.canGoToOffset(offset)` - -* `offset` Integer - -웹 페이지가 `offset`로 이동할 수 있는지 여부를 반환합니다. - -#### `contents.clearHistory()` - -탐색 기록을 삭제합니다. - -#### `contents.goBack()` - -브라우저가 이전 웹 페이지로 이동하게 합니다. - -#### `contents.goForward()` - -브라우저가 다음 웹 페이지로 이동하게 합니다. - -#### `contents.goToIndex(index)` - -* `index` Integer - -브라우저가 지정된 절대 웹 페이지 인덱스로 탐색하게 합니다. - -#### `contents.goToOffset(offset)` - -* `offset` Integer - -"current entry"에서 지정된 offset으로 탐색합니다. - -#### `contents.isCrashed()` - -렌더러 프로세스가 예기치 않게 종료되었는지 여부를 반환합니다. - -#### `contents.setUserAgent(userAgent)` - -* `userAgent` String - -현재 웹 페이지의 유저 에이전트를 덮어씌웁니다. - -#### `contents.getUserAgent()` - -현재 웹 페이지의 유저 에이전트 문자열을 반환합니다. - -#### `contents.insertCSS(css)` - -* `css` String - -CSS 코드를 현재 웹 페이지에 삽입합니다. - -#### `contents.executeJavaScript(code[, userGesture, callback])` - -* `code` String -* `userGesture` Boolean (optional) -* `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다. - * `result` Any - -Returns `Promise` - 프로미스는 실행된 코드의 결과와 함께 해결되거나 코드의 -결과가 거절된 프로미스라면 거절된다. - -페이지의 `code` 를 실행합니다. - -브라우저 창에서 `requestFullScreen` 같은 일부 HTML API 들은 사용자 조작에 -의해서만 호출될 수 있습니다. `userGesture` 를 `true` 로 설정하면 이러한 제약을 -없앨 수 있습니다. - -실행된 코드의 결과가 프로미스라면 콜백 결과는 프로미스의 결과 값입니다. -프로미스의 반환된 결과 코드를 처리하기위해 반환된 프로미스를 사용하는 것이 -좋습니다. - -```js -contents.executeJavaScript('fetch("https://jsonplaceholder.typicode.com/users/1").then(resp => resp.json())', true) - .then((result) => { - console.log(result) // fetch 호출의 결과인 JSON 객체가 올 것 입니다 - }) -``` - -#### `contents.setAudioMuted(muted)` - -* `muted` Boolean - -현재 웹 페이지의 소리를 음소거합니다. - -#### `contents.isAudioMuted()` - -현재 페이지가 음소거 되어있는지 여부를 반환합니다. - -#### `contents.setZoomFactor(factor)` - -* `factor` Number - 줌 수치. - -지정한 수치로 줌 수치를 변경합니다. 줌 수치는 100으로 나눈 값이며 300%는 3.0이 됩니다. - -#### `contents.getZoomFactor(callback)` - -* `callback` Function - * `zoomFactor` Number - -현재 줌 수치 값을 요청합니다. `callback`은 `callback(zoomFactor)` 형태로 호출됩니다. - -#### `contents.setZoomLevel(level)` - -* `level` Number - 줌 레벨. - -지정한 수준으로 줌 수준을 변경합니다. 원본 크기는 0이고 각 값의 증가와 감소는 현재 줌을 -20% 크거나 작게 표현하고 각 크기는 원본 크기의 300%와 50%로 제한됩니다. - -#### `contents.getZoomLevel(callback)` - -* `callback` Function - * `zoomLevel` Number - -현재 줌 수준 값을 요청합니다. `callback`은 `callback(zoomLevel)` 형태로 호출됩니다. - -#### `contents.setZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -최대와 최소 값의 줌 수준 값을 지정합니다. - -#### `contents.undo()` - -웹 페이지에서 `undo` 편집 커맨드를 실행합니다. - -#### `contents.redo()` - -웹 페이지에서 `redo` 편집 커맨드를 실행합니다. - -#### `contents.cut()` - -웹 페이지에서 `cut` 편집 커맨드를 실행합니다. - -#### `contents.copy()` - -웹 페이지에서 `copy` 편집 커맨드를 실행합니다. - -### `contents.copyImageAt(x, y)` - -* `x` Integer -* `y` Integer - -주어진 위치에 있는 이미지를 클립보드로 복사합니다. - -#### `contents.paste()` - -웹 페이지에서 `paste` 편집 커맨드를 실행합니다. - -#### `contents.pasteAndMatchStyle()` - -웹 페이지에서 `pasteAndMatchStyle` 편집 커맨드를 실행합니다. - -#### `contents.delete()` - -웹 페이지에서 `delete` 편집 커맨드를 실행합니다. - -#### `contents.selectAll()` - -웹 페이지에서 `selectAll` 편집 커맨드를 실행합니다. - -#### `contents.unselect()` - -웹 페이지에서 `unselect` 편집 커맨드를 실행합니다. - -#### `contents.replace(text)` - -* `text` String - -웹 페이지에서 `replace` 편집 커맨드를 실행합니다. - -#### `contents.replaceMisspelling(text)` - -* `text` String - -웹 페이지에서 `replaceMisspelling` 편집 커맨드를 실행합니다. - -#### `contents.insertText(text)` - -* `text` String - -포커스된 요소에 `text`를 삽입합니다. - -#### `contents.findInPage(text[, options])` - -* `text` String - 찾을 콘텐츠, 반드시 공백이 아니여야 합니다. -* `options` Object (optional) - * `forward` Boolean - 앞에서부터 검색할지 뒤에서부터 검색할지 여부입니다. 기본값은 - `true`입니다. - * `findNext` Boolean - 작업을 계속 처리할지 첫 요청만 처리할지 여부입니다. 기본값은 - `false`입니다. - * `matchCase` Boolean - 검색이 대소문자를 구분할지 여부입니다. 기본값은 - `false`입니다. - * `wordStart` Boolean - 단어의 시작 부분만 볼 지 여부입니다. 기본값은 - `false`입니다. - * `medialCapitalAsWordStart` Boolean - `wordStart`와 합쳐질 때, 소문자 또는 - 비문자가 따라붙은 대문자로 일치가 시작하는 경우 단어 중간의 일치를 허용합니다. - 여러가지 다른 단어 내의 일치를 허용합니다. 기본값은 `false`입니다. - -웹 페이지에서 `text`에 일치하는 모든 대상을 찾는 요청을 시작하고 요청에 사용된 요청을 -표현하는 `정수(integer)`를 반환합니다. 요청의 결과는 -[`found-in-page`](web-contents.md#event-found-in-page) 이벤트를 통해 취득할 수 -있습니다. - -#### `contents.stopFindInPage(action)` - -* `action` String - [`webContents.findInPage`] - 요청이 종료되었을 때 일어날 수 있는 작업을 지정합니다. - * `clearSelection` - 선택을 취소합니다. - * `keepSelection` - 선택을 일반 선택으로 변경합니다. - * `activateSelection` - 포커스한 후 선택된 노드를 클릭합니다. - -제공된 `action`에 대한 `webContents`의 모든 `findInPage` 요청을 중지합니다. - -```javascript -const {webContents} = require('electron') -webContents.on('found-in-page', (event, result) => { - if (result.finalUpdate) webContents.stopFindInPage('clearSelection') -}) - -const requestId = webContents.findInPage('api') -console.log(requestId) -``` - -#### `contents.capturePage([rect, ]callback)` - -* `rect` Object (optional) - 캡쳐할 페이지의 영역 - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer -* `callback` Function - -페이지의 스크린샷을 `rect`에 설정한 만큼 캡처합니다. 캡처가 완료되면 `callback`이 -`callback(image)` 형식으로 호출됩니다. `image`는 [NativeImage](native-image.md)의 -인스턴스이며 스크린샷 데이터를 담고있습니다. `rect`를 생략하면 페이지 전체를 캡처합니다. - -#### `contents.hasServiceWorker(callback)` - -* `callback` Function - * `hasWorker` Boolean - -ServiceWorker가 등록되어있는지 확인하고 `callback`에 대한 응답으로 boolean 값을 -반환합니다. - -#### `contents.unregisterServiceWorker(callback)` - -* `callback` Function - * `success` Boolean - -ServiceWorker가 존재하면 모두 등록을 해제하고 JS Promise가 만족될 때 `callback`에 -대한 응답으로 boolean을 반환하거나 JS Promise가 만족되지 않을 때 `false`를 반환합니다. - -#### `contents.print([options])` - -`options` Object (optional) - * `silent` Boolean - 사용자에게 프린트 설정을 묻지 않습니다. 기본값을 `false`입니다. - * `printBackground` Boolean - 웹 페이지의 배경 색과 이미지를 출력합니다. 기본값은 - `false`입니다. - -윈도우의 웹 페이지를 프린트합니다. `silent`가 `true`로 지정되어있을 땐, Electron이 -시스템의 기본 프린터와 기본 프린터 설정을 가져옵니다. - -웹 페이지에서 `window.print()`를 호출하는 것은 -`webContents.print({silent: false, printBackground: false})`를 호출하는 것과 -같습니다. - -#### `contents.printToPDF(options, callback)` - -* `options` Object - * `marginsType` Integer - 사용할 마진의 종류를 지정합니다. 0 부터 2 사이 값을 사용할 - 수 있고 각각 기본 마진, 마진 없음, 최소 마진입니다. - * `pageSize` String - 생성되는 PDF의 페이지 크기를 지정합니다. 값은 `A3`, `A4`, - `A5`, `Legal`, `Letter`, `Tabloid` 또는 마이크론 단위의 `height` & `width`가 - 포함된 객체를 사용할 수 있습니다. - * `printBackground` Boolean - CSS 배경을 프린트할지 여부를 정합니다. - * `printSelectionOnly` Boolean - 선택된 영역만 프린트할지 여부를 정합니다. - * `landscape` Boolean - landscape을 위해선 `true`를, portrait를 위해선 `false`를 - 사용합니다. -* `callback` Function - `(error, data) => {}` - * `error` Error - * `data` Buffer - -Chromium의 미리보기 프린팅 커스텀 설정을 이용하여 윈도우의 웹 페이지를 PDF로 -프린트합니다. - -`callback`은 작업이 완료되면 `callback(error, data)` 형식으로 호출됩니다. `data`는 -생성된 PDF 데이터를 담고있는 `Buffer`입니다. - -기본으로 비어있는 `options`은 다음과 같이 여겨지게 됩니다: - -```javascript -{ - marginsType: 0, - printBackground: false, - printSelectionOnly: false, - landscape: false -} -``` - -다음은 `webContents.printToPDF`의 예시입니다: - -```javascript -const {BrowserWindow} = require('electron') -const fs = require('fs') - -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('http://github.com') - -win.webContents.on('did-finish-load', () => { - // 기본 프린트 옵션을 사용합니다 - win.webContents.printToPDF({}, (error, data) => { - if (error) throw error - fs.writeFile('/tmp/print.pdf', data, (error) => { - if (error) throw error - console.log('Write PDF successfully.') - }) - }) -}) -``` - -#### `contents.addWorkSpace(path)` - -* `path` String - -특정 경로를 개발자 도구의 워크스페이스에 추가합니다. 반드시 개발자 도구의 생성이 완료된 -이후에 사용해야 합니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.webContents.on('devtools-opened', () => { - win.webContents.addWorkSpace(__dirname) -}) -``` - -#### `contents.removeWorkSpace(path)` - -* `path` String - -특정 경로를 개발자 도구의 워크스페이스에서 제거합니다. - -#### `contents.openDevTools([options])` - -* `options` Object (optional) - * `detach` Boolean - 새 창에서 개발자 도구를 엽니다. - * `mode` String - 개발자 도구 표시 상태를 지정합니다. 옵션은 "right", "bottom", - "undocked", "detach"가 될 수 있습니다. 기본값은 마지막 표시 상태를 - 사용합니다. `undocked` 모드에선 다시 도킹할 수 있습니다. 하지만 `detach` - 모드에선 할 수 없습니다. - -개발자 도구를 엽니다. - -#### `contents.closeDevTools()` - -개발자 도구를 닫습니다. - -#### `contents.isDevToolsOpened()` - -개발자 도구가 열려있는지 여부를 반환합니다. - -#### `contents.isDevToolsFocused()` - -개발자 도구에 포커스 되어있는지 여부를 반환합니다. - -#### `contents.toggleDevTools()` - -개발자 도구를 토글합니다. - -#### `contents.inspectElement(x, y)` - -* `x` Integer -* `y` Integer - -(`x`, `y`)위치의 요소를 조사합니다. - -#### `contents.inspectServiceWorker()` - -서비스 워커 컨텍스트(service worker context)를 위한 개발자 도구를 엽니다. - -#### `contents.send(channel[, arg1][, arg2][, ...])` - -* `channel` String - -`channel`을 통하여 렌더러 프로세스에 비동기 메시지를 보냅니다. 임의의 인수를 보낼수도 -있습니다. 인수들은 내부적으로 JSON 포맷으로 직렬화 되며, 이후 함수와 프로토타입 체인은 -포함되지 않게 됩니다. - -렌더러 프로세스는 `ipcRenderer` 모듈을 통하여 `channel`를 리스닝하여 메시지를 처리할 -수 있습니다. - -메인 프로세스에서 렌더러 프로세스로 메시지를 보내는 예시 입니다: - -```javascript -// In the main process. -const {app, BrowserWindow} = require('electron') -let win = null -app.on('ready', () => { - win = new BrowserWindow({width: 800, height: 600}) - win.loadURL(`file://${__dirname}/index.html`) - win.webContents.on('did-finish-load', () => { - win.webContents.send('ping', 'whoooooooh!') - }) -}) -``` - -```html - - - - - - -``` - -#### `contents.enableDeviceEmulation(parameters)` - -* `parameters` Object - * `screenPosition` String - 에뮬레이트 할 화면 종료를 지정합니다 - (기본값: `desktop`) - * `desktop` String - Desktop screen type - * `mobile` String - Mobile screen type - * `screenSize` Object - 에뮬레이트 화면의 크기를 지정합니다 (screenPosition == - mobile) - * `width` Integer - 에뮬레이트 화면의 너비를 지정합니다 - * `height` Integer - 에뮬레이트 화면의 높이를 지정합니다 - * `viewPosition` Object - 화면에서 뷰의 위치 (screenPosition == mobile) (기본값: - `{x: 0, y: 0}`) - * `x` Integer - 좌상단 모서리로부터의 x 축의 오프셋 - * `y` Integer - 좌상단 모서리로부터의 y 축의 오프셋 - * `deviceScaleFactor` Float - 디바이스의 스케일 팩터(scale factor)를 지정합니다. - (0일 경우 기본 디바이스 스케일 팩터를 기본으로 사용합니다. 기본값: `0`) - * `viewSize` Object - 에뮬레이트 된 뷰의 크기를 지정합니다 (빈 값은 덮어쓰지 않는 - 다는 것을 의미합니다) - * `width` Integer - 에뮬레이트 된 뷰의 너비를 지정합니다 - * `height` Integer - 에뮬레이트 된 뷰의 높이를 지정합니다 - * `fitToView` Boolean - 에뮬레이트의 뷰가 사용 가능한 공간에 맞추어 스케일 다운될지를 - 지정합니다 (기본값: `false`) - * `offset` Object - 사용 가능한 공간에서 에뮬레이트 된 뷰의 오프셋을 지정합니다 (fit - to view 모드 외에서) (기본값: `{x: 0, y: 0}`) - * `x` Float - 좌상단 모서리에서 x 축의 오프셋을 지정합니다 - * `y` Float - 좌상단 모서리에서 y 축의 오프셋을 지정합니다 - * `scale` Float - 사용 가능한 공간에서 에뮬레이드 된 뷰의 스케일 (fit to view 모드 - 외에서, 기본값: `1`) - -`parameters`로 디바이스 에뮬레이션을 사용합니다. - -#### `contents.disableDeviceEmulation()` - -`webContents.enableDeviceEmulation`로 활성화된 디바이스 에뮬레이선을 비활성화 합니다. - -#### `contents.sendInputEvent(event)` - -* `event` Object - * `type` String (**required**) - 이벤트의 종류. 다음 값들을 사용할 수 있습니다: - `mouseDown`, `mouseUp`, `mouseEnter`, `mouseLeave`, `contextMenu`, - `mouseWheel`, `mouseMove`, `keyDown`, `keyUp`, `char`. - * `modifiers` String[] - 이벤트의 수정자(modifier)들에 대한 배열. 다음 값들을 포함 - 할 수 있습니다: `shift`, `control`, `alt`, `meta`, `isKeypad`, `isAutoRepeat`, - `leftButtonDown`, `middleButtonDown`, `rightButtonDown`, `capsLock`, - `numLock`, `left`, `right`. - -Input `event`를 웹 페이지로 전송합니다. - -키보드 이벤트들에 대해서는 `event` 객체는 다음 속성들을 사용할 수 있습니다: - -* `keyCode` String (**required**) - 키보드 이벤트가 발생할 때 보내질 문자. - [Accelerator](accelerator.md)의 올바른 키 코드만 사용해야 합니다. - -마우스 이벤트들에 대해서는 `event` 객체는 다음 속성들을 사용할 수 있습니다: - -* `x` Integer (**required**) -* `y` Integer (**required**) -* `button` String - 눌린 버튼. 다음 값들이 가능합니다. `left`, `middle`, `right` -* `globalX` Integer -* `globalY` Integer -* `movementX` Integer -* `movementY` Integer -* `clickCount` Integer - -`mouseWheel` 이벤트에 대해서는 `event` 객체는 다음 속성들을 사용할 수 있습니다: - -* `deltaX` Integer -* `deltaY` Integer -* `wheelTicksX` Integer -* `wheelTicksY` Integer -* `accelerationRatioX` Integer -* `accelerationRatioY` Integer -* `hasPreciseScrollingDeltas` Boolean -* `canScroll` Boolean - -#### `contents.beginFrameSubscription([onlyDirty ,]callback)` - -* `onlyDirty` Boolean (optional) - 기본값은 `false`입니다. -* `callback` Function - * `frameBuffer` Buffer - * `dirtyRect` [Rectangle](structures/rectangle.md) - -캡처된 프레임과 프레젠테이션 이벤트를 구독하기 시작합니다. `callback`은 -프레젠테이션 이벤트가 발생했을 때 `callback(frameBuffer, dirtyRect)` 형태로 -호출됩니다. - -`frameBuffer`는 raw 픽셀 데이터를 가지고 있는 `Buffer` 객체입니다. 많은 장치에서 -32비트 BGRA 포맷을 사용하여 효율적으로 픽셀 데이터를 저장합니다. 하지만 실질적인 -데이터 저장 방식은 프로세서의 엔디안 방식에 따라서 달라집니다. (따라서 현대의 많은 -프로세서에선 little-endian 방식을 사용하므로 위의 포맷을 그대로 표현합니다. 하지만 -몇몇 프로세서는 big-endian 방식을 사용하는데, 이 경우 32비트 ARGB 포맷을 사용합니다) - -`dirtyRect`는 페이지의 어떤 부분이 다시 그려졌는지를 표현하는 `x, y, width, height` -속성을 포함하는 객체입니다. 만약 `onlyDirty`가 `true`로 지정되어 있으면, -`frameBuffer`가 다시 그려진 부분만 포함합니다. `onlyDirty`의 기본값은 `false`입니다. - -#### `contents.endFrameSubscription()` - -프레임 프레젠테이션 이벤트들에 대한 구독을 중지합니다. - -#### `contents.startDrag(item)` - -* `item` Object - * `file` String - * `icon` [NativeImage](native-image.md) - -현재 진행중인 드래그-드롭에 `item`을 드래그 중인 아이템으로 설정합니다. `file`은 -드래그될 파일의 절대 경로입니다. 그리고 `icon`은 드래그 도중 커서 밑에 표시될 -이미지입니다. - -#### `contents.savePage(fullPath, saveType, callback)` - -* `fullPath` String - 전체 파일 경로. -* `saveType` String - 저장 종류를 지정합니다. - * `HTMLOnly` - 페이지의 HTML만 저장합니다. - * `HTMLComplete` - 페이지의 완성된 HTML을 저장합니다. - * `MHTML` - 페이지의 완성된 HTML을 MHTML로 저장합니다. -* `callback` Function - `(error) => {}`. - * `error` Error - -만약 페이지를 저장하는 프로세스가 성공적으로 끝났을 경우 true를 반환합니다. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() - -win.loadURL('https://github.com') - -win.webContents.on('did-finish-load', () => { - win.webContents.savePage('/tmp/test.html', 'HTMLComplete', (error) => { - if (!error) console.log('Save page successfully') - }) -}) -``` - -#### `contents.showDefinitionForSelection()` _macOS_ - -페이지에서 선택된 단어에 대한 사전 검색 결과 팝업을 표시합니다. - -#### `contents.isOffscreen()` - -*오프 스크린 렌더링* 이 활성화되었는지 여부를 표시합니다. - -#### `contents.startPainting()` - -*오프 스크린 렌더링* 이 활성화되었고 페인팅 상태가 아니라면 페인팅을 시작합니다. - -#### `contents.stopPainting()` - -*오프 스크린 렌더링* 이 활성화되었고 페인팅 상태라면 페인팅을 중지합니다. - -#### `contents.isPainting()` - -*오프 스크린 렌더링* 이 활성화된 경우 현재 패인팅 상태를 반환합니다. - -#### `contents.setFrameRate(fps)` - -* `fps` Integer - -*오프 스크린 렌더링* 이 활성화된 경우 프레임 레이트를 지정한 숫자로 지정합니다. 1과 60 -사이의 값만 사용할 수 있습니다. - -#### `contents.getFrameRate()` - -*오프 스크린 렌더링* 이 활성화된 경우 현재 프레임 레이트를 반환합니다. - -#### `contents.invalidate()` - -*오프 스크린 렌더링* 이 활성화된 경우 프레임을 무효화 하고 `'paint'` 이벤트를 -통해 새로 만듭니다. - -### Instance Properties - -#### `contents.id` - -이 WebContents의 유일 ID. - -#### `contents.session` - -이 webContents에서 사용하는 [session](session.md) 객체를 반환합니다. - -#### `contents.hostWebContents` - -현재 `WebContents`를 소유하는 `WebContents`를 반환합니다. - -#### `contents.devToolsWebContents` - -이 `WebContents`에 대한 개발자 도구의 `WebContents`를 가져옵니다. - -**참고:** 사용자가 절대로 이 객체를 저장해서는 안 됩니다. 개발자 도구가 닫혔을 때, -`null`이 반환될 수 있습니다. - -#### `contents.debugger` - -현재 `webContents`에 대한 디버거 인스턴스를 가져옵니다. - -## Class: Debugger - -> Chrome의 원격 디버깅 프로토콜에 대한 대체 접근자입니다. - -프로세스: [메인](../tutorial/quick-start.md#main-process) - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() - -try { - win.webContents.debugger.attach('1.1') -} catch (err) { - console.log('Debugger attach failed : ', err) -} - -win.webContents.debugger.on('detach', (event, reason) => { - console.log('Debugger detached due to : ', reason) -}) - -win.webContents.debugger.on('message', (event, method, params) => { - if (method === 'Network.requestWillBeSent') { - if (params.request.url === 'https://www.github.com') { - win.webContents.debugger.detach() - } - } -}) - -win.webContents.debugger.sendCommand('Network.enable') -``` - -### Instance Methods - -#### `debugger.attach([protocolVersion])` - -* `protocolVersion` String (optional) - 요청할 디버깅 프로토콜의 버전. - -`webContents`에 디버거를 부착합니다. - -#### `debugger.isAttached()` - -디버거가 `webContents`에 부착되어 있는지 여부를 반환합니다. - -#### `debugger.detach()` - -`webContents`로부터 디버거를 분리시킵니다. - -#### `debugger.sendCommand(method[, commandParams, callback])` - -* `method` String - 메서드 이름, 반드시 원격 디버깅 프로토콜에 의해 정의된 메서드중 - 하나가 됩니다. -* `commandParams` Object (optional) - 요청 인수를 표현한 JSON 객체. -* `callback` Function (optional) - 응답 - * `error` Object - 커맨드의 실패를 표시하는 에러 메시지. - * `result` Object - 원격 디버깅 프로토콜에서 커맨드 설명의 'returns' 속성에 의해 - 정의된 응답 - -지정한 커맨드를 디버깅 대상에게 전송합니다. - -### Instance Events - -#### Event: 'detach' - -* `event` Event -* `reason` String - 디버거 분리 사유. - -디버깅 세션이 종료될 때 발생하는 이벤트입니다. `webContents`가 닫히거나 개발자 도구가 -부착된 `webContents`에 대해 호출될 때 발생합니다. - -#### Event: 'message' - -* `event` Event -* `method` String - 메서드 이름. -* `params` Object - 원격 디버깅 프로토콜의 'parameters' 속성에서 정의된 이벤트 인수 - -디버깅 타겟이 관련 이벤트를 발생시킬 때 마다 발생하는 이벤트입니다. - -[rdp]: https://developer.chrome.com/devtools/docs/debugger-protocol -[`webContents.findInPage`]: web-contents.md#contentsfindinpagetext-options diff --git a/docs-translations/ko-KR/api/web-frame.md b/docs-translations/ko-KR/api/web-frame.md deleted file mode 100644 index e901aa5e12f1..000000000000 --- a/docs-translations/ko-KR/api/web-frame.md +++ /dev/null @@ -1,165 +0,0 @@ -# webFrame - -> 현재 웹 페이지의 렌더링 상태를 커스터마이즈합니다. - -프로세스: [렌더러](../tutorial/quick-start.md#renderer-process) - -다음 예시는 현재 페이지를 200% 줌 합니다: - -```javascript -const {webFrame} = require('electron') - -webFrame.setZoomFactor(2) -``` - -## Methods - -`webFrame` 모듈은 다음과 같은 메서드를 가지고 있습니다: - -### `webFrame.setZoomFactor(factor)` - -* `factor` Number - Zoom 값 - -지정한 값으로 페이지를 줌 합니다. 줌 값은 퍼센트를 100으로 나눈 값입니다. -(예시: 300% = 3.0) - -### `webFrame.getZoomFactor()` - -Returns `Number` - 현재 줌 값. - -### `webFrame.setZoomLevel(level)` - -* `level` Number - Zoom level - -지정한 레벨로 줌 레벨을 변경합니다. 0은 "기본 크기" 입니다. 그리고 각각 레벨 값을 -올리거나 내릴 때마다 20%씩 커지거나 작아지고 기본 크기의 50%부터 300%까지 조절 제한이 -있습니다. - -### `webFrame.getZoomLevel()` - -Returns `Number` - 현재 줌 레벨. - -### `webFrame.setZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -줌 레벨의 최대, 최소치를 지정합니다. - -### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)` - -* `language` String -* `autoCorrectWord` Boolean -* `provider` Object - -Input field나 text area에 철자 검사(spell checking) 제공자를 설정합니다. - -`provider`는 반드시 전달된 단어의 철자가 맞았는지 검사하는 `spellCheck` 메소드를 -가지고 있어야 합니다. - -[node-spellchecker][spellchecker]를 철자 검사 제공자로 사용하는 예시입니다: - -```javascript -const {webFrame} = require('electron') -webFrame.setSpellCheckProvider('en-US', true, { - spellCheck (text) { - return !(require('spellchecker').isMisspelled(text)) - } -}) -``` - -### `webFrame.registerURLSchemeAsSecure(scheme)` - -* `scheme` String - -`scheme`을 보안 스킴으로 등록합니다. - -보안 스킴은 혼합된 콘텐츠 경고를 발생시키지 않습니다. 예를 들어 `https` 와 `data`는 -네트워크 공격자로부터 손상될 가능성이 없기 때문에 보안 스킴이라고 할 수 있습니다. - -### `webFrame.registerURLSchemeAsBypassingCSP(scheme)` - -* `scheme` String - -현재 페이지 콘텐츠의 보안 정책에 상관없이 `scheme`로부터 리소스가 로드됩니다. - -### `webFrame.registerURLSchemeAsPrivileged(scheme[, options])` - -* `scheme` String -* `options` Object(optional) - * `secure` Boolean - (optional) 기본값 참. - * `bypassCSP` Boolean - (optional) 기본값 참. - * `allowServiceWorkers` Boolean - (optional) 기본값 참. - * `supportFetchAPI` Boolean - (optional) 기본값 참. - * `corsEnabled` Boolean - (optional) 기본값 참. - -`scheme`를 보안된 스킴으로 등록합니다. 리소스에 대해 보안 정책을 우회하며, -ServiceWorker의 등록과 fetch API를 사용할 수 있도록 지원합니다. - -등록에서 그것을 빼려면 `false` 값으로 옵션을 지정하세요. -콘텐츠 보안 정책을 우회하지 않고, 특권 스킴을 등록하는 예: - -```javascript -const {webFrame} = require('electron') -webFrame.registerURLSchemeAsPrivileged('foo', { bypassCSP: false }) -``` - -### `webFrame.insertText(text)` - -* `text` String - -포커스된 요소에 `text`를 삽입합니다. - -### `webFrame.executeJavaScript(code[, userGesture])` - -* `code` String -* `userGesture` Boolean (optional) - 기본값은 `false` 입니다. - -페이지에서 `code`를 실행합니다. - -브라우저 윈도우에서 어떤 `requestFullScreen` 같은 HTML API는 사용자의 승인이 -필요합니다. `userGesture`를 `true`로 설정하면 이러한 제약을 제거할 수 있습니다. - -### `webFrame.getResourceUsage()` - -Returns `Object`: - -* `images` [MemoryUsageDetails](structures/memory-usage-details.md) -* `cssStyleSheets` [MemoryUsageDetails](structures/memory-usage-details.md) -* `xslStyleSheets` [MemoryUsageDetails](structures/memory-usage-details.md) -* `fonts` [MemoryUsageDetails](structures/memory-usage-details.md) -* `other` [MemoryUsageDetails](structures/memory-usage-details.md) - -Blink의 내부 메모리 캐시 사용 정보를 담고있는 객체를 반환합니다. - -```javascript -const {webFrame} = require('electron') -console.log(webFrame.getResourceUsage()) -``` - -다음이 출력됩니다: - -```javascript -{ - images: { - count: 22, - size: 2549, - liveSize: 2542 - }, - cssStyleSheets: { /* same with "images" */ }, - xslStyleSheets: { /* same with "images" */ }, - fonts: { /* same with "images" */ }, - other: { /* same with "images" */ } -} -``` - -### `webFrame.clearCache()` - -(이전 페이지의 이미지 등) 사용하지 않는 메모리 해제를 시도합니다. - -참고로 맹목적으로 이 메서드를 호출하는 것은 이 빈 캐시를 다시 채워야하기 때문에 -Electron을 느리게 만듭니다. 따라서 이 메서드는 페이지가 예상했던 것 보다 실질적으로 더 -적은 메모리를 사용하게 만드는 애플리케이션 이벤트가 발생했을 때만 호출해야 합니다. -(i.e. 아주 무거운 페이지에서 거의 빈 페이지로 이동한 후 계속 유지할 경우) - -[spellchecker]: https://github.com/atom/node-spellchecker diff --git a/docs-translations/ko-KR/api/webview-tag.md b/docs-translations/ko-KR/api/webview-tag.md deleted file mode 100644 index 55bf5d00ac28..000000000000 --- a/docs-translations/ko-KR/api/webview-tag.md +++ /dev/null @@ -1,867 +0,0 @@ -# `` 태그 - -> 외부 웹 콘텐츠를 고립된 프레임과 프로세스에서 표시합니다. - -`guest` 콘텐츠(웹 페이지)를 Electron 앱 페이지에 삽입하기 위해 `webview` 태그를 -사용할 수 있습니다. 게스트 콘텐츠는 `webview` 컨테이너에 담겨 대상 페이지에 삽입되고 -해당 페이지에선 게스트 콘텐츠의 배치 및 렌더링 과정을 조작할 수 있습니다. - -`iframe`과는 달리 `webview`는 애플리케이션과 분리된 프로세스에서 작동합니다. -이는 웹 페이지와 같은 권한을 가지지 않고 앱과 임베디드(게스트) 콘텐츠간의 모든 -상호작용이 비동기로 작동한다는 것을 의미합니다. 따라서 임베디드 콘텐츠로부터 -애플리케이션을 안전하게 유지할 수 있습니다. - -보안상의 이유로, `webview`는 `nodeIntegration`이 활성화된 `BrowserWindow`에서만 사용할 수 있습니다. - -## 예시 - -웹 페이지를 애플리케이션에 삽입하려면 `webview` 태그를 사용해 원하는 타겟 페이지에 -추가하면 됩니다. (게스트 콘텐츠가 앱 페이지에 추가 됩니다) 간단한 예로 `webview` -태그의 `src` 속성에 페이지를 지정하고 css 스타일을 이용해서 컨테이너의 외관을 설정할 -수 있습니다: - -```html - -``` - -게스트 콘텐츠를 조작하기 위해 자바스크립트로 `webview` 태그의 이벤트를 리스닝 하여 -응답을 받을 수 있습니다. 다음 예시를 참고하세요: 첫번째 리스너는 페이지 로딩 시작시의 -이벤트를 확인하고 두번째 리스너는 페이지의 로딩이 끝난시점을 확인합니다. 그리고 -페이지를 로드하는 동안 "loading..." 메시지를 표시합니다. - -```html - -``` - -## CSS 스타일링 참고 - -주의할 점은 `webview` 태그의 스타일은 전통적인 flexbox 레이아웃을 사용했을 때 자식 -`object` 요소가 해당 `webview` 컨테이너의 전체 높이와 넓이를 확실히 채우도록 -내부적으로 `display:flex;`를 사용합니다. (v0.36.11 부터) 따라서 인라인 레이아웃을 -위해 `display:inline-flex;`를 쓰지 않는 한, 기본 `display:flex;` CSS 속성을 -덮어쓰지 않도록 주의해야 합니다. - -`webview`는 `hidden` 또는 `display: none;` 속성을 사용할 때 발생하는 문제를 한 가지 -가지고 있습니다. 자식 `browserplugin` 객체 내에서 비정상적인 랜더링 동작을 발생시킬 수 -있으며 웹 페이지가 로드되었을 때, `webview`가 숨겨지지 않았을 때, 반대로 그냥 바로 -다시 보이게 됩니다. `webview`를 숨기는 방법으로 가장 권장되는 방법은 `width` & -`height`를 0으로 지정하는 CSS를 사용하는 것이며 `flex`를 통해 0px로 요소를 수축할 수 -있도록 합니다. - -```html - -``` - -## 태그 속성 - -`webview` 태그는 다음과 같은 속성을 가지고 있습니다: - -### `src` - -```html - -``` - -지정한 URL을 페이지 소스로 사용합니다. 이 속성을 지정할 경우 `webview`의 최상위 -페이지가 됩니다. - -`src`에 같은 페이지를 지정하면 페이지를 새로고침합니다. - -`src` 속성은 `data:text/plain,Hello, world!` 같은 data URL도 사용할 수 있습니다. - -### `autosize` - -```html - -``` - -"on" 으로 지정하면 `webview` 컨테이너는 `minwidth`, `minheight`, `maxwidth`, -`maxheight`에 맞춰서 자동으로 크기를 조절합니다. 이 속성들은 `autosize`가 -활성화되어있지 않는 한 프레임에 영향을 주지 않습니다. `autosize`가 활성화 되어있으면 -`webview` 컨테이너의 크기는 각각의 지정한 최대, 최소값에 따라 조절됩니다. - -### `nodeintegration` - -```html - -``` - -"on"으로 지정하면 `webview` 페이지 내에서 `require`와 `process 객체`같은 node.js -API를 사용할 수 있습니다. 이를 지정하면 내부에서 로우레벨 리소스에 접근할 수 있습니다. - -### `plugins` - -```html - -``` - -"on"으로 지정하면 `webview` 내부에서 브라우저 플러그인을 사용할 수 있습니다. - -### `preload` - -```html - -``` - -페이지가 로드되기 전에 실행할 스크립트를 지정합니다. 스크립트 URL은 `file:` 또는 -`asar:` 프로토콜 중 하나를 반드시 사용해야 합니다. 왜냐하면 페이지 내에서 `require`를 -사용하여 스크립트를 로드하기 때문입니다. - -페이지가 nodeintegration을 활성화 하지 않아도 지정한 스크립트는 정상적으로 작동합니다. -하지만 스크립트 내에서 사용할 수 있는 global 객체는 스크립트 작동이 끝나면 삭제됩니다. - -### `httpreferrer` - -```html - -``` - -페이지의 referrer URL을 설정합니다. - -### `useragent` - -```html - -``` - -페이지의 `User-Agent`를 설정합니다. 페이지가 로드된 후엔 `setUserAgent` 메소드를 -사용해서 변경할 수 있습니다. - -### `disablewebsecurity` - -```html - -``` - -"on"으로 지정하면 페이지의 웹 보안을 해제합니다. - -### `partition` - -```html - - -``` - -페이지에서 사용하는 세션을 설정합니다. -만약 `partition` 속성이 `persist:` 접두사를 시작하면 같은 `partition` 속성을 가진 -앱 내 모든 페이지가 공유하는 영구 세션을 사용합니다. `persist:` 접두사가 없을 경우 -페이지는 인 메모리 세션을 사용합니다. 동일한 `partition`을 지정하여 다중 페이지에서 -동일한 세션을 공유할 수 있도록 할 수 있습니다. 만약 `partition`이 지정되지 않으면 앱의 -기본 세션을 사용합니다. - -이 값은 첫 탐색 이전에만 지정할 수 있습니다. 즉. 작동중인 렌더러 프로세스의 세션은 -변경할 수 없습니다. 이후 이 값을 바꾸려고 시도하면 DOM 예외를 발생시킵니다. - -### `allowpopups` - -```html - -``` - -"on"으로 지정하면 페이지에서 새로운 창을 열 수 있도록 허용합니다. - -### `webpreferences` - -```html - -``` -웹뷰에 설정될 웹 환경설정을 나타내는 `,` 로 구분된 문자열의 목록입니다. -지원되는 환경설정 문자열의 전체 목록은 -[BrowserWindow](browser-window.md#new-browserwindowoptions) 에서 찾을 수 -있습니다. - -문자열은 `window.open` 의 기능 문자열과 같은 형식을 따릅니다. 이름만 있으면 -`true` 불린 값이 주어집니다. 환경설정은 뒤에 값이 오는 `=` 을 넣어서 다른 값을 -설정할 수 있습니다. 특별한 값 `yes` 와 `1` 는 `true` 로 해석되고, `no` 와 `0` 은 -`false` 로 해석됩니다. - -### `blinkfeatures` - -```html - -``` - -활성화할 blink 기능을 지정한 `,`로 구분된 문자열의 리스트입니다. 지원하는 기능 -문자열의 전체 목록은 [RuntimeEnabledFeatures.json5][blink-feature-string] 파일에서 -찾을 수 있습니다. - -### `disableblinkfeatures` - -```html - -``` - -비활성화할 blink 기능을 지정한 `,`로 구분된 문자열의 리스트입니다. 지원하는 기능 -문자열의 전체 목록은 [RuntimeEnabledFeatures.json5][blink-feature-string] 파일에서 -찾을 수 있습니다. - -### `guestinstance` - -```html - -``` - -webview 를 특정 webContents 와 연결해주는 값 입니다. webview 가 처음 로드될 때 -새 webContents 가 생성되고 이 속성이 그 인스턴스의 식별자로 설정됩니다. 새로운 -또는 기존 webview 에 이 속성을 설정하면 다른 webview 에서 현재 렌더링하는 기존 -webContents 와 연결합니다. - -기존 webview 는 `destroy` 이벤트가 발생하고 새 URL 이 로드될 때 새 webContens -가 생성될 것 입니다. - -## Methods - -`webview` 태그는 다음과 같은 메서드를 가지고 있습니다: - -**참고:** 태그 객체의 메서드는 페이지 로드가 끝난 뒤에만 사용할 수 있습니다. - -**예시** - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('dom-ready', () => { - webview.openDevTools() -}) -``` - -### `.loadURL(url[, options])` - -* `url` URL -* `options` Object (optional) - * `httpReferrer` String - HTTP 레퍼러 url. - * `userAgent` String - 요청을 시작한 유저 에이전트. - * `extraHeaders` String - "\n"로 구분된 Extra 헤더들. - -Webview에 웹 페이지 `url`을 로드합니다. `url`은 `http://`, `file://`과 같은 -프로토콜 접두사를 가지고 있어야 합니다. - -### `.getURL()` - -페이지의 URL을 반환합니다. - -### `.getTitle()` - -페이지의 제목을 반환합니다. - -### `.isLoading()` - -페이지가 아직 리소스를 로딩하고 있는지 확인합니다. 불린 값을 반환합니다. - -### `.isWaitingForResponse()` - -페이지가 메인 리소스의 첫 응답을 기다리고 있는지 확인합니다. 불린 값을 반환합니다. - -### `.stop()` - -모든 탐색을 취소합니다. - -### `.reload()` - -페이지를 새로고침합니다. - -### `.reloadIgnoringCache()` - -캐시를 무시하고 페이지를 새로고침합니다. - -### `.canGoBack()` - -페이지 히스토리를 한 칸 뒤로 가기를 할 수 있는지 확인합니다. 불린 값을 반환합니다. - -### `.canGoForward()` - -페이지 히스토리를 한 칸 앞으로 가기를 할 수 있는지 확인합니다. 불린 값을 반환합니다. - -### `.canGoToOffset(offset)` - -* `offset` Integer - -페이지 히스토리를 `offset` 만큼 이동할 수 있는지 확인합니다. 불린값을 반환합니다. - -### `.clearHistory()` - -탐색 히스토리를 비웁니다. - -### `.goBack()` - -페이지 뒤로 가기를 실행합니다. - -### `.goForward()` - -페이지 앞으로 가기를 실행합니다. - -### `.goToIndex(index)` - -* `index` Integer - -페이지를 지정한 `index`로 이동합니다. - -### `.goToOffset(offset)` - -* `offset` Integer - -페이지로부터 `offset` 만큼 이동합니다. - -### `.isCrashed()` - -렌더러 프로세스가 크래시 됬는지 확인합니다. - -### `.setUserAgent(userAgent)` - -* `userAgent` String - -`User-Agent`를 지정합니다. - -### `.getUserAgent()` - -페이지의 `User-Agent 문자열`을 가져옵니다. - -### `.insertCSS(css)` - -* `css` String - -페이지에 CSS를 삽입합니다. - -### `.executeJavaScript(code[, userGesture, callback])` - -* `code` String -* `userGesture` Boolean -* `callback` Function (optional) - 스크립트의 실행이 완료되면 호출됩니다. - * `result` Any - -페이지에서 자바스크립트 코드를 실행합니다. - -만약 `userGesture`가 `true`로 설정되어 있으면 페이지에 유저 제스쳐 컨텍스트를 만듭니다. -이 옵션을 활성화 시키면 `requestFullScreen`와 같은 HTML API에서 유저의 승인을 -무시하고 개발자가 API를 바로 사용할 수 있도록 허용합니다. - -**역자주:** 기본적으로 브라우저에선 전체화면, 웹캠, 파일 열기등의 API를 사용하려면 유저의 -승인(이벤트)이 필요합니다. - -### `.openDevTools()` - -페이지에 대한 개발자 도구를 엽니다. - -### `.closeDevTools()` - -페이지에 대한 개발자 도구를 닫습니다. - -### `.isDevToolsOpened()` - -페이지에 대한 개발자 도구가 열려있는지 확인합니다. 불린 값을 반환합니다. - -### `.isDevToolsFocused()` - -페이지의 개발자 도구에 포커스 되어있는지 여부를 반화합니다. - -### `.inspectElement(x, y)` - -* `x` Integer -* `y` Integer - -(`x`, `y`) 위치에 있는 엘리먼트를 inspect합니다. - -### `.inspectServiceWorker()` - -Service worker에 대한 개발자 도구를 엽니다. - -### `.setAudioMuted(muted)` - -* `muted` Boolean - -게스트 페이지 음소거 설정. - -### `.isAudioMuted()` - -Returns `Boolean` - 게스트 페이지 음소거 여부. - -### `.undo()` - -페이지에서 실행 취소 커맨드를 실행합니다. - -### `.redo()` - -페이지에서 다시 실행 커맨드를 실행합니다. - -### `.cut()` - -페이지에서 잘라내기 커맨드를 실행합니다. - -### `.copy()` - -페이지에서 복사 커맨드를 실행합니다. - -### `.paste()` - -페이지에서 붙여넣기 커맨드를 실행합니다. - -### `.pasteAndMatchStyle()` - -페이지에서 `pasteAndMatchStyle` 편집 커맨드를 실행합니다. - -### `.delete()` - -페이지에서 삭제 커맨드를 실행합니다. - -### `.selectAll()` - -페이지에서 전체 선택 커맨드를 실행합니다. - -### `.unselect()` - -페이지에서 `unselect` 커맨드를 실행합니다. - -### `.replace(text)` - -* `text` String - -페이지에서 `replace` 커맨드를 실행합니다. - -### `.replaceMisspelling(text)` - -* `text` String - -페이지에서 `replaceMisspelling` 커맨드를 실행합니다. - -### `.insertText(text)` - -* `text` String - -포커스된 요소에 `text`를 삽입합니다. - -### `webContents.findInPage(text[, options])` - -* `text` String - 찾을 콘텐츠, 반드시 공백이 아니여야 합니다. -* `options` Object (optional) - * `forward` Boolean - 앞에서부터 검색할지 뒤에서부터 검색할지 여부입니다. 기본값은 - `true`입니다. - * `findNext` Boolean - 작업을 계속 처리할지 첫 요청만 처리할지 여부입니다. 기본값은 - `false`입니다. - * `matchCase` Boolean - 검색이 대소문자를 구분할지 여부입니다. 기본값은 - `false`입니다. - * `wordStart` Boolean - 단어의 시작 부분만 볼 지 여부입니다. 기본값은 - `false`입니다. - * `medialCapitalAsWordStart` Boolean - `wordStart`와 합쳐질 때, 소문자 또는 - 비문자가 따라붙은 대문자로 일치가 시작하는 경우 단어 중간의 일치를 허용합니다. - 여러가지 다른 단어 내의 일치를 허용합니다. 기본값은 `false`입니다. - -웹 페이지에서 `text`에 일치하는 모든 대상을 찾는 요청을 시작하고 요청에 사용된 요청을 -표현하는 `정수(integer)`를 반환합니다. 요청의 결과는 -[`found-in-page`](webview-tag.md#event-found-in-page) 이벤트를 통해 취득할 수 -있습니다. - -### `webContents.stopFindInPage(action)` - -* `action` String - [`.findInPage`](webview-tag.md#webviewtagfindinpage) - 요청이 종료되었을 때 일어날 수 있는 작업을 지정합니다. - * `clearSelection` - 선택을 취소합니다. - * `keepSelection` - 선택을 일반 선택으로 변경합니다. - * `activateSelection` - 포커스한 후 선택된 노드를 클릭합니다. - -제공된 `action`에 대한 `webContents`의 모든 `findInPage` 요청을 중지합니다. - -### `.print([options])` - -`webview` 페이지를 인쇄합니다. `webContents.print([options])` 메서드와 같습니다. - -### `.printToPDF(options, callback)` - -`webview` 페이지를 PDF 형식으로 인쇄합니다. -`webContents.printToPDF(options, callback)` 메서드와 같습니다. - -### `.capturePage([rect, ]callback)` - -`webview`의 페이지의 스냅샷을 캡쳐합니다. -`webContents.printToPDF(options, callback)` 메서드와 같습니다. - -### `.send(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `args` (optional) - -`channel`을 통해 렌더러 프로세스로 비동기 메시지를 보냅니다. 또한 `args`를 지정하여 -임의의 인수를 보낼 수도 있습니다. 렌더러 프로세스는 `ipcRenderer` 모듈의 `channel` -이벤트로 이 메시지를 받아 처리할 수 있습니다. - -예시는 [webContents.send](web-contents.md#webcontentssendchannel-args)를 참고하세요. - -### `.sendInputEvent(event)` - -* `event` Object - -페이지에 입력 `event`를 보냅니다. - -`event` 객체에 대해 자세히 알아보려면 [webContents.sendInputEvent](web-contents.md#webcontentssendinputeventevent)를 -참고하세요. - -### `.setZoomFactor(factor)` - -* `factor` Number - 줌 수치. - -지정한 수치로 줌 수치를 변경합니다. 줌 수치는 100으로 나눈 값이며 300%는 3.0이 됩니다. - -### `.setZoomLevel(level)` - -* `level` Number - 줌 레벨. - -지정한 수준으로 줌 수준을 변경합니다. 원본 크기는 0이고 각 값의 증가와 감소는 현재 줌을 -20% 크거나 작게 표현하고 각 크기는 원본 크기의 300%와 50%로 제한됩니다. - -### `.showDefinitionForSelection()` _macOS_ - -페이지에서 선택된 단어에 대한 사전 검색 결과 팝업을 표시합니다. - -### `.getWebContents()` - -이 `webview`에 해당하는 [WebContents](web-contents.md)를 반환합니다. - -## DOM 이벤트 - -`webview` 태그는 다음과 같은 DOM 이벤트를 가지고 있습니다: - -### Event: 'load-commit' - -Returns: - -* `url` String -* `isMainFrame` Boolean - -로드가 시작됬을 때 발생하는 이벤트입니다. -이 이벤트는 현재 문서내의 탐색뿐만 아니라 서브 프레임 문서 레벨의 로드도 포함됩니다. -하지만 비동기 리소스 로드는 포함되지 않습니다. - -### Event: 'did-finish-load' - -탐색이 끝나면 발생하는 이벤트입니다. 브라우저 탭의 스피너가 멈추고 `onload` 이벤트가 -발생할 때를 생각하면 됩니다. - -### Event: 'did-fail-load' - -Returns: - -* `errorCode` Integer -* `errorDescription` String -* `validatedURL` String -* `isMainFrame` Boolean - -`did-finish-load`와 비슷합니다. 하지만 이 이벤트는 `window.stop()`과 같이 취소 -함수가 호출되었거나 로드에 실패했을 때 발생하는 이벤트입니다. - -### Event: 'did-frame-finish-load' - -Returns: - -* `isMainFrame` Boolean - -프레임의 탐색이 끝나면 발생하는 이벤트입니다. - -### Event: 'did-start-loading' - -브라우저 탭의 스피너가 돌기 시작할 때 처럼 페이지의 로드가 시작될 때 발생하는 -이벤트입니다. - -### Event: 'did-stop-loading' - -브라우저 탭의 스피너가 멈출 때 처럼 페이지의 로드가 끝나면 발생하는 이벤트입니다. - -### Event: 'did-get-response-details' - -Returns: - -* `status` Boolean -* `newURL` String -* `originalURL` String -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object -* `resourceType` String - -요청한 리소스에 관해 자세한 내용을 알 수 있을 때 발생하는 이벤트입니다. -`status`는 리소스를 다운로드할 소켓 커낵션을 나타냅니다. - -### Event: 'did-get-redirect-request' - -Returns: - -* `oldURL` String -* `newURL` String -* `isMainFrame` Boolean - -리소스를 요청하고 받는 도중에 리다이렉트가 생기면 발생하는 이벤트입니다. - -### Event: 'dom-ready' - -프레임 문서의 로드가 끝나면 발생하는 이벤트입니다. - -### Event: 'page-title-updated' - -Returns: - -* `title` String -* `explicitSet` Boolean - -탐색하는 동안에 페이지의 제목이 설정되면 발생하는 이벤트입니다. `explicitSet`는 파일 -URL에서 합성(synthesised)된 제목인 경우 false로 표시됩니다. - -### Event: 'page-favicon-updated' - -Returns: - -* `favicons` String[] - URL 배열 - -페이지가 favicon URL을 받았을 때 발생하는 이벤트입니다. - -### Event: 'enter-html-full-screen' - -페이지가 HTML API에 의해 전체 화면 모드에 돌입했을 때 발생하는 이벤트입니다. - -### Event: 'leave-html-full-screen' - -페이지의 전체 화면 모드가 해제됬을 때 발생하는 이벤트입니다. - -### Event: 'console-message' - -Returns: - -* `level` Integer -* `message` String -* `line` Integer -* `sourceId` String - -`console.log` API에 의해 로깅될 때 발생하는 이벤트입니다. - -다음 예시는 모든 로그 메시지를 로그 레벨이나 다른 속성에 관련 없이 호스트 페이지의 -콘솔에 다시 로깅하는 예시입니다. - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('console-message', (e) => { - console.log('Guest page logged a message:', e.message) -}) -``` - -### Event: 'found-in-page' - -Returns: - -* `result` Object - * `requestId` Integer - * `finalUpdate` Boolean - 더 많은 응답이 따르는 경우를 표시합니다. - * `activeMatchOrdinal` Integer (optional) - 활성화 일치의 위치. - * `matches` Integer (optional) - 일치하는 개수. - * `selectionArea` Object (optional) - 첫 일치 부위의 좌표. - -[`webContents.findInPage`](web-contents.md#webcontentsfindinpage) 요청의 결과를 -사용할 수 있을 때 발생하는 이벤트입니다. - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('found-in-page', (e) => { - webview.stopFindInPage('keepSelection') -}) - -const requestId = webview.findInPage('test') -console.log(requestId) -``` - -### Event: 'new-window' - -Returns: - -* `url` String -* `frameName` String -* `disposition` String - `default`, `foreground-tab`, `background-tab`, - `new-window`, `save-to-disk`, `other`를 사용할 수 있습니다. -* `options` Object - 새로운 `BrowserWindow`를 만들 때 사용되어야 하는 옵션. - -페이지가 새로운 브라우저 창을 생성할 때 발생하는 이벤트입니다. - -다음 예시 코드는 새 URL을 시스템의 기본 브라우저로 여는 코드입니다. - -```javascript -const {shell} = require('electron') -const webview = document.getElementById('foo') - -webview.addEventListener('new-window', (e) => { - const protocol = require('url').parse(e.url).protocol - if (protocol === 'http:' || protocol === 'https:') { - shell.openExternal(e.url) - } -}) -``` - -### Event: 'will-navigate' - -Returns: - -* `url` String - -사용자 또는 페이지가 새로운 페이지로 이동할 때 발생하는 이벤트입니다. -`window.location` 객체가 변경되거나 사용자가 페이지의 링크를 클릭했을 때 발생합니다. - -이 이벤트는 `.loadURL`과 `.back` 같은 API를 이용한 -프로그램적으로 시작된 탐색에 대해서는 발생하지 않습니다. - -이 이벤트는 앵커 링크를 클릭하거나 `window.location.hash`의 값을 변경하는 등의 페이지 -내 탐색시엔 발생하지 않습니다. 대신 `did-navigate-in-page` 이벤트를 사용해야 합니다. - -`event.preventDefault()`를 호출하는 것은 __아무__ 효과도 내지 않습니다. - -### Event: 'did-navigate' - -Returns: - -* `url` String - -탐색이 완료되면 발생하는 이벤트입니다. - -이 이벤트는 앵커 링크를 클릭하거나 `window.location.hash`의 값을 변경하는 등의 페이지 -내 탐색시엔 발생하지 않습니다. 대신 `did-navigate-in-page` 이벤트를 사용해야 합니다. - -### Event: 'did-navigate-in-page' - -Returns: - -* `url` String -* `isMainFrame` Boolean - -페이지 내의 탐색이 완료되면 발생하는 이벤트입니다. - -페이지 내의 탐색이 발생하면 페이지 URL이 변경되지만 페이지 밖으로의 탐색은 일어나지 -않습니다. 예를 들어 앵커 링크를 클릭했을 때, 또는 DOM `hashchange` 이벤트가 발생했을 -때로 볼 수 있습니다. - -### Event: 'close' - -페이지가 자체적으로 닫힐 때 발생하는 이벤트입니다. - -다음 예시 코드는 페이지가 자체적으로 닫힐 때 `webview`를 `about:blank` 페이지로 -이동시키는 예시입니다. - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('close', () => { - webview.src = 'about:blank' -}) -``` - -### Event: 'ipc-message' - -Returns: - -* `channel` String -* `args` Array - -호스트 페이지에서 비동기 IPC 메시지를 보낼 때 발생하는 이벤트입니다. - -`sendToHost` 메소드와 `ipc-message` 이벤트로 호스트 페이지와 쉽게 통신을 할 수 -있습니다: - -```javascript -// In embedder page. -const webview = document.getElementById('foo') -webview.addEventListener('ipc-message', (event) => { - console.log(event.channel) - // Prints "pong" -}) -webview.send('ping') -``` - -```javascript -// In guest page. -const {ipcRenderer} = require('electron') -ipcRenderer.on('ping', () => { - ipcRenderer.sendToHost('pong') -}) -``` - -### Event: 'crashed' - -렌더러 프로세스가 크래시 되었을 때 발생하는 이벤트입니다. - -### Event: 'gpu-crashed' - -GPU 프로세스가 크래시 되었을 때 발생하는 이벤트입니다. - -### Event: 'plugin-crashed' - -Returns: - -* `name` String -* `version` String - -플러그인 프로세스가 크래시 되었을 때 발생하는 이벤트입니다. - -### Event: 'destroyed' - -WebContents가 소멸될 때 발생하는 이벤트입니다. - -### Event: 'media-started-playing' - -미디어가 재생되기 시작할 때 발생하는 이벤트입니다. - -### Event: 'media-paused' - -미디어가 중지되거나 재생이 완료되었을 때 발생하는 이벤트입니다. - -### Event: 'did-change-theme-color' - -Returns: - -* `themeColor` String - -페이지의 테마 색이 변경될 때 발생하는 이벤트입니다. 이 이벤트는 보통 meta 태그에 -의해서 발생합니다: - -```html - -``` - -### Event: 'update-target-url' - -Returns: - -* `url` String - -마우스나 키보드를 사용해 링크에 포커스할 때 발생하는 이벤트입니다. - -### Event: 'devtools-opened' - -개발자 도구가 열렸을 때 발생하는 이벤트입니다. - -### Event: 'devtools-closed' - -개발자 도구가 닫혔을 때 발생하는 이벤트입니다. - -### Event: 'devtools-focused' - -개발자 도구가 포커스되거나 열렸을 때 발생하는 이벤트입니다. - -[blink-feature-string]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5?l=62 diff --git a/docs-translations/ko-KR/api/window-open.md b/docs-translations/ko-KR/api/window-open.md deleted file mode 100644 index 6f73059390d8..000000000000 --- a/docs-translations/ko-KR/api/window-open.md +++ /dev/null @@ -1,92 +0,0 @@ -# `window.open` 함수 - -> 새 윈도우를 열고 URL을 로드합니다. - -`window.open` 함수가 호출되면 새 창을 생성하고 `url` 페이지를 불러옵니다. 이 창은 -지정한 `url`을 로드하여 만들어진 `BrowserWindow`의 새 인스턴스이며 본래 창 객체 대신 -페이지의 컨트롤이 제한된 프록시 객체를 반환합니다. - -프록시 객체는 브라우저의 웹 페이지 창과 호환될 수 있도록 일부 제한된 표준 기능만 가지고 -있습니다. 창의 모든 컨트롤 권한을 가지려면 `BrowserWindow`를 직접 생성해서 사용해야 -합니다. - -새롭게 생성된 `BrowserWindow`는 기본적으로 부모 창의 옵션을 상속합니다. 이 옵션을 -변경하려면 새 창을 열 때 `features` 인수를 지정해야 합니다. - -### `window.open(url[, frameName][, features])` - -* `url` String -* `frameName` String (optional) -* `features` String (optional) - -`BrowserWindowProxy` 클래스의 객체를 반환하는 새로운 윈도우를 생성합니다. - -`features` 문자열은 표준 브라우저의 포맷을 따르고 있지만, 각 기능은 `BrowserWindow`의 -옵션이어야 합니다. - -**참고:** - -* Node 통합 기능은 열린 `window` 에서 부모 윈도우가 해당 옵션이 비활성화 - 되어있는 경우 항상 비활성화됩니다. -* `features` 에 있는 (Chromium 또는 Electron 에 의해 처리되지 않는) 비표준 - 기능은 `webContent` 에 등록된 `new-window` 이벤트 핸들러에 - `additionalFeatures` 인수로 전달될 것이다. - -### `window.opener.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -부모 윈도우에 메시지를 보냅니다. origin을 특정할 수 있으며 `*`를 지정하면 따로 origin -설정을 사용하지 않습니다. - -## Class: BrowserWindowProxy - -> 자식 브라우저 윈도우를 조작합니다 - -프로세스: [렌더러](../tutorial/quick-start.md#renderer-process) - -### Instance Methods - -`BrowserWindowProxy` 객체는 다음과 같은 인스턴스 메서드를 가지고 있습니다: - -#### `win.blur()` - -자식 윈도우의 포커스를 해제합니다. - -#### `win.close()` - -자식 윈도우를 강제로 닫습니다. unload 이벤트가 발생하지 않습니다. - -#### `win.eval(code)` - -* `code` String - -자식 윈도우에서 특정 스크립트를 실행합니다. - -#### `win.focus()` - -자식 윈도우에 포커스를 맞춥니다. (창을 맨 앞으로 가져옵니다) - -#### `win.print()` - -자식 윈도우에 프린트 대화 상자를 호출합니다. - -#### `win.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -자식 윈도우에 메시지를 보냅니다. origin을 특정할 수 있으며 `*`를 지정하면 따로 origin -설정을 사용하지 않습니다. - -참고로 자식 윈도우의 `window.opener` 객체에는 다른 속성 없이 이 메서드 한 개만 -구현되어 있습니다. - -### Instance Properties - -`BrowserWindowProxy` 객체는 다음과 같은 인스턴스 속성을 가지고 있습니다: - -#### `win.closed` - -자식 윈도우가 닫히면 true로 설정됩니다. diff --git a/docs-translations/ko-KR/development/atom-shell-vs-node-webkit.md b/docs-translations/ko-KR/development/atom-shell-vs-node-webkit.md deleted file mode 100644 index 3dc71bf7a87a..000000000000 --- a/docs-translations/ko-KR/development/atom-shell-vs-node-webkit.md +++ /dev/null @@ -1,49 +0,0 @@ -# Electron이 NW.js(node-webkit)와 기술적으로 다른점 - -__참고: Electron은 Atom Shell의 새로운 이름입니다.__ - -NW.js 처럼 Electron은 JavaScript와 HTML 그리고 Node 통합 환경을 제공함으로써 웹 -페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 애플리케이션을 -작성할 수 있도록 하는 프레임워크 입니다. - -하지만 Electron과 NW.js는 근본적인 개발흐름의 차이도 있습니다: - -__1. 애플리케이션의 엔트리 포인트__ - -NW.js에선 애플리케이션의 엔트리 포인트로 웹 페이지를 사용합니다. `package.json`내의 -main 필드에 메인 웹 페이지(index.html) URL을 지정하면 애플리케이션의 메인 윈도우로 -열리게 됩니다. - -Electron에선 JavaScript를 엔트리 포인트로 사용합니다. URL을 직접 제공하는 대신 API를 -사용하여 직접 브라우저 창과 HTML 파일을 로드할 수 있습니다. 또한 윈도우의 종료시기를 -결정하는 이벤트를 리스닝해야 합니다. - -Electron은 Node.js 런타임과 비슷하게 작동합니다. Electron의 API는 저수준이기에 -브라우저 테스팅을 위해 [PhantomJS](http://phantomjs.org/)를 사용할 수도 있습니다. - -__2. 빌드 시스템__ - -Electron은 Chromium의 모든것을 빌드하는 복잡성을 피하기 위해 -[libchromiumcontent](https://github.com/electron/libchromiumcontent)를 사용하여 -Chromium의 Content API에 접근합니다. libchromiumcontent은 단일 공유 라이브러리이고 -Chromium Content 모듈과 의존성 라이브러리들을 포함합니다. 유저는 Electron을 빌드 하기 -위해 높은 사양의 빌드용 컴퓨터를 구비할 필요가 없습니다. - -__3. Node 통합__ - -NW.js는 웹 페이지에서 require를 사용할 수 있도록 Chromium을 패치했습니다. 한편 -Electron은 Chromium의 해킹을 방지하기 위해 libuv loop와 각 플랫폼의 메시지 루프에 -통합하는 다른 방법을 채택하였습니다. [`node_bindings`][node-bindings]의 코드를 보면 -이 부분이 어떻게 구현됬는지 알 수 있습니다. - -__4. 다중 컨텍스트__ - -만약 NW.js를 사용해본 적이 있다면 Node context와 Web context의 개념을 잘 알고 있을 -겁니다. 이러한 개념은 NW.js가 구현되기 위해 만들어졌습니다. - -Node의 [다중 컨텍스트](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/)를 -사용하기 때문에 Electron은 웹 페이지의 새로운 JavaScript 컨텍스트를 생성하지 않습니다. - -참고: NW.js는 0.13 버전부터 선택적으로 다중 컨텍스트를 지원합니다. - -[node-bindings]: https://github.com/electron/electron/tree/master/atom/common diff --git a/docs-translations/ko-KR/development/build-instructions-linux.md b/docs-translations/ko-KR/development/build-instructions-linux.md deleted file mode 100644 index 6b4fddafa20b..000000000000 --- a/docs-translations/ko-KR/development/build-instructions-linux.md +++ /dev/null @@ -1,205 +0,0 @@ -# 빌드 설명서 (Linux) - -이 가이드는 Linux 운영체제에서 Electron을 빌드하는 방법을 설명합니다. - -## 빌드전 요구사양 - -* 최소한 25GB 이상의 디스크 공간과 8GB 램이 필요합니다. -* Python 2.7.x. 몇몇 CentOS 6.x와 같은 배포판들은 아직도 Python 2.6.x 버전을 사용합니다. - 그래서 먼저 `python -V`를 통해 버전을 확인할 필요가 있습니다. -* Node.js v0.12.x. Node를 설치하는 방법은 여러 가지가 있습니다. 먼저, - [Node.js](http://nodejs.org) 사이트에서 소스 코드를 받아 빌드하는 방법입니다. - 이렇게 하면 Node를 일반 유저로 홈 디렉터리에 설치할 수 있습니다. 다른 방법으로는 - [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories)에서 - 소스 파일을 받아와 설치할 수 있습니다. 자세한 내용은 [Node.js 설치 방법](https://github.com/joyent/node/wiki/Installation)을 - 참고하세요. -* Clang 3.4 또는 최신 버전 -* GTK+ 와 libnotify의 개발용 헤더 - -Ubuntu를 사용하고 있다면 다음과 같이 라이브러리를 설치해야 합니다: - -```bash -$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ - libnotify-dev libgnome-keyring-dev libgconf2-dev \ - libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib curl \ - gperf bison -``` - -RHEL / CentOS를 사용하고 있다면 다음과 같이 라이브러리를 설치해야 합니다: - -```bash -$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -Fedora를 사용하고 있다면 다음과 같이 라이브러리를 설치해야 합니다: - -```bash -$ sudo dnf install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다. -패키지의 이름은 대부분 위 예시와 비슷할 것입니다. 또는 소스 코드를 내려받아 -직접 빌드하는 방법도 있습니다. - -## 코드 가져오기 - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## 부트 스트랩 - -부트스트랩 스크립트는 필수적인 빌드 의존성 라이브러리들을 모두 다운로드하고 프로젝트 -파일을 생성합니다. 스크립트가 정상적으로 작동하기 위해선 Python 2.7.x 버전이 -필요합니다. 아마 다운로드 작업이 상당히 많은 시간을 소요할 것입니다. 참고로 Electron은 -`ninja`를 빌드 툴체인으로 사용하므로 `Makefile`은 생성되지 않습니다. - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -### 크로스 컴파일 - -`arm` 아키텍쳐로 빌드 하려면 다음 의존성 라이브러리를 설치해야 합니다: - -```bash -$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \ - g++-arm-linux-gnueabihf -``` - -그리고 `bootstrap.py` 스크립트의 `--target_arch` 파라미터에 `arm` 또는 `ia32` -아키텍쳐를 지정하여 크로스 컴파일 할 수 있습니다: - -```bash -$ ./script/bootstrap.py -v --target_arch=arm -``` - -## 빌드하기 - -`Release` 와 `Debug` 두 타겟 모두 빌드 합니다: - -```bash -$ ./script/build.py -``` - -이 스크립트는 `out/R` 디렉터리에 크기가 매우 큰 Electron 실행 파일을 배치합니다. 파일 -크기는 1.3GB를 초과합니다. 이러한 문제가 발생하는 이유는 Release 타겟 바이너리가 -디버그 심볼을 포함하기 때문입니다. 파일 크기를 줄이려면 `create-dist.py` 스크립트를 -실행하세요: - -```bash -$ ./script/create-dist.py -``` - -이 스크립트는 매우 작은 배포판을 `dist` 디렉터리에 생성합니다. create-dist.py -스크립트를 실행한 이후부턴 1.3GB에 육박하는 공간을 차지하는 `out/R` 폴더의 바이너리는 -삭제해도 됩니다. - -또는 `Debug` 타겟만 빌드 할 수 있습니다: - -```bash -$ ./script/build.py -c D -``` - -빌드가 모두 끝나면 `out/D` 디렉터리에서 `electron` 디버그 바이너리를 찾을 수 있습니다. - -## 정리하기 - -빌드 파일들을 정리하려면: - -```bash -$ npm run clean -``` - -## 문제 해결 - -## libtinfo.so.5 동적 링크 라이브러리를 로드하는 도중 에러가 발생할 경우 - -미리 빌드된 `clang`은 `libtinfo.so.5`로 링크를 시도합니다. 따라서 플랫폼에 따라 -적당한 `libncurses` symlink를 추가하세요: - -```bash -$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5 -``` - -## 테스트 - -[빌드 시스템 개요: 테스트](build-system-overview.md#tests)를 보세요. - -## 고급 주제 - -기본적인 빌드 구성은 가장 주력인 Linux 배포판에 초점이 맞춰져있으며, 특정 배포판이나 -기기에 빌드할 계획이라면 다음 정보들이 도움이 될 것입니다. - -### 로컬에서 `libchromiumcontent` 빌드하기 - -미리 빌드된 `libchromiumcontent`를 사용하는 것을 피하기 위해, `bootstrap.py` -스크립트에 `--build_libchromiumcontent` 스위치를 추가할 수 있습니다: - -```bash -$ ./script/bootstrap.py -v --build_libchromiumcontent -``` - -참고로 `shared_library` 구성은 기본적으로 빌드되어있지 않으며, 다음 모드를 사용하면 -`Release` 버전의 Electron만 빌드할 수 있습니다: - -```bash -$ ./script/build.py -c R -``` - -### 다운로드된 `clang` 바이너리 대신 시스템의 `clang` 사용하기 - -기본적으로 Electron은 Chromium 프로젝트에서 제공하는 미리 빌드된 `clang` 바이너리를 -통해 빌드됩니다. 만약 어떤 이유로 시스템에 설치된 `clang`을 사용하여 빌드하고 싶다면, -`bootstrap.py`를 `--clang_dir=` 스위치와 함께 실행함으로써 해결할 수 있습니다. -빌드 스크립트를 이 스위치와 함께 실행할 때 스크립트는 `/bin/`와 같은 경로로 -`clang` 바이너리를 찾습니다. - -예를 들어 `clang`을 `/user/local/bin/clang`에 설치했다면 다음과 같습니다: - -```bash -$ ./script/bootstrap.py -v --build_libchromiumcontent --clang_dir /usr/local -$ ./script/build.py -c R -``` - -### `clang` 대신 다른 컴파일러 사용하기 - -Electron을 `g++`과 같은 다른 컴파일러로 빌드하려면, 먼저 `--disable_clang` 스위치를 -통해 `clang`을 비활성화 시켜야 하고, 필요하다면 `CC`와 `CXX` 환경 변수도 설정합니다. - -예를 들어 GCC 툴체인을 사용하여 빌드한다면 다음과 같습니다: - -```bash -$ env CC=gcc CXX=g++ ./script/bootstrap.py -v --build_libchromiumcontent --disable_clang -$ ./script/build.py -c R -``` - -### 환경 변수 - -또한 `CC`와 `CXX`와는 별개로, 빌드 구성을 변경하기 위해 다음 환경 변수들을 사용할 수 -있습니다: - -* `CPPFLAGS` -* `CPPFLAGS_host` -* `CFLAGS` -* `CFLAGS_host` -* `CXXFLAGS` -* `CXXFLAGS_host` -* `AR` -* `AR_host` -* `CC` -* `CC_host` -* `CXX` -* `CXX_host` -* `LDFLAGS` - -이 환경 변수는 `bootstrap.py` 스크립트를 실행할 때 설정되어야 하며, `build.py` -스크립트에선 작동하지 않습니다. diff --git a/docs-translations/ko-KR/development/build-instructions-osx.md b/docs-translations/ko-KR/development/build-instructions-osx.md deleted file mode 100644 index fa5637def0a4..000000000000 --- a/docs-translations/ko-KR/development/build-instructions-osx.md +++ /dev/null @@ -1,65 +0,0 @@ -# 빌드 설명서 (macOS) - -이 가이드는 macOS 운영체제에서 Electron을 빌드하는 방법을 설명합니다. - -## 빌드전 요구 사항 - -* macOS >= 10.8 -* [Xcode](https://developer.apple.com/technologies/tools/) >= 5.1 -* [node.js](http://nodejs.org) (external) - -만약 Homebrew 를 이용해 파이썬을 설치했다면 다음 파이썬 모듈도 같이 설치해야 -합니다: - -* [pyobjc](https://pythonhosted.org/pyobjc/install.html) - -## 코드 가져오기 - -```bash -$ git clone https://github.com/electron/electron -``` - -## 부트 스트랩 - -부트스트랩 스크립트는 필수적인 빌드 의존성 라이브러리들을 모두 다운로드하고 -프로젝트 파일을 생성합니다. 참고로 Electron은 [ninja](https://ninja-build.org/) -를 빌드 툴체인으로 사용하므로 Xcode 프로젝트는 생성되지 않습니다. - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -## 빌드하기 - -`Release` 와 `Debug` 두 타겟 모두 빌드 합니다: - -```bash -$ ./script/build.py -``` - -또는 `Debug` 타겟만 빌드 할 수 있습니다: - -```bash -$ ./script/build.py -c D -``` - -빌드가 모두 끝나면 `out/D` 디렉터리에서 `Electron.app` 실행 파일을 찾을 수 -있습니다. - -## 32비트 지원 - -Electron은 현재 macOS 64비트만 지원하고 있습니다. 그리고 앞으로도 macOS 32비트는 -지원할 계획이 없습니다. - -## 정리하기 - -빌드 파일들을 정리하려면: - -```bash -$ npm run clean -``` - -## 테스트 - -[빌드 시스템 개요: 테스트](build-system-overview.md#tests)를 보세요. diff --git a/docs-translations/ko-KR/development/build-instructions-windows.md b/docs-translations/ko-KR/development/build-instructions-windows.md deleted file mode 100644 index 56fd4314fccd..000000000000 --- a/docs-translations/ko-KR/development/build-instructions-windows.md +++ /dev/null @@ -1,147 +0,0 @@ -# 빌드 설명서 (Windows) - -이 가이드는 Windows 운영체제에서 Electron을 빌드하는 방법을 설명합니다. - -## 빌드전 요구 사항 - -* Windows 7 / Server 2008 R2 또는 최신 버전 -* Visual Studio 2015 - [VS 2015 커뮤니티 에디션 무료 다운로드](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) -* [Python 2.7](http://www.python.org/download/releases/2.7/) -* [Node.js](http://nodejs.org/download/) -* [Git](http://git-scm.com) - -현재 사용하고 있는 PC에 Windows를 설치하지 않았다면 -[dev.microsoftedge.com](https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/)에서 -사용 기한이 정해져있는 무료 가상머신 버전의 Windows를 받아 Electron을 빌드하는 방법도 -있습니다. - -Electron은 모든 빌드를 command-line 스크립트를 통해 빌드합니다. 따라서 빌드에 Visual -Studio를 사용할 수 없습니다. 하지만 여전히 Electron을 개발할 땐 어떤 에디터든 사용이 -가능합니다. 그리고 빠른 시일내에 Visual Studio를 이용한 빌드도 지원할 계획입니다. - -**참고:** Visual Studio가 직접 빌드에 사용되지 않더라도 IDE와 같이 제공된 빌드 -툴체인이 빌드에 **반드시** 사용되므로 여전히 필요합니다. - -**참고:** Visual Studio 2013은 사용할 수 없습니다 MSVS **2015** 을 사용하고 있는지 -확인해주세요. - -## 코드 가져오기 - -```powershell -$ git clone https://github.com/electron/electron.git -``` - -## 부트 스트랩 - -부트스트랩 스크립트는 필수적인 빌드 의존성 라이브러리들을 모두 다운로드하고 프로젝트 -파일을 생성합니다. 참고로 Electron은 `ninja`를 빌드 툴체인으로 사용하므로 Visual -Studio 프로젝트는 생성되지 않습니다. - -```powershell -$ cd electron -$ python script\bootstrap.py -v -``` - -## 빌드하기 - -`Release` 와 `Debug` 두 타겟 모두 빌드 합니다: - -```powershell -$ python script\build.py -``` - -또는 `Debug` 타겟만 빌드 할 수 있습니다: - -```powershell -$ python script\build.py -c D -``` - -빌드가 모두 끝나면 `out/D` (디버그 타겟) 또는 `out/R` (릴리즈 타겟) 디렉터리에서 -`electron.exe` 실행 파일을 찾을 수 있습니다. - -## 32비트 빌드 - -32비트를 타겟으로 빌드 하려면 부트스트랩 스크립트를 실행할 때 `--target_arch=ia32` -인수를 같이 넘겨주면 됩니다: - -```powershell -$ python script\bootstrap.py -v --target_arch=ia32 -``` - -다른 빌드 단계도 정확하게 같습니다. - -## Visual Studio 프로젝트 - -Visual Studio 프로젝트를 생성하려면, `--msvs` 인수를 전달할 수 있습니다: - -```powershell -$ python script\bootstrap.py --msvs -``` - -## 정리하기 - -빌드 파일들을 정리하려면: - -```powershell -$ npm run clean -``` - -## 테스트 - -[빌드 시스템 개요: 테스트](build-system-overview.md#tests)를 보세요. - -## 문제 해결 - -### Command xxxx not found - -만약 `Command xxxx not found`와 같은 형식의 에러가 발생했다면 -`VS2015 Command Prompt` 콘솔로 빌드 스크립트를 실행해 보는게 좋습니다. - -### Fatal internal compiler error: C1001 - -Visual Studio가 업데이트까지 완벽하게 설치된 최신버전인지 확인하세요. - -### Assertion failed: ((handle))->activecnt >= 0 - -Cygwin에서 빌드 할 경우 `bootstrap.py` 스크립트가 다음의 에러와 함께 빌드에 실패할 수 -있습니다: - -``` -Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430 - -Traceback (most recent call last): - File "script/bootstrap.py", line 87, in - sys.exit(main()) - File "script/bootstrap.py", line 22, in main - update_node_modules('.') - File "script/bootstrap.py", line 56, in update_node_modules - execute([NPM, 'install']) - File "/home/zcbenz/codes/raven/script/lib/util.py", line 118, in execute - raise e -subprocess.CalledProcessError: Command '['npm.cmd', 'install']' returned non-zero exit status 3 -``` - -이 버그는 Cygwin Python과 Win32 Node를 같이 사용할 때 발생합니다. 부트스트랩 -스크립트에서 Win32 Python을 사용함으로써 이 문제를 해결할 수 있습니다. `C:\Python27` -디렉터리에 Python이 설치되었다는 가정하에 다음 명령을 실행하면 됩니다: - -```bash -$ /cygdrive/c/Python27/python.exe script/bootstrap.py -``` - -### LNK1181: cannot open input file 'kernel32.lib' - -32비트 Node.js를 다시 설치하세요. - -### Error: ENOENT, stat 'C:\Users\USERNAME\AppData\Roaming\npm' - -간단하게 해당 디렉터리를 생성하면 [문제가 해결될 겁니다](http://stackoverflow.com/a/25095327/102704): - -```powershell -$ mkdir ~\AppData\Roaming\npm -``` - -### node-gyp is not recognized as an internal or external command - -Git Bash로 빌드 했을 때 이러한 에러가 발생할 수 있습니다. 반드시 PowerShell이나 -VS2015 Command Prompt에서 빌드를 진행해야 합니다. diff --git a/docs-translations/ko-KR/development/build-system-overview.md b/docs-translations/ko-KR/development/build-system-overview.md deleted file mode 100644 index fd74ac57c12d..000000000000 --- a/docs-translations/ko-KR/development/build-system-overview.md +++ /dev/null @@ -1,117 +0,0 @@ -# 빌드 시스템 개요 - -Electron은 프로젝트 생성을 위해 [gyp](https://gyp.gsrc.io/)를 사용하며 -[ninja](https://ninja-build.org/)를 이용하여 빌드합니다. 프로젝트 설정은 `.gyp` 와 -`.gypi` 파일에서 볼 수 있습니다. - -## gyp 파일 - -Electron을 빌드 할 때 `gyp` 파일들은 다음과 같은 규칙을 따릅니다: - -* `electron.gyp`는 Electron의 빌드 과정 자체를 정의합니다. -* `common.gypi`는 Node가 Chromium과 함께 빌드될 수 있도록 조정한 빌드 설정입니다. -* `brightray/brightray.gyp`는 `brightray`의 빌드 과정을 정의하고 Chromium - 링킹에 대한 기본적인 설정을 포함합니다. -* `brightray/brightray.gypi`는 빌드에 대한 일반적인 설정이 포함되어 있습니다. - -## 구성요소 빌드 - -Chromium은 꽤나 큰 프로젝트입니다. 이러한 이유로 인해 최종 링킹 작업은 상당한 시간이 -소요될 수 있습니다. 보통 이런 문제는 개발을 어렵게 만듭니다. 우리는 이 문제를 해결하기 -위해 Chromium의 "component build" 방식을 도입했습니다. 이는 각각의 컴포넌트를 각각 -따로 분리하여 공유 라이브러리로 빌드 합니다. 하지만 이 빌드 방식을 사용하면 링킹 작업은 -매우 빨라지지만 실행 파일 크기가 커지고 성능이 저하됩니다. - -Electron도 이러한 방식에 상당히 비슷한 접근을 했습니다: -`Debug` 빌드 시 바이너리는 공유 라이브러리 버전의 Chromium 컴포넌트를 사용함으로써 -링크 속도를 높이고, `Release` 빌드 시 정적 라이브러리 버전의 컴포넌트를 사용합니다. -이렇게 각 빌드의 단점을 상호 보완하여 디버그 시 빌드 속도는 향상되고 배포판 빌드의 -공유 라이브러리의 단점은 개선했습니다. - -## 부트스트랩 최소화 - -Prebuilt된 모든 Chromium 바이너리들은 부트스트랩 스크립트가 실행될 때 다운로드됩니다. -기본적으로 공유 라이브러리와 정적 라이브러리 모두 다운로드되며 최종 전체 파일 크기는 -플랫폼에 따라 800MB에서 2GB까지 차지합니다. - -기본적으로 (`libchromiumcontent`)는 Amazon Web Service를 통해 다운로드 됩니다. 만약 -`LIBCHROMIUMCONTENT_MIRROR` 환경 변수가 설정되어 있으면 부트스트랩은 해당 링크를 -사용하여 바이너리를 다운로드 합니다. [libchromiumcontent-qiniu-mirror](https://github.com/hokein/libchromiumcontent-qiniu-mirror)는 -libchromiumcontent의 미러입니다. 만약 AWS에 접근할 수 없다면 -`export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/` 미러를 -통해 다운로드 할 수 있습니다. - -만약 빠르게 Electron의 개발 또는 테스트만 하고 싶다면 `--dev` 플래그를 추가하여 공유 -라이브러리만 다운로드할 수 있습니다: - -```bash -$ ./script/bootstrap.py --dev -$ ./script/build.py -c D -``` - -## 두 절차에 따른 프로젝트 생성 - -Electron은 `Release`와 `Debug` 빌드가 서로 다른 라이브러리 링크 방식을 사용합니다. -하지만 `gyp`는 따로 빌드 설정을 분리하여 라이브러리 링크 방식을 정의하는 방법을 -지원하지 않습니다. - -이 문제를 해결하기 위해 Electron은 링크 설정을 제어하는 `gyp` 변수 -`libchromiumcontent_component`를 사용하고 `gyp`를 실행할 때 단 하나의 타겟만을 -생성합니다. - -## 타겟 이름 - -많은 프로젝트에서 타겟 이름을 `Release` 와 `Debug`를 사용하는데 반해 Electron은 -`R`과 `D`를 대신 사용합니다. 이유는 가끔 알 수 없는 이유(randomly)로 `Release` 와 -`Debug` 중 하나만 빌드 설정에 정의되어 있을때 `gyp`가 크래시를 일으키는데 이유는 앞서 -말한 바와 같이 Electron은 한번에 한개의 타겟만을 생성할 수 있기 때문입니다. - -이 문제는 개발자에게만 영향을 미칩니다. 만약 단순히 Electron을 rebranding 하기 위해 -빌드 하는 것이라면 이 문제에 신경 쓸 필요가 없습니다. - -## 테스트 - -변경사항이 프로젝트 코딩 스타일을 준수하는지 테스트하려면 다음 명령을 사용하세요: - -```bash -$ npm run lint -``` - -기능을 테스트하려면 다음 명령을 사용하세요: - -```bash -$ npm test -``` - -Electron 소스 코드를 변경할 때 마다, 테스트 전에 빌드를 다시 실행해야 합니다: - -```bash -$ npm run build && npm test -``` - -모카의 [전용 테스트](https://mochajs.org/#exclusive-tests) 기능을 사용해서 특정 -테스트 또는 블록을 분리하여 테스트 세트 실행을 빠르게 할 수 있습니다.`describe` -또는 `it` 함수 호출에 `.only` 만 붙이세요: - -```js -describe.only('some feature', function () { - // ... 이 블록에서는 테스트만 실행될 것 입니다. -}) -``` - -또는, 주어진 정규 표현 패턴에 일치하는 경우에만 테스트를 실행하기 위해 모카의 -`grep` 을 사용할 수 있습니다: - -```sh -$ npm test -- --grep child_process -``` - -테스트시 (`runas` 같은) 네이티브 모듈을 포함하면 디버그 빌드에서 실행할 수 -없습니다. (자세한 것은 [#2558](https://github.com/electron/electron/issues/2558) -를 보세요). 그러나 릴리즈 빌드에서는 작동할 것 입니다. - -릴리즈 빌드로 테스트를 실행하려면 다음 명령을 사용하세요: - -```bash -$ npm test -- -R -``` diff --git a/docs-translations/ko-KR/development/clang-format.md b/docs-translations/ko-KR/development/clang-format.md deleted file mode 100644 index b07c74c6f5bd..000000000000 --- a/docs-translations/ko-KR/development/clang-format.md +++ /dev/null @@ -1,36 +0,0 @@ -# C++ 코드에서 clang-format 사용하기 - -[`clang-format`](http://clang.llvm.org/docs/ClangFormat.html) 은 -C/C++/Objective-C 코드 자동 서식 맞춤 도구입니다. 그래서 개발자들은 코드 검토시에 -스타일 문제에 대해 걱정할 필요가 없습니다. - -풀 리퀘스트를 하기 전에 변경된 C++ 코드의 서식을 맞추는 것이 좋습니다. 이것은 -당신과 검토자들의 시간을 절약해 줄 것입니다. - -`npm install -g clang-format` 으로 `clang-format` 과 `git-clang-format` 을 -설치할 수 있습니다. - -Electron C++ 코드 형식에 따라 자동 서식 맞춤을 하려면, 간단하게 -`clang-format -i path/to/electron/file.cc` 를 실행하면 됩니다. 이것은 -macOS/Linux/Windows 에서 작동합니다. - -변경된 코드를 서식에 맞추는 작업 흐름: - -1. Electron 저장소의 코드를 변경합니다. -2. `git add your_changed_file.cc` 를 실행합니다. -3. `git-clang-format` 를 실행하면, `your_changed_file.cc` 에서 변경을 확인할 수 - 있습니다. 이 변경은 `clang-format` 에서 생성됩니다. -4. `git add your_changed_file.cc` 를 실행하고, 변경사항을 커밋합니다. -5. 이제 브랜치를 풀 리퀘스트 할 수 있습니다. - -마지막 git 커밋 (HEAD) 의 변경된 내용의 서식을 맞추려면, -`git-clang-format HEAD~1` 을 실행하면 됩니다. 자세한 내용은 -`git-clang-format -h` 를 보세요. - -## 편집기 통합 - -`clang-format` 을 당신이 선호하는 편집기에 통합할 수 있습니다. -편집기 통합을 설정하는 방법에 대한 자세한 지침은 다음 페이지를 참조하세요: - - * [Atom](https://atom.io/packages/clang-format) - * [Vim & Emacs](http://clang.llvm.org/docs/ClangFormat.html#vim-integration) diff --git a/docs-translations/ko-KR/development/coding-style.md b/docs-translations/ko-KR/development/coding-style.md deleted file mode 100644 index 91f08cf8472b..000000000000 --- a/docs-translations/ko-KR/development/coding-style.md +++ /dev/null @@ -1,57 +0,0 @@ -# 코딩 스타일 - -이 가이드는 Electron의 코딩 스타일에 관해 설명합니다. - -`npm run lint`를 실행하여 `cpplint`와 `eslint`를 통해 어떤 코딩 스타일 이슈를 확인할 -수 있습니다. - -## C++과 Python - -C++과 Python 스크립트는 Chromium의 -[코딩 스타일](http://www.chromium.org/developers/coding-style)을 따릅니다. -자동으로 C++ 코드 형식을 맞추기 위해 [clang-format](clang-format.md) 을 사용할 -수 있습니다. 파이선 스크립트 `script/cpplint.py`를 사용하여 모든 파일이 해당 -코딩스타일에 맞게 코딩 했는지 확인할 수 있습니다. - -Python 버전은 2.7을 사용합니다. - -C++ 코드는 많은 Chromium의 추상화와 타입을 사용합니다. 따라서 Chromium 코드에 대해 잘 -알고 있어야 합니다. 이와 관련하여 시작하기 좋은 장소로 Chromium의 -[Important Abstractions and Data Structures](https://www.chromium.org/developers/coding-style/important-abstractions-and-data-structures) -문서가 있습니다. 이 문서에선 몇가지 특별한 타입과 스코프 타입(스코프 밖으로 나가면 -자동으로 메모리에서 할당을 해제합니다. 스마트 포인터와 같습니다) 그리고 로깅 메커니즘 -등을 언급하고 있습니다. - -## JavaScript - -* [표준](http://npm.im/standard) JavaScript 코딩 스타일을 사용합니다. -* 파일 이름의 공백은 `_`대신에 `-`을 사용하여야 합니다. 예를 들어 -`file_name.js`를 `file-name.js`로 고쳐야 합니다. 왜냐하면 -[github/atom](https://github.com/github/atom)에서 사용되는 모듈의 이름은 보통 -`module-name` 형식이기 때문입니다. 이 규칙은 '.js' 파일에만 적용됩니다. -* 적절한 곳에 새로운 ES6/ES2015 문법을 사용해도 됩니다. - * [`const`](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/const) - 는 requires와 다른 상수에 사용합니다 - * [`let`](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/let) - 은 변수를 정의할 때 사용합니다 - * [Arrow functions](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Arrow_functions) - 는 `function () { }` 표현 대신에 사용합니다 - * [Template literals](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Template_literals) - 는 `+`로 문자열을 합치는 대신 사용합니다. - -## 이름 짓기 - -Electron API는 Node.js와 비슷한 명명법을 사용합니다: - -- `BrowserWindow`와 같은 모듈 자체를 뜻하는 이름은, `CamelCase`를 사용합니다. -- `globalShortcut`과 같은 API의 세트일 땐, `mixedCase`를 사용합니다. -- API가 객체의 속성일 경우, 그리고 `win.webContents`와 같이 충분히 복잡하고 분리된 - 부분일 경우, `mixedCase`를 사용합니다. -- 다른 모듈이 아닌 API를 구현할 땐, ` Tag` 또는 `Process Object`와 같이 - 단순하고 자연스러운 제목을 사용합니다. - -새로운 API를 만들 땐 jQuery의 one-function 스타일 대신 getter, setter스타일을 -사용해야 합니다. 예를 들어 `.text([text])` 대신 `.getText()`와 `.setText(text)` -형식으로 함수를 설계하면 됩니다. 포럼에서 이 문제에 대한 -[논의](https://github.com/electron/electron/issues/46)가 -진행되고 있습니다. diff --git a/docs-translations/ko-KR/development/debug-instructions-macos.md b/docs-translations/ko-KR/development/debug-instructions-macos.md deleted file mode 100644 index df42f99fdadc..000000000000 --- a/docs-translations/ko-KR/development/debug-instructions-macos.md +++ /dev/null @@ -1,125 +0,0 @@ -# macOS 에서 디버깅하기 - -만약 작성한 Javascript 애플리케이션이 아닌 Electron 자체의 크래시나 문제를 -경험하고 있다면, 네이티브/C++ 디버깅에 익숙하지 않은 개발자는 디버깅이 약간 -까다로울 수 있습니다. 그렇다 해도, lldb, Electron 소스 코드가 중단점을 통해 -순차적으로 쉽게 디버깅할 수 있느 환경을 제공합니다. - -## 요구사항 - -* **Electron의 디버그 빌드**: 가장 쉬운 방법은 보통 [macOS용 빌드 설명서] - (buildinstruction-osx.md)에 명시된 요구 사항과 툴을 사용하여 스스로 빌드하는 - 것입니다. 물론 직접 다운로드 받은 Electron 바이너리에도 디버거 연결 및 - 디버깅을 사용할 수 있지만, 실질적으로 디버깅이 까다롭게 고도의 최적화가 - 되어있음을 발견하게 될 것입니다: 인라인화, 꼬리 호출, 이외 여러 가지 생소한 - 최적화가 적용되어 디버거가 모든 변수와 실행 경로를 정상적으로 표시할 수 - 없습니다. - -* **Xcode**: Xcode 뿐만 아니라, Xcode 명령 줄 도구를 설치합니다. 이것은 LLDB, - macOS Xcode 의 기본 디버거를 포함합니다. 그것은 데스크톱과 iOS 기기와 - 시뮬레이터에서 C, Objective-C, C++ 디버깅을 지원합니다. - -## Electron에 디버거 연결하고 디버깅하기 - -디버깅 작업을 시작하려면, Terminal 을 열고 디버그 빌드 상태의 Electron 을 -전달하여 `lldb` 를 시작합니다. - - -```bash -$ lldb ./out/D/Electron.app -(lldb) target create "./out/D/Electron.app" -Current executable set to './out/D/Electron.app' (x86_64). -``` - -### 중단점 설정 - -LLDB 는 강력한 도구이며 코드 검사를 위한 다양한 전략을 제공합니다. 간단히 -소개하자면, JavaScript 에서 올바르지 않은 명령을 호출한다고 가정합시다 - 당신은 -명령의 C++ 부분에서 멈추길 원하며 그것은 Electron 소스 내에 있습니다. - -관련 코드는 `./atom/` 에서 찾을 수 있으며 마찬가지로 Brightray 도 -`./brightray/browser` 와 `./brightray/common` 에서 찾을 수 -있습니다. 당신이 열정적이라면, Chromium 을 직접 디버깅할 수 있으며, -`chromium_src` 에서 찾을 수 있습니다. - -app.setName() 을 디버깅한다고 가정합시다, 이것은 browser.cc 에 -Browser::SetName() 으로 정의되어있습니다. breakpoint 명령으로 멀추려는 파일과 -줄을 명시하여 중단점을 설정합시다: - -```bash -(lldb) breakpoint set --file browser.cc --line 117 -Breakpoint 1: where = Electron Framework``atom::Browser::SetName(std::__1::basic_string, std::__1::allocator > const&) + 20 at browser.cc:118, address = 0x000000000015fdb4 -``` - -그리고 Electron 을 시작하세요: - -```bash -(lldb) run -``` - -Electron 이 시작시에 앱의 이름을 설정하기때문에, 앱은 즉시 중지됩니다: - -```bash -(lldb) run -Process 25244 launched: '/Users/fr/Code/electron/out/D/Electron.app/Contents/MacOS/Electron' (x86_64) -Process 25244 stopped -* thread #1: tid = 0x839a4c, 0x0000000100162db4 Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 20 at browser.cc:118, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 - frame #0: 0x0000000100162db4 Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 20 at browser.cc:118 - 115 } - 116 - 117 void Browser::SetName(const std::string& name) { --> 118 name_override_ = name; - 119 } - 120 - 121 int Browser::GetBadgeCount() { -(lldb) -``` - -현재 매개변수와 지역 변수를 보기위해, `frame variable` (또는 `fr v`) 를 -실행하면, 현재 앱 이름이 "Electron" 인 것을 불 수 있습니다. - -```bash -(lldb) frame variable -(atom::Browser *) this = 0x0000000108b14f20 -(const string &) name = "Electron": { - [...] -} -``` - -현재 선택된 쓰레드에서 소스 수준 한단계를 실행하기위해, `step` (또는 `s`) 를 -실행하세요. `name_override_.empty()` 로 들어가게 됩니다. 스텝 오버 실행은, -`next` (또는 `n`) 을 실행하세요. - -```bash -(lldb) step -Process 25244 stopped -* thread #1: tid = 0x839a4c, 0x0000000100162dcc Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 44 at browser.cc:119, queue = 'com.apple.main-thread', stop reason = step in - frame #0: 0x0000000100162dcc Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 44 at browser.cc:119 - 116 - 117 void Browser::SetName(const std::string& name) { - 118 name_override_ = name; --> 119 } - 120 - 121 int Browser::GetBadgeCount() { - 122 return badge_count_; -``` - -디버깅을 끝내려면, `process continue` 를 실행하세요. 또한 쓰레드에서 실행 줄 -수를 지정할 수 있습니다 (`thread until 100`). 이 명령은 현재 프레임에서 100 줄에 -도달하거나 현재 프레임을 나가려고 할 때 까지 쓰레드를 실행합니다. - -이제, Electron 의 개발자 도구를 열고 `setName` 을 호출하면, 다시 중단점을 만날 -것 입니다. - -### 더 읽을거리 -LLDB 는 훌륭한 문서가 있는 강력한 도구입니다. 더 학습하기 위해, -[LLDB 명령 구조 참고][lldb-command-structure] 와 -[LLDB 를 독립 실행 디버거로 사용하기][lldb-standalone] 같은 애플의 디버깅 -문서를 고려하세요. - -LLDB 의 환상적인 [설명서와 학습서][lldb-tutorial] 를 확인할 수 있습니다. -그것은 더 복잡한 디버깅 시나리오를 설명합니다. - -[lldb-command-structure]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-basics.html#//apple_ref/doc/uid/TP40012917-CH2-SW2 -[lldb-standalone]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-terminal-workflow-tutorial.html -[lldb-tutorial]: http://lldb.llvm.org/tutorial.html diff --git a/docs-translations/ko-KR/development/debug-instructions-windows.md b/docs-translations/ko-KR/development/debug-instructions-windows.md deleted file mode 100644 index b80e4d99a194..000000000000 --- a/docs-translations/ko-KR/development/debug-instructions-windows.md +++ /dev/null @@ -1,87 +0,0 @@ -# Windows에서 Electron 디버깅하기 - -만약 작성한 Javascript 애플리케이션이 아닌 Electron 자체의 크래시나 문제를 경험하고 -있다면, 네이티브/C++ 디버깅에 익숙하지 않은 개발자는 디버깅이 약간 까다로울 수 -있습니다. 그렇다 해도, Visual Studio, GitHub의 Electron이 호스팅하는 심볼 서버, -Electron 소스 코드가 중단점을 통해 순차적으로 쉽게 디버깅할 수 있는 환경을 제공합니다. - -## 요구 사항 - -* **Electron의 디버그 빌드**: 가장 쉬운 방법은 보통 - [Windows용 빌드 설명서](build-instructions-windows.md)에 명시된 요구 사항과 툴을 - 사용하여 스스로 빌드하는 것입니다. 물론 직접 다운로드 받은 Electron 바이너리에도 - 디버거 연결 및 디버깅을 사용할 수 있지만, 실질적으로 디버깅이 까다롭게 고도의 - 최적화가 되어있음을 발견하게 될 것입니다: 인라인화, 꼬리 호출, 이외 여러 가지 - 생소한 최적화가 적용되어 디버거가 모든 변수와 실행 경로를 정상적으로 표시할 수 - 없습니다. - -* **Visual Studio와 C++ 툴**: Visual Studio 2013과 Visual Studio 2015 두 가지 - 커뮤니티 에디션 모두 잘 작동합니다. 설치가 완료되면, - [Visual Studio가 GitHub의 Electron 심볼 서버를 사용하도록](setting-up-symbol-server.md) - 설정해야 합니다. 이 작업은 Visual Studio가 Electron에서 무슨일이 일어나는지 더 잘 - 이해할 수 있도록 하며 변수를 사람이 읽기 좋은 포맷으로 쉽게 표현할 수 있도록 합니다. - -* **ProcMon**: 이 무료 [SysInternals][sys-internals] 툴은 프로세스 인수, 파일 - 핸들러 그리고 레지스트리 작업을 탐색할 수 있게 도와줍니다. - -## Electron에 디버거 연결하고 디버깅하기 - -디버깅 작업을 시작하려면, PowerShell/CMD 중 한 가지를 열고 디버그 빌드 상태의 -Electron에 인수로 애플리케이션을 전달하여 실행합니다: - -```powershell -$ ./out/D/electron.exe ~/my-electron-app/ -``` - -### 중단점 설정 - -그리고, Visual Studio를 엽니다. Electron은 Visual Studio로 만들어지지 않았으며 -이러한 이유로 인해 프로젝트 파일을 가지고 있지 않습니다. 하지만 "파일로 열기"를 통해 -소스 코드 파일들을 열 수 있습니다. Visual Studio가 각각의 파일을 따로 연다는 것입니다. -여전히 중단점을 설정할 수 있습니다. Visual Studio는 현재 소스 코드와 일치하는 작동 -중인 프로세스와 중단점을 자동으로 찾아냅니다. - -관련된 코드 파일들은 `./atom/`에서 찾을 수 있으며 또한 Brightray 안 -`./brightray/browser`와 `./brightray/common`에서도 찾을 수 있습니다. -만약 하드코어를 좋아한다면, Chromium을 직접 디버깅할 수도 있습니다. 확실히 -`chromium_src` 안에서 찾을 수 있습니다. - -### 디버거 연결 - -로컬에서 작동 중인 프로세스 또는 원격 컴퓨터에 Visual Studio 디버거를 적용시킬 수 -있습니다. 프로세스의 실행이 끝난 후, 디버그 / 프로세스에 연결을 (또는 `Ctrl+Alt+P` -입력) 클릭하면 "프로세스에 연결" 대화 상자가 열립니다. 이 도구를 통해 로컬 또는 -원격에서 작동 중인 애플리케이션을 디버깅할 수 있으며 여러 프로세스를 동시에 디버깅할 -수도 있습니다. - -만약 Electron이 서로 다른 유저 계정에서 실행 중이라면, `모든 사용자의 프로세스 -보이기`를 선택하면 됩니다. 참고로 이는 `BrowserWindow`가 열린 개수에 따라 달라질 수 -있으며 아마 다수의 프로세스를 발견할 수 있을 것입니다. 전형적인 one-window -애플리케이션은 Visual Studio에서 두 개의 `Electron.exe` 항목으로 표시됩니다. 하나는 -메인 프로세스이며 다른 하나는 렌더러 프로세스입니다. 리스트는 단지 이름 하나만 제공하기 -때문에 현재까지는 다른 적절한 프로세스 판별법이 없습니다. - -### 어떤 프로세스에 디버거를 적용해야 하나요? - -코드는 메인 프로세스 내에서 실행되며 (이는 코드를 안에서 찾을 수 있거나, 결국 메인 -Javascript 파일에 의해 실행) remote (`require('electron').remote`)를 사용하여 -코드를 실행하는 것 또한 메인 프로세스 내에서 실행됩니다. 다른 코드는 각각의 렌더러 -프로세스 내에서 실행됩니다. - -디버깅할 때 여러 프로그램에 디버거를 적용할 수 있지만, 언제나 한 개의 프로그램만 -디버거에서 활성화되어야 합니다. `디버그 경로` 툴바 또는 `프로세스 창`에서 활성화 -프로그램을 설정할 수 있습니다. - -## 프로세스를 관찰하기 위해 ProcMon 사용 - -Visual Studio는 특정 코드 경로를 탐색하는것에 대해 환상적인 기능을 제공하고 ProcMon은 -애플리케이션이 운영체제와 하는 일의 모든 것을 관찰하는데 강력한 기능을 가지고 있습니다. -이 툴은 프로세스의 파일, 레지스트리, 네트워킹, 프로세스, 프로파일링 상세를 포착할 수 -있으며 강력하게 **모든** 이벤트의 발생을 로깅을 시도합니다. 만약 애플리케이션이 -운영체제에 대해 무슨 일을 하고 있는지 이해하고 싶다면 이는 좋은 자원이 될 것입니다. - -ProcMon의 기본적인 디버깅 기능을 알아보고 싶다면 Microsoft에서 제공하는 -[동영상 강좌][procmon-instructions]를 참고하세요. - -[sys-internals]: https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx -[procmon-instructions]: https://channel9.msdn.com/shows/defrag-tools/defrag-tools-4-process-monitor diff --git a/docs-translations/ko-KR/development/releasing.md b/docs-translations/ko-KR/development/releasing.md deleted file mode 100644 index 231eac130791..000000000000 --- a/docs-translations/ko-KR/development/releasing.md +++ /dev/null @@ -1,110 +0,0 @@ -# 릴리즈 - -이 문서는 Electron 의 새버전 출시 절차를 설명합니다. - -## 릴리즈 노트 편집 - -현재 절차는 로컬 파일을 유지하고 병합된 풀 요청과 같은 중요한 변화의 추척을 -보존하는 것 입니다. 노트 형식에 대한 예제는, [릴리즈 페이지]에서 이전 릴리즈를 -보세요. - -## 임시 브랜치 생성 - -`release` 이름의 새 브랜치를 `master` 로부터 생성합니다. - -```sh -git checkout master -git pull -git checkout -b release -``` - -이 브랜치는 임시 릴리즈 브랜치가 생성되고 CI 빌드가 완료되는 동안 아무도 모르는 -PR 병합을 방지하기위한 예방조치로써 생성됩니다. - -## 버전 올리기 - -`major`, `minor`, `patch` 를 인수로 전달하여, `bump-version` 스크립트를 -실행하세요: - -```sh -npm run bump-version -- patch -git push origin HEAD -``` - -이것은 여러 파일의 버전 번호를 올릴 것 입니다. 예시로 [이 범프 커밋]을 보세요. - -대부분의 릴리즈는 `patch` 수준이 될 것입니다. Chrome 또는 다른 주요 변화는 -`minor` 를 사용해야합니다. 자세한 정보는, [Electron 버전 관리]를 보세요. - -## 릴리즈 초안 편집 - -1. [릴리즈 페이지]에 가면 릴리즈 노트 초안과 자리 표시자로써 릴리즈 노트를 볼 수 - 있습니다. -1. 릴리즈를 편집하고 릴리즈 노트를 추가하세요. -1. 'Save draft' 를 클릭하세요. **'Publish release' 를 누르면 안됩니다!** -1. 모든 빌드가 통과할 때 까지 기다리세요. :hourglass_flowing_sand: - -## 임시 브랜치 병합 - -임시를 마스터로 머지 커밋 생성없이 병합합니다. - -```sh -git merge release master --no-commit -git push origin master -``` -실패하면, 마스터로 리베이스하고 다시 빌드합니다: - -```sh -git pull -git checkout release -git rebase master -git push origin HEAD -``` - -## 로컬 디버그 빌드 실행 - -당신이 실제로 원하는 버전을 구축하고 있는지 확인하기 위해 로컬 디버그 빌드를 -실행합니다. 때때로 새 버전을 릴리즈하고 있다고 생각하지만, 아닌 경우가 있습니다. - -```sh -npm run build -npm start -``` - -창이 현재 업데이트된 버전을 표시하는지 확인하세요. - -## 환경 변수 설정 - -릴리즈를 게시하려면 다음 환경 변수를 설정해야합니다. 이 자격증명에 대해 다른 팀 -구성원에게 문의하세요. - -- `ELECTRON_S3_BUCKET` -- `ELECTRON_S3_ACCESS_KEY` -- `ELECTRON_S3_SECRET_KEY` -- `ELECTRON_GITHUB_TOKEN` - "저장소" 영역에 대한 개인 접근 토큰. - -이것은 한번만 수행해야합니다. - -## 릴리즈 게시 - -이 스크립트는 바이너리를 내려받고 네이티브 모듈 구축을 위해 node-gyp 으로 -윈도우에서 사용되는 노드 헤더와 .lib 링커를 생성합니다. - -```sh -npm run release -``` - -참고: 많은 파이썬의 배포판들은 여전히 오래된 HTTPS 인증서와 함께 제공됩니다. -`InsecureRequestWarning` 를 볼 수 있지만, 무시해도 됩니다. - -## 임시 브랜치 삭제 - -```sh -git checkout master -git branch -D release # 로컬 브랜치 삭제 -git push origin :release # 원격 브랜치 삭제 -``` - -[릴리즈 페이지]: https://github.com/electron/electron/releases -[이 범프 커밋]: https://github.com/electron/electron/commit/78ec1b8f89b3886b856377a1756a51617bc33f5a -[Electron 버전 관리]: ../tutorial/electron-versioning.md diff --git a/docs-translations/ko-KR/development/setting-up-symbol-server.md b/docs-translations/ko-KR/development/setting-up-symbol-server.md deleted file mode 100644 index 7a9ff46dee4e..000000000000 --- a/docs-translations/ko-KR/development/setting-up-symbol-server.md +++ /dev/null @@ -1,52 +0,0 @@ -# 디버거에서 디버그 심볼 서버 설정 - -디버그 심볼은 디버깅 세션을 더 좋게 개선해 줍니다. 디버그 심볼은 실행 파일과 동적 링크 -라이브러리에서 메서드에 대한 정보를 담고 있으며 명료한 함수 호출 스텍 정보를 제공합니다. -심볼 서버는 유저가 크기가 큰 디버깅용 파일을 필수적으로 다운로드 받지 않고도 디버거가 -알맞은 심볼, 바이너리 그리고 소스를 자동적으로 로드할 수 있도록 해줍니다. 서버 사용법은 -[Microsoft의 심볼 서버](http://support.microsoft.com/kb/311503)와 비슷합니다. -사용법을 알아보려면 이 문서를 참조하세요. - -참고로 릴리즈된 Electron 빌드는 자체적으로 많은 최적화가 되어 있는 관계로 경우에 따라 -디버깅이 쉽지 않을 수 있습니다. Inlining, tail call 등 컴파일러 최적화에 의해 디버거가 -모든 변수의 콘텐츠를 보여줄 수 없는 경우도 있고 실행 경로가 이상하게 보여지는 경우도 -있습니다. 유일한 해결 방법은 최적화되지 않은 로컬 빌드를 하는 것입니다. - -공식적인 Electron의 심볼 서버의 URL은 -https://electron-symbols.githubapp.com 입니다. 일단 이 URL에 직접적으로 -접근할 수는 없습니다: 디버깅 툴에 심볼의 경로를 추가해야 합니다. 아래의 예시를 참고하면 -로컬 캐시 디렉터리는 서버로부터 중복되지 않게 PDB를 가져오는데 사용됩니다. -`c:\code\symbols` 캐시 디렉터리를 사용중인 OS에 맞춰 적당한 경로로 변경하세요. - -## Windbg에서 심볼 서버 사용하기 - -Windbg 심볼 경로는 구분자와 `*` 문자로 설정되어 있습니다. Electron 심볼 서버만 -사용하려면 심볼 경로의 엔트리를 추가해야 합니다. (**참고:** `c:\code\symbols` -디렉터리 경로를 PC가 원하는 경로로 수정할 수 있습니다): - -``` -SRV*c:\code\symbols\*https://electron-symbols.githubapp.com -``` - -Windbg 메뉴 또는 `.sympath` 커맨드를 이용하여 환경에 `_NT_SYMBOL_PATH` 문자열을 -설정합니다. 만약 Microsoft의 심볼서버로부터 심볼을 받아오려면 다음과 같이 리스팅을 -먼저해야 합니다: - -``` -SRV*c:\code\symbols\*http://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols\*https://electron-symbols.githubapp.com -``` - -## Visual Studio에서 심볼 서버 사용하기 - - - - -## 문제 해결: Symbols will not load - -Windbg에서 다음의 커맨드를 입력하여 왜 심볼이 로드되지 않았는지에 대한 오류 내역을 -출력합니다: - -``` -> !sym noisy -> .reload /f electron.exe -``` diff --git a/docs-translations/ko-KR/development/source-code-directory-structure.md b/docs-translations/ko-KR/development/source-code-directory-structure.md deleted file mode 100644 index 050bc73793db..000000000000 --- a/docs-translations/ko-KR/development/source-code-directory-structure.md +++ /dev/null @@ -1,88 +0,0 @@ -# 소스 코드 디렉터리 구조 - -Electron의 소스 코드는 몇 개의 파트로 분리되어 있습니다. 그리고 Chromium의 분리 -규칙(separation conventions)을 주로 따르고 있습니다. - -이미 [Chromium의 멀티 프로세스 아키텍쳐](http://dev.chromium.org/developers/design-documents/multi-process-architecture)에 -익숙해져 있다면 소스 코드를 이해하기 쉬울 것입니다. - -## 소스 코드 구조 - -``` -Electron -├── atom/ - C++ 소스 코드. -| ├── app/ - 시스템 엔트리 코드. -| ├── browser/ - 주 윈도우를 포함한 프론트엔드, UI, 그리고 메인 프로세스에 관련된 -| | 코드와 렌더러 및 웹 페이지 관리 관련 코드. -| | ├── ui/ - 서로 다른 플랫폼에 대한 UI 관련 구현 코드. -| | | ├── cocoa/ - Cocoa 특정 소스 코드. -| | | ├── win/ - Windows GUI 특정 소스 코드. -| | | └── x/ - X11 특정 소스 코드. -| | ├── api/ - 메인 프로세스 API의 구현. -| | ├── net/ - 네트워킹 관련 코드. -| | ├── mac/ - Mac 특정 Objective-C 소스 코드. -| | └── resources/ - 아이콘들, 플랫폼 의존성 파일들, 기타 등등.. -| ├── renderer/ - 렌더러 프로세스에서 작동하는 코드. -| | └── api/ - 렌더러 프로세스 API의 구현. -| └── common/ - 메인과 렌더러 프로세스에서 모두 사용하는 코드, 몇가지 유틸리티 -| 함수들이 포함되어 있고 node의 메시지 루프와 Chromium의 메시지 루프를 통합. -| └── api/ - 공통 API 구현들, 기초 Electron 빌트-인 모듈들. -├── chromium_src/ - Chromium에서 복사하여 가져온 소스 코드. -├── default_app/ - Electron에 앱이 제공되지 않았을 때 보여지는 기본 페이지. -├── docs/ - 참조 문서. -├── lib/ - JavaScript 소스 코드. -| ├── browser/ - Javascript 메인 프로세스 초기화 코드. -| | └── api/ - Javascript API 구현 코드. -| ├── common/ - 메인과 렌더러 프로세스에서 모두 사용하는 JavaScript -| | └── api/ - Javascript API 구현 코드. -| └── renderer/ - Javascript 렌더러 프로세스 초기화 코드. -| └── api/ - Javascript API 구현 코드. -├── spec/ - 자동화 테스트. -├── electron.gyp - Electron의 빌드 규칙. -└── common.gypi - 컴파일러 설정 및 `node` 와 `breakpad` 등의 구성요소를 위한 빌드 - 규칙. -``` - -## 그외 디렉터리 구조 - -* **script** - 개발목적으로 사용되는 빌드, 패키징, 테스트, 기타등을 실행하는 스크립트. -* **tools** - gyp 파일에서 사용되는 헬퍼 스크립트 `script`와는 다르게 유저로부터 직접 - 실행되지 않는 스크립트들을 이곳에 넣습니다. -* **vendor** - 소스 코드의 서드파티 의존성 코드 소스 코드 디렉터리가 겹쳐 혼란을 일으킬 - 수 있기 때문에 `third_party`와 같은 Chromium 소스 코드 디렉터리에서 사용된 폴더 - 이름은 사용하지 않았습니다. -* **node_modules** - 빌드에 사용되는 node 서드파티 모듈. -* **out** - `ninja`의 임시 출력 디렉터리. -* **dist** - 배포용 바이너리를 빌드할 때 사용하는 `script/create-dist.py` - 스크립트로부터 만들어지는 임시 디렉터리. -* **external_binaries** - `gyp` 빌드를 지원하지 않아 따로 다운로드된 서드파티 - 프레임워크 바이너리들. - -## Git 서브 모듈 최신 버전으로 유지 - -Electron 저장소는 몇 가지 외부 벤더 의존성을 가지고 있으며 [/vendor][vendor] -디렉터리에서 확인할 수 있습니다. 때때로 `git status`를 실행했을 때 아마 다음과 같은 -메시지를 흔히 목격할 것입니다: - -```sh -$ git status - - modified: brightray (new commits) - modified: vendor/node (new commits) -``` - -이 외부 의존성 모듈들을 업데이트 하려면, 다음 커맨드를 실행합니다: - -```sh -git submodule update --init --recursive -``` - -만약 자기 자신이 너무 이 커맨드를 자주 사용하는 것 같다면, `~/.gitconfig` 파일을 -생성하여 편하게 업데이트할 수 있습니다: - -``` -[alias] - su = submodule update --init --recursive -``` - -[vendor]: https://github.com/electron/electron/tree/master/vendor diff --git a/docs-translations/ko-KR/faq.md b/docs-translations/ko-KR/faq.md deleted file mode 100644 index 3790e35b4cd0..000000000000 --- a/docs-translations/ko-KR/faq.md +++ /dev/null @@ -1,156 +0,0 @@ -# Electron FAQ - -## 언제 Electron이 최신 버전의 Chrome으로 업그레이드 되나요? - -Electron의 Chrome 버전은 보통 새로운 Chrome 안정 버전이 릴리즈 된 이후 1주 내지 2주 -내로 업데이트됩니다. 하지만 이러한 업데이트 주기는 보장되지 않으며 업그레이드에 필요한 -작업의 양에 따라 달라집니다. - -Electron은 크롬이 사용하는 안정된 채널만을 이용합니다, 만약 중요한 수정이 베타 또는 -개발 채널에 패치된 경우, 이전 버전의 채널로 롤백합니다. - -자세한 내용은 [보안 설명](tutorial/security.md)을 참고하세요. - -## Electron은 언제 최신 버전의 Node.js로 업그레이드 하나요? - -새로운 버전의 Node.js가 릴리즈 되면, 보통 Electron을 업그레이드 하기 전에 한 달 정도 -대기합니다. 이렇게 하면 새로운 Node.js 버전을 업데이트 함으로써 발생하는 버그들을 -피할 수 있기 때문입니다. 이러한 상황은 자주 발생합니다. - -Node.js의 새로운 기능은 보통 V8 업그레이드에서 가져옵니다. Electron은 Chrome -브라우저에 탑재된 V8을 사용하고 있습니다. 눈부신 새로운 Node.js 버전의 자바스크립트 -기능은 보통 이미 Electron에 있습니다. - -## 어떻게 웹 페이지 간에 데이터를 공유할 수 있나요? - -두 웹페이지 간에 (렌더러 프로세스) 데이터를 공유하려면 간단히 이미 모든 브라우저에서 -사용할 수 있는 HTML5 API들을 사용하면 됩니다. 가장 좋은 후보는 -[Storage API][storage], [`localStorage`][local-storage], -[`sessionStorage`][session-storage], 그리고 [IndexedDB][indexed-db]가 있습니다. - -또는 Electron에서만 사용할 수 있는 IPC 시스템을 사용하여 메인 프로세스의 global -변수에 데이터를 저장한 후 다음과 같이 렌더러 프로세스에서 `electron` 모듈의 `remote` -속성을 통하여 접근할 수 있습니다: - -```javascript -// 메인 프로세스에서 -global.sharedObject = { - someProperty: 'default value' -} -``` - -```javascript -// 첫 번째 페이지에서 -require('electron').remote.getGlobal('sharedObject').someProperty = 'new value' -``` - -```javascript -// 두 번째 페이지에서 -console.log(require('electron').remote.getGlobal('sharedObject').someProperty) -``` - -## 제작한 애플리케이션의 윈도우/트레이가 몇 분 후에나 나타납니다. - -이러한 문제가 발생하는 이유는 보통 윈도우/트레이를 담은 변수에 가비지 컬렉션이 작동해서 -그럴 가능성이 높습니다. - -이러한 문제를 맞닥뜨린 경우 다음 문서를 읽어보는 것이 좋습니다: - -* [메모리 관리][memory-management] -* [변수 스코프][variable-scope] - -만약 빠르게 고치고 싶다면, 다음과 같이 변수를 전역 변수로 만드는 방법이 있습니다: - -```javascript -app.on('ready', () => { - const tray = new Tray('/path/to/icon.png') -}) -``` - -를 이렇게: - -```javascript -let tray = null -app.on('ready', () => { - tray = new Tray('/path/to/icon.png') -}) -``` - -## Electron에서 jQuery/RequireJS/Meteor/AngularJS를 사용할 수 없습니다. - -Node.js가 Electron에 합쳐졌기 때문에, DOM에 `module`, `exports`, `require` 같은 -몇 가지 심볼들이 추가됬습니다. 따라서 같은 이름의 심볼을 사용하는 몇몇 라이브러리들과 -충돌이 발생할 수 있습니다. - -이러한 문제를 해결하려면, Electron에서 node 포함을 비활성화시켜야 합니다: - -```javascript -// 메인 프로세스에서. -let win = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -``` - -하지만 Node.js의 기능과 Electron API를 유지하고 싶다면 페이지에 다른 라이브러리를 -추가하기 전에 심볼들의 이름을 변경해야 합니다: - -```html - - - - -``` - -## `require('electron').xxx`가 undefined를 반환합니다. - -Electron의 빌트인 모듈을 사용할 때, 다음과 같은 오류가 발생할 수 있습니다: - -``` -> require('electron').webFrame.setZoomFactor(1.0); -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -이러한 문제가 발생하는 이유는 [npm의 `electron` 모듈][electron-module]이 로컬 또는 -전역 중 한 곳에 설치되어, Electron의 빌트인 모듈을 덮어씌우는 바람에 빌트인 모듈을 -사용할 수 없기 때문입니다. - -올바른 빌트인 모듈을 사용하고 있는지 확인하고 싶다면, `electron` 모듈의 경로를 -출력하는 방법이 있습니다: - -```javascript -console.log(require.resolve('electron')) -``` - -그리고 다음과 같은 경로를 가지는지 점검하면 됩니다: - -``` -"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -하지만 `node_modules/electron/index.js`와 같은 경로로 되어있을 경우, `electron` -모듈을 지우거나 이름을 바꿔야만 합니다. - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -그런데 여전히 빌트인 모듈이 계속해서 문제를 발생시키는 경우, 아마 모듈을 잘못 사용하고 -있을 가능성이 큽니다. 예를 들면 `electron.app`은 메인 프로세스에서만 사용할 수 있는 -모듈이며, 반면 `electron.webFrame` 모듈은 렌더러 프로세스에서만 사용할 수 있는 -모듈입니다. - -[memory-management]: https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron -[storage]: https://developer.mozilla.org/ko/docs/Web/API/Storage -[local-storage]: https://developer.mozilla.org/ko/docs/Web/API/Window/localStorage -[session-storage]: https://developer.mozilla.org/ko/docs/Web/API/Window/sessionStorage -[indexed-db]: https://developer.mozilla.org/ko/docs/Web/API/IndexedDB_API diff --git a/docs-translations/ko-KR/project/CODE_OF_CONDUCT.md b/docs-translations/ko-KR/project/CODE_OF_CONDUCT.md deleted file mode 100644 index d7b0eab9fd94..000000000000 --- a/docs-translations/ko-KR/project/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,63 +0,0 @@ -# 기여자 행동 강령 규약 - -## 서약 - -개방적이고 친근한 환경 조성을 위해, 기여자와 유지자는 프로젝트와 커뮤니티에서 -연령, 신체 크기, 장애, 민족성, 성 정체성과 표현, 경력, 국적, 외모, 인종, 종교 -또는 성적 정체성과 지향에 관계없이 모두에게 차별없이 참여할 것을 서약합니다. - -## 표준 - -긍정적인 환경을 조성하기 위해 기여자가 해야 할 행동은 다음과 같습니다: - -* 소외하지 않고 배려하는 언어 사용 -* 서로 다른 경험과 관점 존중 -* 열린 마음으로 건설적인 비판을 수용 -* 커뮤니티에 가장 최선이 무엇인지에 주력 -* 다른 커뮤니티 구성원들에 대한 공감 표현 - -하지말아야 할 행동은 다음과 같습니다: - -* 성적인 언어와 이미지 사용, 원치않는 성적 관심이나 접근 -* 소모적인 논쟁, 모욕적이거나 비하하는 댓글과 개인적 또는 정치적인 공격 -* 공개적이거나 개인적인 괴롭힘 -* 동의없는 집주소 또는 전자주소 등의 개인 정보의 공개 -* 부적절한 것으로 간주될 수 있는 다른 행위 - -## 책임 - -프로젝트 유지자는 허용되는 행동의 기준을 명확히 해야할 책임이 있습니다. 또한, -하지말아야 할 행동에 대해 적당하고 공정한 시정 조치를 취할 것 입니다. - -프로젝트 유지자는 이 행동 강령을 따르지 않은 댓글, 커밋, 코드, 위키 편집, -이슈와 그 외 다른 기여를 삭제, 수정 또는 거부할 권리와 책임이 있습니다. 또한, -부적당하거나 험악하거나 공격적이거나 해롭다고 생각하는 다른 행동을 한 기여자를 -일시적 또는 영구적으로 퇴장시킬 수 있습니다. - -## 범위 - -이 행동 강령은 프로젝트 영역에 적용되며, 프로젝트 또는 커뮤니티를 대표할 경우 -공개 영역에도 적용됩니다. 프로젝트 또는 커뮤니티 대표의 예로는 공식 프로젝트 -이메일 주소, 공식 소셜 미디어 계정사용 또는 온/오프라인 이벤트에서 임명된 -대표자의 활동이 있습니다. 프로젝트의 대표는 프로젝트 유지자에 의해 더 정의되고 -명확히 될 것 입니다. - -## 강제 - -모욕적인, 괴롭힘 또는 기타 하지말아야 할 행동을 발견하면 [electron@github.com](mailto:electron@github.com) 을 -통해 프로젝트 팀에 보고 해 주세요. 모든 불만사항은 검토하고 조사한 뒤 상황에 -따라 필요하고 적절하다고 생각되는 응답을 할 것 입니다. 프로젝트 팀은 사건의 -보고자와 관련한 비밀을 유지할 의무가 있습니다. 구체적인 시행 정책의 자세한 -사항은 별도로 게시할 수 있습니다. - -행동 강령을 따르지 않거나 강제하지 않은 프로젝트 유지자는 프로젝트 리더의 다른 -구성원의 결정에 따라 일시적 또는 영구적인 제재를 받을 수 있습니다. - -## 참고 - -이 행동 강령은 [기여자 규약][homepage] 의 1.4 버전을 변형하였습니다. 그 내용은 -[http://contributor-covenant.org/version/1/4/ko][version] 에서 확인할 수 -있습니다. - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ko/ diff --git a/docs-translations/ko-KR/project/CONTRIBUTING.md b/docs-translations/ko-KR/project/CONTRIBUTING.md deleted file mode 100644 index 7bcd70d00f8e..000000000000 --- a/docs-translations/ko-KR/project/CONTRIBUTING.md +++ /dev/null @@ -1,80 +0,0 @@ -# Electron에 기여하기 - -:+1::tada: 먼저, 기여에 관심을 가져주셔서 감사합니다! :tada::+1: - -이 프로젝트는 기여자 규약인 [행동강령](CODE_OF_CONDUCT.md)을 준수합니다. 따라서 이 -프로젝트의 개발에 참여하려면 이 규약을 지켜야 합니다. 받아들일 수 없는 행위를 발견했을 -경우 electron@github.com로 보고하세요. - -다음 항목들은 Electron에 기여하는 가이드라인을 제시합니다. -참고로 이 항목들은 그저 가이드라인에 불과하며 규칙이 아닙니다. 따라서 스스로의 적절한 -판단에 따라 이 문서의 변경을 제안할 수 있으며 변경시 pull request를 넣으면 됩니다. - -## 이슈 제출 - -* [여기](https://github.com/electron/electron/issues/new)에서 새로운 이슈를 만들 수 -있습니다. 하지만 이슈를 작성하기 전에 아래의 항목들을 숙지하고 가능한 한 이슈 보고에 -대해 최대한 많은 정보와 자세한 설명을 포함해야 합니다. 가능하다면 다음 항목을 포함해야 -합니다: - * 사용하고 있는 Electron의 버전 - * 현재 사용중인 운영체제 - * 가능하다면 무엇을 하려고 했고, 어떤 결과를 예측했으며, 어떤 것이 예측된대로 - 작동하지 않았는지에 대해 서술해야 합니다. -* 추가로 다음 사항을 준수하면 이슈를 해결하는데 큰 도움이 됩니다: - * 스크린샷 또는 GIF 애니메이션 이미지들 - * 터미널에 출력된 에러의 내용 또는 개발자 도구, 알림창에 뜬 내용 - * [Cursory search](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+)를 - 통해 이미 비슷한 내용의 이슈가 등록되어있는지 확인 - -## Pull Request 하기 - -* 가능한 한 스크린샷과 GIF 애니메이션 이미지를 pull request에 추가 -* JavaScript, C++과 Python등 -[참조 문서에 정의된 코딩 스타일](/docs-translations/ko-KR/development/coding-style.md)을 -준수 -* [문서 스타일 가이드](/docs-translations/ko-KR/styleguide.md)에 따라 문서를 -[Markdown](https://daringfireball.net/projects/markdown) 형식으로 작성. -* 짧은, 현재 시제 커밋 메시지 사용. [커밋 메시지 스타일 가이드](#git-커밋-메시지)를 -참고하세요 - -## 스타일 가이드 - -### 공통 코드 - -* 파일 마지막에 공백 라인(newline) 추가 -* 다음 순서에 맞춰서 require 코드 작성: - * Node 빌트인 모듈 (`path` 같은) - * Electron 모듈 (`ipc`, `app` 같은) - * 로컬 모듈 (상대 경로상에 있는) -* 다음 순서에 맞춰서 클래스 속성 지정: - * 클래스 메서드와 속성 (메서드는 `@`로 시작) - * 인스턴스 메서드와 속성 -* 플랫폼 종속적인 코드 자제: - * 파일 이름 결합시 `path.join()`을 사용. - * 임시 디렉터리가 필요할 땐 `/tmp` 대신 `os.tmpdir()`을 통해 접근. -* 명시적인 함수 종료가 필요할 땐 `return` 만 사용. - * `return null`, `return undefined`, `null`, 또는 `undefined` 사용 X - -### Git 커밋 메시지 - -* 현재 시제 사용 ("Added feature" 대신 "Add feature" 사용) -* 명령법(imperative mood) 사용 ("Moves cursor to..." 대신 "Move cursor to..." 사용) -* 첫 줄은 72자에 맞추거나 그 보다 적게 제한 -* 자유롭게 필요에 따라 이슈나 PR링크를 참조 -* 단순한 문서 변경일 경우 `[ci skip]`을 커밋 메시지에 추가 -* 커밋 메시지의 도입부에 의미있는 이모티콘 사용: - * :art: `:art:` 코드의 포맷이나 구조를 개선(추가)했을 때 - * :racehorse: `:racehorse:` 성능을 개선했을 때 - * :non-potable_water: `:non-potable_water:` 메모리 누수를 연결했을 때 - * :memo: `:memo:` 문서를 작성했을 때 - * :penguin: `:penguin:` Linux에 대한 패치를 했을 때 - * :apple: `:apple:` macOS에 대한 패치를 했을 때 - * :checkered_flag: `:checkered_flag:` Windows에 대한 패치를 했을 때 - * :bug: `:bug:` 버그를 고쳤을 때 - * :fire: `:fire:` 코드 또는 파일을 삭제했을 때 - * :green_heart: `:green_heart:` CI 빌드를 고쳤을 때 - * :white_check_mark: `:white_check_mark:` 테스트를 추가했을 때 - * :lock: `:lock:` 보안 문제를 해결했을 때 - * :arrow_up: `:arrow_up:` 의존성 라이브러리를 업데이트 했을 때 - * :arrow_down: `:arrow_down:` 의존성 라이브러리를 다운그레이드 했을 때 - * :shirt: `:shirt:` linter(코드 검사기)의 경고를 제거했을 때 diff --git a/docs-translations/ko-KR/project/README.md b/docs-translations/ko-KR/project/README.md deleted file mode 100644 index d9373539dbd9..000000000000 --- a/docs-translations/ko-KR/project/README.md +++ /dev/null @@ -1,80 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron#info=devDependencies) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -Electron 프레임워크는 JavaScript, HTML 그리고 CSS를 사용하여 -Cross-Platform 데스크톱 애플리케이션을 개발할 수 있도록 해주는 프레임워크입니다. -[Node.js](https://nodejs.org/)와 [Chromium](http://www.chromium.org)을 기반으로 -만들어졌으며 [Atom Editor](https://github.com/atom/atom)에 사용되고 있습니다. -더 많은 애플리케이션은 [이곳](https://electron.atom.io/apps)에서 확인하세요. - -Electron에 대한 중요한 알림을 받고 싶다면 Twitter에서 -[@ElectronJS](https://twitter.com/electronjs)를 팔로우 하세요. - -이 프로젝트는 기여자 규약인 [행동강령](CODE_OF_CONDUCT.md)을 준수합니다. 따라서 이 -프로젝트의 개발에 참여하려면 이 규약을 지켜야 합니다. 받아들일 수 없는 행위를 발견했을 -경우 electron@github.com로 보고하세요. - -## 다운로드 - -Linux, Windows, macOS 용으로 미리 빌드된 Electron 바이너리와 디버그 심볼이 준비되어 -있습니다. [releases](https://github.com/electron/electron/releases) 페이지에서 -받아 볼 수 있습니다. - -또한 [`npm`](https://docs.npmjs.com/)을 통해 미리 빌드된 Electron 바이너리를 설치할 -수도 있습니다: - -```sh -# $PATH에 `electron` 커맨드를 등록하고 전역에 설치합니다. -npm install electron -g - -# 개발 의존성 모듈 형태로 설치합니다. -npm install electron --save-dev -``` - -### 미러 - -- [China](https://npm.taobao.org/mirrors/electron) - -## 참조 문서 - -[Docs](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/README.md)에 -개발 지침과 API 레퍼런스가 있습니다. Electron을 빌드 하는 방법과 프로젝트에 기여하는 법 -또한 문서에 포함되어 있으니 참고하시기 바랍니다. - -## 참조 문서 (번역) - -- [브라질 포르투갈어](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [한국어](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [일본어](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [스페인어](https://github.com/electron/electron/tree/master/docs-translations/es) -- [중국어 간체](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [중국어 번체](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [터키어](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [우크라이나어](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [러시아어](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [프랑스어](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) - -## 시작하기 - -[`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -저장소를 클론하여 Electron을 간단히 접해볼 수 있습니다. - -## 커뮤니티 - -다음 링크를 통해 커뮤니티에 질문을 올리거나 토론을 나눌 수 있습니다: - -- Atom 포럼의 [`electron`](http://discuss.atom.io/c/electron) 카테고리 -- Freenode 채팅의 `#atom-shell` 채널 -- Slack의 [`Atom`](http://atom-slack.herokuapp.com/) 채널 -- [`electron-br`](https://electron-br.slack.com) *(브라질)* 커뮤니티 -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(한국)* 커뮤니티 -- [`electron-jp`](https://electron-jp-slackin.herokuapp.com/) *(일본)* 커뮤니티 -- [`electron-tr`](http://electron-tr.herokuapp.com) *(터키)* 커뮤니티 -- [`electron-id`](https://electron-id.slack.com) *(인도네시아)* 커뮤니티 - -[awesome-electron](https://github.com/sindresorhus/awesome-electron) 프로젝트에 -커뮤니티가 운영중인 유용한 예시 애플리케이션과 도구, 리소스가 있으니 참고하기 바랍니다. diff --git a/docs-translations/ko-KR/styleguide.md b/docs-translations/ko-KR/styleguide.md deleted file mode 100644 index 055cb0918568..000000000000 --- a/docs-translations/ko-KR/styleguide.md +++ /dev/null @@ -1,240 +0,0 @@ -# Electron 문서 스타일 가이드 - -Electron 문서 작성 가이드입니다. - -## 제목 - -* 각 페이지는 상단에 하나의 `#`-단계의 제목을 사용해야 합니다. -* 같은 페이지의 챕터는 `##`-단계의 제목을 사용해야 합니다. -* 보조 챕터는 포함 단계에 따라 `#` 수를 증가시켜야 합니다. -* 페이지 제목의 "of" 와 "and" 같은 접속사를 제외한 모든 단어는 대문자로 - 시작해야합니다. -* 챕터 제목은 첫 단어만 대문자로 시작합니다. - -`Quick Start` 사용 예시: - -```markdown -# Quick Start - -... - -## Main process - -... - -## Renderer process - -... - -## Run your app - -... - -### Run as a distribution - -... - -### Manually downloaded Electron binary - -... -``` - -API 참고문서에는 이 규칙에 예외가 있습니다. - -## 마크다운 규칙 - -* 코드 블록에서 `cmd` 대신 `bash` 를 사용하세요. (문법 강조기 입니다) -* 한줄은 영문 80 자 길이로 맞춰야 합니다. -* 2단계를 넘는 중첩 목록은 사용하지 마세요. (마크다운 렌더러 때문입니다) -* 모든 `js` 와 `javascript` 는 [표준-마크다운](http://npm.im/standard-markdown)에 - 의해 분석됩니다. - -## 단어 선택 - -* 결과를 설명할 때 "would" 대신 "will" 을 사용합니다. -* "on" 대신 "in the ___ process" 표현을 지향합니다. - -## API 참고문서 - -다음 규칙은 API 문서에만 적용합니다. - -### 페이지 제목 - -각 페이지는 `BrowserWindow`, `autoUpdater` 와 `session` 와 같은 -`require('electron')` 에 의해 반환되는 실 객체의 이름을 제목으로 합니다. - -페이지 제목 아래에는 `>` 로 시작하는 한줄 설명이 있어야합니다. - -`session` 사용 예시: - -```markdown -# session - -> 브라우저 세션, 쿠키, 캐시, 프록시 설정 등을 관리. -``` - -### 모듈 메소드와 이벤트 - -클래스가 아닌 모듈에서 메소드와 이벤트는 `## Methods` 와 `## Events` 챕터에 -있어야 합니다. - -`autoUpdater` 사용 예시: - -```markdown -# autoUpdater - -## Events - -### Event: 'error' - -## Methods - -### `autoUpdater.setFeedURL(url[, requestHeaders])` -``` - -### 클래스 - -* API 클래스와 모듈 클래스는 `## Class: TheClassName` 챕터 아래에 표시합니다. -* 한 페이지에 여러개의 클래스가 있을 수 있습니다. -* 생성자는 `###`-단계의 제목으로 표시합니다. -* [정적 메소드](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static) - 는 `### Statis Methods` 챕터 아래에 표시합니다. -* [인스턴스 메소드](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Prototype_methods) - 는 `### Instance Methods` 챕터 아래에 표시합니다. -* 반환값이 있는 모든 메소드는 "반환값 `[유형]` - 반환값 설명" 형태의 설명으로 - 시작해야 합니다. - * 메소드가 `Object` 를 반환한다면, 끝에 콜론을 붙인 뒤 다음줄부터 함수 - 매개변수와 같은 스타일로 순서에 상관없이 그 구조를 명시해야 합니다. -* 인스턴스 이벤트는 `### Instance Events` 챕터 아래에 표시합니다. -* 인스턴스 속성은 `### Instance Properties` 챕터 아래에 표시합니다. - * 인스턴스 속성은 "[속성 유형]" 으로 시작해야 합니다. - -`Session` 과 `Cookies` 클래스 사용 예시: - -```markdown -# session - -## Methods - -### session.fromPartition(partition) - -## Properties - -### session.defaultSession - -## Class: Session - -### Instance Events - -#### Event: 'will-download' - -### Instance Methods - -#### `ses.getCacheSize(callback)` - -### Instance Properties - -#### `ses.cookies` - -## Class: Cookies - -### Instance Methods - -#### `cookies.get(filter, callback)` -``` - -### 메소드 - -메소드 챕터는 다음을 따릅니다: - -```markdown -### `objectName.methodName(required[, optional]))` - -* `required` String -* `optional` Integer (optional) - -... -``` - -제목은 `###` 또는 `####`-단계로 합니다. 모듈이냐 클래스냐에 따라 달라집니다. - -모듈에서 `objectName` 은 모듕의 이름입니다. 클래스에서 그것은 클래스의 -인스턴스의 이름이며, 모듈의 이름과 달라야합니다. - -예를 들어, `session` 모듈의 `Session` 클래스의 메소드는 `objectName` 으로 -`ses` 를 사용해야 합니다. - -선택적인 인수는 각각을 컴마로 구분하여 대괄호 `[]` 로 감쌉니다: - -``` -required[, optional] -``` - -아래 메소드에 각 인수에 대한 더 자세한 내용이 있습니다. 인수의 유형은 기본 유형 -중 하나로 표시합니다. - -* [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) -* [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) -* [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) -* [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -* [`Boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) -* 또는 Electron 의 [`WebContents`](api/web-contents.md)와 같은 사용자 타입 - -인수 또는 메소드가 특정 플랫폼에만 사용된다면, 이 플랫폼들은 자료형 다음에 -공백으로 구분된 이탤릭체 목록으로 표시됩니다. 값은 `macOS`, `windows`, 또는 -`Linux` 일 수 있습니다. - -```markdown -* `animate` Boolean (optional) _macOS_ _Windows_ -``` - -`Array` 유형의 인수는 배열이 무엇을 포함하는지 아래에 명시해야 합니다. - -`Function` 유형의 인수를 위한 설명은 호출방법을 명확히 하고, 전달되는 -매개변수의 유형을 표시해야 합니다. - -### 이벤트 - -이벤트 챕터는 다음을 따릅니다: - -```markdown -### Event: 'wake-up' - -Returns: - -* `time` String - -... -``` - -제목은 `###` 또는 `####`-단계로 합니다. 모듈이냐 클래스냐에 따라 달라집니다. - -이벤트의 인수는 메소드와 같은 규칙을 따릅니다. - -### 속성 - -속성 챕터는 다음을 따릅니다: - -```markdown -### session.defaultSession - -... -``` - -제목은 `###` 또는 `####`-단계로 합니다. 모듈이냐 클래스냐에 따라 달라집니다. - -## 문서 번역 - -Electron 문서의 번역본은 `docs-translations` 아래에 위치합니다. - -아직 번역되지 않은 언어를 추가하려면 (일부분 포함): - -* 언어의 약어로 서브 디렉토리를 만듭니다. -* 파일을 번역합니다. -* 언어 디렉토리의 `README.md` 의 링크를 번역된 문서로 변경합니다. -* 언어 디렉토리의 링크를 Electron 의 - [README](https://github.com/electron/electron#documentation-translations)에 - 추가합니다. - -참고로 `docs-translations` 아래의 파일들은 번역된 것만 있어야 합니다. 영어 원문 -파일을 복사하면 안됩니다. diff --git a/docs-translations/ko-KR/tutorial/about.md b/docs-translations/ko-KR/tutorial/about.md deleted file mode 100644 index 7a33f916e2e6..000000000000 --- a/docs-translations/ko-KR/tutorial/about.md +++ /dev/null @@ -1,86 +0,0 @@ -# Electron 에 대하여 - -[Electron](https://electron.atom.io) 은 HTML, CSS 와 Javascript 로 크로스플랫폼 -데스크톱 애플리케이션을 위해 Github 에서 개발한 오픈소스 라이브러리 입니다. -Electron 은 [Chromium](https://www.chromium.org/Home) 와 -[Node.js](https://nodejs.org) 를 단일 실행으로 합치고 앱을 Mac, Windows 와 -Linux 용으로 패키지화 할 수 있게 함으로써 이것을 가능하게 합니다. - -Electron 은 2013년에 Github 의 해킹 가능한 텍스트 편집기 Atom 의 프레임워크로 -시작하였습니다. 이 둘은 2014년에 오픈소스화 됩니다. - -그후로 오픈소스 개발자, 스타트업과 안정된 회사에서 인기있는 도구가 되었습니다. -[Electron 을 사용하는 곳을 보세요](/apps). - -Electron 의 기여자와 릴리즈에 대한 자세한 내용이나 개발을 시작하려면 -[Quick Start Guide](quick-start.md) 를 읽어보세요. - -## 코어 팀과 기여자 - -Electron 은 Gihub 의 팀과 커뮤니티에서 -[활동중인 기여자](https://github.com/electron/electron/graphs/contributors) -그룹에 의해 유지됩니다. 일부 기여자는 개인이고, 일부는 Electron 으로 개발을 -하는 큰 회사입니다. 프로젝트에 자주 공여하는 분은 기꺼이 메인테이너로 -추가하겠습니다. -[Electron 에 기여하기](../project/CONTRIBUTING.md)를 참고하세요. - -## 출시 - -Electron 은 빈번하게 [출시](https://github.com/electron/electron/releases) -됩니다. 중요한 버그 수정, 새 API 추가 또는 Chromium 이나 Node.js 의 -업데이트시에 출시합니다. - -### 업데이트 의존성 - -Electron 의 Chromium 버전은 보통 새 버전 출시 이후 1~2 주 후에 업데이트 하는데, -이는 업그레이드에 필요한 작업의 양에 따라 달라집니다. - -Node.js 의 새버전이 출시되면, Electron 은 더 안정된 버전을 가져오기 위해 약 -한달정도 기다립니다. - -Electron 에서, Node.js 와 Chromium 은 단일 V8 인스턴스를 공유합니다--보통 -Chromium 이 사용하는 버전. 대부분은 동작하지만 가끔 Node.js 를 패치해야 합니다. - - -### 버전 관리 - -Node.js 와 Chromium 에 대한 의존성이 강해서, Electron 은 버전관리가 까다롭고 -[`semver`을 따르지 않습니다](http://semver.org). 그러므로 항상 Electron 의 특정 -버전을 참조해야 합니다. [Electron 의 버전관리] -(https://electron.atom.io/docs/tutorial/electron-versioning/)를 읽거나 -[현재 쓰이는 버전](https://electron.atom.io/#electron-versions)을 보세요. - -### LTS - -현재 Electron 의 구버전에 대한 장기 지원은 없습니다. Electron 현재 버전이 잘 -동작한다면, 그것을 원하는 만큼 유지하세요. 새로운 기능들을 사용하려면 -새버전으로 업그레이드 해야합니다. - -주 버전은 `v1.0.0` 입니다. 아직 이 버전을 사용중이지 않다면, -[v1.0.0 변화에 대해 읽어보세요](https://electron.atom.io/blog/2016/05/11/electron-1-0). - -## 중심 철학 - -Electron 을 작고 (파일 크기) 지속가능하게 (의존성 및 API 의 확산) 할 목적으로 -중심 프로젝트의 범위를 제한합니다. - -예를 들어, Electron 은 Chromium 전체가 아닌 렌더링 라이브러리만 사용합니다. -이것은 Chromium 업그레이드를 쉽게 하지만 Google Chrome 에서 볼 수 있는 몇몇 -브라우저 기능이 Electron 에서는 빠집니다. - -Electron 에 추가된 새로운 기능은 주로 네이티브 API 입니다. 기능은 가능한한 -Node.js 모듈로 해야합니다. [커뮤니티에 의해 개발된 Electron 도구들] -(https://electron.atom.io/community)을 보세요. - -## 이력 - -다음은 Electron 이력의 주요 시점입니다. - -| :calendar: | :tada: | -| --- | --- | -| **2013년 4월**| [Atom Shell 탄생](https://github.com/electron/electron/commit/6ef8875b1e93787fa9759f602e7880f28e8e6b45).| -| **2014년 5월** | [Atom Shell 오픈소스화](http://blog.atom.io/2014/05/06/atom-is-now-open-source.html). | -| **2015년 4월** | [Electron 으로 개명](https://github.com/electron/electron/pull/1389). | -| **2016년 5월** | [Electron v1.0.0 출시](https://electron.atom.io/blog/2016/05/11/electron-1-0).| -| **2016년 5월** | [Electron 앱이 Mac App Store 와 호환](https://electron.atom.io/docs/tutorial/mac-app-store-submission-guide).| -| **2016년 8월** | [Windows Store 의 Electron 앱 지원](https://electron.atom.io/docs/tutorial/windows-store-guide).| diff --git a/docs-translations/ko-KR/tutorial/accessibility.md b/docs-translations/ko-KR/tutorial/accessibility.md deleted file mode 100644 index b9354edab285..000000000000 --- a/docs-translations/ko-KR/tutorial/accessibility.md +++ /dev/null @@ -1,51 +0,0 @@ -# 접근성 - -접근 가능한 애플리케이션을 만드는 것은 중요합니다. 우리는 새 기능 -[Devtron](https://electron.atom.io/devtron) 과 -[Spectron](https://electron.atom.io/spectron) 을 소개할 수 있어 기쁩니다. -이것들은 개발자가 모두에게 더 좋은 앱을 만들 수 있는 기회를 제공합니다. - ---- - -Electron 애플리케이션의 접근성에 대한 관심은 두 웹사이트가 유사하며 궁극적으로 -HTML 입니다. 그러나 검사를 위한 URL 이 없기 때문에 Electron 앱에서 접근성 -검사에 온라인 자원을 사용할 수 없습니다. - -이 새 기능들은 Electron 앱에 검사 도구를 제공합니다. Spectron 으로 테스트 하기 -위한 검사를 추가 하거나 Devtron 으로 개발자 도구의 것을 사용할 수 있습니다. -자세한 정보는 도구의 요약이나 -[접근성 문서](https://electron.atom.io/docs/tutorial/accessibility) 를 읽어보세요. - -### Spectron - -테스트 프레임워크 Spectron 을 통해 애플리케이션의 각 창과 `` 태그를 -검사할 수 있습니다. 예시입니다: - -```javascript -app.client.auditAccessibility().then(function (audit) { - if (audit.failed) { - console.error(audit.message) - } -}) -``` - -이 기능에 대한 자세한 내용은 -[Spectron 의 문서](https://github.com/electron/spectron#accessibility-testing) -를 참고하세요. - -### Devtron - -Devtron 에서 앱의 페이지를 검사할 수 있는 접근성 탭이 생겼으며, 결과를 정렬하고 -필터할 수 있습니다. - -![devtron screenshot](https://cloud.githubusercontent.com/assets/1305617/17156618/9f9bcd72-533f-11e6-880d-389115f40a2a.png) - -이 두 도구들은 구글이 크롬을 위해 개발한 -[접근성 개발자 도구](https://github.com/GoogleChrome/accessibility-developer-tools) -라이브러리를 사용합니다. 이 라이브러리에서 사용한 접근성 검사 규칙은 -[저장소의 위키](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules)를 -통해 더 알아볼 수 있습니다. - -Electron 을 위한 다른 훌륭한 접근성 도구를 알고계시다면, -[접근성 문서](https://electron.atom.io/docs/tutorial/accessibility) 에 풀 -요청과 함께 추가해 주세요. diff --git a/docs-translations/ko-KR/tutorial/application-distribution.md b/docs-translations/ko-KR/tutorial/application-distribution.md deleted file mode 100644 index a7eb3fcdffd7..000000000000 --- a/docs-translations/ko-KR/tutorial/application-distribution.md +++ /dev/null @@ -1,176 +0,0 @@ -# 애플리케이션 배포 - -Electron 애플리케이션을 배포하는 방법은 간단합니다. - -먼저 폴더 이름을 `app`로 지정한 후 Electron 리소스 디렉터리에 폴더를 통째로 집어넣기만 -하면 됩니다. 리소스 디렉터리는 macOS의 경우: `Electron.app/Contents/Resources/` -Windows와 Linux의 경우: `resources/` 입니다. - -macOS의 경우: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -Windows와 Linux의 경우: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -그리고 `Electron.app`을 실행하면(Linux에선 `electron` Windows에선 `electron.exe` -입니다) Electron 앱이 실행됩니다. 최종 사용자에겐 이 `electron` 폴더(Electron.app)를 -배포하면 됩니다. - -## asar로 앱 패키징 하기 - -소스파일 전체를 복사해서 배포하는 것과는 별개로 [asar](https://github.com/electron/asar) -아카이브를 통해 애플리케이션의 소스 코드가 사용자에게 노출되는 것을 방지할 수 있습니다. - -`asar` 아카이브를 사용할 땐 단순히 `app` 폴더 대신에 애플리케이션을 패키징한 -`app.asar` 파일로 대체하면됩니다. Electron은 자동으로 `app`폴더 대신 asar 아카이브를 -기반으로 애플리케이션을 실행합니다. - -macOS의 경우: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -Windows 와 Linux의 경우: - -```text -electron/resources/ -└── app.asar -``` - -자세한 내용은 [애플리케이션 패키징](application-packaging.md)에서 찾아볼 수 있습니다. - -## 다운로드한 바이너리의 리소스를 앱에 맞게 수정하기 - -애플리케이션을 Electron에 번들링한 후 해당 애플리케이션에 맞게 리브랜딩 할 수 있습니다. - -### Windows - -[rcedit](https://github.com/atom/rcedit)를 통해 `electron.exe`을 원하는 이름으로 -변경할 수 있고, 또한 아이콘과 기타 정보도 변경할 수 있습니다. - -### macOS - -`Electron.app`을 원하는 이름으로 변경할 수 있습니다. 그리고 다음 표시된 애플리케이션 -내부 파일에서 `CFBundleDisplayName`, `CFBundleIdentifier` 그리고 `CFBundleName` -필드를 원하는 이름으로 변경해야 합니다: - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -또한 helper 앱이 프로세스 모니터에 `Electron Helper`로 나오지 않도록 이름을 -변경할 수 있습니다. 하지만 반드시 내부 및 모든 helper 앱의 이름을 변경해야 합니다. - -애플리케이션 아이콘은 `Electron.app/Contents/Resources/atom.icns`을 원하는 -아이콘으로 변경하면 됩니다. - -애플리케이션 이름을 원하는 이름으로 변경한 예시: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -실행파일 `electron`의 이름을 원하는 대로 바꿀 수 있습니다. 리눅스 애플리케이션의 -아이콘은 [.desktop](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) -파일을 사용하여 지정할 수 있습니다. - -## 패키징 툴 - -애플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며 -이러한 작업을 자동화 시킬 수 있습니다: - -* [electron-builder](https://github.com/electron-userland/electron-builder) -* [electron-packager](https://github.com/electron-userland/electron-packager) - -## Electron 소스 코드를 다시 빌드하여 리소스 수정하기 - -또한 Electron 소스 코드를 다시 빌드할 때 애플리케이션 이름을 변경할 수 있습니다. - -`atom.gyp` 파일을 수정하여 다음과 같이 다시 빌드할 수 있습니다: - -### grunt-build-atom-shell - -Electron의 소스 코드를 수정하고 다시 빌드하는 작업은 상당히 복잡합니다. 일일이 -소스 코드를 수정하는 대신 [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell)을 -사용하여 빌드를 자동화 시킬 수 있습니다. - -이 툴을 사용하면 자동으로 `.gyp`파일을 수정하고 다시 빌드합니다. 그리고 애플리케이션의 -네이티브 Node 모듈 또한 새로운 실행파일 이름으로 일치시킵니다. - -### Electron 커스텀 포크 만들기 - -Electron의 커스텀 포크를 만드는 것은 거의 확실히 앱을 만드는데 있어서 필요한 작업이 -아닐 수 있으며, 심지어 "제품 등급"의 애플리케이션이라도 필요하지 않습니다. -`electron-packager` 또는 `electron-builder`와 같은 도구를 사용하면 다른 특별한 -과정 없이 Electron을 "Rebrand" 할 수 있습니다. - -업스트림 단에서 추가될 수 없는 기능이나 이미 공식 버전에서 거부된 기능을 Electron에 -직접적으로 패치하기 위해 커스텀 C++를 추가해야 한다면 Electron을 포크해야 합니다. -Electron의 개발자로써, Electron을 매우 많은 시나리오에서도 작동하도록 만들려고 -합니다. 따라서 가능한한 변경 사항을 공식 버전의 Electron에 추가할 수 있도록 시도해 -주길 바라며, 당신에겐 아주 아주 쉬운 작업일 것이고 이러한 당신의 도움에 대해 감사하게 -생각합니다. - -#### surf-build와 함께 커스텀 릴리즈 만들기 - -1. npm을 통해 [Surf](https://github.com/surf-build/surf)를 설치합니다: - `npm install -g surf-build@latest` - -2. 새로운 S3 bucket을 만들고 다음과 같은 빈 디렉토리 구조를 만듭니다: - -``` -- atom-shell/ - - symbols/ - - dist/ -``` - -3. 다음의 환경 변수들을 설정합니다: - - * `ELECTRON_GITHUB_TOKEN` - GitHub에 릴리즈를 만들 수 있는 토큰. - * `ELECTRON_S3_ACCESS_KEY`, `ELECTRON_S3_BUCKET`, `ELECTRON_S3_SECRET_KEY` - - node.js 헤더 뿐만 아니라 심볼을 업로드할 장소. - * `ELECTRON_RELEASE` - `true`로 지정하고 업로드 부분이 실행되면, 설정되지 않은 - 부분을 남기고 `surf-build`가 CI-type 확인을 실행합니다. 모든 pull request를 - 실행할 때 적합합니다. - * `CI` - `true` 또는 다른 것을 지정하면 실패합니다. - * `GITHUB_TOKEN` - `ELECTRON_GITHUB_TOKEN`와 같게 설정 - * `SURF_TEMP` - Windows에선 `C:\Temp`로 설정하면 긴 경로 문제를 해결할 수 있습니다. - * `TARGET_ARCH` - `ia32` 또는 `x64`를 지정. - -4. Electron에 기여를 하는 기여자라면, _반드시_ `script/upload.py`에서 포크를 위해 - `ELECTRON_REPO`를 설정해야 합니다. (`MYORG/electron`) - -5. `surf-build -r https://github.com/MYORG/electron -s YOUR_COMMIT -n 'surf-PLATFORM-ARCH'` - -6. 빌드가 완료될 때까지 아주 아주 긴 시간을 기다립니다. diff --git a/docs-translations/ko-KR/tutorial/application-packaging.md b/docs-translations/ko-KR/tutorial/application-packaging.md deleted file mode 100644 index a21242cb7d93..000000000000 --- a/docs-translations/ko-KR/tutorial/application-packaging.md +++ /dev/null @@ -1,182 +0,0 @@ -# 애플리케이션 패키징 - -Windows에서 일어나는 긴 경로 이름에 대한 [issues](https://github.com/joyent/node/issues/6960)를 -완화하고 `require` 속도를 약간 빠르게 하며 애플리케이션의 리소스와 소스 코드를 좋지 않은 -사용자로부터 보호하기 위해 애플리케이션을 [asar][asar] 아카이브로 패키징 할 수 있습니다. - -## `asar` 아카이브 생성 - -[asar][asar] 아카이브는 tar과 비슷한 포맷으로 모든 리소스를 하나의 파일로 만듭니다. -그리고 Electron은 압축해제 없이 임의로 모든 파일을 읽어들일 수 있습니다. - -간단한 작업을 통해 애플리케이션을 `asar` 아카이브로 압축할 수 있습니다: - -### 1. asar 유틸리티 설치 - -```bash -$ npm install -g asar -``` - -### 2. `asar pack` 커맨드로 앱 패키징 - -```bash -$ asar pack your-app app.asar -``` - -## `asar` 아카이브 사용하기 - -Electron은 Node.js로부터 제공된 Node API와 Chromium으로부터 제공된 Web API 두 가지 -API를 가지고 있습니다. 따라서 `asar` 아카이브는 두 API 모두 사용할 수 있도록 -지원합니다. - -### Node API - -Electron에선 `fs.readFile`과 `require` 같은 Node API들을 지원하기 위해 `asar` -아카이브가 가상의 디렉터리 구조를 가지도록 패치했습니다. 그래서 아카이브 내부 -리소스들을 정상적인 파일 시스템처럼 접근할 수 있습니다. - -예를 들어 `/path/to`라는 경로에 `example.asar`라는 아카이브가 있다고 가정하면: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -`asar` 아카이브에선 다음과 같이 파일을 읽을 수 있습니다: - -```javascript -const fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -아카이브 내의 루트 디렉터리를 리스팅합니다: - -```javascript -const fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -아카이브 안의 모듈 사용하기: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -`BrowserWindow` 클래스를 이용해 원하는 웹 페이지도 표시할 수 있습니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### Web API - -웹 페이지 내에선 아카이브 내의 파일을 `file:` 프로토콜을 사용하여 요청할 수 있습니다. -이 또한 Node API와 같이 가상 디렉터리 구조를 가집니다. - -예를 들어 jQuery의 `$.get`을 사용하여 파일을 가져올 수 있습니다: - -```html - -``` - -### `asar` 아카이브를 일반 파일로 취급하기 - -`asar` 아카이브의 체크섬(checksum)을 검사하는 작업등을 하기 위해선 `asar` 아카이브를 -파일 그대로 읽어야 합니다. 이러한 작업을 하기 위해 `original-fs` 빌트인 모듈을 `fs` -모듈 대신에 사용할 수 있습니다. 이 모듈은 `asar` 지원이 빠져있습니다. 즉 파일 그대로를 -읽어들입니다: - -```javascript -const originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -또한 `process.noAsar`를 `true`로 지정하면 `fs` 모듈의 `asar` 지원을 비활성화 시킬 수 -있습니다. - -```javascript -process.noAsar = true -fs.readFileSync('/path/to/example.asar') -``` - -## Node API의 한계 - -`asar` 아카이브를 Node API가 최대한 디렉터리 구조로 작동하도록 노력해왔지만 여전히 -저수준(low-level nature) Node API 때문에 한계가 있습니다. - -### 아카이브는 읽기 전용입니다 - -아카이브는 수정할 수 없으며 기본적으로는 Node API로 파일을 수정할 수 있지만 `asar` -아카이브에선 작동하지 않습니다. - -### 아카이브 안의 디렉터리를 작업 경로로 설정하면 안됩니다 - -`asar` 아카이브는 디렉터리처럼 사용할 수 있도록 구현되었지만 그것은 실제 파일시스템의 -디렉터리가 아닌 가상의 디렉터리입니다. 그런 이유로 몇몇 API에서 지원하는 `cwd` 옵션을 -`asar` 아카이브 안의 디렉터리 경로로 지정하면 나중에 문제가 발생할 수 있습니다. - -### 특정 API로 인한 예외적인 아카이브 압축 해제 - -많은 `fs` API가 `asar` 아카이브의 압축을 해제하지 않고 바로 아카이브를 읽거나 정보를 -가져올 수 있으나 몇몇 API는 시스템의 실제 파일의 경로를 기반으로 작동하므로 Electron은 -API가 원할하게 작동할 수 있도록 임시 경로에 해당되는 파일의 압축을 해제합니다. 이 작업은 -약간의 오버헤드를 불러 일으킬 수 있습니다. - -위 예외에 해당하는 API 메서드는 다음과 같습니다: - -* `child_process.execFile` -* `child_process.execFileSync` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - Used by `require` on native modules - -### `fs.stat`의 모조된(예측) 스테이터스 정보 - -`fs.stat` 로부터 반환되는 `Stats` 객체와 비슷한 API들은 `asar` 아카이브를 타겟으로 -할 경우 예측된 디렉터리 파일 정보를 가집니다. 왜냐하면 아카이브의 디렉터리 경로는 실제 -파일 시스템에 존재하지 않기 때문입니다. 그러한 이유로 파일 크기와 파일 타입 등을 확인할 -때 `Stats` 객체를 신뢰해선 안됩니다. - -### `asar` 아카이브 내부의 바이너리 실행 - -Node API에는 `child_process.exec`, `child_process.spawn` 그리고 -`child_process.execFile`와 같은 바이너리를 실행시킬 수 있는 API가 있습니다. 하지만 -`asar` 아카이브 내에선 `execFile` API만 사용할 수 있습니다. - -이 한계가 존재하는 이유는 `exec`와 `spawn`은 `file` 대신 `command`를 인수로 허용하고 -있고 `command`는 shell에서 작동하기 때문입니다. Electron은 어떤 커맨드가 `asar` -아카이브 내의 파일을 사용하는지 결정하는데 적절한 방법을 가지고 있지 않으며, 심지어 -그게 가능하다고 해도 부작용 없이 명령 경로를 대체할 수 있는지에 대해 확실히 알 수 있는 -방법이 없습니다. - -## `asar` 아카이브에 미리 압축 해제된 파일 추가하기 - -전술한 바와 같이 몇몇 Node API는 호출 시 해당 파일을 임시폴더에 압축을 해제합니다. -이 방법은 성능문제가 발생할 수 있습니다. 그리고 설계상 백신 소프트웨어에서 잘못 진단하여 -바이러스로 진단 할 수도 있습니다. - -이 문제를 해결하려면 `--unpack` 옵션을 통해 파일을 압축이 풀려진 상태로 유지해야 합니다. -다음의 예시는 node 네이티브 모듈의 공유 라이브러리를 압축이 풀려진 상태로 유지합니다: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -커맨드를 실행한 후 같은 디렉터리에 `app.asar` 파일 외에 `app.asar.unpacked` 폴더가 -같이 생성됩니다. 이 폴더안에 unpack 옵션에서 설정한 파일들이 압축이 풀려진 상태로 -포함되어 있습니다. 사용자에게 애플리케이션을 배포할 때 반드시 해당 폴더도 같이 배포해야 -합니다. - -[asar]: https://github.com/electron/asar diff --git a/docs-translations/ko-KR/tutorial/debugging-main-process-node-inspector.md b/docs-translations/ko-KR/tutorial/debugging-main-process-node-inspector.md deleted file mode 100644 index a85305499e24..000000000000 --- a/docs-translations/ko-KR/tutorial/debugging-main-process-node-inspector.md +++ /dev/null @@ -1,128 +0,0 @@ -# node-inspector 에서 메인 프로세스 디버깅하기 - -[`node-inspector``][node-inspector] 는 Electron 의 메인 프로세스를 디버깅하기 -위해 크롬에서 사용할 수 있는 익숙한 개발도구 GUI 를 제공합니다. 그러나, -`node-inspector` 가 네이티브 Node 모듈에 의존적이기 때문에 디버깅하려는 -Electron 버전에 맞춰 다시 빌드해야 합니다. `node-inspector` 다시 빌드하여 -의존성을 재구성하거나 [`electron-inspector`] 가 대신 하게 할 수 있으며, 두 -방식이 이 문서에 나와있습니다. - -**참고**: 글쓴 시점 현재 `node-inspector` 최종버전 (0.12.8) 은 Electron 1.3.0 -이상에서 해당 의존성 중 하나를 패치하지 않고 빌드 할 수 없습니다. -`electron-inspector` 을 사용한다면 알아서 처리될 것 입니다. - - -## 디버깅에 `electron-inspector` 사용하기 - -### 1. [node-gyp 필수 도구][node-gyp-required-tools] 설치 - -### 2. [`electron-rebuild`][electron-rebuild]가 없다면, 설치 - -```shell -npm install electron-rebuild --save-dev -``` - -### 3. [`electron-inspector`][electron-inspector] 설치 - -```shell -npm install electron-inspector --save-dev -``` - -### 4. Electron 시작 - -`--debug` 스위치와 함께 Electron 실행: - -```shell -electron --debug=5858 your/app -``` - -또는, 스크립트의 첫번째 줄에서 실행 중단: - -```shell -electron --debug-brk=5858 your/app -``` - -### 5. electron-inspector 시작 - -macOS / Linux: - -```shell -node_modules/.bin/electron-inspector -``` - -Windows: - -```shell -node_modules\\.bin\\electron-inspector -``` - -`electron-inspector` 는 첫 실행과 Electron 버전 변경시에 `node-inspector` -의존성을 다시 빌드 할 것 입니다. 다시 빌드하는 과정에 Node 헤더와 라이브러리를 -다운받기 위해 인터넷 연결이 필요하며, 이 작업은 몇 분 정도 시간이 소요됩니다. - -### 6. 디버거 UI 로드 - -Chrome 브라우저에서 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 -주소에 접속합니다. `--debug-brk` 로 시작한 경우 UI 갱신을 위해 일시정지 버튼을 -클릭해야 할 수도 있습니다. - - -## 디버깅에 `node-inspector` 사용하기 - -### 1. [node-gyp 필수 도구][node-gyp-required-tools] 설치 - -### 2. [`node-inspector`][node-inspector] 설치 - -```bash -$ npm install node-inspector -``` - -### 3. [`node-pre-gyp`][node-pre-gyp] 설치 - -```bash -$ npm install node-pre-gyp -``` - -### 4. Electron 용 `node-inspector` `v8` 모듈 재 컴파일 - -**참고:** 사용하는 Electron의 버전에 맞춰 target 인수를 변경하세요. - -```bash -$ node_modules/.bin/node-pre-gyp --target=1.2.5 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/electron reinstall -$ node_modules/.bin/node-pre-gyp --target=1.2.5 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/electron reinstall -``` - -또한 [네이티브 모듈 설치 방법][how-to-install-native-modules] 문서도 참고해보세요. - -### 5. Electron 디버그 모드 활성화 - -다음과 같이 debung 플래그로 Electron 을 실행할 수 있습니다: - -```bash -$ electron --debug=5858 your/app -``` - -또는 스크립트 첫번째 줄에서 일시 정지할 수 있습니다: - -```bash -$ electron --debug-brk=5858 your/app -``` - -### 6. Electron을 사용하는 [`node-inspector`][node-inspector] 서버 시작하기 - -```bash -$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js -``` - -### 7. 디버거 UI 로드 - -Chrome 브라우저에서 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 -주소에 접속합니다. `--debug-brk` 로 시작한 경우 엔트리 라인을 보기 위해 -일시정지 버튼을 클릭해야 할 수도 있습니다. - -[electron-inspector]: https://github.com/enlight/electron-inspector -[electron-rebuild]: https://github.com/electron/electron-rebuild -[node-inspector]: https://github.com/node-inspector/node-inspector -[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp -[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation -[how-to-install-native-modules]: using-native-node-modules.md#how-to-install-native-modules diff --git a/docs-translations/ko-KR/tutorial/debugging-main-process-vscode.md b/docs-translations/ko-KR/tutorial/debugging-main-process-vscode.md deleted file mode 100644 index 60e0dd3ed0d3..000000000000 --- a/docs-translations/ko-KR/tutorial/debugging-main-process-vscode.md +++ /dev/null @@ -1,38 +0,0 @@ -# VSCode 에서 메인 프로세스 디버깅하기 - -### 1. VS Code 에서 Electron 프로젝트 열기. - -```bash -$ git clone git@github.com:electron/electron-quick-start.git -$ code electron-quick-start -``` - -### 2. 다음 설정으로 `.vscode/launch.json` 파일 추가하기: - -```json -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Debug Main Process", - "type": "node", - "request": "launch", - "cwd": "${workspaceRoot}", - "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron", - "program": "${workspaceRoot}/main.js" - } - ] -} -``` - -**참고:** 윈도우에서, `runtimeExecutable` 을 위해 -`"${workspaceRoot}/node_modules/.bin/electron.cmd"` 를 사용하세요. - -### 3. 디버깅 - -`main.js` 에 중단점을 설정하고, -[Debug View](https://code.visualstudio.com/docs/editor/debugging) 에서 디버깅을 -시작하세요. 중단점을 만나게 될 것 입니다. - -VSCode 에서 바로 디버깅 할 수 있는 프로젝트를 미리 준비했습니다: -https://github.com/octref/vscode-electron-debug/tree/master/electron-quick-start diff --git a/docs-translations/ko-KR/tutorial/debugging-main-process.md b/docs-translations/ko-KR/tutorial/debugging-main-process.md deleted file mode 100644 index 4b04bdf3d81a..000000000000 --- a/docs-translations/ko-KR/tutorial/debugging-main-process.md +++ /dev/null @@ -1,31 +0,0 @@ -# 메인 프로세스 디버깅하기 - -Electron 브라우저 창의 개발자 도구는 웹 페이지 같은 창에서 실행된 스크립트만 -디버깅이 가능합니다. 메인 프로세스에서 실행된 자바스크립트를 디버깅 하기 위해 -외부 디버거가 필요하며, Electron 실행시 `--debug` 또는 `--debug-brk` 스위치가 -필요합니다. - -## 커맨드 라인 스위치(command line switches) - -다음 커맨드 라인 스위치들을 사용하여 메인 프로세스를 디버깅 할 수 있습니다: - -### `--debug=[port]` - -이 스위치를 사용하면 Electron은 지정한 `port`에 V8 디버거 프로토콜을 리스닝합니다. -기본 `port`는 `5858` 입니다. - -```shell -electron --debug=5858 your/app -``` - -### `--debug-brk=[port]` - -`--debug`와 비슷하지만 스크립트의 첫번째 라인에서 일시정지합니다. - -## 외부 디버거 - -V8 디버거 프로토콜을 지원하는 디버거가 필요합니다. 다음 가이드들이 도움이 -됩니다: - -- [VSCode 에서 메인 프로세스 디버깅하기](debugging-main-process-vscode.md) -- [node-inspector 에서 메인 프로세스 디버깅하기](debugging-main-process-node-inspector.md) diff --git a/docs-translations/ko-KR/tutorial/desktop-environment-integration.md b/docs-translations/ko-KR/tutorial/desktop-environment-integration.md deleted file mode 100644 index 4d70bc9edfb0..000000000000 --- a/docs-translations/ko-KR/tutorial/desktop-environment-integration.md +++ /dev/null @@ -1,390 +0,0 @@ -# 데스크톱 환경 통합 - -애플리케이션 배포의 대상이 되는 서로 다른 운영체제 시스템의 환경에 맞춰 애플리케이션의 -기능을 통합할 수 있습니다. 예를 들어 Windows에선 태스크바의 JumpList에 바로가기를 -추가할 수 있고 Mac(macOS)에선 dock 메뉴에 커스텀 메뉴를 추가할 수 있습니다. - -이 문서는 Electron API를 이용하여 각 운영체제 시스템의 기능을 활용하는 방법을 -설명합니다. - -## 데스크톱 알림 (Windows, Linux, macOS) - -Windows, Linux, macOS 운영체제 모두 기본적으로 애플리케이션에서 유저에게 알림을 보내는 -방법을 제공합니다. Electron은 [HTML5 Notification API](https://notifications.spec.whatwg.org/)를 -통해 개발자가 편리하게 데스크톱 알림을 사용할 수 있는 기능을 제공합니다. 데스크톱 알림은 -운영체제의 네이티브 알림 API를 사용하여 표시합니다. - -**참고:** 이 API는 HTML5 API이기 때문에 렌더러 프로세스에서만 사용할 수 있습니다. - -```javascript -let myNotification = new Notification('Title', { - body: 'Lorem Ipsum Dolor Sit Amet' -}) - -myNotification.onclick = () => { - console.log('Notification clicked') -} -``` - -위 코드를 통해 생성한 데스크톱 알림은 각 운영체제 모두 비슷한 사용자 경험을 제공하지만, -하지만 몇 가지 다른 점들이 있습니다. - -### Windows - -* Windows 10에선 "아무 문제 없이 잘" 작동합니다. -* Windows 8.1과 8에선 [Application User Model ID][app-user-model-id]로 바로가기를 - 만들어 놔야 합니다. 이 바로가기는 반드시 시작 화면에 설치되어 있어야 합니다. 참고로 - 반드시 시작 화면에 고정 할 필요는 없습니다. -* Windows 7은 데스크톱 알림을 지원하지 않습니다. 혹시 "풍선 팝업 알림" 기능을 찾는다면 - [Tray API][tray-balloon]를 사용하세요. - -또한 알림 본문의 최대 길이는 250자 입니다. Windows 개발팀에선 알림 문자열을 200자 -이하로 유지하는 것을 권장합니다. - -### Linux - -데스크톱 알림의 구현으로 `libnotify`를 사용합니다. 따라서 [Desktop Notifications Specification][notification-spec]을 -따르는 모든 데스크탑 환경에서 데스크톱 알림 기능을 사용할 수 있습니다. Cinnamon, -Enlightenment, Unity, GNOME, KDE등을 지원합니다. - -### macOS - -macOS에서의 데스크톱 알림은 아주 직관적입니다. 하지만 데스크톱 알림을 사용할 땐 -[Apple's Human Interface guidelines regarding notifications](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html) -가이드를 고려해야 합니다. - -참고로 데스크롭 알림의 최대 길이는 256 바이트 입니다. 길이가 초과할 경우 초과한 글자가 -잘립니다. - -## 최근 사용한 문서 (Windows & macOS) - -Windows와 macOS는 JumpList 또는 dock 메뉴를 통해 최근 문서 리스트에 쉽게 접근할 수 -있습니다. - -__JumpList:__ - -![JumpList 최근 문서](http://i.msdn.microsoft.com/dynimg/IC420538.png) - -__애플리케이션 dock menu:__ - - - -파일을 최근 문서에 추가하려면 [app.addRecentDocument][addrecentdocument] API를 -사용할 수 있습니다: - -```javascript -const {app} = require('electron') -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -``` - -그리고 [app.clearRecentDocuments][clearrecentdocuments] API로 최근 문서 리스트를 -비울 수 있습니다: - -```javascript -const {app} = require('electron') -app.clearRecentDocuments() -``` - -### Windows에서 주의할 점 - -이 기능을 Windows에서 사용할 땐 운영체제 시스템에 애플리케이션에서 사용하는 파일 -확장자가 등록되어 있어야 합니다. 그렇지 않은 경우 파일을 JumpList에 추가해도 추가되지 -않습니다. 애플리케이션 등록에 관련된 API의 모든 내용은 [Application Registration][app-registration]에서 -찾아볼 수 있습니다. - -유저가 JumpList에서 파일을 클릭할 경우 클릭된 파일의 경로가 커맨드 라인 인수로 추가되어 -새로운 인스턴스의 애플리케이션이 실행됩니다. - -### macOS에서 주의할 점 - -파일이 최근 문서 메뉴에서 요청될 경우 `app` 모듈의 `open-file` 이벤트가 호출됩니다. - -## 커스텀 독 메뉴 (macOS) - -macOS는 개발자가 dock에 커스텀 메뉴를 만들 수 있도록 허용하고 있습니다. -보통 애플리케이션의 특정 기능 바로가기를 만들 때 사용합니다: - -__Terminal.app의 dock menu:__ - - - -커스텀 dock menu를 설정하려면 `app.dock.setMenu` API를 사용하면 됩니다. -macOS에서만 사용 가능합니다: - -```javascript -const {app, Menu} = require('electron') - -const dockMenu = Menu.buildFromTemplate([ - {label: 'New Window', click () { console.log('New Window') }}, - {label: 'New Window with Settings', - submenu: [ - {label: 'Basic'}, - {label: 'Pro'} - ] - }, - {label: 'New Command...'} -]) -app.dock.setMenu(dockMenu) -``` - -## 사용자 작업 (Windows) - -Windows에선 JumpList의 `Tasks` 카테고리에 원하는 작업을 설정할 수 있습니다. -MSDN에선 해당 기능을 다음과 같이 설명하고 있습니다: - -> 애플리케이션 작업은 프로그램의 기능 그리고 주요사양 두가지를 기반으로 유저의 행동을 -> 예측하여 정의합니다. 실행할 필요가 없는 애플리케이션 작업은 작동하지 않을 때 반드시 -> context-free를 유지해야 합니다. 작업은 일반 사용자가 프로그램을 실행하거나 이메일 -> 프로그램으로 이메일을 작성하거나 달력을 불러오고, 워드 프로세서로 새 문서를 작성, -> 특정 모드, 부속 명령으로 프로그램을 실행하는 등의 통계적, 일반적으로 가장 많이 -> 사용되는 작업인지를 고려해야 합니다. 애플리케이션 작업은 일반 유저가 필요로 하지 -> 않는 고급 기능을 조잡하게 채우거나 등록과 같은 일회성의 작업을 포함해선 안됩니다. -> 또한 작업에 특별 이벤트 또는 업그레이드 등의 홍보성 작업을 추가하면 안됩니다. -> -> 작업 리스트는 가능한 한 정적으로 유지되는 것을 적극 권장합니다. -> 이것은 동일한 상태 또는 응용 프로그램의 상태에 관계없이 유지되어야 합니다. -> 작업 목록은 동적으로 변경할 수 있지만 몇몇 유저는 예상하지 못한 작업 목록 변경에 -> 혼란을 일으킬 수 있다는 점을 고려해야 합니다. - -__Internet Explorer의 작업:__ - -![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png) - -macOS의 dock menu(진짜 메뉴)와는 달리 Windows의 사용자 작업은 애플리케이션 바로 -가기처럼 작동합니다. 유저가 작업을 클릭할 때 설정한 인수와 함께 새로운 애플리케이션이 -실행됩니다. - -사용자 작업을 설정하려면 [app.setUserTasks][setusertaskstasks] 메서드를 통해 구현할 -수 있습니다: - -```javascript -const {app} = require('electron') -app.setUserTasks([ - { - program: process.execPath, - arguments: '--new-window', - iconPath: process.execPath, - iconIndex: 0, - title: 'New Window', - description: 'Create a new window' - } -]) -``` - -작업 리스트를 비우려면 간단히 `app.setUserTasks` 메서드의 첫번째 인수에 빈 배열을 넣어 -호출하면 됩니다: - -```javascript -const {app} = require('electron') -app.setUserTasks([]) -``` - - -사용자 작업 리스트는 애플리케이션이 삭제되지 않는 한 종료되어도 태스크바에 보존됩니다. -이러한 이유로 반드시 프로그램 경로와 아이콘 경로를 지정해야 합니다. - -## 미리보기 툴바 - -Windows에선 작업 표시줄의 애플리케이션 선택시 나오는 미리보기에 특정한 미리보기 툴바를 -추가할 수 있습니다. 이 기능은 유저가 윈도우를 활성화 하지 않고 특정한 커맨드를 실행시킬 -수 있도록 할 수 있습니다. - -MSDN의 설명에 의하면: - -> 이 툴바는 표준 툴바의 공통 컨트롤과 비슷한 역할을 합니다. 버튼은 최대 7개 까지 -> 만들 수 있습니다. 각 버튼의 구조엔 ID, 이미지, 툴팁, 상태 등이 정의되어있습니다. -> 작업표시줄에 구조가 전달되면 애플리케이션이 상태에 따라 버튼을 숨기거나, 활성화하거나, -> 비활성화 할 수 있습니다. -> -> 예를 들어, 윈도우 미디어 플레이어는(WMP) 미디어 플레이어가 공통적으로 사용하는 -> 재생, 일시정지, 음소거, 정지등의 컨트롤을 포함하고 있습니다. - -__Windows Media Player의 미리보기 툴바:__ - -![player](https://i-msdn.sec.s-msft.com/dynimg/IC420540.png) - -[BrowserWindow.setThumbarButtons][setthumbarbuttons] API를 통해 애플리케이션에 -미리보기 툴바를 설정할 수 있습니다: - -```javascript -const {BrowserWindow} = require('electron') -const path = require('path') - -let win = new BrowserWindow({ - width: 800, - height: 600 -}) - -win.setThumbarButtons([ - { - tooltip: 'button1', - icon: path.join(__dirname, 'button1.png'), - click () { console.log('button1 clicked') } - }, - { - tooltip: 'button2', - icon: path.join(__dirname, 'button2.png'), - flags: ['enabled', 'dismissonclick'], - click () { console.log('button2 clicked.') } - } -]) -``` - -미리보기 툴바를 비우려면 간단히 `BrowserWindow.setThumbarButtons` API에 빈 배열을 -전달하면 됩니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setThumbarButtons([]) -``` - -## Unity 런처 숏컷 기능 (Linux) - -Unity 환경에선 `.desktop` 파일을 수정함으로써 런처에 새로운 커스텀 엔트리를 추가할 수 -있습니다. [Adding Shortcuts to a Launcher][unity-launcher] 가이드를 참고하세요. - -__Audacious의 런처 숏컷:__ - -![audacious](https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles?action=AttachFile&do=get&target=shortcuts.png) - -## 작업 표시줄 안의 프로그레스 바 (Windows, macOS, Unity) - -Windows에선 작업 표시줄의 애플리케이션 버튼에 프로그레스 바를 추가할 수 있습니다. -이 기능은 사용자가 애플리케이션의 창을 열지 않고도 애플리케이션의 작업의 상태 정보를 -시각적으로 보여줄 수 있도록 해줍니다. - -macOS에선 프로그레스바가 dock 아이콘의 일부에 표시됩니다. - -또한 Unity DE도 런처에 프로그레스 바를 부착할 수 있습니다. - -__작업 표시줄 버튼의 프로그레스 바:__ - -![Taskbar Progress Bar](https://cloud.githubusercontent.com/assets/639601/5081682/16691fda-6f0e-11e4-9676-49b6418f1264.png) - -이 기능은 [BrowserWindow.setProgressBar][setprogressbar] API를 사용하여 구현할 수 -있습니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setProgressBar(0.5) -``` - -## 작업 표시줄의 아이콘 오버레이 (Windows) - -Windows에선 작업 표시줄 버튼에 애플리케이션의 상태를 표시하는 작은 오버레이를 사용할 -수 있습니다. MSDN에서 인용하자면 (영문): - -> Icon overlays serve as a contextual notification of status, and are intended -> to negate the need for a separate notification area status icon to communicate -> that information to the user. For instance, the new mail status in Microsoft -> Outlook, currently shown in the notification area, can now be indicated -> through an overlay on the taskbar button. Again, you must decide during your -> development cycle which method is best for your application. Overlay icons are -> intended to supply important, long-standing status or notifications such as -> network status, messenger status, or new mail. The user should not be -> presented with constantly changing overlays or animations. - -__작업 표시줄 버튼 위의 오버레이:__ - -![작업 표시줄 버튼 위의 오버레이](https://i-msdn.sec.s-msft.com/dynimg/IC420441.png) - -윈도우에 오버레이 아이콘을 설정하려면 [BrowserWindow.setOverlayIcon][setoverlayicon] -API를 사용할 수 있습니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setOverlayIcon('path/to/overlay.png', 'Description for overlay') -``` - -## 프레임 깜빡이기 (윈도우즈) - -윈도우즈에서 사용자의 관심을 끌기 위해ㅣ 작업표시줄 버튼을 강조할 수 있습니다. -이것은 macOS 의 독 아이콘을 튕기는 것과 유사합니다. -MSDN에서 인용하자면 (영문): - -> Typically, a window is flashed to inform the user that the window requires -> attention but that it does not currently have the keyboard focus. - -BrowserWindow 작업표시줄 버튼을 깜빡이려면, -[BrowserWindow.flashFrame][flashframe] API 를 사용하면됩니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.once('focus', () => win.flashFrame(false)) -win.flashFrame(true) -``` - -`flashFrame` 메소드를 `false` 인자로 호출하여 깜빡임을 중단시키는 것을 -잊지마세요. 위의 예제에서, 윈도우가 포커스되었을 때 호출합니다. 그러나 타임아웃 -또는 다른 이벤트에서 비활성화할 수 있습니다. - -## 대표 파일 제시 (macOS) - -macOS는 창에서 대표 파일을 설정할 수 있습니다. 타이틀바에서 파일 아이콘이 있고, 사용자가 -Command-Click 또는 Control-Click 키를 누를 경우 파일 경로 팝업이 보여집니다. 또한 -창의 상태도 지정할 수 있습니다. 다시 말해 로드된 문서의 수정 여부를 제목의 파일 -아이콘에 표시할 수 있습니다. - -__대표 파일 팝업 메뉴:__ - - - -대표 파일 관련 API는 [BrowserWindow.setRepresentedFilename][setrepresentedfilename] 과 -[BrowserWindow.setDocumentEdited][setdocumentedited]를 사용할 수 있습니다: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setRepresentedFilename('/etc/passwd') -win.setDocumentEdited(true) -``` - -## 파일을 윈도우 밖으로 드래그할 수 있도록 만들기 - -파일을 조작하는 특정 종류의 애플리케이션들에서 파일을 Electron에서 다른 애플리케이션으로 -드래그할 수 있는 기능은 중요합니다. 이 기능을 구현하려면 애플리케이션에서 -`ondragstart` 이벤트가 발생했을 때 `webContents.startDrag(item)` API를 호출해야 -합니다: - -웹 페이지에서: - -```html -item - -``` - -메인 프로세스에서: - -```javascript -const {ipcMain} = require('electron') -ipcMain.on('ondragstart', (event, filePath) => { - event.sender.startDrag({ - file: filePath, - icon: '/path/to/icon.png' - }) -}) -``` - -[addrecentdocument]: ../api/app.md#appaddrecentdocumentpath-os-x-windows -[clearrecentdocuments]: ../api/app.md#appclearrecentdocuments-os-x-windows -[setusertaskstasks]: ../api/app.md#appsetusertaskstasks-windows -[setprogressbar]: ../api/browser-window.md#winsetprogressbarprogress -[setoverlayicon]: ../api/browser-window.md#winsetoverlayiconoverlay-description-windows-7 -[setrepresentedfilename]: ../api/browser-window.md#winsetrepresentedfilenamefilename-os-x -[setdocumentedited]: ../api/browser-window.md#winsetdocumenteditededited-os-x -[app-registration]: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx -[unity-launcher]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher -[setthumbarbuttons]: ../api/browser-window.md#winsetthumbarbuttonsbuttons-windows-7 -[tray-balloon]: ../api/tray.md#traydisplayballoonoptions-windows -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[notification-spec]: https://developer.gnome.org/notification-spec/ -[flashframe]: ../api/browser-window.md#winflashframeflag diff --git a/docs-translations/ko-KR/tutorial/devtools-extension.md b/docs-translations/ko-KR/tutorial/devtools-extension.md deleted file mode 100644 index b664d9be3b1a..000000000000 --- a/docs-translations/ko-KR/tutorial/devtools-extension.md +++ /dev/null @@ -1,70 +0,0 @@ -# 개발자 도구 확장 기능 - -애플리케이션의 디버깅을 쉽게 하기 위해 Electron은 기본적으로 -[Chrome DevTools Extension][devtools-extension]을 지원합니다. - -Electron은 유명한 웹 프레임워크를 디버깅하기 위해 사용할 수 있는 개발자 도구 확장 -기능을 사용할 수 있도록 [Chrome 개발자 도구 확장 기능][devtools-extension]을 -지원합니다. - -## 개발자 도구는 어떻게 로드하나요 - -이 문서는 확장 기능을 수동으로 로드하는 방법의 과정을 설명합니다. -[electron-devtools-installer](https://github.com/GPMDP/electron-devtools-installer)와 -같은 Chrome WebStore에서 자동으로 확장 기능을 다운로드하는 서드-파티 도구를 사용할 수도 -있습니다. - -Electron에 확장 기능을 로드하려면, Chrome 브라우저에서 다운로드 해야 하며, 파일 시스템 -경로를 지정해야 합니다. 그리고 `BrowserWindow.addDevToolsExtension(extension)`를 -호출함으로써 기능을 로드할 수 있습니다. - -예시로 [React Developer Tools][react-devtools]를 사용한다면: - -1. Chrome 브라우저를 설치합니다. -2. `chrome://extensions`로 이동한 후 해시된 `fmkadmapgofadopljbjfkapdkoienihi` - 같이 생긴 확장 기능의 ID를 찾습니다. -3. Chrome에서 사용하는 확장 기능을 저장해둔 파일 시스템 경로를 찾습니다: - * Windows에선 `%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions`; - * Linux에선: - * `~/.config/google-chrome/Default/Extensions/` - * `~/.config/google-chrome-beta/Default/Extensions/` - * `~/.config/google-chrome-canary/Default/Extensions/` - * `~/.config/chromium/Default/Extensions/` - * macOS에선 `~/Library/Application Support/Google/Chrome/Default/Extensions`. -4. 확장 기능의 경로를 `BrowserWindow.addDevToolsExtension` API로 전달합니다. - React Developer Tools의 경우 다음과 비슷해야 합니다: - `~/Library/Application Support/Google/Chrome/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/0.15.0_0` - -**참고:** `BrowserWindow.addDevToolsExtension` API는 `app` 모듈의 `ready` 이벤트가 -발생하기 전까지 사용할 수 없습니다. - -확장 기능의 이름은 `BrowserWindow.addDevToolsExtension`에서 반환되며, 이 이름을 -`BrowserWindow.removeDevToolsExtension` API로 전달함으로써 해당하는 확장 기능을 -언로드할 수 있습니다. - -## 지원하는 개발자 도구 확장 기능 - -Electron은 아주 제한적인 `chrome.*` API만을 지원하므로 확장 기능이 지원하지 않는 -`chrome.*` API를 사용한다면 해당 기능은 작동하지 않을 것입니다. 다음 개발자 도구들은 -Electron에서 정상적으로 작동하는 것을 확인했으며 작동 여부를 보장할 수 있는 확장 -기능입니다: - -* [Ember Inspector](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) -* [React Developer Tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) -* [Backbone Debugger](https://chrome.google.com/webstore/detail/backbone-debugger/bhljhndlimiafopmmhjlgfpnnchjjbhd) -* [jQuery Debugger](https://chrome.google.com/webstore/detail/jquery-debugger/dbhhnnnpaeobfddmlalhnehgclcmjimi) -* [AngularJS Batarang](https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk) -* [Vue.js devtools](https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) -* [Cerebral Debugger](http://www.cerebraljs.com/documentation/the_debugger) - -### 개발자 도구가 작동하지 않을 때 어떻게 해야 하나요? - -먼저 해당 확장 기능이 확실히 계속 유지되고 있는지를 확인하세요. 몇몇 확장 기능들은 -최신 버전의 Chrome 브라우저에서도 작동하지 않습니다. 그리고 이러한 확장 기능에 대해선 -Electron 개발팀에 해줄 수 있는 것이 아무것도 없습니다. - -위와 같은 상황이 아니라면 Electron의 이슈 리스트에 버그 보고를 추가한 후 예상한 것과 -달리 확장 기능의 어떤 부분의 정상적으로 작동하지 않았는지 설명하세요. - -[devtools-extension]: https://developer.chrome.com/extensions/devtools -[react-devtools]: https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi diff --git a/docs-translations/ko-KR/tutorial/electron-versioning.md b/docs-translations/ko-KR/tutorial/electron-versioning.md deleted file mode 100644 index 04cd5affc021..000000000000 --- a/docs-translations/ko-KR/tutorial/electron-versioning.md +++ /dev/null @@ -1,20 +0,0 @@ -# Electron 버전 관리 - -노련한 Node 개발자라면, `semver` (유의적 버전)에 대해 확실히 알고 있을 것입니다 - -그리고 제공된 의존성 관리 시스템은 고정된 버전 숫자 대신 견고한 가이드라인을 따릅니다. -Electron은 Node와 Chromium에 큰 의존성을 지니고 있는 만큼, 유의적 버전을 그대로 -따르지 않습니다. 따라서 항상 Electron의 특정 버전을 참조해야 합니다. - -버전 숫자는 다음과 같은 규칙으로 올라갑니다: - -* Major: Electron API의 주요 변경 사항을 반영합니다 - 만약 `0.37.0`에서 `1.0.0`로 - 업그레이드하는 경우, 애플리케이션을 업데이트해야 합니다. -* Minor: 주요 Chrome과 Node 버전의 업그레이드를 반영하거나; Electron의 중요한 변경 - 사항을 반영합니다 - 만약 `1.0.0`에서 `1.1.0`로 업그레이드하는 경우, 애플리케이션은 - 여전히 작동하겠지만, 약간의 업데이트가 필요할 수 있습니다. -* Patch: 새로운 기능과 버그 수정을 반영합니다 - 만약 `1.0.0`에서 `1.0.1`로 - 업그레이드하는 경우, 애플리케이션은 잘 작동할 것입니다. - -`electron` 또는 `electron-prebuilt`를 사용하고 있다면, Electron의 변경 사항을 -확실하게 인지하고 개발자 스스로 업그레이드를 적용하기 위해 고정된 버전 숫자를 사용하는 -것을 권장합니다. (`^1.1.0` 대신 `1.1.0` 사용) diff --git a/docs-translations/ko-KR/tutorial/mac-app-store-submission-guide.md b/docs-translations/ko-KR/tutorial/mac-app-store-submission-guide.md deleted file mode 100644 index cad59cb096de..000000000000 --- a/docs-translations/ko-KR/tutorial/mac-app-store-submission-guide.md +++ /dev/null @@ -1,261 +0,0 @@ -# Mac 앱 스토어 애플리케이션 제출 가이드 - -Electron은 v0.34.0 버전부터 앱 패키지를 Mac App Store(MAS)에 제출할 수 있게 -되었습니다. 이 가이드는 애플리케이션을 앱 스토어에 등록하는 방법과 빌드의 한계에 대한 -설명을 제공합니다. - -**참고:** Mac App Store에 애플리케이션을 등록하려면 -[Apple Developer Program][developer-program]에 등록되어 있어야 하며 비용이 발생할 -수 있습니다. - -## 앱 스토어에 애플리케이션을 등록하는 방법 - -다음 몇 가지 간단한 절차에 따라 앱 스토어에 애플리케이션을 등록하는 방법을 알아봅니다. -한가지, 이 절차는 제출한 앱이 Apple로부터 승인되는 것을 보장하지 않습니다. 따라서 -여전히 Apple의 [Submitting Your App][submitting-your-app] 가이드를 숙지하고 있어야 -하며 앱 스토어 제출 요구 사항을 확실히 인지하고 있어야 합니다. - -### 인증서 취득 - -앱 스토어에 애플리케이션을 제출하려면, 먼저 Apple로부터 인증서를 취득해야 합니다. 취득 -방법은 웹에서 찾아볼 수 있는 [가이드][nwjs-guide]를 참고하면 됩니다. - -### Team ID 얻기 - -애플리케이션에 서명하기 전에, 먼저 개발 계정의 Team ID를 알아야 합니다. Team ID를 -알아보려면 [Apple Developer Center](https://developer.apple.com/account/)에 -로그인한 후, 사이드바의 Membership을 클릭합니다. Team ID는 Membership Information -섹션의 팀 이름 밑에 위치합니다. - -### 앱에 서명하기 - -준비 작업이 끝난 후, [애플리케이션 배포](application-distribution.md) 문서에 따라 -애플리케이션을 패키징한 후 애플리케이션에 서명합니다. - -먼저, 앱의 `Info.plist` 에 Team ID 를 값으로 갖는 `ElectronTeamID` 키를 추가해야 -합니다: - -```xml - - - ... - ElectronTeamID - TEAM_ID - - -``` - -그리고, 다음 두 자격 파일을 준비해야 합니다. - -`child.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.inherit - - - -``` - -`parent.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.application-groups - TEAM_ID.your.bundle.id - - -``` - -`TEAM_ID` 부분은 Team ID로 치환하고, `your.bundle.id` 부분은 애플리케이션의 Bundle -ID로 치환해야 합니다. - -그리고 다음 스크립트를 통해 애플리케이션에 서명합니다: - -```bash -#!/bin/bash - -# 애플리케이션의 이름. -APP="YourApp" -# 서명할 애플리케이션의 경로. -APP_PATH="/path/to/YourApp.app" -# 서명된 패키지의 출력 경로. -RESULT_PATH="~/Desktop/$APP.pkg" -# 요청한 인증서의 이름. -APP_KEY="3rd Party Mac Developer Application: Company Name (APPIDENTITY)" -INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)" -# plist 파일의 경로. -CHILD_PLIST="/path/to/child.plist" -PARENT_PLIST="/path/to/parent.plist" - -FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" - -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper EH.app/Contents/MacOS/$APP Helper EH" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper EH.app/" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper NP.app/Contents/MacOS/$APP Helper NP" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper NP.app/" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/MacOS/$APP" -codesign -s "$APP_KEY" -f --entitlements "$PARENT_PLIST" "$APP_PATH" - -productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" -``` - -만약 macOS의 샌드박스 개념에 대해 처음 접한다면 Apple의 [Enabling App Sandbox][enable-app-sandbox] -문서를 참고하여 기본적인 개념을 이해해야 합니다. 그리고 자격(plist) 파일에 -애플리케이션에서 요구하는 권한의 키를 추가합니다. - -그 외에 별로도 [electron-osx-sign][electron-osx-sign] 모듈을 사용하여 직접 서명할 -수도 있습니다. - -#### 네이티브 모듈에 서명하기 - -앱 내부에서 사용한 네이티브 모듈도 서명이 필요합니다. `electron-osx-sign`을 -사용한다면, 인수 목록에 빌트인 바이너리 경로가 포함되어 있는지 확인해야 합니다: - -```bash -electron-osx-sign YourApp.app YourApp.app/Contents/Resources/app/node_modules/nativemodule/build/release/nativemodule -``` - -참고로 네이티브 모듈이 의도하지 않게 중간 파일을 포함하는 경우도 있으며 이 파일은 -포함되어선 안됩니다. (해당 파일에도 서명해야 할 수도 있습니다) -버전 8.1.0 전의 [electron-packager][electron-packager] 는, `--ignore=.+\.o$` -를 추가하여 이 파일을 무시할 수 있습니다. 8.1.0 버전 이후에는 기본적으로 -무시됩니다. - -### 애플리케이션 업로드 - -애플리케이션 서명을 완료한 후 iTunes Connect에 업로드하기 위해 Application Loader를 -사용할 수 있습니다. 참고로 업로드하기 전에 [레코드][create-record]를 만들었는지 -확인해야 합니다. - -### 애플리케이션을 심사에 제출 - -위 과정을 마치면 [애플리케이션을 심사를 위해 제출][submit-for-review]할 수 있습니다. - -## MAS 빌드의 한계 - -모든 애플리케이션 샌드박스에 대한 요구 사항을 충족시키기 위해, 다음 모듈들은 MAS -빌드에서 비활성화됩니다: - -* `crashReporter` -* `autoUpdater` - -그리고 다음 동작으로 대체됩니다: - -* 비디오 캡쳐 기능은 몇몇 장치에서 작동하지 않을 수 있습니다. -* 특정 접근성 기능이 작동하지 않을 수 있습니다. -* 애플리케이션이 DNS의 변경을 감지하지 못할 수 있습니다. -* 로그인할 때 앱을 시작하기 위한 API 는 비활성화 되어있습니다. 다음 문서를 보세요. -https://github.com/electron/electron/issues/7312#issuecomment-249479237 - -또한 애플리케이션 샌드박스 개념으로 인해 애플리케이션에서 접근할 수 있는 리소스는 -엄격하게 제한되어 있습니다. 자세한 내용은 [앱 샌드박싱][app-sandboxing] 문서를 -참고하세요. - -### 추가적인 권한 - -Mac 앱 스토어 빌드를 위해 앱에서 사용하는 Electron API에 따라 `parent.plist` 파일에 -추가적인 기능에 대한 권한을 추가해야 할 수도 있습니다. - -#### 네트워크 접근 - -서버와 연결하기 위한 외부로 나가는 네트워크 연결 허용 활성화: - -```xml -com.apple.security.network.client - -``` - -네트워크 리스닝 소켓을 열기 위한 내부로 들어오는 네트워크 연결 허용 활성화: - -```xml -com.apple.security.network.server - -``` - -자세한 내용은 [네트워크 접근 활성화 문서][network-access] 를 참고하세요. - -#### dialog.showOpenDialog - -```xml -com.apple.security.files.user-selected.read-only - -``` - -자세한 내용은 [User-Selected 파일 접근 활성화 문서][user-selected]를 참고하세요. - -#### dialog.showSaveDialog - -```xml -com.apple.security.files.user-selected.read-write - -``` - -자세한 내용은 [User-Selected 파일 접근 활성화 문서][user-selected]를 참고하세요. - -## Electron에서 사용하는 암호화 알고리즘 - -국가와 살고 있는 지역에 따라, 맥 앱스토어는 제출한 애플리케이션에서 사용하는 암호화 -알고리즘의 문서를 요구할 수 있습니다. 심지어 U.S. Encryption Registration (ERN)의 -승인 사본을 제출하라고 할 수도 있습니다. - -Electron은 다음과 같은 암호화 알고리즘을 사용합니다: - -* AES - [NIST SP 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf), [NIST SP 800-38D](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf), [RFC 3394](http://www.ietf.org/rfc/rfc3394.txt) -* HMAC - [FIPS 198-1](http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf) -* ECDSA - ANS X9.62–2005 -* ECDH - ANS X9.63–2001 -* HKDF - [NIST SP 800-56C](http://csrc.nist.gov/publications/nistpubs/800-56C/SP-800-56C.pdf) -* PBKDF2 - [RFC 2898](https://tools.ietf.org/html/rfc2898) -* RSA - [RFC 3447](http://www.ietf.org/rfc/rfc3447) -* SHA - [FIPS 180-4](http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf) -* Blowfish - https://www.schneier.com/cryptography/blowfish/ -* CAST - [RFC 2144](https://tools.ietf.org/html/rfc2144), [RFC 2612](https://tools.ietf.org/html/rfc2612) -* DES - [FIPS 46-3](http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf) -* DH - [RFC 2631](https://tools.ietf.org/html/rfc2631) -* DSA - [ANSI X9.30](http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.30-1%3A1997) -* EC - [SEC 1](http://www.secg.org/sec1-v2.pdf) -* IDEA - "On the Design and Security of Block Ciphers" book by X. Lai -* MD2 - [RFC 1319](http://tools.ietf.org/html/rfc1319) -* MD4 - [RFC 6150](https://tools.ietf.org/html/rfc6150) -* MD5 - [RFC 1321](https://tools.ietf.org/html/rfc1321) -* MDC2 - [ISO/IEC 10118-2](https://www.openssl.org/docs/manmaster/crypto/mdc2.html) -* RC2 - [RFC 2268](https://tools.ietf.org/html/rfc2268) -* RC4 - [RFC 4345](https://tools.ietf.org/html/rfc4345) -* RC5 - http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf -* RIPEMD - [ISO/IEC 10118-3](http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%2010118-3:2004) - -ERN의 승인을 얻는 방법은, 다음 글을 참고하는 것이 좋습니다: -[애플리케이션이 암호화를 사용할 때, 합법적으로 Apple의 앱 스토어에 제출하는 방법 (또는 -ERN의 승인을 얻는 방법)][ern-tutorial]. - -**역자주:** [Mac 앱 배포 가이드 공식 한국어 문서](https://developer.apple.com/osx/distribution/kr/) - -[developer-program]: https://developer.apple.com/support/compare-memberships/ -[submitting-your-app]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppDistributionGuide/SubmittingYourApp/SubmittingYourApp.html -[nwjs-guide]: https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline#first-steps -[enable-app-sandbox]: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html -[create-record]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.html -[electron-osx-sign]: https://github.com/electron-userland/electron-osx-sign -[electron-packager]: https://github.com/electron-userland/electron-packager -[submit-for-review]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html -[app-sandboxing]: https://developer.apple.com/app-sandboxing/ -[ern-tutorial]: https://carouselapps.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/ -[temporary-exception]: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html -[user-selected]: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW6] diff --git a/docs-translations/ko-KR/tutorial/offscreen-rendering.md b/docs-translations/ko-KR/tutorial/offscreen-rendering.md deleted file mode 100644 index 3d9f03a6f7a8..000000000000 --- a/docs-translations/ko-KR/tutorial/offscreen-rendering.md +++ /dev/null @@ -1,52 +0,0 @@ -# 오프스크린 렌더링 - -오프스크린 렌더링은 비트맵에 브라우저 윈도우의 컨텐츠를 얻게 합니다. 그래서 -아무곳에서나 렌더링 될 수 있습니다. 예를 들어 3D 에서 텍스처위에 렌더링 될 수 -있습니다. Electron 의 오프스크린 렌더링은 [Chromium Embedded Framework](https://bitbucket.org/chromiumembedded/cef) -프로젝트와 비슷한 접근방식을 사용합니다. - -두 방식의 렌더링을 사용할 수 있고 효율적으로 하기 위해 변경된 영역만 `'paint'` -이벤트에 전달됩니다. 렌더링을 중지하거나, 계속하거나, 프레임 속도를 변경할 수 -있습니다. 명시된 프레임 속도는 상한선입니다. 웹페이지에 아무일도 발생하지 -않으면 프레임이 생성되지 않습니다. 프레임 속도 최고값은 60입니다. 그 이상은 -이점은 없고, 성능 저하만 발생합니다. - -## 두가지 렌더링 방식 - -### GPU 가속 - -GPU 가속 렌더링은 컴포지션에 GPU 가 사용되는 것을 의미합니다. 프레임이 GPU 에서 -복사되기 때문에 더 많은 성능이 필요합니다. 그래서 이 방식이 좀 더 느립니다. -이 방식의 장점은 WebGL 과 3D CSS 애니메이션 지원입니다. - -### 소프트웨어 출력 장치 - -이 방식은 CPU에서 렌더링을 위해 소프트웨어 출력 장치를 사용하여 프레임 생성이 -더 빠릅니다. 그래서 이 방식을 GPU 가속보다 선호합니다. - -이 방식을 사용하려면 [`app.disableHardwareAcceleration()`][disablehardwareacceleration] -API 를 호출하여 GPU 가속을 비활성화 하여야합니다. - -## 사용법 - -``` javascript -const {app, BrowserWindow} = require('electron') - -app.disableHardwareAcceleration() - -let win -app.once('ready', () => { - win = new BrowserWindow({ - webPreferences: { - offscreen: true - } - }) - win.loadURL('http://github.com') - win.webContents.on('paint', (event, dirty, image) => { - // updateBitmap(dirty, image.getBitmap()) - }) - win.webContents.setFrameRate(30) -}) -``` - -[disablehardwareacceleration]: ../api/app.md#appdisablehardwareacceleration diff --git a/docs-translations/ko-KR/tutorial/online-offline-events.md b/docs-translations/ko-KR/tutorial/online-offline-events.md deleted file mode 100644 index d69e09ff46a7..000000000000 --- a/docs-translations/ko-KR/tutorial/online-offline-events.md +++ /dev/null @@ -1,89 +0,0 @@ -# 온라인/오프라인 이벤트 감지 - -온라인/오프라인 이벤트는 다음 예시와 같이 렌더러 프로세스에서 표준 HTML5 API를 -이용하여 구현할 수 있습니다. - -_main.js_ - -```javascript -const {app, BrowserWindow} = require('electron') - -let onlineStatusWindow - -app.on('ready', () => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -메인 프로세스에서 이 이벤트를 처리할 필요가 있는 경우 이벤트를 메인 프로세스로 -보낼 수 있습니다. 메인 프로세스는 `navigator` 객체를 가지고 있지 않기 때문에 이 -이벤트를 직접 사용할 수는 없습니다. - -대신 다음 예시와 같이 Electron의 inter-process communication(ipc) 유틸리티를 -사용하면 이벤트를 메인 프로세스로 전달할 수 있습니다. - -_main.js_ - -```javascript -const {app, BrowserWindow, ipcMain} = require('electron') -let onlineStatusWindow - -app.on('ready', () => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) - -ipcMain.on('online-status-changed', (event, status) => { - console.log(status) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -**참고:** Electron 이 근거리 통신망 (LAN) 또는 라우터에 연결할 수 없는 경우, -오프라인으로 간주됩니다; 그 외의 경우는 `true` 를 반환합니다. 그래서 -`navigator.onLine` 이 `false` 값을 반환하면 Electron 이 오프라인이라고 가정할 수 -있습니다. 하지만 `true` 값은 Electron 이 인터넷에 접근할 수 있다고 가정할 수 -없습니다. 항상 "연결된" 가상 이더넷 어댑터를 가지고 있는 가상화 소프트웨어 -상에서 작동하는 경우 잘못된 반응을 얻을 수 있습니다. 그러므로, Electron 의 -인터넷 접근 상태를 확인하려면, 확인하기 위한 추가적인 개발을 해야합니다. diff --git a/docs-translations/ko-KR/tutorial/planned-breaking-changes.md b/docs-translations/ko-KR/tutorial/planned-breaking-changes.md deleted file mode 100644 index e3375ead4aa5..000000000000 --- a/docs-translations/ko-KR/tutorial/planned-breaking-changes.md +++ /dev/null @@ -1,7 +0,0 @@ -# API 변경 계획 - -Electron 2.0 에 몇몇 API 가 제거될 예정입니다. - -정해진 적용 계획은 없지만 적어도 90일 전에 중단 경고를 할 것 입니다. - -변경 내용은 [영어 버전 문서](/docs/tutorial/planned-breaking-changes.md)를 참고하세요. diff --git a/docs-translations/ko-KR/tutorial/quick-start.md b/docs-translations/ko-KR/tutorial/quick-start.md deleted file mode 100644 index c4004e41f7c4..000000000000 --- a/docs-translations/ko-KR/tutorial/quick-start.md +++ /dev/null @@ -1,249 +0,0 @@ -# 시작하기 - -## 소개 - -Electron은 자바스크립트와 함께 제공된 풍부한 네이티브 API를 사용하여 멋진 데스크탑 -애플리케이션을 만들 수 있도록 해주는 프레임워크입니다. 이 프레임워크의 Node.js는 웹 -서버 개발이 아닌 데스크탑 애플리케이션 개발에 초점을 맞췄습니다. - -이 말은 Electron이 GUI 라이브러리의 자바스크립트 바인딩이라는 뜻이 아닙니다. 대신, -Electron은 웹 페이지의 GUI를 사용합니다. 쉽게 말해 Electron은 자바스크립트를 사용하여 -조작하는 작은 Chromium 브라우저로 볼 수 있습니다. - -### 메인 프로세스 - -Electron은 실행될 때 __메인 프로세스__ 로 불리는 `package.json`의 `main` 스크립트를 -호출합니다. 이 스크립트는 메인 프로세스에서 작동합니다. GUI 컴포넌트를 조작하거나 웹 -페이지 창을 생성할 수 있습니다. - -### 렌더러 프로세스 - -Electron이 웹페이지를 보여줄 때 Chromium의 multi-processes 구조도 같이 사용됩니다. -Electron 프로세스 내에서 작동하는 웹 페이지를 __렌더러 프로세스__ 라고 불립니다. - -보통 일반 브라우저의 웹 페이지들은 샌드박스가 적용된 환경에서 작동하며 네이티브 -리소스에는 접근할 수 없도록 되어 있습니다. 하지만 Electron은 웹 페이지 내에서 Node.js -API를 사용하여 low-level 수준으로 운영체제와 상호작용할 수 있습니다. - -### 메인 프로세스와 렌더러 프로세스의 차이점 - -메인 프로세스는 `BrowserWindow` Class를 사용하여 새로운 창을 만들 수 있습니다. -`BrowserWindow` 인스턴스는 따로 분리된 프로세스에서 렌더링 되며 이 프로세스를 렌더러 -프로세스라고 합니다. `BrowserWindow` 인스턴스가 소멸할 때 그 창의 렌더러 프로세스도 -같이 소멸합니다. - -메인 프로세스는 모든 웹 페이지와 렌더러 프로세스를 관리하며 렌더러 프로세스는 각각의 -프로세스에 고립되며 웹 페이지의 작동에만 영향을 끼칩니다. - -웹 페이지 내에선 기본적으로 네이티브 GUI와 관련된 API를 호출할 수 없도록 설계 되어 -있습니다. 왜냐하면 웹 페이지 내에서 네이티브 GUI 리소스를 관리하는 것은 보안에 취약하고 -리소스를 누수시킬 수 있기 때문입니다. 꼭 웹 페이지 내에서 API를 사용해야 한다면 메인 -프로세스에서 그 작업을 처리할 수 있도록 메인 프로세스와 통신을 해야 합니다. - -Electron에는 메인 프로세스와 렌더러 프로세스 사이에 통신을 할 수 있도록 -[`ipcRenderer`](../api/ipc-renderer.md)와 [`ipcMain`](../api/ipc-main.md) 모듈을 -제공하고 있습니다. 또는 [remote](../api/remote.md) 모듈을 사용하여 RPC 스타일로 -통신할 수도 있습니다. 또한 FAQ에서 [다양한 객체를 공유하는 방법](share-data)도 -소개하고 있습니다. - -## 첫번째 Electron 앱 만들기 - -보통 Electron 앱은 다음과 같은 폴더 구조를 가집니다: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -`package.json`은 node 모듈의 package.json과 같습니다. 그리고 `main` 필드에 스크립트 -파일을 지정하면 메인 프로세스의 엔트리 포인트로 사용합니다. 예를 들어 사용할 수 있는 -`package.json`은 다음과 같습니다: - -```json -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__알림__: 만약 `main` 필드가 `package.json`에 설정되어 있지 않으면 Electron은 -자동으로 같은 디렉터리의 `index.js`를 로드합니다. - -반드시 `main.js`에서 창을 만들고 시스템 이벤트를 처리해야 합니다. 대표적인 예시로 -다음과 같이 작성할 수 있습니다: - -```javascript -const {app, BrowserWindow} = require('electron') -const path = require('path') -const url = require('url') - -// 윈도우 객체를 전역에 유지합니다. 만약 이렇게 하지 않으면 -// 자바스크립트 GC가 일어날 때 창이 멋대로 닫혀버립니다. -let win - -function createWindow () { - // 새로운 브라우저 창을 생성합니다. - win = new BrowserWindow({width: 800, height: 600}) - - // 그리고 현재 디렉터리의 index.html을 로드합니다. - win.loadURL(url.format({ - pathname: path.join(__dirname, 'index.html'), - protocol: 'file:', - slashes: true - })) - - // 개발자 도구를 엽니다. - win.webContents.openDevTools() - - // 창이 닫히면 호출됩니다. - win.on('closed', () => { - // 윈도우 객체의 참조를 삭제합니다. 보통 멀티 윈도우 지원을 위해 - // 윈도우 객체를 배열에 저장하는 경우가 있는데 이 경우 - // 해당하는 모든 윈도우 객체의 참조를 삭제해 주어야 합니다. - win = null - }) -} - -// 이 메서드는 Electron의 초기화가 끝나면 실행되며 브라우저 -// 윈도우를 생성할 수 있습니다. 몇몇 API는 이 이벤트 이후에만 -// 사용할 수 있습니다. -app.on('ready', createWindow) - -// 모든 창이 닫히면 애플리케이션 종료. -app.on('window-all-closed', () => { - // macOS의 대부분의 애플리케이션은 유저가 Cmd + Q 커맨드로 확실하게 - // 종료하기 전까지 메뉴바에 남아 계속 실행됩니다. - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // macOS에선 보통 독 아이콘이 클릭되고 나서도 - // 열린 윈도우가 없으면, 새로운 윈도우를 다시 만듭니다. - if (win === null) { - createWindow() - } -}) - -// 이 파일엔 제작할 애플리케이션에 특화된 메인 프로세스 코드를 -// 포함할 수 있습니다. 또한 파일을 분리하여 require하는 방법으로 -// 코드를 작성할 수도 있습니다. -``` - -마지막으로, 사용자에게 보여줄 `index.html` 웹 페이지의 예시입니다: - -```html - - - - - 헬로 월드! - - -

헬로 월드!

- 이 애플리케이션은 node , - Chrome , - Electron 을 사용합니다. - - -``` - -## 앱 실행하기 - -앱을 작성한 후 [애플리케이션 배포](application-distribution.md) 가이드를 따라 앱을 -패키징 하고 패키징한 앱을 실행할 수 있습니다. 또한 Electron 실행파일을 다운로드 받아 -바로 실행해 볼 수도 있습니다. - -### `electron` - -[`electron`](https://github.com/electron-userland/electron-prebuilt)은 -Electron의 미리 컴파일된 바이너리를 포함하는 `npm` 모듈입니다. - -만약 `npm`을 통해 전역에 이 모듈을 설치했다면, 애플리케이션 소스 디렉터리에서 다음 -명령을 실행하면 바로 실행할 수 있습니다: - -```bash -electron . -``` - -또는 앱 디렉터리 밖에서 앱을 실행할 수도 있습니다: - -```bash -electron app -``` - -npm 모듈을 로컬에 설치했다면 다음 명령으로 실행할 수 있습니다: - -#### macOS / Linux - -```bash -$ ./node_modules/.bin/electron . -``` - -#### Windows - -```bash -$ .\node_modules\.bin\electron . -``` - -### 다운로드 받은 Electron 바이너리 사용 - -따로 Electron 바이너리를 다운로드 받았다면 다음 예시와 같이 실행하면 됩니다. - -#### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -#### Linux - -```bash -$ ./electron/electron your-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -애플리케이션 실행파일은 `Electron`의 release 패키지에 포함되어 있습니다. -[여기](https://github.com/electron/electron/releases)에서 다운로드 받을 수 있습니다. - -### 배포용 실행 파일 만들기 - -애플리케이션 작성을 모두 끝냈다면 [애플리케이션 배포](application-distribution.md) -가이드를 통해 제작한 앱을 패키징하고 배포할 수 있습니다. - -### 미리 작성된 앱 실행하기 - -[`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -저장소를 클론하면 이 문서에서 작성한 예시 앱을 바로 실행해 볼 수 있습니다. - -**참고**: 이 예시를 실행시키려면 [Git](https://git-scm.com)과 -[Node.js](https://nodejs.org/en/download/)가 필요합니다. (CLI에서 실행 가능한 - [npm](https://npmjs.org)이 있어야 합니다) - -**역자주**: `npm`은 보통 Node.js를 설치하면 자동으로 같이 설치됩니다. - -```bash -# 저장소를 클론합니다 -$ git clone https://github.com/electron/electron-quick-start -# 저장소 안으로 들어갑니다 -$ cd electron-quick-start -# 의존성 모듈을 설치합니다 -$ npm install -# 앱을 실행합니다 -$ npm start -``` - -더 많은 예시 앱을 보려면 대단한 Electron 커뮤니티에 의해 만들어진 -[보일러플레이트 리스트](https://electron.atom.io/community/#boilerplates)를 -참고하세요. - -[share-data]: ../faq.md#어떻게-웹-페이지-간에-데이터를-공유할-수-있나요 diff --git a/docs-translations/ko-KR/tutorial/repl.md b/docs-translations/ko-KR/tutorial/repl.md deleted file mode 100644 index 637d53cd8e0b..000000000000 --- a/docs-translations/ko-KR/tutorial/repl.md +++ /dev/null @@ -1,26 +0,0 @@ -# REPL - -Read-Eval-Print-Loop (REPL) 은 단일 사용자 입력 (즉, 하나의 표현) 을 받아서, -평가하고, 사용자에게 결과를 반환하는 간단한 대화형 컴퓨터 프로그래밍 환경입니다. - -`repl` 모듈은 REPL 구현을 제공하며 다음과 같이 접근할 수 있습니다: - -* `electron` 또는 `electron-prebuilt` 지역 프로젝트 의존성으로 설치했다고 - 가정하면: - - ```sh - ./node_modules/.bin/electron --interactive - ``` -* `electron` 또는 `electron-prebuilt` 를 전역으로 설치했다고 가정하면: - - ```sh - electron --interactive - ``` - -이것은 메인 프로세스에 대한 REPL 만 생성합니다. 렌더러 프로세스를 위한 REPL 을 -얻기 위해 개발자 도구의 콘솔 탭을 사용할 수 있습니다. - -**참고:** `electron --interactive` 는 Windows 에서 사용할 수 없습니다. - -자세한 정보는 [Node.js REPL 문서](https://nodejs.org/dist/latest/docs/api/repl.html)를 -참고하세요. diff --git a/docs-translations/ko-KR/tutorial/security.md b/docs-translations/ko-KR/tutorial/security.md deleted file mode 100644 index 1f80bbac299e..000000000000 --- a/docs-translations/ko-KR/tutorial/security.md +++ /dev/null @@ -1,96 +0,0 @@ -# 보안, 네이티브 호환성, 그리고 신뢰성 - -웹 개발자로써, 우리는 일반적으로 브라우저의 강력한 웹 보안을 잘 이용해왔습니다 -- 작성한 코드에 관련된 보안 문제는 아주 적었습니다. 우리는 웹 사이트의 -샌드박스안에서 허용된 상당히 제한된 권한과 기능에 의존해왔으며, 우리는 새로운 -보안 위협에 대해 발 빠르게 대응할 수 있는 엔지니어들로 이루어진 커다란 -팀으로부터 만들어진 브라우저를 사용자들이 마음 놓고 즐길 것이라고 믿어왔습니다. - -하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을 -기억해야 합니다. Electron은 친근한 웹 기술을 사용하여 풍부한 기능의 데스크톱 -애플리케이션을 만들 수 있도록 해주지만 그만큼 코드가 더 큰 힘을 사용합니다. -자바스크립트가 파일 시스템, 유저 쉘, 그외 여러가지 기능에 접근할 수 있습니다. -이러한 능력은 높은 퀄리티를 가진 네이티브 애플리케이션을 개발할 수 있도록 -해주지만 코드에 부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 가능성이 -있습니다. - -이를 염두해두고, 신뢰할 수 없는 출처의 임의의 콘텐츠를 표시할 때 Electron에서 -자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야 -합니다. 실제로도, 가장 유명한 Electron 애플리케이션들은 (Atom, Slack, Visual -Studio Code, 등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격 -콘텐츠) 사용합니다 - 만약 애플리케이션이 온라인 출처에서 가져온 코드를 -실행한다면, 그 코드가 악성 코드가 아닌지 판별하는 것은 본인의 책임입니다. - -## Chromium 보안 문제와 업그레이드 - -Electron이 새로운 버전의 Chromium을 가능한 한 빠르게 지원하려고 노력하지만, -개발자는 이러한 업그레이딩 작업은 매우 힘든 작업이라는 것을 알아야 합니다 - 각 -관련된 수십에서 심지어 백자리 개수의 파일들을 손수 수정해야 합니다. 주어진 -자원과 현재 기여도를 생각한다면, Electron은 항상 최신 버전의 Chromium을 유지하지 -못할 수 있으며, 며칠부터 몇 주까지 더 걸릴 수 있습니다. - -현재 Chromium 구성 요소를 업데이트하는 시스템은 우리가 사용할 수 있는 자원과 이 -프레임워크를 기반으로 구축된 대부분의 애플리케이션이 요구하는 것 사이에서 적절한 -균형을 유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를 -만드는 사람들의 사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한 -노력을 지원하는 Pull 요청과 기여는 언제나 환영합니다. - -## 위 조언 무시하기 - -원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가 -존재합니다. 예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼 -때, 만약 공격자가 어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를 -직접적으로 공격하거나 애플리케이션과 실질적인 위치 사이에서 공격하는 등), -공격자는 사용자의 기기에서 네이티브 코드를 실행할 수 있습니다. - -> :경고: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을 -비활성화하고, 로컬 파일만 (애플리케이션 패키지 내부에 포함된) Node 코드를 -실행시킬 수 있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview`를 -사용하고 `nodeIntegration`이 비활성화되어있는지 확인하세요. - -#### 확인 사항 - -이 리스트는 완벽하지 않습니다, 하지만 최소한 다음 사항은 확인하는 것이 좋습니다: - -* 보안된 (https) 콘텐츠만 표시합니다. -* 원격 콘텐츠를 표시하는 모든 렌더러에서 Node 통합 기능을 비활성화합니다. - (`webPreferences` 사용) -* `webSecurity`를 비활성화하지 않습니다. 이 옵션을 비활성화하면 동일-출처 정책도 - 비활성화됩니다. -* [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/) - 를 정의하고, 한정적인 규칙을 사용하세요 (i.e. `script-src 'self'`) -* 문자열을 코드로 실행할 수 있는 - [`eval`을 덮어쓰고 비활성화](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6-L8)하세요. -* `allowRunningInsecureContent`를 `true`로 설정하지 마세요. -* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `experimentalFeatures` 또는 - `experimentalCanvasFeatures`를 활성화하지 마세요. -* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `blinkFeatures`를 활성화하지 - 마세요. -* WebViews: `nodeintegration` 속성을 추가하지마세요. -* WebViews: `disablewebsecurity`를 사용하지 마세요. -* WebViews: `allowpopups`를 사용하지 마세요. -* WebViews: 원격 CSS/JS와 `insertCSS` 또는 `executeJavaScript`를 함께 사용하지 - 마세요. - -다시 말하지만, 이 리스트는 그저 위험을 최소화할 뿐이며 완전히 제거하지 않습니다. -만약 목적이 그저 웹 사이트를 보여주는 것이라면 일반 웹 브라우저가 더 안전한 -방법입니다. - -## Buffer Global - -노드의 [Buffer](https://nodejs.org/api/buffer.html) 클래스는 현재 -`nodeintegration` 속성이 추가되지 않은 경우에도 전역으로 사용가능합니다. -`preload` 스크립트에서 다음을 수행하여 앱에서 이것을 삭제할 수 있습니다: - -```js -delete global.Buffer -``` - -많은 라이브러리들이 다음을 통해 직접 요구하는 대신 전역을 기대하기 때문에 이것을 -삭제하면 사전에 설치된 스크립트와 앱에서 사용되는 Node 모듈이 깨질 수 있습니다. - -```js -const {Buffer} = require('buffer') -``` - -전역 `Buffer` 는 향후 Electron 주 버전에서 제거될 것 입니다. diff --git a/docs-translations/ko-KR/tutorial/supported-platforms.md b/docs-translations/ko-KR/tutorial/supported-platforms.md deleted file mode 100644 index d2d71c1454e5..000000000000 --- a/docs-translations/ko-KR/tutorial/supported-platforms.md +++ /dev/null @@ -1,30 +0,0 @@ -# 지원하는 플랫폼 - -Electron에선 다음과 같은 플랫폼을 지원합니다: - -### macOS - -macOS는 64비트 바이너리만 제공됩니다. 그리고 최소 macOS 지원 버전은 10.9입니다. - -### Windows - -Windows 7 이후 버전만 지원됩니다. Windows Vista에서도 작동할 수 있지만 아직 모든 작동 -테스트가 완료되지 않았습니다. - -윈도우용 바이너리는 `x86`과 `x64` 모두 제공됩니다. 그리고 `ARM` 버전 윈도우는 아직 -지원하지 않습니다. - -### Linux - -Ubuntu 12.04 버전에서 빌드된 `ia32`(`i686`), `x64`(`amd64`) 바이너리가 제공됩니다. -그리고 `arm` 버전 바이너리는 ARM v7 hard-float ABI와 Debian Wheezy용 NEON에 맞춰 -제공됩니다. - -미리 빌드된 바이너리가 배포판에서 작동할 수 있는지 여부는 Electron이 빌드된 플랫폼에서 -링크된 라이브러리에 따라 달라집니다. 그래서 현재 Linux 바이너리는 Ubuntu 12.04 버전만 -정상적인 작동이 보장됩니다. 하지만 다음 플랫폼들은 미리 빌드된 Electron 바이너리가 -정상적으로 작동하는 것을 확인했습니다: - -* Ubuntu 12.04 이후 버전 -* Fedora 21 -* Debian 8 diff --git a/docs-translations/ko-KR/tutorial/testing-on-headless-ci.md b/docs-translations/ko-KR/tutorial/testing-on-headless-ci.md deleted file mode 100644 index 42b2e027fd86..000000000000 --- a/docs-translations/ko-KR/tutorial/testing-on-headless-ci.md +++ /dev/null @@ -1,58 +0,0 @@ -# Headless CI 시스템에서 테스팅하기 (Travis, Jenkins) - -Chromium을 기반으로 한 Electron은 작업을 위해 디스플레이 드라이버가 필요합니다. -만약 Chromium이 디스플레이 드라이버를 찾기 못한다면, Electron은 그대로 실행에 -실패할 것입니다. 따라서 실행하는 방법에 관계없이 모든 테스트를 실행하지 못하게 됩니다. -Electron 기반 애플리케이션을 Travis, Circle, Jenkins 또는 유사한 시스템에서 테스팅을 -진행하려면 약간의 설정이 필요합니다. 요점만 말하자면, 가상 디스플레이 드라이버가 -필요합니다. - -## 가상 디스플레이 드라이버 설정 - -먼저, [Xvfb](https://en.wikipedia.org/wiki/Xvfb)를 설치합니다. 이것은 X11 -디스플레이 서버 프로토콜의 구현이며 모든 그래픽 작업을 스크린 출력없이 인-메모리에서 -수행하는 가상 프레임버퍼입니다. 정확히 우리가 필요로 하는 것입니다. - -그리고, 가상 xvfb 스크린을 생성하고 DISPLAY라고 불리우는 환경 변수를 지정합니다. -Electron의 Chromium은 자동적으로 `$DISPLAY` 변수를 찾습니다. 따라서 앱의 추가적인 -다른 설정이 필요하지 않습니다. 이러한 작업은 Paul Betts의 -[xvfb-maybe](https://github.com/paulcbetts/xvfb-maybe)를 통해 자동화 할 수 -있습니다: `xvfb-maybe`를 테스트 커맨드 앞에 추가하고 현재 시스템에서 요구하면 -이 작은 툴이 자동적으로 xvfb를 설정합니다. Windows와 macOS에선 간단히 아무 작업도 -하지 않습니다. - -``` -## Windows와 macOS에선, 그저 electron-mocha를 호출합니다 -## Linux에선, 현재 headless 환경에 있는 경우 -## xvfb-run electron-mocha ./test/*.js와 같습니다 -xvfb-maybe electron-mocha ./test/*.js -``` - -### Travis CI - -Travis에선, `.travis.yml`이 대충 다음과 같이 되어야 합니다: - -```yml -addons: - apt: - packages: - - xvfb - -install: - - export DISPLAY=':99.0' - - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & -``` - -### Jenkins - -Jenkins는 [Xvfb 플러그인이 존재합니다](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin). - -### Circle CI - -Circle CI는 멋지게도 이미 xvfb와 `$DISPLY` 변수가 준비되어 있습니다. 따라서 -[추가적인 설정이 필요하지](https://circleci.com/docs/environment#browsers) 않습니다. - -### AppVeyor - -AppVeyor는 Windows에서 작동하기 때문에 Selenium, Chromium, Electron과 그 비슷한 -툴들을 복잡한 과정 없이 모두 지원합니다. - 설정이 필요하지 않습니다. diff --git a/docs-translations/ko-KR/tutorial/using-native-node-modules.md b/docs-translations/ko-KR/tutorial/using-native-node-modules.md deleted file mode 100644 index f643d7a9443a..000000000000 --- a/docs-translations/ko-KR/tutorial/using-native-node-modules.md +++ /dev/null @@ -1,92 +0,0 @@ -# 네이티브 Node 모듈 사용하기 - -Electron에선 네이티브 Node 모듈을 지원합니다. 하지만 Electron이 시스템에 설치된 -Node의 버전과 전혀 다른 V8 버전을 사용하고 있을 가능성이 높은 관계로, 네이티브 모듈을 -빌드할 때 Electron의 헤더를 수동으로 지정해 주어야 합니다. - -## 네이티브 모듈을 설치하는 방법 - -네이티브 모듈을 설치하는 방법에는 세 가지 방법이 있습니다: - -### `npm` 사용하기 - -몇 가지 환경 변수를 설치하는 것으로, 직접적으로 `npm`을 모듈을 설치하는데 사용할 수 -있습니다. - -다음 예시는 Electron에 대한 모든 의존성을 설치하는 예시입니다: - -```bash -# Electron의 버전. -export npm_config_target=1.2.3 -# Electron의 아키텍쳐, ia32 또는 x64가 될 수 있습니다. -export npm_config_arch=x64 -export npm_config_target_arch=x64 -# Electron에 대한 헤더 다운로드 링크. -export npm_config_disturl=https://atom.io/download/electron -# node-pre-gyp에 Electron을 빌드한다는 것을 알려줍니다. -export npm_config_runtime=electron -# node-pre-gyp에 소스 코드로부터 모듈을 빌드한다는 것을 알려줍니다. -export npm_config_build_from_source=true -# 모든 의존성을 설치하고 캐시를 ~/.electron-gyp에 저장합니다. -HOME=~/.electron-gyp npm install -``` - -### 모듈을 설치하고 Electron을 위해 다시 빌드하기 - -다른 Node 프로젝트와 같이 모듈을 설치하는 것을 선택할 수도 있습니다. 그리고 -[`electron-rebuild`][electron-rebuild] 패키지와 함께 Electron에 대해 모듈을 다시 -빌드할 수 있습니다. 이 모듈은 Electron의 버전을 가져올 수 있고 헤더를 다운로드 하거나 -네이티브 모듈을 빌드하는 등의 작업을 자동으로 실행할 수 있습니다. - -다음 예시는 `electron-rebuild`을 설치하고 자동으로 모듈을 빌드하는 예시입니다: - -```bash -npm install --save-dev electron-rebuild - -# "npm install"을 실행할 때마다 다음 명령을 실행하세요: -./node_modules/.bin/electron-rebuild - -# Windows에서 문제가 발생하면 다음 명령을 대신 실행하세요: -.\node_modules\.bin\electron-rebuild.cmd -``` - -**역자주:** `npm script`의 `postinstall`을 사용하면 이 작업을 자동화 할 수 있습니다. - -### Electron을 위해 직접적으로 빌드하기 - -현재 본인이 네이티브 모듈을 개발하고 있는 개발자이고 Electron에 대해 실험하고 싶다면, -직접적으로 모듈을 Electron에 대해 다시 빌드하고 싶을 것입니다. `node-gyp`를 통해 -직접적으로 Electron에 대해 빌드할 수 있습니다. - -```bash -cd /path-to-module/ -HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://atom.io/download/electron -``` - -`HOME=~/.electron-gyp`은 변경할 헤더의 위치를 찾습니다. `--target=0.29.1`은 -Electron의 버전입니다. `--dist-url=...`은 헤더를 다운로드 하는 주소입니다. -`--arch=x64`는 64비트 시스템을 타겟으로 빌드 한다는 것을 `node-gyp`에게 알려줍니다. - -## 문제 해결 - -네이티브 모듈을 설치했는데 잘 작동하지 않았다면, 다음 몇 가지를 확인해봐야 합니다: - -* 모듈의 아키텍쳐가 Electron의 아키텍쳐와 일치합니다. (ia32 또는 x64) -* Electron을 업그레이드한 후, 보통은 모듈을 다시 빌드해야 합니다. -* 문제가 의심된다면, 먼저 `electron-rebuild`를 실행하세요. - -## 모듈이 `node-pre-gyp`에 의존합니다 - -[`node-pre-gyp` 툴][node-pre-gyp]은 미리 빌드된 바이너리와 함께 네이티브 Node 모듈을 -배치하는 방법을 제공하며 수 많은 유명한 모듈들이 이를 사용합니다. - -보통 이 모듈은 Electron과 함께 잘 작동하지만, Electron이 Node보다 새로운 V8 버전을 -사용할 때, 만약 ABI가 변경되었다면, 때때로 안 좋은 일이 일어납니다. 그래서 일반적으론 -언제나 네이티브 모듈의 소스 코드를 가져와서 빌드하는 것을 권장합니다. - -`npm`을 통한 방법을 따르고 있다면, 기본적으로 이 소스를 받아와서 빌드합니다. 만약 -그렇지 않다면, `npm`에 `--build-from-source`를 전달해 주어야 합니다. 아니면 -`npm_config_build_from_source`를 환경 변수에 설정하는 방법도 있습니다. - -[electron-rebuild]: https://github.com/paulcbetts/electron-rebuild -[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp diff --git a/docs-translations/ko-KR/tutorial/using-pepper-flash-plugin.md b/docs-translations/ko-KR/tutorial/using-pepper-flash-plugin.md deleted file mode 100644 index bb7b3611955d..000000000000 --- a/docs-translations/ko-KR/tutorial/using-pepper-flash-plugin.md +++ /dev/null @@ -1,81 +0,0 @@ -# Pepper 플래시 플러그인 사용하기 - -Electron은 Pepper 플래시 플러그인을 지원합니다. Electron에서 Pepper 플래시 -플러그인을 사용하려면 Pepper 플래시 플러그인의 위치를 지정한 후 애플리케이션 내에서 -활성화 시켜야 합니다. - -## 플래시 플러그인 준비하기 - -크롬 브라우저의 `chrome://plugins` 페이지에 접속한 후 `세부정보`에서 플래시 -플러그인의 위치와 버전을 찾을 수 있습니다. Electron에서 플래시 플러그인을 지원하기 -위해선 이 두 가지를 복사해 와야 합니다. - -## Electron 스위치 추가 - -플러그인을 사용하려면 Electron 커맨드 라인에 `--ppapi-flash-path` 와 -`--ppapi-flash-version` 플래그를 `app`의 `ready` 이벤트가 발생하기 전에 추가해야 -합니다. 그리고 `browser-window`에 `plugins` 옵션을 활성화해야 합니다. - -예를 들면: - -```javascript -// 플래시 플러그인의 위치를 설정합니다. main.js와 위치가 같다고 가정할 때: -let pluginName -switch (process.platform) { - case 'win32': - pluginName = 'pepflashplayer.dll' - break - case 'darwin': - pluginName = 'PepperFlashPlayer.plugin' - break - case 'linux': - pluginName = 'libpepflashplayer.so' - break -} - -app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName)) - -// 선택적인으로 플래시 플레이어의 버전을 설정합니다. 예시로는, v17.0.0.169 -app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169') - -app.on('ready', () => { - win = new BrowserWindow({ - width: 800, - height: 600, - webPreferences: { - plugins: true - } - }) - win.loadURL(`file://${__dirname}/index.html`) - // 이외의 코드 -}) -``` - -직접 플러그인을 삽입하는 대신 시스템의 Pepper Flash 플러그인을 사용할 수도 있습니다. -시스템상의 플러그인의 경로는 `app.getPath('pepperFlashSystemPlugin')`로 불러올 수 -있습니다. - -## `` 태그를 이용하여 플러그인을 활성화 - -`plugins` 속성을 `` 태그에 추가합니다. - -```html - -``` - -## 문제 해결 - -개발자 도구의 콘솔에서 `navigator.plugins`를 탐색하면 Pepper 플래시 플러그인이 잘 -로드되었는지를 확인할 수 있습니다. (물론 플러그인의 경로를 잘 설정하지 않으면 확인할 -수 없습니다) - -Pepper 플래시 플러그인의 구조는 Electron과 일치해야 합니다. Windows에서 자주 -발생하는 문제는 32비트 버전의 플래시 플레이어를 64비트 버전의 Electron에서 사용하는 -것입니다. - -Windows에선 `--ppapi-flash-path`로 전달되는 경로의 분리자로 `\`를 사용해야 합니다. -POSIX-스타일 경로는 작동하지 않을 것입니다. - -RTMP 를 사용한 미디어 스트리밍같은 일부 작업의 경우 플레이어의 `.swf` 파일에 -폭넓은 권한을 부여할 필요가 있습니다. 그러기 위한 한가지 방법은, -[nw-flash-trust](https://github.com/szwacz/nw-flash-trust)를 사용하는 것입니다. diff --git a/docs-translations/ko-KR/tutorial/using-selenium-and-webdriver.md b/docs-translations/ko-KR/tutorial/using-selenium-and-webdriver.md deleted file mode 100644 index d5ea5ad74bed..000000000000 --- a/docs-translations/ko-KR/tutorial/using-selenium-and-webdriver.md +++ /dev/null @@ -1,170 +0,0 @@ -# Selenium 과 WebDriver 사용하기 - -[ChromeDriver - WebDriver for Chrome][chrome-driver]로부터 인용: - -> WebDriver는 많은 브라우저에서 웹 앱을 자동적으로 테스트하는 툴입니다. -> 이 툴킷은 웹 페이지를 자동으로 탐색하고 유저 폼을 사용하거나 자바스크립트를 실행하는 -> 등의 작업을 수행할 수 있습니다. ChromeDriver는 Chromium의 WebDriver wire 프로토콜 -> 스텐드얼론 서버 구현입니다. Chromium 과 WebDriver 팀 멤버에 의해 개발되었습니다. - -## Spectron 설정하기 - -[Spectron][spectron]은 공식적으로 지원하는 Electron을 위한 ChromeDriver 테스팅 -프레임워크입니다. 이는 [WebdriverIO](http://webdriver.io/)를 기반으로 만들어졌고, -테스트에서 Electron API에 접근하기 위한 헬퍼를 가지고 있으며 ChromeDriver를 포함하고 -있습니다. - -```bash -$ npm install --save-dev spectron -``` - -```javascript -// 윈도우가 제목과 함께 보이는지 검증하는 간단한 테스트. -var Application = require('spectron').Application -var assert = require('assert') - -var app = new Application({ - path: '/Applications/MyApp.app/Contents/MacOS/MyApp' -}) - -app.start().then(function () { - // 윈도우가 보이는지 확인합니다. - return app.browserWindow.isVisible() -}).then(function (isVisible) { - // 윈도우가 보이는지 검증합니다. - assert.equal(isVisible, true) -}).then(function () { - // 윈도우의 제목을 가져옵니다. - return app.client.getTitle() -}).then(function (title) { - // 윈도우의 제목을 검증합니다. - assert.equal(title, 'My App') -}).catch(function (error) { - // 테스트의 실패가 있다면 로깅합니다. - console.error('Test failed', error.message) -}).then(function () { - // 애플리케이션을 중지합니다. - return app.stop() -}) -``` - -## WebDriverJs 설정하기 - -[WebDriverJs](https://code.google.com/p/selenium/wiki/WebDriverJs)는 WebDriver를 -사용하여 테스트 할 수 있도록 도와주는 node 패키지입니다. 다음 예시를 참고하세요. - -### 1. 크롬 드라이버 시작 - -먼저, `chromedriver` 바이너리를 다운로드 받고 실행합니다: - -```bash -$ npm install electron-chromedriver -$ ./node_modules/.bin/chromedriver -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -포트 `9515`는 나중에 사용하므로 기억해 놓습니다. - -### 2. WebDriverJS 설치 - -```bash -$ npm install selenium-webdriver -``` - -### 3. 크롬 드라이버에 연결 - -`selenium-webdriver`를 Electron과 같이 사용하는 방법은 기본적으로 upstream과 -같습니다. 한가지 다른점이 있다면 수동으로 크롬 드라이버 연결에 대해 설정하고 Electron -실행파일의 위치를 전달합니다: - -```javascript -const webdriver = require('selenium-webdriver') - -const driver = new webdriver.Builder() - // 작동하고 있는 크롬 드라이버의 포트 "9515"를 사용합니다. - .usingServer('http://localhost:9515') - .withCapabilities({ - chromeOptions: { - // 여기에 사용중인 Electron 바이너리의 경로를 지정하세요. - binary: '/Path-to-Your-App.app/Contents/MacOS/Electron' - } - }) - .forBrowser('electron') - .build() - -driver.get('http://www.google.com') -driver.findElement(webdriver.By.name('q')).sendKeys('webdriver') -driver.findElement(webdriver.By.name('btnG')).click() -driver.wait(() => { - return driver.getTitle().then((title) => { - return title === 'webdriver - Google Search' - }) -}, 1000) - -driver.quit() -``` - -## WebdriverIO 설정하기 - -[WebdriverIO](http://webdriver.io/)는 웹 드라이버와 함께 테스트를 위해 제공되는 -node 패키지입니다. - -### 1. 크롬 드라이버 시작 - -먼저, `chromedriver` 바이너리를 다운로드 받고 실행합니다: - -```bash -$ npm install electron-chromedriver -$ ./node_modules/.bin/chromedriver --url-base=wd/hub --port=9515 -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -포트 `9515`는 나중에 사용하므로 기억해 놓읍시다 - -### 2. WebDriverIO 설치 - -```bash -$ npm install webdriverio -``` - -### 3. 크롬 드라이버에 연결 -```javascript -const webdriverio = require('webdriverio') -let options = { - host: 'localhost', // localhost에서 작동중인 크롬 드라이버 서버를 사용합니다. - port: 9515, // 연결할 크롬 드라이버 서버의 포트를 설정합니다. - desiredCapabilities: { - browserName: 'chrome', - chromeOptions: { - binary: '/Path-to-Your-App/electron', // Electron 바이너리 경로 - args: [/* cli arguments */] // 선택 사항, 'app=' + /path/to/your/app/ - } - } -} - -let client = webdriverio.remote(options) - -client - .init() - .url('http://google.com') - .setValue('#q', 'webdriverio') - .click('#btnG') - .getTitle().then((title) => { - console.log('Title was: ' + title) - }) - .end() -``` - -## 작업 환경 - -따로 Electron을 다시 빌드하지 않는 경우 간단히 애플리케이션을 Electron의 리소스 -디렉터리에 [배치](application-distribution.md)하여 바로 테스트 할 수 있습니다. - -또한, Electron 바이너리의 명령줄 인수에 애플리케이션 폴더를 지정하는 방법으로 실행할 -수도 있습니다. 이 방법을 사용하면 애플리케이션 폴더를 Electron의 `resource` -디렉터리로 복사하는 불필요한 과정을 생략할 수 있습니다. - -[chrome-driver]: https://sites.google.com/a/chromium.org/chromedriver/ -[spectron]: https://electron.atom.io/spectron diff --git a/docs-translations/ko-KR/tutorial/using-widevine-cdm-plugin.md b/docs-translations/ko-KR/tutorial/using-widevine-cdm-plugin.md deleted file mode 100644 index 0c5a363bbfac..000000000000 --- a/docs-translations/ko-KR/tutorial/using-widevine-cdm-plugin.md +++ /dev/null @@ -1,82 +0,0 @@ -# Widevine CDM 플러그인 사용하기 - -Electron에선 Chrome 브라우저에서 취득해온 Widevine CDM 플러그인을 사용할 수 있습니다. - -## 플러그인 취득 - -Electron은 라이센스상의 문제로 Widevine CDM 플러그인을 직접 제공하지 않습니다. -따라서 플러그인을 얻으려면 먼저 사용할 Electron 빌드의 아키텍쳐와 버전에 맞춰 공식 -Chrome 브라우저를 설치해야 합니다. - -**참고:** Chrome 브라우저의 메이저 버전은 Electron에서 사용하는 Chrome 버전과 -같습니다, 만약 그렇지 않다면 `navigator.plugins`가 로드됐더라도 정상적으로 작동하지 -않습니다. - -### Windows & macOS - -Chrome 브라우저에서 `chrome://components/`를 열고 `WidevineCdm`을 찾은 후 확실히 -최신버전인지 확인합니다. 여기까지 하면 모든 플러그인 바이너리를 -`APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/` -디렉터리에서 찾을 수 있습니다. - -`APP_DATA`는 애플리케이션 데이터를 저장하고 있는 시스템 경로입니다. Windows에선 -`%LOCALAPPDATA%`로 접근할 수 있고 macOS에선 `~/Library/Application Support`로 -접근할 수 있습니다. `VERSION`은 `1.4.8.866` 같은 Widevine CDM 플러그인의 버전 -문자열입니다. `PLATFORM`은 플랫폼을 뜻하며 `mac` 또는 `win`이 될 수 있으며 `ARCH`는 -아키텍쳐를 뜻하고 `x86` 또는 `x64`가 될 수 있습니다. - -Windows에선 `widevinecdm.dll` 와 `widevinecdmadapter.dll` 같은 바이너리를 -요구하며 macOS에선 `libwidevinecdm.dylib`와 `widevinecdmadapter.plugin` 바이너리를 -요구합니다. 원하는 곳에 이들을 복사해 놓을 수 있습니다. 하지만 반드시 바이너리는 같은 -위치에 두어야 합니다. - -### Linux - -Linux에선 플러그인 바이너리들이 Chrome 브라우저와 함께 제공됩니다. -`/opt/google/chrome` 경로에서 찾을 수 있으며, 파일 이름은 `libwidevinecdm.so`와 -`libwidevinecdmadapter.so`입니다. - -## 플러그인 사용 - -플러그인 파일을 가져온 후, Electron의 `--widevine-cdm-path` 커맨드 라인 스위치에 -`widevinecdmadapter`의 위치를 전달하고 플러그인의 버전을 `--widevine-cdm-version` -스위치에 전달해야 합니다. - -**참고:** `widevinecdmadapter` 바이너리가 Electron으로 전달되어도, `widevinecdm` -바이너리는 옆에 같이 두어야 합니다. - -커맨드 라인 스위치들은 `app` 모듈의 `ready` 이벤트가 발생하기 전에 전달되어야 합니다. -그리고 이 플러그인을 사용하는 페이지는 플러그인(속성)이 활성화되어있어야 합니다. - -예시 코드: - -```javascript -// `widevinecdmadapter`의 파일 이름을 이곳에 전달해야 합니다. 파일 이름은 -// * macOS에선 `widevinecdmadapter.plugin`로 지정합니다, -// * Linux에선 `libwidevinecdmadapter.so`로 지정합니다, -// * Windows에선 `widevinecdmadapter.dll`로 지정합니다. -app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin') -// 플러그인의 버전은 크롬의 `chrome://plugins` 페이지에서 취득할 수 있습니다. -app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866') - -let win = null -app.on('ready', () => { - win = new BrowserWindow({ - webPreferences: { - // `plugins`은 활성화되어야 합니다. - plugins: true - } - }) -}) -``` - -## 플러그인 작동 확인 - -플러그인 정상적으로 작동하는지 확인하려면 다음과 같은 방법을 사용할 수 있습니다: - -* 개발자 도구를 연 후 `navigator.plugins`를 확인하여 Widevine CDM 플러그인이 - 포함되었는지 알 수 있습니다. -* https://shaka-player-demo.appspot.com/를 열어, `Widevine`을 사용하는 설정을 - 로드합니다. -* http://www.dash-player.com/demo/drm-test-area/를 열어, 페이지에서 - `bitdash uses Widevine in your browser`라고 적혀있는지 확인하고 비디오를 재생합니다. diff --git a/docs-translations/ko-KR/tutorial/windows-store-guide.md b/docs-translations/ko-KR/tutorial/windows-store-guide.md deleted file mode 100644 index 403308895cd5..000000000000 --- a/docs-translations/ko-KR/tutorial/windows-store-guide.md +++ /dev/null @@ -1,155 +0,0 @@ -# Windows 스토어 가이드 - -Windows 10부터, 오래되고 좋은 win32 실행 파일이 새로운 형제를 얻었습니다: Universial -Windows Platform. 새로운 `.appx` 포맷은 Cortana와 푸시 알림과 같은 다수의 강력한 -API뿐만 아니라, Windows Store를 통해 설치와 업데이트를 단순화합니다. - -Microsoft는 개발자들이 새로운 애플리케이션 모델의 좋은 기능들을 사용할 수 있도록 -[Electron 애플리케이션을 `.appx` 패키지로 컴파일시키는 도구를 개발했습니다][electron-windows-store]. -이 가이드는 이 도구를 사용하는 방법과 Electron AppX 패키지의 호환성과 한정 사항을 -설명합니다. - -## 기본 상식과 요구 사항 - -Windows 10 "기념일 업데이트"는 win32 `.exe` 바이너리를 가상화된 파일 시스템과 -레지스트리를 함께 실행시킬 수 있도록 만들었습니다. 두 가지 모두 실행 중인 -애플리케이션과 Windows 컨테이너 안의 인스톨러에 의해 컴파일되는 동안 만들어지며, -설치가 되는 동안 Windows가 확실하게 어떤 변경 사항이 운영 체제에 적용되는지 식별할 수 -있도록 합니다. 가상 파일 시스템과 가상 레지스트리를 페어링 하는 실행 파일은 Windows가 -한 번의 클릭으로 설치와 삭제를 할 수 있도록 만듭니다. - -더 나아가서, exe는 appx 모델 안에서 실행됩니다 - 이 말은 즉 Universial Windows -Platform에서 제공되는 수많은 API를 사용할 수 있다는 이야기입니다. 더 많은 기능을 -사용하기 위해, Electron 애플리케이션은 백그라운드로 실행된 UWP 앱과 페어링 하여 -`exe`와 같이 실행할 수 있습니다 - 이렇게 헬퍼와 비슷하게 실행되고 작업을 실행하기 위해 -백그라운드에서 작동하며, 푸시 알림을 받거나, 다른 UWP 애플리케이션과 통신하는 역할을 -합니다. - -현재 존재하는 Electron 애플리케이션을 컴파일 하려면, 다음 요구 사항을 충족해야 합니다: - - -* Windows 10 기념일 업데이트 (2016년 8월 2일 발매) -* Windows 10 SDK, [여기서 다운로드][windows-sdk] - -그리고 CLI에서 `electron-windows-store`를 설치합니다: - -``` -npm install -g electron-windows-store -``` - -## Step 1: Electron 어플리케이션 패키징 - -[electron-packager](https://github.com/electron-userland/electron-packager)를 -사용하여 애플리케이션을 패키징합니다. (또는 비슷한 도구를 사용합니다) 마지막으로 최종 -애플리케이션에선 `node_modules`가 필요 없으며 그저 애플리케이션의 크기를 늘릴 뿐이니 -확실하게 지웠는지 확인합니다. - -출력된 파일들은 대충 다음과 같아야 합니다: - -``` -├── Ghost.exe -├── LICENSE -├── content_resources_200_percent.pak -├── content_shell.pak -├── d3dcompiler_47.dll -├── ffmpeg.dll -├── icudtl.dat -├── libEGL.dll -├── libGLESv2.dll -├── locales -│ ├── am.pak -│ ├── ar.pak -│ ├── [...] -├── natives_blob.bin -├── node.dll -├── resources -│ ├── app -│ └── atom.asar -├── snapshot_blob.bin -├── squirrel.exe -└── ui_resources_200_percent.pak -``` - -## `electron-windows-store` 실행하기 - -관리자 권한의 PowerShell ("관리자 권한으로 실행")을 실행하고, 디렉토리 입력과 출력, -애플리케이션의 이름과 버전, 마지막으로 `node_modules`를 평탄화시키는 인수들과 함께 -`electron-windows-store`를 실행합니다. - -``` -electron-windows-store ` - --input-directory C:\myelectronapp ` - --output-directory C:\output\myelectronapp ` - --flatten true ` - --package-version 1.0.0.0 ` - --package-name myelectronapp -``` - -명령이 실행되면, 도구는 다음과 같이 작동합니다: Electron 애플리케이션을 입력으로 받고, -`node_modules`를 평탄화하고 애플리케이션을 `app.zip`으로 압축합니다. 그리고 -인스톨러와 Windows Container를 사용하여, "확장된" AppX 패키지를 만듭니다 - -Windows Application Manifest (`AppXManifest.xml`)와 동시에 가상 파일 시스템과 가상 -레지스트리를 포함하여 출력 폴더로 내보냅니다. - -확장된 AppX 파일이 만들어지면, 도구는 Windows App Packager (`MakeAppx.exe`)를 -사용하여 디스크의 파일로부터 단일-파일 AppX 패키지를 생성해냅니다. 최종적으로, 이 -도구는 새 AppX 패키지에 서명하기 위해 컴퓨터에서 신뢰된 인증서를 만드는 데 사용할 수 -있습니다. 서명된 AppX 패키지로, CLI는 자동으로 기기에 패키지를 설치할 수 있습니다. - -## Step 3: AppX 패키지 사용하기 - -일반 사용자들이 패키지를 실행하기 위해서는 "기념일 업데이트" 된 Windows 10 이 -필요합니다. - Windows 업데이트 하는 방법은 [여기][how-to-update]에서 찾을 수 -있습니다. - -기존 UWP 앱과 반대로, 패키지된 앱은 현재 수동 확인 절차가 필요합니다. 이것은 -[여기][centennial-campaigns]에서 적용할 수 있습니다. 반면에, 사용자는 -더블클릭으로 패키지를 설치할 수 있습니다. 더 쉬운 설치 방법을 찾고 있다면, -스토어에 제출하지 않아도 됩니다. (일반적으로 기업과 같은) 관리되는 환경에서는, -`Add-AppxPackage` [PowerShell Cmdlet 은 자동화된 방식으로 설치하는데 사용될 수 -있습니다][add-appxpackage]. - -또 다른 중요한 제약은 컴파일된 AppX 패키지는 여전히 win32 실행 파일이 담겨있다는 -것입니다 - 따라서 Xbox, HoloLens, Phone에서 실행할 수 없습니다. - -## Optional: 백그라운드 작업을 사용하여 UWP 기능 추가 - -필요하다면 Windows 10의 모든 기능을 사용하기 위해 보이지 않는 UWP 백그라운드 작업과 -Electron 앱을 연결할 수 있습니다 - 푸시 알림, 코타나 통합, 라이브 타일등. - -Electron 앱이 토스트 알림이나 라이브 타일을 사용할 수 있도록 하는 방법을 알아보려면 -[Microsoft가 제공하는 샘플을 참고하세요][background-task]. - -## Optional: 컨테이너 가상화를 사용하여 변환 - -AppX 패키지를 만드려면, `electron-windows-store` CLI를 통해 대부분의 Electron 앱을 -그대로 변환할 수 있습니다. 하지만, 커스텀 인스톨러를 사용하고 있거나, 패키지를 -생성하는데 어떠한 문제라도 겪고있다면, Windows Container를 사용하여 패키지를 생성하는 -시도를 해볼 수 있습니다 - 이 모드를 사용하면, CLI가 어플리케이션이 정확하게 운영체제에 -대해 수행하는 작업이 어떤 변경 사항을 만드는지를 결정하기 위해 어플리케이션을 빈 Windows -Container에서 설치하고 실행할 것입니다. - -처음 CLI를 실행하기 전에, "Windows Desktop App Converter"를 먼저 설정해야 합니다. -이 작업은 약 몇 분 정도 소요됩니다. 하지만 걱정하지 않아도 됩니다 - 이 작업은 딱 한 -번만 하면 됩니다. Desktop App Converter는 [여기][app-converter]에서 다운로드 받을 -수 있고, `DesktopAppConverter.zip`와 `BaseImage-14316.wim` 두 파일을 모두 받아야 -합니다. - -1. `DesktopAppConverter.zip`의 압축을 풉니다. 그다음 PowerShell을 관리자 권한으로 - 실행하고 압축을 푼 위치로 이동합니다. (실행하는 모든 명령에 "관리자 권한"을 - 적용하려면 `Set-ExecutionPolicy bypass`를 실행하면 됩니다) -2. 그리고, `.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim`를 - 실행하여 Windows 베이스 이미지 (`BaseImage-14316.wim`)를 Desktop App Converter로 - 전달하고 설치를 진행합니다. -3. 만약 위 명령이 재시작을 요구하면, 기기를 재시작하고 위 명령을 다시 실행시키세요. - -설치가 완료되면, 컴파일할 Electron 애플리케이션 경로로 이동합니다. - -[windows-sdk]: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk -[app-converter]: https://www.microsoft.com/en-us/download/details.aspx?id=51691 -[add-appxpackage]: https://technet.microsoft.com/en-us/library/hh856048.aspx -[electron-packager]: https://github.com/electron-userland/electron-packager -[electron-windows-store]: https://github.com/catalystcode/electron-windows-store -[background-task]: https://github.com/felixrieseberg/electron-uwp-background -[centennial-campaigns]: https://developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge -[how-to-update]: https://blogs.windows.com/windowsexperience/2016/08/02/how-to-get-the-windows-10-anniversary-update diff --git a/docs-translations/nl/glossary.md b/docs-translations/nl/glossary.md deleted file mode 100644 index a0923fee7e2f..000000000000 --- a/docs-translations/nl/glossary.md +++ /dev/null @@ -1,97 +0,0 @@ -# Woordenlijst - -Deze pagina definieert bepaalde terminologie die veel gebruikt wordt binnen Electrons ontwikkeling. - -### ASAR - -ASAR staat voor "Atom Shell Archive Format". Een [asar][asar] archief is een simpel `tar`-achtig formaat dat bestanden samenvoegt in een enkel bestand. Electron kan er willekeurige bestanden uitlezen zonder het hele bestand uit te pakken. - -De ASAR-indeling is in de eerste plaats gemaakt om de prestaties op Windows te verbeteren ... TODO - -### Brightray - -[Brightray][brightray] is een statische bibliotheek die [libchromiumcontent] gemakkelijker te gebruiken maakt in applicaties. Het werd speciaal gemaakt voor Electron, maar kan ook worden gebruikt om Chromiums renderer in applicaties, die niet op Electron gebaseerd zijn, in te schakelen. - -Brightray is een laag-niveau afhankelijkheid van Electron, wat geen betrekking heeft op de meerderheid van Electrons gebruikers. - -### DMG - -Een Apple Disk Image is een pakket formaat gebruikt door macOS. DMG bestanden worden gebruikt voor het verspreiden van programma installers. [electron-builder] ondersteunt `dmg` als een build target. - -### IPC - -IPC staat voor "Inter-Process Communication". Electron gebruikt IPC om geserialiseerde JSON berichten te sturen tussen het [hoofd] en het [renderer] proces. - -### libchromiumcontent - -Een enkele, gedeelde bibliotheek die de Chromium content module en al zijn afhankelijkheden(e.g., Blink, [V8], etc.) bevat. - -### main process - -Het hoofdproces(main process), vaak een bestand genaamd `main.js`, is het toegangspunt voor elke Electron applicatie. Het controleert de levensduur van de app, van begin tot einde. Het beheert ook de basis elementen zoals het menu, de menubalk, etc. Het hoofdproces is verantwoordelijk voor het maken van elk nieuw renderer proces in de app. De volledige Node API is ingebouwd. -Elke app's hoofdproces is opgegeven in het `main` attribuut in de `package.json`. Dit is hoe `electron .` weet welk bestand het moet uitvoeren bij het opstarten. - -Zie ook: [process](#process), [renderer process](#renderer-process) - -### MAS - -Acroniem voor Apple's Mac App Store. Voor meer informatie over het indienen van uw app op de MAS, zie [Mac App Store Submission Guide]. - -### native modules - -Native modules (ook wel [addons] in Node.js) zijn modules geschreven in C of C++ die kunnen ingeladen worden in Node.js of Electron met de `require()` functie en kunnen gebruikt worden net alsof ze gewone Node.js module zijn. Ze worden voornamelijk gebruikt om een een interface te voorzien tussen JavaScript, die in Node.js loopt, en C/C++. Native Node modules worden ondersteund door Electron, maar aangezien Electron zeer waarschijnlijk een andere versie van V8 gebruikt dan de binaire Node geïnstalleerd op uw systeem, moet u de locatie van Electron headers handmatig opgeven bij het bouwen van native modules. - -Zie ook: [Using Native Node Modules]. - -### NSIS - -NSIS staat voor "Nullsoft Scriptable Install System", wat een script gestuurde installer authoring tool is voor Microsoft Windows. Het is vrijgegeven onder een combinatie van vrije software licenties en is een veel gebruikt alternatief voor commercieel gepatenteerde producten zoals InstallShield. [electron-builder] ondersteunt NSIS als een build target. - -### process - -Een proces is een instantie van een computerprogramma dat wordt uitgevoerd. Electron apps die gebruik maken van het [main] en één of meer [renderer] processen voeren eigenlijk meerdere programma's tegelijk uit. - -In Node.js en Electron heeft elk lopend proces een `proces` object. Dit object is een globale die informatie en controle vooziet over het huidige proces. Als een globale is het altijd beschikbaar voor applicaties zonder gebruik van `require()`. - -Zie ook: [main process](#main-process), [renderer process](#renderer-process) - -### renderer process - -Het renderer proces is een browservenster in uw app. In tegenstelling tot het hoofdproces, kunnen er meerdere renderer processen zijn en elk van deze is een apart proces. Ze kunnen ook verborgen zijn. - -In normale browsers worden webpagina's meestal uitgevoerd in een sandbox-omgeving en hebben geen toegang tot native resources. Electron gebruikers hebben echter de bevoegdheid om gebruik te maken van de Node.js API in webpagina's die het toelaten om een lager niveau van besturingssysteem interacties te gebruiken. - -Zie ook: [process](#process), [main process](#main-process) - -### Squirrel - -Squirrel is een open-source framework dat Electron apps in staat stelt om automatisch te updaten als nieuwe versies uitkomen. Kijk naar de [autoUpdater] API voor informatie over hoe te starten met Squirrel. - -### userland - -Userland of gebruikers-land is een term die zijn oorsprong heeft in de Unix gemeenschap, waar "userland" of "userspace" verwijst naar de programma's die uitgevoerd worden buiten de kernel. Recent is de term populair geworden in de Node en npm community om het verschil aan te geven tussen de beschikbare features in de "Node core" versus pakketten gepubliceerd naar het npm register door een veel grotere "gebruiker" gemeenschap. - -Net zoals Node, is Electron gericht op het hebben van een kleine API die alle noodzakelijke functies voorziet voor het ontwikkelen van multi-platform desktop applicaties. Deze ontwerpfilosofie zorgt ervoor dat Electron een flexibele tool is zonder overdreven te beschrijven hoe het gebruikt moet worden. Userland zorgt ervoor dat gebruikers tools kunnen maken en delen die extra functionaliteit bieden bovenop wat beschikbaar is in de "core". - -### V8 - -V8 is Google's open source JavaScript-engine. Het is geschreven in C++ en wordt gebruikt in Google Chrome. V8 kan standalone draaien, of kan worden gebruikt in een C++ applicatie. - -### webview - -`Webview` tags worden gebruikt om 'gast' content (zoals in externe webpagina's) in uw Electron app te verwerken. Ze lijken op `iframe`s, maar verschillen erin dat elke webview op een apart proces loopt. Het heeft niet dezelfde rechten als uw webpagina en alle interacties tussen uw app en ingebouwde inhoud zullen asynchroon zijn. Dit houdt uw app veilig voor de ingebouwde content. - - - -[addons]: https://nodejs.org/api/addons.html -[asar]: https://github.com/electron/asar -[autoUpdater]: api/auto-updater.md -[brightray]: https://github.com/electron/brightray -[electron-builder]: https://github.com/electron-userland/electron-builder -[libchromiumcontent]: #libchromiumcontent -[Mac App Store Submission Guide]: tutorials/mac-app-store-submission-guide.md -[main]: #main-process -[renderer]: #renderer-process -[Using Native Node Modules]: tutorial/using-native-node-modules.md -[userland]: #userland -[V8]: #v8 diff --git a/docs-translations/nl/project/CONTRIBUTING.md b/docs-translations/nl/project/CONTRIBUTING.md deleted file mode 100644 index b88f5f147dc3..000000000000 --- a/docs-translations/nl/project/CONTRIBUTING.md +++ /dev/null @@ -1,74 +0,0 @@ -# Bijdragen aan Electron - -:memo: Beschikbare vertalingen: [Koreaans](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/CONTRIBUTING.md) | [Versimpeld Chinees](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/CONTRIBUTING.md) | [Braziliaans Portugees](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/CONTRIBUTING.md) | [Nederlands](https://github.com/electron/electron/tree/master/docs-translations/nl/project/CONTRIBUTING.md) - -:+1::tada: Ten eerste, bedankt om de tijd te nemen om bij te dragen! :tada::+1: - -Dit project volgt de [gedragscode](CODE_OF_CONDUCT.md) van bijdragers. -Door deel te nemen, wordt je verwacht je aan deze code te houden. Onaanvaardbaar gedrag moet gerapporteerd worden bij electron@github.com. - -Dit is een set van richtlijnen om bij te dragen aan Electron. -Dit zijn slechts richtijnen, geen regels, gebruik je gezond verstand voe je vrij om wijzigingen aan dit document voor te stellen in een pull request. - -## Issues indienen - -* Je kan [hier](https://github.com/electron/electron/issues/new) een issue indienen, -maar lees eerst onderstaande suggesties en voeg zo veel mogelijk details toe bij je indiening. Indien mogelijk, voeg dan toe: - * De versie van Electron die je gebruikt - * Het besturingssysteem dat je gebruikt - * Indien mogelijk, wat je aan het doen was toen het probleem zich voor deed en wat je verwachtte dat zou gebeuren -* Andere dingen die kunnen helpen bij het oplossen van je probleem: - * Schermafbeeldingen en geanimeerde GIFs - * Foutmeldingen die voorkomen in je terminal, ontwikkeltools of als melding - * Doe een [vluchtig onderzoek](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+) - om te zien of een gelijkaardig probleem al is gemeld - -## Pull Requests Indienen - -* Voeg screenshots en geanimeerde GIFs toe in je pull request wanneer mogelijk. -* Volg de JavaScript, C++ en Python [codeer-stijl gedefinieerd in de documentatie](/docs/development/coding-style.md). -* Schrijf documentatie in in [Markdown](https://daringfireball.net/projects/markdown). - Zie de [Documentatie Stijlgids](/docs/styleguide.md). -* Gebruik korte commit-berichten in de tegenwoordige tijd. Zie [Commit Bericht Stijlgids](#git-commit-berichten). - -## Stijlgidsen - -### Code - -* Beëindig bestanden met een newline. -* Requires in de volgende volgorde: - * Ingebouwde Node Modules (zoals `path`) - * Ingebouwde Electron Modules (zoals `ipc`, `app`) - * Lokale Modules (met relatieve paden) -* Klasse-properties moeten in volgende volgorde: - * Klasse-methodes en properties (methodes starten met `@`) - * Instance-methodes en properties -* Vermijd platform-afhankelijke code: - * Gebruik `path.join()` om filenames te concateneren. - * Gebruik `os.tmpdir()` in plaats van `/tmp` voor de tijdelijke directory. -* Gebruik een gewone `return` wanneer je expliciet uit een functie returned. - * Geen `return null`, `return undefined`, `null`, of `undefined` - -### Git Commit Berichten - -* Gebruik tegenwoordige tijd ("Add feature" niet "Added feature") -* Gebruik gebiedende wijs ("Move cursor to..." niet "Moves cursor to...") -* De eerste lijn mag maximum 72 karakters lang zijn -* Refereer uitvoerig naar issues en pull requests -* Wanneer je enkel documentatie wijzigt, voeg dan `[ci skip]` toe aan het commit-bericht -* Wanneer toepasbaar, begin je commit-bericht met volgende emoji: - * :art: `:art:` als het formaat/de structuur van de code wordt verbeterd - * :racehorse: `:racehorse:` als de performantie van de code wordt verbeterd - * :non-potable_water: `:non-potable_water:` als memory leaks worden opgelost - * :memo: `:memo:` als documentie is geschreven - * :penguin: `:penguin:` als er iets Linux-gerelateerd is opgelost - * :apple: `:apple:` als er iets macOS-gerelateerd is opgelost - * :checkered_flag: `:checkered_flag:` als er iets Windows-gerelateerd is opgelost - * :bug: `:bug:` als een bug is opgelost - * :fire: `:fire:` als code of bestanden worden verwijderd - * :green_heart: `:green_heart:` als de CI build wordt gefixt - * :white_check_mark: `:white_check_mark:` als er tests worden toegevoegd - * :lock: `:lock:` als er iets met security wordt gedaan - * :arrow_up: `:arrow_up:` als dependencies worden geüpgraded - * :arrow_down: `:arrow_down:` als dependencies worden gedownpgraded - * :shirt: `:shirt:` als linter waarschuwingen worden opgelost diff --git a/docs-translations/pt-BR/README.md b/docs-translations/pt-BR/README.md deleted file mode 100644 index 1916f62c3f31..000000000000 --- a/docs-translations/pt-BR/README.md +++ /dev/null @@ -1,89 +0,0 @@ -Por favor, certifique-se de que está utilizando a documentação que corresponde à sua versão do Electron. -O número da versão deve ser uma parte da URL da página. Se não for, você provavelmente está utilizando -a documentação de um branch de desenvolvimento que pode conter mudanças na API que não são compatíveis -com a sua versão do Electron. Se este for o caso, você pode mudar para uma versão diferente da -documentação na lista de [versões disponíveis](https://electron.atom.io/docs/) em atom.io, -ou se você estiver usando a interface do GitHub, abra o *dropdown* "Switch branches/tags" e -selecione a *tag* que corresponde à sua versão. - -## FAQ - -Existem muitas perguntas comuns que são feitas, verifique antes de criar uma issue. -* [Electron FAQ](faq.md) - -## Guias - -* [Plataformas Suportadas](tutorial/supported-platforms.md) -* [Distribuição de Aplicações](tutorial/application-distribution.md) -* [Guia de Submissão da Mac App Store](../../docs/tutorial/mac-app-store-submission-guide.md) -* [Empacotamento da Aplicação](tutorial/application-packaging.md) -* [Usando Módulos Nativos do Node](tutorial/using-native-node-modules.md) -* [Depuração do Processo Principal](tutorial/debugging-main-process.md) -* [Usando Selenium e WebDriver](../../docs/tutorial/using-selenium-and-webdriver.md) -* [Extensão DevTools](tutorial/devtools-extension.md) -* [Usando o Plugin Pepper Flash](tutorial/using-pepper-flash-plugin.md) -* [Usando o Plugin Widevine CDM](../../docs/tutorial/using-widevine-cdm-plugin.md) - -## Tutoriais - -* [Introdução](tutorial/quick-start.md) -* [Integração com o Ambiente de Desenvolvimento](tutorial/desktop-environment-integration.md) -* [Evento de Detecção Online/Offline](tutorial/online-offline-events.md) - -## API - Referências - -* [Sinopse](api/synopsis.md) -* [Processos](api/process.md) -* [Aceleradores (Teclas de Atalho)](api/accelerator.md) -* [Parâmetros CLI suportados (Chrome)](../../docs/api/chrome-command-line-switches.md) -* [Variáveis de Ambiente](../../docs-translations/pt-BR/api/environment-variables.md) - -### Elementos DOM Personalizados: - -* [Objeto `File`](api/file-object.md) -* [Tag ``](../../docs/api/webview-tag.md) -* [Função `window.open`](api/window-open.md) - -### Módulos para o Processo Principal: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](../../docs/api/content-tracing.md) -* [dialog](../../docs/api/dialog.md) -* [globalShortcut](../../docs/api/global-shortcut.md) -* [ipcMain](../../docs/api/ipc-main.md) -* [Menu](../../docs/api/menu.md) -* [MenuItem](../../docs/api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](../../docs/api/protocol.md) -* [session](../../docs/api/session.md) -* [webContents](../../docs/api/web-contents.md) -* [Tray](../../docs/api/tray.md) - -### Módulos para o Processo Renderizador: - -* [DesktopCapturer](../../docs/api/desktop-capturer.md) -* [ipcRenderer](../../docs/api/ipc-renderer.md) -* [remote](../../docs/api/remote.md) -* [webFrame](../../docs/api/web-frame.md) - -### Módulos para ambos os processos: - -* [clipboard](../../docs/api/clipboard.md) -* [crashReporter](../../docs/api/crash-reporter.md) -* [nativeImage](../../docs/api/native-image.md) -* [screen](../../docs/api/screen.md) -* [shell](api/shell.md) - -## Desenvolvimento - -* [Estilo de Código](development/coding-style.md) -* [Estrutura de Diretórios de Código Fonte](development/source-code-directory-structure.md) -* [Diferenças Técnicas do NW.js (antigo node-webkit)](../../docs/development/atom-shell-vs-node-webkit.md) -* [Visão Geral do Build](../../docs/development/build-system-overview.md) -* [Instrução de Build (Mac)](development/build-instructions-osx.md) -* [Instrução de Build (Windows)](../../docs/development/build-instructions-windows.md) -* [Instrução de Build (Linux)](development/build-instructions-linux.md) -* [Configurando um Symbol Server no Debugger](../../docs/development/setting-up-symbol-server.md) diff --git a/docs-translations/pt-BR/api/accelerator.md b/docs-translations/pt-BR/api/accelerator.md deleted file mode 100644 index 7d4df4c79da7..000000000000 --- a/docs-translations/pt-BR/api/accelerator.md +++ /dev/null @@ -1,46 +0,0 @@ -# Acelerador (teclas de atalhos) - -Um acelerador é uma string que representa um atalho de tecla. Ele pode conter -múltiplos modificadores e códigos chaves, combinados pelo caractere `+`. - -Exemplos: - -* `Command+A` -* `Ctrl+Shift+Z` - -## Aviso sobre plataformas - -No Linux e no Windows a tecla `Command` não tem nenhum efeito, -então use `CommandOrControl` que representa a tecla `Command` existente no macOS e -`Control` no Linux e no Windows para definir aceleradores (atalhos). - -A chave `Super` está mapeada para a tecla `Windows` para Windows e Linux, -e para a tecla `Cmd` para macOS. - -## Modificadores disponíveis - -* `Command` (ou `Cmd` abreviado) -* `Control` (ou `Ctrl` abreviado) -* `CommandOrControl` (ou `CmdOrCtrl` abreviado) -* `Alt` -* `Shift` -* `Super` - -## Códigos chaves disponíveis - -* `0` até `9` -* `A` até `Z` -* `F1` até `F24` -* Pontuações como `~`, `!`, `@`, `#`, `$`, etc. -* `Plus` -* `Space` -* `Backspace` -* `Delete` -* `Insert` -* `Return` (ou `Enter` como pseudônimo) -* `Up`, `Down`, `Left` e `Right` -* `Home` e `End` -* `PageUp` e `PageDown` -* `Escape` (ou `Esc` abreviado) -* `VolumeUp`, `VolumeDown` e `VolumeMute` -* `MediaNextTrack`, `MediaPreviousTrack`, `MediaStop` e `MediaPlayPause` diff --git a/docs-translations/pt-BR/api/app.md b/docs-translations/pt-BR/api/app.md deleted file mode 100644 index fb77629a7057..000000000000 --- a/docs-translations/pt-BR/api/app.md +++ /dev/null @@ -1,449 +0,0 @@ -# app - -O módulo `app` é responsável por controlar o ciclo de vida do aplicativo. - -O exemplo a seguir mostra como fechar o aplicativo quando a última janela é fechada: - -```javascript -const app = require('electron').app -app.on('window-all-closed', function () { - app.quit() -}) -``` - -## Eventos - -O objeto `app` emite os seguintes eventos: - -### Evento: 'will-finish-launching' - -Emitido quando o aplicativo finaliza a inicialização básica. No Windows e no Linux, -o evento `will-finish-launching` é o mesmo que o evento `ready`; No macOS, -esse evento representa a notificação `applicationWillFinishLaunching` do `NSApplication`. -Normalmente aqui seriam criados *listeners* para os eventos `open-file` e `open-url`, e inicializar o *crash reporter* e atualizador automático. - -Na maioria dos casos, você deve fazer tudo no manipulador de eventos do `ready`. - -### Evento: 'ready' - -Emitido quando o Electron finaliza a inicialização. - -### Evento: 'window-all-closed' - -Emitido quando todas as janelas forem fechadas. - -Este evento só é emitido quando o aplicativo não for fechar. Se o -usuário pressionou`Cmd + Q`, ou o desenvolvedor chamou `app.quit()`, -o Electron tentará primeiro fechar todas as janelas e então emitir o -evento `will-quit`, e neste caso o evento `window-all-closed` não -seria emitido. - -### Evento: 'before-quit' - -Retorna: - -* `event` Event - -Emitido antes que o aplicativo comece a fechar suas janelas. -Chamar `event.preventDefault()` irá impedir o comportamento padrão, -que é terminar o aplicativo. - -### Evento: 'will-quit' - -Retorna: - -* `event` Event - -Emitido quando todas as janelas foram fechadas e o aplicativo irá finalizar. -Chamar `event.preventDefault()` irá impedir o comportamento padrão, -que é terminar o aplicativo. - -Veja a descrição do evento `window-all-closed` para as diferenças entre o -evento `will-quit` e `window-all-closed`. - -### Evento: 'quit' - -Emitido quando o aplicativo está finalizando. - -### Evento: 'open-file' _macOS_ - -Retorna: - -* `event` Event -* `path` String - -Emitido quando o usuário deseja abrir um arquivo com o aplicativo. O evento -`open-file` normalmente é emitido quando o aplicativo já está aberto e o S.O. -quer reutilizar o aplicativo para abrir o arquivo. `open-file` também é emitido -quando um arquivo é jogado no *dock* e o aplicativo ainda não está rodando. -Certifique-se de utilizar um *listener* para o evento `open-file` cedo na -inicialização do seu aplicativo para cuidar deste caso (antes mesmo do evento -`ready` ser emitido). - -Você deve chamar `event.preventDefault()` se quiser cuidar deste caso. - -No Windows, você deve fazer o *parse* do `process.argv` para pegar o -endereço do arquivo. - -### Evento: 'open-url' _macOS_ - -Retorna: - -* `event` Event -* `url` String - -Emitido quando o usuário deseja abrir uma URL com o aplicativo. O esquema deve -ser registrado para ser aberto pelo seu aplicativo. - -Você deve chamar `event.preventDefault()` se quiser cuidar deste caso. - -### Evento: 'activate' _macOS_ - -Retorna: - -* `event` Event -* `hasVisibleWindows` Boolean - -Emitido quando o aplicativo é ativado, que normalmente acontece quando o ícone -do aplicativo no *dock* é clicado. - -### Evento: 'browser-window-blur' - -Retorna: - -* `event` Event -* `window` BrowserWindow - -Emitido quando uma [browserWindow](../../../docs/api/browser-window.md) fica embaçada. - -### Evento: 'browser-window-focus' - -Retorna: - -* `event` Event -* `window` BrowserWindow - -Emitido quando uma [browserWindow](../../../docs/api/browser-window.md) é focada. - -### Evento: 'browser-window-created' - -Retorna: - -* `event` Event -* `window` BrowserWindow - -Emitido quando uma nova [browserWindow](../../../docs/api/browser-window.md) é criada. - -### Evento: 'certificate-error' - -Returns: - -* `event` Event -* `webContents` [WebContents](../../../docs/api/web-contents.md) -* `url` URL -* `error` String - O código de erro -* `certificate` Object - * `data` Buffer - dados codificados PEM - * `issuerName` String -* `callback` Function - -Emitido quando há uma falha na verificação do `certificate` para a `url`, -para confiar no certificado, você deve impedir o comportamento padrão com -`event.preventDefault()` e chamar `callback(true)`. - -```javascript -session.on('certificate-error', function (event, webContents, url, error, certificate, callback) { - if (url === 'https://github.com') { - // Lógica de verificação. - event.preventDefault() - callback(true) - } else { - callback(false) - } -}) -``` - -### Evento: 'select-client-certificate' - -Retorna: - -* `event` Event -* `webContents` [WebContents](../../../docs/api/web-contents.md) -* `url` URL -* `certificateList` [Objects] - * `data` Buffer - dados codificados PEM - * `issuerName` String - Nome Comum do Emissor -* `callback` Function - -Emitido quando um certificado de cliente é requisitado. - -A `url` corresponde à entrada de navegação requisitando o certificado do -cliente e `callback` precisa ser chamada com uma entrada filtrada da lista. -Usar `event.preventDefault()` impede o aplicativo de usar o primeiro certificado -da memória. - -```javascript -app.on('select-client-certificate', function (event, webContents, url, list, callback) { - event.preventDefault() - callback(list[0]) -}) -``` - -### Evento: 'login' - -Retorna: - -* `event` Event -* `webContents` [WebContents](../../../docs/api/web-contents.md) -* `request` Object - * `method` String - * `url` URL - * `referrer` URL -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - -Emitido quando `webContents` deseja fazer autenticação básica. - -O comportamento padrão é cancelar todas as autenticações, para sobrescrever -isto, você deve impedir esse comportamento com `event.preventDefault()` e -chamar `callback(username, password)` com as credenciais. - -```javascript -app.on('login', function (event, webContents, request, authInfo, callback) { - event.preventDefault() - callback('username', 'secret') -}) -``` - -### Evento: 'gpu-process-crashed' - -Emitido quando o processo da gpu falha. - -## Métodos - -O objeto `app` possui os seguintes métodos: - -**Nota:** Alguns métodos só estão disponíveis em sistemas operacionais específicos e estão rotulados como tal. - -### `app.quit()` - -Tente fechar todas as janelas. O evento `before-quit` será emitido primeiro. Se todas -as janelas fecharem com sucesso, o evento `will-quit` será emitido e por padrão o -aplicativo irá terminar. - -Este método garante que todos os manipuladores de evento `beforeunload` e `unload` -sejam corretamente executados. É possível que uma janela cancele o processo de -encerramento ao retornar `false` no manipulador de evento `beforeunload`. - -### `app.exit(exitCode)` - -* `exitCode` Integer - -Finaliza imediatamente com `exitCode`. - -Todas as janelas serão fechadas imediatamente sem perguntar ao usuário, e os eventos -`before-quit` e `will-quit` não serão emitidos. - -### `app.getAppPath()` - -Retorna o atual diretório do aplicativo. - -### `app.getPath(name)` - -* `name` String - -Retorna um endereço para um diretório especial ou arquivo associado com `nome`. -Numa falha um `Error` é lançado. - -Você pode requisitar os seguintes endereços pelo nome: - -* `home` Diretório *home* do usuário. -* `appData` Diretório de dados do aplicativo por usuário, que por padrão aponta para: - * `%APPDATA%` no Windows - * `$XDG_CONFIG_HOME` ou `~/.config` no Linux - * `~/Library/Application Support` no macOS -* `userData` O diretório para guardar os arquivos de configuração do seu aplicativo, que por padrão é o diretório `appData` concatenado com o nome do seu aplicativo. -* `temp` Diretório temporário. -* `exe` O arquivo executável atual. -* `module` A biblioteca `libchromiumcontent`. -* `desktop` O diretório *Desktop* do usuário atual. -* `documents` Diretório "Meus Documentos" do usuário. -* `downloads` Diretório dos downloads do usuário. -* `music` Diretório de músicas do usuário. -* `pictures` Diretório de imagens do usuário. -* `videos` Diretório de vídeos do usuário. - -### `app.setPath(name, path)` - -* `name` String -* `path` String - -Sobrescreve o `path` para um diretório especial ou arquivo associado com `name`. -Se o endereço especifica um diretório não existente, o diretório será criado por -este método. Numa falha um `Error` é lançado. - -Você pode sobrescrever apenas endereços com um `name` definido em `app.getPath`. - -Por padrão, *cookies* e *caches* de páginas web serão guardadas no diretório `userData`. Se você quiser mudar esta localização, você deve sobrescrever o -endereço `userData` antes que o evento `ready` do módulo `app` seja emitido. - -### `app.getVersion()` - -Retorna a versão do aplicativo carregado. Se nenhuma versão for encontrada no -arquivo `package.json` do aplicativo, a versão do pacote ou executável atual é -retornada. - -### `app.getName()` - -Retorna o nome do aplicativo atual, que é o nome no arquivo `package.json` do -aplicativo. - -Normalmente o campo `name` do `package.json` é um nome curto em letras minúsculas, -de acordo com as especificações de módulos npm. Normalmente você deve também -especificar um campo `productName`, que é o nome completo em letras maiúsculas do -seu aplicativo, e que será preferido ao `name` pelo Electron. - -### `app.getLocale()` - -Retorna a localidade atual do aplicativo. - -### `app.addRecentDocument(path)` _macOS_ _Windows_ - -* `path` String - -Adiciona `path` à lista de documentos recentes. - -Esta lista é gerenciada pelo S.O.. No Windows você pode visitar a lista pela -barra de tarefas, e no macOS você pode visita-la pelo *dock*. - -### `app.clearRecentDocuments()` _macOS_ _Windows_ - -Limpa a lista de documentos recentes. - -### `app.setUserTasks(tasks)` _Windows_ - -* `tasks` Array - Vetor de objetos `Task` - -Adiciona `tasks` à categoria [Tasks][tasks] do JumpList no Windows. - -`tasks` é um vetor de objetos `Task` no seguinte formato: - -`Task` Object -* `program` String - Endereço do programa a ser executado, normalmente você deve especificar `process.execPath` que abre o programa atual. -* `arguments` String - Os argumentos de linha de comando quando `program` é executado. -* `title` String - A string a ser exibida em uma JumpList. -* `description` String - Descrição desta *task*. -* `iconPath` String - O endereço absoluto para um ícone a ser exibido em uma JumpList, que pode ser um arquivo arbitrário que contém um ícone. Normalmente você pode especificar `process.execPath` para mostrar o ícone do programa. -* `iconIndex` Integer - O índice do ícone do arquivo do icone. Se um arquivo de ícone consiste de dois ou mais ícones, defina este valor para identificar o ícone. Se o arquivo de ícone consiste de um ícone apenas, este valor é 0. - -### `app.allowNTLMCredentialsForAllDomains(allow)` - -* `allow` Boolean - -Define dinamicamente se sempre envia credenciais para HTTP NTLM ou autenticação *Negotiate* - normalmente, o Electron irá mandar apenas credenciais NTLM/Kerberos para URLs que se enquadram em sites "Intranet Local" (estão no mesmo domínio que você). -Entretanto, esta detecção frequentemente falha quando redes corporativas são mal configuradas, então isso permite optar por esse comportamento e habilitá-lo para todas as URLs. - -### `app.makeSingleInstance(callback)` - -* `callback` Function - -Este método faz da sua aplicação uma Aplicação de Instância Única - invés de permitir múltiplas instâncias do seu aplicativo rodarem, isto irá assegurar que apenas uma única instância do seu aplicativo rodará, e outras instâncias sinalizam esta instância e finalizam. - -`callback` será chamado com `callback(argv, workingDirectory)` quando uma segunda instância tenha sido executada. `argv` é um vetor de argumentos de linha de comando da segunda instância, e `workingDirectory` é o atual endereço de seu diretório. -Normalmente aplicativos respondem à isso não minimizando sua janela primária e dando foco à ela. - -É garantida a execução do `callback` após o evento `ready` do `app` ser emitido. - -Este método retorna `false` caso seu processo seja a instância primária do aplicativo e seu aplicativo deve continuar carregando. E retorna `true` caso seu processo tenha enviado seus parâmetros para outra instância, e você deve imediatamente finalizar. - -No macOS o sistema enforça instância única automaticamente quando usuários tentam abrir uma segunda instância do seu aplicativo no *Finder*, e os eventos `open-file` e `open-url` serão emitidos para isso. Entretanto, quando usuários inicializam seu aplicativo na linha de comando, o mecanismo de instância única do sistema será ignorado e você terá de utilizar esse método para assegurar-se de ter uma instância única. - -Um exemplo de ativação da janela de primeira instância quando uma segunda instância inicializa: - -```javascript -let myWindow = null - -let shouldQuit = app.makeSingleInstance(function (commandLine, workingDirectory) { - // Alguém tentou rodar uma segunda instância, devemos focar nossa janela - if (myWindow) { - if (myWindow.isMinimized()) myWindow.restore() - myWindow.focus() - } - return true -}) - -if (shouldQuit) app.quit() - -app.on('ready', function () { - // Cria myWindow, carrega o resto do aplicativo, etc... -}) -``` - -### `app.setAppUserModelId(id)` _Windows_ - -* `id` String - -Muda o [Application User Model ID][app-user-model-id] para `id`. - -### `app.commandLine.appendSwitch(switch[, value])` - -Adiciona uma opção (com `value` opcional) à linha de comando do Chromium. - -**Nota:** Isto não irá afetar `process.argv`, e é utilizado principalmente por desenvolvedores para controlar alguns comportamentos de baixo nível do Chromium. - -### `app.commandLine.appendArgument(value)` - -Adiciona um argumento à linha de comando do Chromium. O argumento será passado com aspas corretamente. - -**Nota:** Isto não irá afetar `process.argv`. - -### `app.dock.bounce([type])` _macOS_ - -* `type` String (opcional) - Pode ser `critical` ou `informational`. O padrão é - `informational` - -Quando `critical` é passado, o ícone do *dock* irá pular até que o aplicativo se torne ativo ou a requisição seja cancelada. - -Quando `informational` é passado, o ícone do *dock* irá pular por um segundo. -Entretanto, a requisição se mantém ativa até que o aplicativo se torne ativo ou a requisição seja cancelada. - -Retorna um ID representando a requisição. - -### `app.dock.cancelBounce(id)` _macOS_ - -* `id` Integer - -Cancela o salto do `id`. - -### `app.dock.setBadge(text)` _macOS_ - -* `text` String - -Define a string a ser exibida na área de *badging* do *dock*. - -### `app.dock.getBadge()` _macOS_ - -Retorna a string da *badge* do *dock*. - -### `app.dock.hide()` _macOS_ - -Esconde o ícone do *dock*. - -### `app.dock.show()` _macOS_ - -Exibe o ícone do *dock*. - -### `app.dock.setMenu(menu)` _macOS_ - -* `menu` Menu - -Define o [menu do dock][dock-menu] do aplicativo. - -[dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103 -[tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx diff --git a/docs-translations/pt-BR/api/auto-updater.md b/docs-translations/pt-BR/api/auto-updater.md deleted file mode 100644 index ff4db562a0c9..000000000000 --- a/docs-translations/pt-BR/api/auto-updater.md +++ /dev/null @@ -1,85 +0,0 @@ -# autoUpdater - -Este módulo oferece uma interface para o framework de atualização automática `Squirrel`. - -## Avisos sobre Plataformas - -Embora o `autoUpdater` ofereça uma API uniforme para diferentes plataformas, existem diferenças sutis em cada plataforma. - -### macOS - -No macOS, o módulo `autoUpdater` é construído sobre o [Squirrel.Mac][squirrel-mac], o que significa que você não precisa de nenhuma configuração especial para fazê-lo funcionar. Para requerimentos de servidor, você pode ler [Server Support][server-support]. - -### Windows - -No Windows, você deve instalar seu aplicativo na máquina de um usuário antes que possa usar o auto-updater, então é recomendado utilizar o módulo [grunt-electron-installer][installer] para gerar um instalador do Windows. - -O instalador gerado com Squirrel irá criar um ícone de atalho com um [Application User Model ID][app-user-model-id] no formato `com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`, por exemplo: `com.squirrel.slack.Slack` e `com.squirrel.code.Code`. Você precisa usar o mesmo ID para seu aplicativo a API `app.setAppUserModelId`, senão o Windows não conseguirá fixar seu aplicativo corretamente na barra de tarefas. - -A configuração do servidor também é diferente do macOS. Você pode ler a documentação do [Squirrel.Windows][squirrel-windows] para mais detalhes. - -### Linux - -Não há suporte nativo do auto-updater para Linux, então é recomendado utilizar o gerenciador de pacotes da distribuição para atualizar seu aplicativo. - -## Eventos - -O objeto `autoUpdater` emite os seguintes eventos: - -### Evento: 'error' - -Retorna: - -* `error` Error - -Emitido quando há um erro durante a atualização. - -### Evento: 'checking-for-update' - -Emitido quando está verificando se uma atualização foi inicializada. - -### Evento: 'update-available' - -Emitido quando há uma atualização disponível. A atualização é baixada automaticamente. - -### Evento: 'update-not-available' - -Emitido quando não há uma atualização disponível. - -### Evento: 'update-downloaded' - -Retorna: - -* `event` Event -* `releaseNotes` String -* `releaseName` String -* `releaseDate` Date -* `updateURL` String - -Emitido quando uma atualização foi baixada. - -No Windows apenas `releaseName` está disponível. - -## Métodos - -O objeto `autoUpdater` possui os seguintes métodos: - -### `autoUpdater.setFeedURL(url)` - -* `url` String - -Define a `url` e inicializa o auto-updater. A `url` não pode ser alterada uma vez que foi definida. - -### `autoUpdater.checkForUpdates()` - -Pergunta ao servidor se há uma atualização. Você deve chamar `setFeedURL` antes de usar esta API. - -### `autoUpdater.quitAndInstall()` - -Reinicia o aplicativo e instala a atualização após esta ter sido baixada. Só deve ser chamado após o `update-downloaded` ter sido emitido. - -[squirrel-mac]: https://github.com/Squirrel/Squirrel.Mac -[server-support]: https://github.com/Squirrel/Squirrel.Mac#server-support -[squirrel-windows]: https://github.com/Squirrel/Squirrel.Windows -[installer]: https://github.com/atom/grunt-electron-installer -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx diff --git a/docs-translations/pt-BR/api/browser-window.md b/docs-translations/pt-BR/api/browser-window.md deleted file mode 100644 index fb7c66bf3e52..000000000000 --- a/docs-translations/pt-BR/api/browser-window.md +++ /dev/null @@ -1,620 +0,0 @@ -# BrowserWindow - -A classe `BrowserWindow` lhe dá a habilidade de criar uma janela do browser. Por exemplo: - -```javascript -const BrowserWindow = require('electron').BrowserWindow - -var win = new BrowserWindow({ width: 800, height: 600, show: false }) -win.on('closed', function () { - win = null -}) - -win.loadURL('https://github.com') -win.show() -``` - -Você também pode criar uma janela sem o chrome utilizando a API [Frameless Window](../../../docs/api/frameless-window.md). - -## Classe: BrowserWindow - -`BrowserWindow` é um [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter). - -Ela cria uma nova `BrowserWindow` com propriedades nativas definidas pelo `options`. - -### `new BrowserWindow([options])` - -`options` Objeto (opcional), propriedades: - -* `width` Integer - Largura da janela em pixels. O padrão é `800`. -* `height` Integer - Altura da janela em pixels. O padrão é `600`. -* `x` Integer - Deslocamento da janela da esquerda da tela. O padrão é centralizar a janela. -* `y` Integer - Deslocamento da janela do topo da tela. O padrão é centralizar a janela. -* `useContentSize` Boolean - `width` e `height` seriam utilizados como o tamanho da página web, o que significa que o tamanho real da janela irá incluir o tamanho da moldura da janela e será um pouco maior. O padrão é `false`. -* `center` Boolean - Mostra a janela no centro da tela. -* `minWidth` Integer - Largura mínima da janela. O padrão é `0`. -* `minHeight` Integer - Altura mínima da janela. O padrão é `0`. -* `maxWidth` Integer - Largura máxima da janela. O padrão é sem limites. -* `maxHeight` Integer - Altura máxima da janela. O padrão é sem limites. -* `resizable` Boolean - Se é possível modificar o tamanho da janela. O padrão é `true`. -* `alwaysOnTop` Boolean - Se a janela deve sempre ficar à frente de outras janelas. O padrão é `false`. -* `fullscreen` Boolean - Se a janela deve estar em tela cheia. Quando definido como `false`, o botão de tela cheia estará escondido ou desabilitado no macOS. O padrão é `false`. -* `skipTaskbar` Boolean - Se deve mostrar a janela na barra de tarefas. O padrão é `false`. -* `kiosk` Boolean - Modo *kiosk*. O padrão é `false`. -* `title` String - Título padrão da janela. O padrão é `"Electron"`. -* `icon` [NativeImage](../../../docs/api/native-image.md) - O ícone da janela, quando omitido no Windows, o ícone do executável é utilizado como o ícone da janela. -* `show` Boolean - Se a janela deve ser exibida quando criada. O padrão é `true`. -* `frame` Boolean - Defina como `false` para criar uma [Frameless Window](../../../docs/api/frameless-window.md). O padrão é `true`. -* `acceptFirstMouse` Boolean - Se o *web view* aceita um evento *mouse-down* que ativa a janela simultaneamente. O padrão é `false`. -* `disableAutoHideCursor` Boolean - Se deve esconder o cursor quando estiver digitando. O padrão é `false`. -* `autoHideMenuBar` Boolean - Esconde a barra de menu automaticamente, a não ser que a tecla `Alt` seja pressionada. O padrão é `false`. -* `enableLargerThanScreen` Boolean - Possibilita que o tamanho da janela seja maior que a tela. O padrão é `false`. -* `backgroundColor` String - Cor de fundo da janela em hexadecimal, como `#66CD00` ou `#FFF`. Só é implementado no Linux e Windows. O padrão é `#000` (preto). -* `darkTheme` Boolean - Força a utilização do tema *dark* na janela, só funciona em alguns ambientes de desktop GTK+3. O padrão é `false`. -* `transparent` Boolean - Torna a janela [transparente](../../../docs/api/frameless-window.md). O padrão é `false`. -* `type` String - Define o tipo da janela, que aplica propriedades adicionais específicas da plataforma. Por padrão é indefinido e será criada uma janela de aplicativo comum. Possíveis valores: - * No Linux, os tipos possíveis são `desktop`, `dock`, `toolbar`, `splash`, - `notification`. - * No macOS, os tipos possíveis são `desktop`, `textured`. O tipo `textured` adiciona a aparência degradê metálica (`NSTexturedBackgroundWindowMask`). O tipo `desktop` coloca a janela no nível do fundo de tela do desktop (`kCGDesktopWindowLevel - 1`). Note que a janela `desktop` não irá receber foco, eventos de teclado ou mouse, mas você pode usar `globalShortcut` para receber entrada de dados ocasionalmente. -* `titleBarStyle` String, macOS - Define o estilo da barra de título da janela. Esta opção está suportada a partir da versão macOS 10.10 Yosemite. Há três possíveis valores: - * `default` ou não definido, resulta na barra de título cinza opaca padrão do Mac. - * `hidden` resulta numa barra de título oculta e a janela de conteúdo no tamanho máximo, porém a barra de título ainda possui os controles padrões de janela ("semáforo") no canto superior esquerdo. - * `hidden-inset` resulta numa barra de título oculta com uma aparência alternativa onde os botões de semáforo estão ligeiramente mais longe do canto da janela. -* `webPreferences` Object - Configurações das características da página web, propriedades: - * `nodeIntegration` Boolean - Se a integração com node está habilitada. O padrão é `true`. - * `preload` String - Define um *script* que será carregado antes que outros scripts rodem na página. Este script sempre terá acesso às APIs do node, não importa se `nodeIntegration` esteja habilitada ou não. O valor deve ser o endereço absoluto do scriot. Quando `nodeIntegration` não está habilitada, o script `preload` pode reintroduzir símbolos globais Node de volta ao escopo global. Veja um exemplo [aqui](process.md#evento-loaded). - * `partition` String - Define a sessão utilizada pela página. Se `partition` começa com `persist:`, a página irá utilizar uma sessão persistente disponível para todas as páginas do aplicativo com a mesma `partition`. Se não houver o prefixo `persist:`, a página irá utilizar uma sessão em memória. Ao utilizar a mesma `partition`, várias páginas podem compartilhar a mesma sessão. Se a `partition` for indefinida, então a sessão padrão do aplicativo será utilizada. - * `zoomFactor` Number - O fator de *zoom* da página, `3.0` representa `300%`. O padrão é `1.0`. - * `javascript` Boolean - Habilita suporte à JavaScript. O padrão é `true`. - * `webSecurity` Boolean - Quando definido como `false`, irá desabilitar a política de mesma origem (Geralmente usando sites de teste por pessoas), e definir `allowRunningInsecureContent` como - `true` se estas duas opções não tiverem sido definidas pelo usuário. O padrão é `true`. - * `allowRunningInsecureContent` Boolean - Permite que uma página https rode JavaScript, CSS ou plugins de URLs http. O padrão é `false`. - * `images` Boolean - Habilita suporte a imagens. O padrão é `true`. - * `java` Boolean - Habilita suporte a Java. O padrão é `false`. - * `textAreasAreResizable` Boolean - Faz com que os elementos *TextArea* elements tenham tamanho variável. O padrão é `true`. - * `webgl` Boolean - Habiltia suporte a WebGL. O padrão é `true`. - * `webaudio` Boolean - Habilita suporte a WebAudio. O padrão é `true`. - * `plugins` Boolean - Se plugins devem ser habilitados. O padrão é `false`. - * `experimentalFeatures` Boolean - Habilita as características experimentais do Chromium. O padrão é `false`. - * `experimentalCanvasFeatures` Boolean - Habilita as características experimentais de canvas do Chromium. O padrão é `false`. - * `overlayScrollbars` Boolean - Habilita sobreposição das barras de rolagem. O padrão é `false`. - * `overlayFullscreenVideo` Boolean - Habilita sobreposição do vídeo em tela cheia. O padrão é `false`. - * `sharedWorker` Boolean - Habilita suporte a *Shared Worker*. O padrão é `false`. - * `pageVisibility` Boolean - A página é forçada a permanecer visível ou oculta quando definido, em vez de refletir a visibilidade atual da janela. Usuários podem definir como `true` para evitar que os temporizadores do *DOM* sejam suprimidos. O padrão é `false`. - -## Eventos - -O objeto `BrowserWindow` emite os seguintes eventos: - -**Nota:** Alguns eventos só estão disponíveis em sistemas operacionais específicos e estão rotulados como tal. - -### Evento: 'page-title-updated' - -Retorna: - -* `event` Evento - -Emitido quando o documento muda seu título, chamar `event.preventDefault()` previne que o título nativo da janela mude. - -### Evento: 'close' - -Retorna: - -* `event` Evento - -Emitido quando a janela for fechar. É emitido antes dos eventos `beforeunload` e `unload` do DOM. Chamar `event.preventDefault()` cancela o fechamento. - -Normalmente você utiliza o manipulador de eventos do `beforeunload` para decidir se a janela deve ser fechada, que também será chamado quando a janela é recarregada. No Electron, retornar uma string vazia ou `false` cancela o fechamento. Por exemplo: - -```javascript -window.onbeforeunload = function (e) { - console.log('Não quero ser fechada') - - // Diferente de navegadores comuns, nos quais uma string deve ser retornada e - // o usuário deve confirmar se a janela será fechada, o Electron dá mais opções - // aos desenvolvedores. Retornar uma string vazia ou false cancela o fechamento. - // Você também pode usar a API de diálogo para deixar que o usuário confirme o - // fechamento do aplicativo. - e.returnValue = false -} -``` - -### Evento: 'closed' - -Emitido quando a janela é fechada. Após você ter recebido este evento, você deve remover a referência da janela e evitar utilizá-la. - -### Evento: 'unresponsive' - -Emitido quando a página web para de responder. - -### Evento: 'responsive' - -Emitido quando a página web que não respondia volta a responder novamente. - -### Evento: 'blur' - -Emitido quando a janela perde foco. - -### Evento: 'focus' - -Emitido quando a janela ganha foco. - -### Evento: 'maximize' - -Emitido quando a janela é maximizada. - -### Evento: 'unmaximize' - -Emitido quando a janela sai do estado maximizado. - -### Evento: 'minimize' - -Emitido quando a janela é minimizada. - -### Evento: 'restore' - -Emitido quando a janela é restaurada do estado minimizado. - -### Evento: 'resize' - -Emitido quando o tamanho da janela está sendo alterado. - -### Evento: 'move' - -Emitido quando está sendo movida para uma nova posição. - -__Note__: No macOS este evento é apenas um apelido de `moved`. - -### Evento: 'moved' _macOS_ - -Emitido uma vez quando a janela é movida para uma nova posição. - -### Evento: 'enter-full-screen' - -Emitido quando a janela entra no estado tela cheia. - -### Evento: 'leave-full-screen' - -Emitido quando a janela sai do estado de tela cheia. - -### Evento: 'enter-html-full-screen' - -Emitido quando a janela entra no estado tela cheia, ocasionado por uma api de html. - -### Evento: 'leave-html-full-screen' - -Emitido quando a janela sai do estado de tela cheia, ocasionado por uma api de html. - -### Evento: 'app-command' _Windows_ - -Emitido quando um [App Command](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx) é invocado. Estes estão tipicamente relacionado às teclas de mídia do teclado, ou comandos do browser, assim como o botão "Voltar" existente em alguns modelos de mouse no Windows. - -```javascript -someWindow.on('app-command', function (e, cmd) { - // Navega a janela 'para trás' quando o usuário pressiona o botão voltar do mouse - if (cmd === 'browser-backward' && someWindow.webContents.canGoBack()) { - someWindow.webContents.goBack() - } -}) -``` - -## Métodos - -O objeto `BrowserWindow` possui os seguintes métodos: - -### `BrowserWindow.getAllWindows()` - -Retorna um array de todas as janelas abertas. - -### `BrowserWindow.getFocusedWindow()` - -Retorna a janela que está focada no aplicativo. - -### `BrowserWindow.fromWebContents(webContents)` - -* `webContents` [WebContents](../../../docs/api/web-contents.md) - -Acha uma janela de acordo com os `webContents` que ela possui. - -### `BrowserWindow.fromId(id)` - -* `id` Integer - -Acha uma janela de acordo com o seu ID. - -### `BrowserWindow.addDevToolsExtension(path)` - -* `path` String - -Adiciona a extensão DevTools localizada no endereço `path`, e retorna o nome da extensão. - -A extensão será lembrada, então você só precisa chamar esta API uma vez, esta API não é para uso de programação. - -### `BrowserWindow.removeDevToolsExtension(name)` - -* `name` String - -Remove a extensão DevTools cujo nome é `name`. - -## Propriedades de Instância - -Objetos criados com `new BrowserWindow` possuem as seguintes propriedades: - -```javascript -// Neste exemplo `win` é a nossa instância -var win = new BrowserWindow({ width: 800, height: 600 }) -``` - -### `win.webContents` - -Todas os eventos e operações relacionados à pagina web serão feitos através do objeto `WebContents` que a esta janela possui. - -Veja a [documentação do `webContents`](../../../docs/api/web-contents.md) para seus métodos e eventos. - -### `win.id` - -O ID único desta janela. - -## Métodos de instância - -Objetos criados com `new BrowserWindow` possuem os seguintes métodos de instância: - -**Nota:** Alguns métodos só estão disponíveis em sistemas operacionais específicos e estão rotulados como tal. - -### `win.destroy()` - -Força o fechamento da janela, os eventos `unload` e `beforeunload` não serão emitidos para a página web, e o evento `close` também não será emitido para esta janela, mas garante que o evento `closed` será emitido. - -Você só deve utilizar este método quando o processo renderizador (página web) congelar. - -### `win.close()` - -Tenta fechar a janela, tem o mesmo efeito que o usuário manualmente clicar o botão de fechar a janela. Entretanto, a página web pode cancelar o fechamento, veja o [evento close](#evento-close). - -### `win.focus()` - -Foca na janela. - -### `win.isFocused()` - -Retorna um boolean, indicando se a janela está com foco. - -### `win.show()` - -Exibe e dá foco à janela. - -### `win.showInactive()` - -Exibe a janela, porém não dá foco à ela. - -### `win.hide()` - -Esconde a janela. - -### `win.isVisible()` - -Retorna um boolean, indicando se a janela está visível para o usuário. - -### `win.maximize()` - -Maximiza a janela. - -### `win.unmaximize()` - -Sai do estado maximizado da janela. - -### `win.isMaximized()` - -Retorna um boolean, indicando se a janela está maximizada. - -### `win.minimize()` - -Minimiza a janela. Em algumas plataformas, a janela minimizada será exibida no *Dock*. - -### `win.restore()` - -Restaura a janela do estado minimizado para o estado anterior. - -### `win.isMinimized()` - -Retorna um boolean, indicando se a janela está minimizada. - -### `win.setFullScreen(flag)` - -* `flag` Boolean - -Define se a janela deve estar em modo tela cheia. - -### `win.isFullScreen()` - -Retorna um boolean, indicando se a janela está em modo tela cheia. - -### `win.setAspectRatio(aspectRatio[, extraSize])` _macOS_ - -* `aspectRatio` A proporção que queremos manter para uma porção do conteúdo da *view*. -* `extraSize` Object (opcional) - O tamanho extra não incluído enquanto a proporção é mantida. Propriedades: - * `width` Integer - * `height` Integer - -Isto fará com que a janela mantenha sua proporção. O `extraSize` permite que o desenvolvedor tenha espaço, definido em pixels, não incluídos no cálculo da proporção. Esta API já leva em consideração a diferença entre o tamanho da janela e o tamanho de seu conteúdo. - -Suponha que exista uma janela normal com um *player* de vídeo HD e seus controles associados. Talvez tenha 15 pixels de controles na borda esquerda, 25 pixels de controles na borda direita e 50 abaixo do player. Para que seja mantida a proporção de 16:9 (proporção padrão para HD em 1920x1080) no próprio player, nós chamaríamos esta função com os argumentos 16/9 e [ 40, 50 ]. Para o segundo argumento, não interessa onde a largura e altura extras estão no conteúdo da view--apenas que elas existam. Apenas some qualquer área de largura e altura extras que você tem dentro da view do conteúdo. - -### `win.setBounds(options)` - -`options` Object, propriedades: - -* `x` Integer -* `y` Integer -* `width` Integer -* `height` Integer - -Redefine o tamanho e move a janela para `width`, `height`, `x`, `y`. - -### `win.getBounds()` - -Retorna um objeto que contém a largura, altura, posição x e y da janela. - -### `win.setSize(width, height)` - -* `width` Integer -* `height` Integer - -Redefine o tamanho da janela para largura `width` e altura `height`. - -### `win.getSize()` - -Retorna um array que contém a largura e altura da janela. - -### `win.setContentSize(width, height)` - -* `width` Integer -* `height` Integer - -Redefine a área de cliente da janela (a página web) para largura `width` e altura `height`. - -### `win.getContentSize()` - -Retorna um array que contém a largura e altura da área de cliente da janela. - -### `win.setMinimumSize(width, height)` - -* `width` Integer -* `height` Integer - -Define o tamanho mínimo da janela para largura `width` e altura `height`. - -### `win.getMinimumSize()` - -Retorna uma array que contém o tamanho mínimo da largura e altura da janela. - -### `win.setMaximumSize(width, height)` - -* `width` Integer -* `height` Integer - -Define o tamanho máximo da janela para largura `width` e altura `height`. - -### `win.getMaximumSize()` - -Retorna uma array que contém o tamanho máximo da largura e altura da janela. - -### `win.setResizable(resizable)` - -* `resizable` Boolean - -Define se a janela pode ter seu tamanho redefinido manualmente pelo usuário. - -### `win.isResizable()` - -Retorna um boolean indicando se a janela pode ter seu tamanho redefinido manualmente pelo usuário. - -### `win.setAlwaysOnTop(flag)` - -* `flag` Boolean - -Define se a janela deve estar sempre em cima de outras janelas. Após definir isso, a janela continua sendo uma janela normal, não uma janela *toolbox* que não pode receber foco. - -### `win.isAlwaysOnTop()` - -Retorna um boolean indicando se a janela está sempre em cima de outras janelas. - -### `win.center()` - -Move a janela para o centro da tela. - -### `win.setPosition(x, y)` - -* `x` Integer -* `y` Integer - -Move a janela para `x` e `y`. - -### `win.getPosition()` - -Retorna um array com a posição atual da janela. - -### `win.setTitle(title)` - -* `title` String - -Muda o título da janela nativa para `title`. - -### `win.getTitle()` - -Retorna o título da janela nativa. - -**Nota:** O título da página web pode ser diferente do título da janela nativa. - -### `win.flashFrame(flag)` - -* `flag` Boolean - -Inicia ou para de piscar a janela para atrair a atenção do usuário. - -### `win.setSkipTaskbar(skip)` - -* `skip` Boolean - -Faz com que a janela não apareça na barra de tarefas. - -### `win.setKiosk(flag)` - -* `flag` Boolean - -Entra ou sai do modo *kiosk*. - -### `win.isKiosk()` - -Retorna um boolean indicando se janela está no modo *kiosk*. - -### `win.hookWindowMessage(message, callback)` _Windows_ - -* `message` Integer -* `callback` Function - -Engancha uma mensagem de janela. O `callback` é chamado quando a mensagem é recebida no WndProc. - -### `win.isWindowMessageHooked(message)` _Windows_ - -* `message` Integer - -Retorna `true` ou `false` indicando se a mensagem está enganchada ou não. - -### `win.unhookWindowMessage(message)` _Windows_ - -* `message` Integer - -Desengancha a mensagem de janela. - -### `win.unhookAllWindowMessages()` _Windows_ - -Desengancha todas as mensagens de janela. - -### `win.setRepresentedFilename(filename)` _macOS_ - -* `filename` String - -Define o endereço do arquivo que a janela representa, e o ícone do arquivo será exibido na barra de título da janela. - -### `win.getRepresentedFilename()` _macOS_ - -Retorna o endereço do arquivo que a janela representa. - -### `win.setDocumentEdited(edited)` _macOS_ - -* `edited` Boolean - -Define se o documento da janela foi editado, e o ícone na barra de título se torna cinza quando definido como `true`. - -### `win.isDocumentEdited()` _macOS_ - -Retorna um boolean indicando se o documento da janela foi editado. - -### `win.focusOnWebView()` - -### `win.blurWebView()` - -### `win.capturePage([rect, ]callback)` - -* `rect` Object (opcional)- A área da página a ser capturada. Propriedades: - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer -* `callback` Function - -Captura uma imagem da página dentro do `rect`. Após completar, `callback` será chamada com `callback(imagem)`. `imagem` é uma instância de [NativeImage](../../../docs/api/native-image.md) que guarda dados sobre a imagem. Omitir `rect` captura toda a página visível. - -### `win.loadURL(url[, options])` - -Igual a `webContents.loadURL(url[, options])`. - -### `win.reload()` - -Igual a `webContents.reload`. - -### `win.setMenu(menu)` _Linux_ _Windows_ - -* `menu` Menu - -Define `menu` como a barra de menu da janela, definir como `null` remove a barra de menu. - -### `win.setProgressBar(progress)` - -* `progress` Double - -Define o valor do progresso na barra de progresso. Extensão válida é [0, 1.0]. - -Remove a barra de progresso quando `progress` < 0. -Muda para o modo indeterminado quando `progress` > 1. - -Na plataforma Linux, apenas suporta o ambiente de desktop Unity, você precisa definir o nome do arquivo como `*.desktop` no campo `desktopName` no `package.json`. Por padrão, irá assumir `app.getName().desktop`. - -### `win.setOverlayIcon(overlay, description)` _Windows 7+_ - -* `overlay` [NativeImage](../../../docs/api/native-image.md) - o ícone a ser exibido no canto inferior direito da barra de tarefas. Se este parâmetro for `null`, a sobreposição é eliminada. -* `description` String - uma descrição que será providenciada a leitores de tela de acessibilidade. - -Define uma sobreposição de 16px sobre o ícone da barra de tarefas atual, geralmente utilizado para indicar algum tipo de status de aplicação, ou notificar passivamente o usuário. - -### `win.setThumbarButtons(buttons)` _Windows 7+_ - -`buttons` Array de objetos `button`: - -`button` Object, propriedades: - -* `icon` [NativeImage](../../../docs/api/native-image.md) - O ícone exibido na barra de ferramentas miniatura. -* `tooltip` String (opcional) - O texto do balão de dica do botão. -* `flags` Array (opcional) - Controla estados e comportamentos específicos do botão. Utiliza `enabled` por padrão. Pode incluir as seguintes strings: - * `enabled` - O botão está ativo e disponível para o usuário. - * `disabled` - O botão está desabilitado. Está presente, mas possui um estado visual indicando que não irá responder às ações do usuário. - * `dismissonclick` - Quando o botão é clicado, o *flyout* do botão da barra de tarefas fecha imediatamente. - * `nobackground` - Não desenhe a borda do botão, apenas utilize a imagem. - * `hidden` - O botão não é exibido para o usuário. - * `noninteractive` - O botão está habilitado, mas não interage; Não é exibido o estado de botão pressionado. Este valor está destinado a instâncias nas quais o botão é utilizado em uma notificação. -* `click` - Função - -Adiciona uma barra de ferramentes miniatura com um conjunto de botões específicos à imagem miniatura de uma janela no layout de um botão de barra de tarefas. Retorna um objeto `Boolean` indicando se a miniatura foi adicionada com sucesso. - -O número de botões na barra de ferramentas miniatura não deve ser maior que 7 devido ao espaço limitado. Uma vez que você define a barra de ferramentas miniatura, ela não pode ser removida por causa da limitação da plataforma. Mas você pode chamar a API com um array vazio para limpar todos os botões. - -### `win.showDefinitionForSelection()` _macOS_ - -Mostra um dicionário *pop-up* que procura a palavra selecionada na página. - -### `win.setAutoHideMenuBar(hide)` - -* `hide` Boolean - -Define se a barra de menu da janela deve se esconder automaticamente. Uma vez que for definida, a barra de menu só será exibida quando usuários pressionarem a tecla `Alt`. - -Se a barra de menu já estiver visível, chamar `setAutoHideMenuBar(true)` não irá escondê-la imediatamente. - -### `win.isMenuBarAutoHide()` - -Retorna um boolean indicando se a barra de menu se esconde automaticamente. - -### `win.setMenuBarVisibility(visible)` _Windows_ _Linux_ - -* `visible` Boolean - -Define se a barra de menu deve ser visível. Se a barra de menu se esconde automaticamente, os usuários ainda podem exibí-la ao pressionar a tecla `Alt`. - -### `win.isMenuBarVisible()` - -Retorna um boolean indicando se a barra de menu está visível. - -### `win.setVisibleOnAllWorkspaces(visible)` - -* `visible` Boolean - -Define se a janela deve estar visível em todos os *workspaces*. - -**Nota:** Esta API não faz nada no Windows. - -### `win.isVisibleOnAllWorkspaces()` - -Retorna um boolean indicando se a janela está visível em todos os *workspaces*. - -**Nota:** Esta API sempre retorna `false` no Windows. diff --git a/docs-translations/pt-BR/api/environment-variables.md b/docs-translations/pt-BR/api/environment-variables.md deleted file mode 100644 index 3137ddf62772..000000000000 --- a/docs-translations/pt-BR/api/environment-variables.md +++ /dev/null @@ -1,91 +0,0 @@ -# Variáveis de ambiente - -> Controla as configurações e comportamento sem modificar o código - -Certos comportamentos do Electron são controlados por variáveis de ambiente que -são inicializadas antes do código do aplicativo e da chamada da linha de comando. - -Exemplo no POSIX shell: - -```bash -$ export ELECTRON_ENABLE_LOGGING=true -$ electron -``` - -Exemplo no prompt de comando do Windows: - -```powershell -> set ELECTRON_ENABLE_LOGGING=true -> electron -``` - -## Variáveis de produção - -As seguintes variáveis de ambiente são destinadas principalmente para o uso -em tempo de execução, empacotadas nas aplicações Electron. - -### `GOOGLE_API_KEY` - -O Electron já vem com uma chave para API inclusa para fazer requisições para -o serviço de geolocalização do Google. Por causa da chave da API vir inclusa -em cada versão do Electron, frequentemente excede a cota de uso. Para contornar -isso, você pode informar sua própria chave da API do Google nas variáveis de -ambiente. Informe o código no seu arquivo principal, antes do browser -ser aberto, isso fará com que a aplicação use-o para fazer as requisições: - -```javascript -process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE' -``` - -Para maiores instruções de como conseguir uma chave da API do Google, visite -[essa página](https://www.chromium.org/developers/how-tos/api-keys). - -Por padrão, a mais recente chave da API do Google pode não ser permitida para -fazer requisições de geolocalização. Para habilitar as requisições, acesse -[essa página](https://console.developers.google.com/apis/api/geolocation/overview). - -### `ELECTRON_NO_ASAR` - -Desabilita o suporte ASAR. Essa variável é suportada somente em processos -filhos bifurcados e gerados a partir de processos que definem -`ELECTRON_RUN_AS_NODE`. - -### `ELECTRON_RUN_AS_NODE` - -Inicia o processo como um processo padrão de Node.js. - -### `ELECTRON_NO_ATTACH_CONSOLE` _Windows_ - -Não anexa a janela à sessão atual do console. - -### `ELECTRON_FORCE_WINDOW_MENU_BAR` _Linux_ - -Não usa a barra de menu global do Linux. - -## Variáveis de desenvolvimento - -As seguintes variáveis de ambiente são destinadas principalmente ao -desenvolvimento e o processo de debug. - - -### `ELECTRON_ENABLE_LOGGING` - -Imprime os logs internos do Chrome no terminal. - -### `ELECTRON_LOG_ASAR_READS` - -Quando o Electron lê um arquivo ASAR, registra o deslocamento e o caminho -do arquivo no sistema `tmpdir`. O arquivo resultante pode ser fornecido -ao módulo ASAR para otimizar a organização dos arquivos. - -### `ELECTRON_ENABLE_STACK_DUMPING` - -Imprime o stack trace no terminal quando o Electron trava. - -Essa variável de ambiente não funcionará se o `crashReporter` for iniciado. - -### `ELECTRON_DEFAULT_ERROR_MODE` _Windows_ - -Exibe a janela de erro do Windows quando o Electron trava. - -Essa variável de ambiente não funcionará se o `crashReporter` for iniciado. diff --git a/docs-translations/pt-BR/api/file-object.md b/docs-translations/pt-BR/api/file-object.md deleted file mode 100644 index 6c12870ef2dd..000000000000 --- a/docs-translations/pt-BR/api/file-object.md +++ /dev/null @@ -1,31 +0,0 @@ -# `File` Object - -> Use a API `File` do HTML5 para funcionar nativamente com os arquivos do sistema. - - -A interface dos arquivos DOM promovem uma abstração dos arquivos nativos, permitindo que os usuários trabalhem em arquivos nativos diretamente com a API file do HTML5. O Electron adicionou um atributo `path` à interface `File` que exibe o caminho do arquivo no sistema. - -Exemplo de como obter o caminho de um arquivo arrastado para a aplicação: - -```html -
- Arraste e solte seu arquivo aqui -
- - -``` diff --git a/docs-translations/pt-BR/api/power-monitor.md b/docs-translations/pt-BR/api/power-monitor.md deleted file mode 100644 index dc036a5433b6..000000000000 --- a/docs-translations/pt-BR/api/power-monitor.md +++ /dev/null @@ -1,35 +0,0 @@ -# powerMonitor - -> Monitorar as mudanças de estado de energia. - -Você só pode usá-lo no processo principal. Você não deve usar este módulo até que o evento `ready` do modulo `app` seja emitido. - -Por exemplo: - -```javascript -app.on('ready', () => { - require('electron').powerMonitor.on('suspend', () => { - console.log('O sistema está indo dormir') - }) -}) -``` - -## Eventos - -O módulo `power-monitor` emite os seguintes eventos: - -### Evento: 'suspend' - -Emitido quando o sistema está a suspender. - -### Evento: 'resume' - -Emitido quando o sistema está a retomar. - -### Evento: 'on-ac' _Windows_ - -Emitido quando o sistema muda para energia AC. - -### Evento: 'on-battery' _Windows_ - -Emitido quando o sistema muda para a energia da bateria. diff --git a/docs-translations/pt-BR/api/power-save-blocker.md b/docs-translations/pt-BR/api/power-save-blocker.md deleted file mode 100644 index fd9eed1da2a4..000000000000 --- a/docs-translations/pt-BR/api/power-save-blocker.md +++ /dev/null @@ -1,56 +0,0 @@ -# powerSaveBlocker - -> loquear o sistema de entrar no modo de pouca energia (suspenso). - -Processo: [Main](../glossary.md#main-process) - -Por exemplo: - -```javascript -const {powerSaveBlocker} = require('electron') - -const id = powerSaveBlocker.start('prevent-display-sleep') -console.log(powerSaveBlocker.isStarted(id)) - -powerSaveBlocker.stop(id) -``` - -## Methods - -O módulo `powerSaveBlocker` tem os seguintes métodos: - -### `powerSaveBlocker.start(type)` - -* `type` String - Tipo de bloqueador de economia de energia. - * `prevent-app-suspension` - Impedir que o aplicativo seja suspenso. - Mantém o sistema ativo, mas permite que a tela seja desligada. Exemplo de casos de uso: - download de um arquivo ou reprodução de áudio. - * `prevent-display-sleep` - Impedir a exibição de entrar em modo suspenso. Mantém - o sistema e a tela ativos. Exemplo de caso de uso: reprodução de vídeo. - -Retorna `Integer` - O ID do bloqueador que é atribuído a este bloqueador de energia - -Inicia para impedir que o sistema entre no modo de baixa energia. Retorna um número inteiro -identificando o bloqueador de economia de energia. - -**Nota:** `prevent-display-sleep` Tem maior precedência sobre -`prevent-app-suspension`. Somente o tipo de precedência mais alto entra em vigor. Em -outras palavras, `prevent-display-sleep` sempre tem procedência sobre -`prevent-app-suspension`. - -Por exemplo, uma API chamada requests para `prevent-app-suspension`, e -outra chamada B requests para `prevent-display-sleep`. `prevent-display-sleep` -será usado até que B pare seu request. Depois disso, `prevent-app-suspension` -é usado. - -### `powerSaveBlocker.stop(id)` - -* `id` Integer - O id do bloqueador de economia de energia retornado por `powerSaveBlocker.start`. - -Interrompe o bloqueador de economia de energia especificado. - -### `powerSaveBlocker.isStarted(id)` - -* `id` Integer - O id do bloqueador de economia de energia retornado por `powerSaveBlocker.start`. - -Retorna `Boolean` - Se o `powerSaveBlocker` correspondente foi iniciado. diff --git a/docs-translations/pt-BR/api/process.md b/docs-translations/pt-BR/api/process.md deleted file mode 100644 index 2240a0b7a91c..000000000000 --- a/docs-translations/pt-BR/api/process.md +++ /dev/null @@ -1,48 +0,0 @@ -# process -O objeto `process` no Electron tem as seguintes diferenças do objeto no upstream node: - -* `process.type` String - Tipo de processo, pode ser `browser` (processo principal) -ou `renderer`. -* `process.versions.electron` String - Versão do Electron. -* `process.versions.chrome` String - Versão do Chromium. -* `process.resourcesPath` String - Caminho para o código fonte JavaScript. -* `process.mas` Boolean - Para build da Mac App Store, este valor é `true`, para outros builds é `undefined`. - -## Eventos - -### Evento: 'loaded' - -Emitido quando o Electron carregou seu script de inicialização interno e está começando a carregar a página web ou o script principal. - -Pode ser utilizado pelo script pré-carregamento (preload.js abaixo) para adicionar símbolos globais do Node removidos para o escopo global quando a integração do node é desligada: - -```javascript -// preload.js -var _setImmediate = setImmediate -var _clearImmediate = clearImmediate -process.once('loaded', function () { - global.setImmediate = _setImmediate - global.clearImmediate = _clearImmediate -}) -``` - -## Propriedades - -### `process.noAsar` - -Definir isto para `true` pode desabilitar o suporte para arquivos `asar` nos módulos nativos do Node. - -# Métodos - -O objeto `process` tem os seguintes métodos: - -### `process.hang` - -Faz com que o *thread* principal do processo congele. - -### `process.setFdLimit(maxDescriptors)` _macOS_ _Linux_ - -* `maxDescriptors` Integer - -Define o limite do arquivo descritor para `maxDescriptors` ou para o limite do OS, -o que for menor para o processo atual. diff --git a/docs-translations/pt-BR/api/shell.md b/docs-translations/pt-BR/api/shell.md deleted file mode 100644 index c633a7b889da..000000000000 --- a/docs-translations/pt-BR/api/shell.md +++ /dev/null @@ -1,43 +0,0 @@ -# shell - -O módulo `shell` fornece funções relacionadas à integração com o desktop. - -Um exemplo para abrir uma URL no browser padrão do usuário: - -```javascript -const shell = require('shell') -shell.openExternal('https://github.com') -``` - -## Métodos - -O módulo `shell` tem os seguintes métodos: - -### `shell.showItemInFolder(fullPath)` - -* `fullPath` String - -Exibe o arquivo num gerenciador de arquivos. Se possivel, seleciona o arquivo. - -### `shell.openItem(fullPath)` - -* `fullPath` String - -Abre o arquivo de maneira padrão do desktop. - -### `shell.openExternal(url)` - -* `url` String - -Abre a URL de protocolo externo de maneira padrão do desktop. (Por -exemplo, mailto: URLs no programa de email padrão do usuário) - -### `shell.moveItemToTrash(fullPath)` - -* `fullPath` String - -Move o arquivo para a lixeira e retorna um status boolean com o resultado da operação. - -### `shell.beep()` - -Toca um som beep. \ No newline at end of file diff --git a/docs-translations/pt-BR/api/synopsis.md b/docs-translations/pt-BR/api/synopsis.md deleted file mode 100644 index 97191d5f1bd4..000000000000 --- a/docs-translations/pt-BR/api/synopsis.md +++ /dev/null @@ -1,84 +0,0 @@ -# Sinopse - -> Como utilizar Node.js e a API do Electron. - -Todos os [módulos built-in do Node.js](http://nodejs.org/api/) estão disponíveis no Electron e os módulos de terceiros do node também têm suporte completo (inclusos os [módulos nativos](../tutorial/using-native-node-modules.md)). - -O Electron também fornece alguns módulos built-in para desenvolvimento nativo para aplicações desktop. Alguns módulos estão disponíveis somente no processo principal, outros somente no processo de renderização (página web), e outros em ambos processos. - -A regra básica é: se um módulo é [GUI][gui] ou de baixo nível, então deve estar disponível somente no módulo principal. Você tem de se familiarizar com o conceito de [processo principal vs. processo de renderização](../tutorial/quick-start.md#the-main-process) para estar apto a usar esses módulos. - -O script do processo principal é como um script normal em Node.js: - -```javascript -const {app, BrowserWindow} = require('electron') -let win = null - -app.on('ready', () => { - win = new BrowserWindow({width: 800, height: 600}) - win.loadURL('https://github.com') -}) -``` - -O processo renderizador não é diferente de uma página web comum, exceto pela possibilidade de usar módulos node: - -```html - - - - - - -``` - -Para rodar sua app, leia [Rodando sua app](../tutorial/quick-start.md#run-your-app). - -## Atribuição de desestruturação - -Assim como 0.37, você pode utilizar -[atribuição de desestruturação][destructuring-assignment] para facilitar o uso dos módulos built-in. - -```javascript -const {app, BrowserWindow} = require('electron') - -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -Se você precisar de todo o módulo `electron`, você pode fazer a chamada e usar a desestruturação para acessar os módulos individuais. - -```javascript -const electron = require('electron') -const {app, BrowserWindow} = electron - -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -É equivalente ao seguinte código: - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -[gui]: https://en.wikipedia.org/wiki/Graphical_user_interface -[destructuring-assignment]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment diff --git a/docs-translations/pt-BR/api/window-open.md b/docs-translations/pt-BR/api/window-open.md deleted file mode 100644 index ec0a93ea3824..000000000000 --- a/docs-translations/pt-BR/api/window-open.md +++ /dev/null @@ -1,96 +0,0 @@ -# Função `window.open` - -> Abre uma nova janela e carrega uma URL. - -Quando `window.open` é chamada para criar uma nova janela de uma página web, uma -nova instância de `BrowserWindow` será criada para a `url` e um proxy será -devolvido para o `window.open` para permitir que a página tenha controle -limitado sobre ele. - -O proxy tem uma funcionalidade padrão implementada de forma limitada para ser -compatível com páginas web tradicionais. Para ter controle total de uma nova -janela, você deverá criar diretamente um `BrowserWindow`. - -O `BrowserWindow` recém-criado herdará as opções da janela pai por padrão. Para -substituir as opções herdadas, você poderá defini-las na string `features`. - -### `window.open(url[, frameName][, features])` - -* `url` String -* `frameName` String (opcional) -* `features` String (opcional) - -Retorna `BrowserWindowProxy` - Cria uma nova janela e retorna uma instância da -classe `BrowserWindowProxy`. - -A string `features` segue o formato de um navegador padrão, mas cada recurso -(feature) tem de ser um campo das opções do `BrowserWindow`. - -**Notas:** - -* Integração com Node sempre estará desativada no `window` aberto se ela - estiver desativada na janela pai. -* Recursos fora do padrão (que não são manipulados pelo Chromium ou pelo - Electron) fornecidos em `features` serão passados para qualquer manipulador - de eventos `new-window` do `webContent` registrado no argumento - `additionalFeatures`. - -### `window.opener.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -Envia uma mensagem para a janela pai com a origem especificada ou `*` para -nenhuma preferência de origem. - -## Classe: BrowserWindowProxy - -> Manipula a janela de navegador filha - -O objeto `BrowserWindowProxy` é retornado de `window.open` e fornece uma -funcionalidade limitada para a janela filha. - -### Métodos de Instância - -O objeto `BrowserWindowProxy` possui os seguintes métodos de instância: - -#### `win.blur()` - -Remove o foco da janela filha. - -#### `win.close()` - -Fecha forçadamente a janela filha sem chamar seu evento de descarregamento. - -#### `win.eval(code)` - -* `code` String - -Avalia o código na janela filha. - -#### `win.focus()` - -Foca na janela filha (traz a janela para frente). - -#### `win.print()` - -Invoca o diálogo de impressão na janela filha. - -#### `win.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -Envia uma mensagem para a janela filha com a origem especificada ou `*` para -nenhuma preferência de origem. - -Além desses métodos, a janela filha implementa o objeto `window.opener` sem -propriedades e com apenas um método. - -### Propriedades de Instância - -O objeto `BrowserWindowProxy` possui as seguintes propriedades de instância: - -#### `win.closed` - -Um booleano que é definido como true após a janela filha ser fechada. diff --git a/docs-translations/pt-BR/development/build-instructions-linux.md b/docs-translations/pt-BR/development/build-instructions-linux.md deleted file mode 100644 index 67d2c8ff10f8..000000000000 --- a/docs-translations/pt-BR/development/build-instructions-linux.md +++ /dev/null @@ -1,152 +0,0 @@ -# Instruções de Build (Linux) - -Siga as orientações abaixo para fazer o build do Electron no Linux. - -## Pré-requisitos - -* Python 2.7.x. Algumas distribuições como CentOS 6.x ainda usam Python 2.6.x, - então você precisa checar a sua versão do Python com `python -V`. -* Node.js v0.12.x. Há várias maneiras de instalar o Node. Você pode baixar o - código fonte do [Node.js](http://nodejs.org) e compilar a partir dele. - Fazer isto permite que você instale o Node no seu próprio diretório home - como um usuário comum. - Ou tente repositórios como [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories). -* Clang 3.4 ou mais recente. -* Cabeçalhos de desenvolvimento do GTK+ e libnotify. - -No Ubuntu, instale as seguintes bibliotecas: - -```bash -$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ - libnotify-dev libgnome-keyring-dev libgconf2-dev \ - libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib -``` - -No RHEL / CentOS, instale as seguintes bibliotecas: - -```bash -$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -No Fedora, instale as seguintes bibliotecas: - -```bash -$ sudo dnf install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -Outras distribuições podem oferecer pacotes similares para instalação através -do gerenciador de pacotes como o pacman. Ou você pode compilar a partir do -código fonte. - -## Se Você Utilizar Máquinas Virtuais Para Fazer O Build - -Se você planeja fazer o build do Electron numa máquina virtual, você vai precisar -de um container de tamanho fixo de pelo menos 25 gigabytes. - -## Baixando o Código - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## Bootstrapping - -O script de *boostrap* irá baixar todas as dependências de build necessárias -e criar os arquivos de projeto do build. Você deve ter o Python 2.7.x para -executar o script com sucesso. -Baixar certos arquivos pode demorar bastante. Note que estamos utilizando -`ninja` para fazer o build do Electron, então não há um `Makefile` gerado. - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -### Compilação Cruzada - -Se você quer fazer o build para `arm`, você também deve instalar as seguintes -dependências: - -```bash -$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \ - g++-arm-linux-gnueabihf -``` - -E para fazer a compilação cruzada para `arm` ou `ia32`, você deve passar -o parâmetro `--target_arch` para o script `bootstrap.py`: - -```bash -$ ./script/bootstrap.py -v --target_arch=arm -``` - -## Building - -Se você quiser fazer o build para `Release` e `Debug`: - -```bash -$ ./script/build.py -``` - -Este script irá fazer com que um executável bem pesado do Electron seja -criado no diretório `out/R`. O arquivo possui mais de 1.3 gigabytes. -Isso acontece por que o binário do Release contém símbolos de debugging. -Para reduzir o tamanho do arquivo, rode o script `create-dist.py`: - -```bash -$ ./script/create-dist.py -``` - -Isso irá colocar uma distribuição funcional com arquivos muito menores -no diretório `dist`. Depois de rodar o script `create-dist.py`, talvez -você queira remover o binário de 1.3+ gigabytes que ainda está em `out/R`. - -Você também pode fazer apenas o build de `Debug`: - -```bash -$ ./script/build.py -c D -``` - -Depois de completar o build, você pode encontrar o binário de debug do `electron` -em `out/D`. - -## Limpando - -Para limpar os arquivos de build: - -```bash -$ ./script/clean.py -``` - -## Troubleshooting - -Certifique-se de que você tenha instalado todas as dependências do build. - -### Error While Loading Shared Libraries: libtinfo.so.5 - -O `clang` prebuilt irá tentar fazer o link com `libtinfo.so.5`. Dependendo -da arquitetura do host, faça um link simbólico para o `libncurses` apropriado: - -```bash -$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5 -``` - -## Testes - -Teste suas modificações conforme o estilo de código do projeto utilizando: - -```bash -$ ./script/cpplint.py -``` - -Teste funcionalidade utilizando: - -```bash -$ ./script/test.py -``` diff --git a/docs-translations/pt-BR/development/build-instructions-osx.md b/docs-translations/pt-BR/development/build-instructions-osx.md deleted file mode 100644 index cb5c9c3c9a24..000000000000 --- a/docs-translations/pt-BR/development/build-instructions-osx.md +++ /dev/null @@ -1,70 +0,0 @@ -# Instruções de Build (OSX) - -Siga as orientações abaixo para fazer o build do Electron no OSX. - -## Pré-requisitos - -* OSX >= 10.8 -* [Xcode](https://developer.apple.com/technologies/tools/) >= 5.1 -* [node.js](http://nodejs.org) (external) - -Se você estiver usando o Python baixado pelo Homebrew, terá também de instalar o seguinte módulo python: - -* pyobjc - -## Baixando o código - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## Bootstrapping - -O sciprt de *bootstrap* irá baixar todas as dependencias necessárias e criar os arquivos de projeto do build. Note que estamos utilizando o [ninja](https://ninja-build.org/) para fazer o build do Electron, então não há projeto gerado pelo Xcode. - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -## Building - -Para fazer o build do `Release` e `Debug`: - -```bash -$ ./script/build.py -``` - -Para fazer o build somente do `Debug`: - -```bash -$ ./script/build.py -c D -``` - -Depois de feito o build, você pode encontrar `Electron.app` abaixo de `out/D`. - -## Suporte 32bit - -Electron pode ser construído somente em 64bit no OSX e não há planos para suportar 32bit no futuro. - -## Limpando - -Para limpar os arquivos de build: - -```bash -$ npm run clean -``` - -## Testes - -Teste suas modificações conforme o estilo de código do projeto utilizando: - -```bash -$ ./script/cpplint.py -``` - -Teste as funcionalidades usando: - -```bash -$ ./script/test.py -``` diff --git a/docs-translations/pt-BR/development/coding-style.md b/docs-translations/pt-BR/development/coding-style.md deleted file mode 100644 index e323bd73d413..000000000000 --- a/docs-translations/pt-BR/development/coding-style.md +++ /dev/null @@ -1,26 +0,0 @@ -# Estilo de Codificação - -Estas são as diretrizes de estilo para codificar no Electron. - -## C++ e Python - -Para C++ e Python, seguimos o [Estilo de Codificação](http://www.chromium.org/developers/coding-style) do projeto Chromium. Há também um -script `script/cpplint.py` para verificar se todos os arquivos estão em conformidade. - -A versão Python que estamos usando agora é a Python 2.7. - -O código C++ usa várias abstrações e tipos do Chromium, por isso é recomendado familiarizar-se com eles. Um bom lugar para começar é com a documentação do Chromium [Important Abstractions and Data Structures](https://www.chromium.org/developers/coding-style/important-abstractions-and-data-structures). O documento menciona alguns tipos especiais, *scoped types* (que automaticamente liberam sua memória ao sair do escopo), mecanismos de *log* etc. - -## CoffeeScript - -Para CoffeeScript, seguimos o [Guia de Estilo](https://github.com/styleguide/javascript) do GitHub com as seguintes regras: - -* Os arquivos **NÃO DEVEM** terminar com uma nova linha, porque queremos corresponder aos padrões de estilo Google. - -* Os nomes dos arquivos devem ser concatenados com `-` em vez de `_`, por exemplo, `file-name.coffee` em vez de `file_name.coffee`, porque no [github/atom](https://github.com/github/atom) os nomes dos módulos são geralmente da forma `module-name`. Esta regra só se aplica aos arquivos com extensão `.coffee`. - -## Nomes de APIs - -Ao criar uma API, devemos preferencialmente utilizar métodos getters e setters em vez do -estilo de uma função única do jQuery. Por exemplo, `.getText()` e `.setText(text)` são preferenciais a `.text([text])`. Existe uma -[discussão](https://github.com/electron/electron/issues/46) sobre este assunto. diff --git a/docs-translations/pt-BR/development/source-code-directory-structure.md b/docs-translations/pt-BR/development/source-code-directory-structure.md deleted file mode 100644 index 091ce7682eb1..000000000000 --- a/docs-translations/pt-BR/development/source-code-directory-structure.md +++ /dev/null @@ -1,53 +0,0 @@ -# Estrutura de Diretórios do Código-Fonte - -O código-fonte do Electron é separado em algumas partes, seguindo principalmente as convenções de separação do chromium. - -Você pode se familiarizar com a [arquitetura de multiprocessamento ](http://dev.chromium.org/developers/design-documents/multi-process-architecture) do Chromium para entender melhor o código-fonte. - - -## Estrutura do Código-Fonte - -``` -Electron -├──atom - Código fonte do Electron. -| ├── app - Código de inicialização. -| ├── browser - A interface incluindo a janela principal, UI, e todas as coisas do processo principal. Ele se comunica com o renderizador para gerenciar as páginas web. -| |   ├── lib - Código Javascript para inicializar o processo principal. -| | ├── ui - Implementação da UI para plataformas distintas. -| | | ├── cocoa - Código-fonte específico do cocoa . -| | | ├── gtk - Código-font específico do GTK+. -| | | └── win - Código-fonte específico do Windows GUI. -| | ├── default_app - A página padrão é mostrada quando -| | | Electron inicializa sem fornecer um app. -| | ├── api - Implementação do processo principal das APIs -| | | └── lib - Código Javascript, parte da implementação da API. -| | ├── net - Código relacionado a rede. -| | ├── mac - Código fonte em Object-c, específico para Mac. -| | └── resources - Icones, arquivos dependentes da plataforma, etc. -| ├── renderer - Código que é executado no processo de renderização. -| | ├── lib - Parte do código Javascript de inicialização do renderizador. -| | └── api - Implementação das APIs para o processo de renderização. -| | └── lib - Código Javascript, parte da implementação da API. -| └── common - Código que utiliza ambos os processos, o principal e o de renderização, -| ele inclui algumas funções utilitárias e códigos para integrar com ciclo de mensagens do node no ciclo de mensagens do Chromium. -| ├── lib - Código Javascript comum para a inicialização. -| └── api - A implementação de APIs comuns e fundamentação dos -| módulos integrados com Electron's. -| └── lib - Código Javascript, parte da implementação da API. -├── chromium_src - Código-fonte copiado do Chromium. -├── docs - Documentação. -├── spec - Testes Automáticos. -├── atom.gyp - Regras de compilação do Electron. -└── common.gypi - Configuração específica do compilador e regras de construção para outros componentes - como `node` e `breakpad`. -``` - -## Estrutura de Outros Diretórios. - -* **script** - Scripts utilizado para fins de desenvolvimento como building, packaging, testes, etc. -* **tools** - Scripts auxiliares, utilizados pelos arquivos gyp, ao contrário do`script`, os scripts colocados aqui nunca devem ser invocados diretamente pelos usuários. -* **vendor** - Dependências de código-fonte de terceiros, nós não utilizamos `third_party` como nome porque ele poderia ser confundido com o diretório homônimo existente no código-fonte do Chromium. -* **node_modules** - Módulos de terceiros em node usados para compilação -* **out** - Diretório temporário saída do `ninja`. -* **dist** - Diretório temporário do `script/create-dist.py` ao criar uma distribuição -* **external_binaries** - Binários baixados de Frameworks de terceiros que não suportam a compilação com `gyp`. diff --git a/docs-translations/pt-BR/faq.md b/docs-translations/pt-BR/faq.md deleted file mode 100644 index b8b12a126edd..000000000000 --- a/docs-translations/pt-BR/faq.md +++ /dev/null @@ -1,139 +0,0 @@ -# FAQ Electron - -## Quando Electron será atualizado para a versão mais recente do Chrome? - -A versão do Chrome do Electron é geralmente lançada dentro de uma ou duas semanas após a liberação de uma nova versão estável do Chrome. Esta estimativa não é garantida e depende da quantidade de trabalho envolvido com a atualização. - -Apenas o canal estável do Chrome é usado. Se uma correção importante estiver no canal beta ou dev, vamos portá-la. - -Para mais informações, consulte a [introdução de segurança](tutorial/security.md). - -## Quando Electron será atualizado para a versão mais recente do Node.js? - -Quando uma nova versão do Node.js for lançada, geralmente esperamos por cerca de um mês antes de atualizar a do Electron. Assim, podemos evitar sermos afetados por erros introduzidos na nova versão do Node.js, o que acontece muito frequentemente. - -Os novos recursos do Node.js geralmente são trazidos por V8 upgrades, desde que o Electron usa o V8 enviado pelo navegador Chrome, o novo recurso brilhante do JavaScript de uma nova versão Node.js esta geralmente no Electron. - -## Como compartilhar dados entre página da web? - -Para compartilhar dados entre páginas web (os processos de renderização) a maneira mais simples é usar as APIs HTML5 que já estão disponíveis nos navegadores. Bons candidatos são [Storage API][storage], [`localStorage`][local-storage],[`sessionStorage`][session-storage], e [IndexedDB][indexed-db]. - -Ou você pode usar o sistema IPC, que é específico para o Electron, para armazenar objetos no processo principal como uma variável global, e depois acessar os representantes através da propriedade `remote` do módulo do `electron`: - -```javascript -// In the main process. -global.sharedObject = { - someProperty: 'default value' -} -``` - -```javascript -// In page 1. -require('electron').remote.getGlobal('sharedObject').someProperty = 'new value' -``` - -```javascript -// In page 2. -console.log(require('electron').remote.getGlobal('sharedObject').someProperty) -``` - -## Janela/tray da minha aplicação despareceu depois de alguns minutos. - -Isso acontece quando a variável que é usada para armazenar a janela/tray recebe lixo coletado. - -Se você encontrar esse problema, os seguintes artigos podem ser úteis: - -* [Gerenciamento de Memória][memory-management] -* [Escopo de Variável][variable-scope] - -Se você quer uma solução rápida, você pode tornar as variáveis globais, alterando o seu código como este: - -```javascript -const {app, Tray} = require('electron') -app.on('ready', () => { - const tray = new Tray('/path/to/icon.png') - tray.setTitle('hello world') -}) -``` - -para este: - -```javascript -const {app, Tray} = require('electron') -let tray = null -app.on('ready', () => { - tray = new Tray('/path/to/icon.png') - tray.setTitle('hello world') -}) -``` - -## Eu não posso usar jQuery/RequireJS/Meteor/AngularJS no Electron. - -Devido à integração Node.js do Electron, existem alguns símbolos adicionais inseridos no DOM como `module`, `exports`, `require`. Isso causa problemas para algumas bibliotecas, uma vez que pretende inserir os símbolos com os mesmos nomes. - -Para resolver isso, você pode desativar a integração no Electron: - -```javascript -// In the main process. -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -win.show() -``` - -Mas se você quiser manter as habilidade de uso de APIs Node.js e Electron, você tem que mudar o nome dos símbolos na página antes de incluir outras bibliotecas: - -```html - - - - -``` - -## `require('electron').xxx` is undefined. - -Ao usar o módulo integrado do Electron você pode encontrar um erro como este: - -``` -> require('electron').webFrame.setZoomFactor(1.0) -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -Isso é porque tem o [npm `electron` module][electron-module] instalado localmente ou globalmente, que substitui o módulo integrado do Electron. - -Para verificar se você esta usando o módulo integrado correto, você pode imprimir o caminho do módulo do `electron`: - -```javascript -console.log(require.resolve('electron')) -``` - -e, em seguida, verificar se ele está no seguinte formato: - -``` -"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -Se é algo como `node_modules/electron/index.js`, então você tem que remover o módulo npm `electron`, ou renomeá-lo. - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -No entanto, se você está usando o módulo embutido, mas ainda recebendo este erro, é muito provável que você está usando o módulo no processo errado. Por exemplo `electron.app` só pode ser usado no processo principal, enquanto o `electron.webFrame` só está disponível no processo renderizador. - -[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron -[storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage -[local-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage -[session-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage -[indexed-db]: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API diff --git a/docs-translations/pt-BR/project/CODE_OF_CONDUCT.md b/docs-translations/pt-BR/project/CODE_OF_CONDUCT.md deleted file mode 100644 index 9a7ecdf62ae8..000000000000 --- a/docs-translations/pt-BR/project/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Pacto de Conduta do Colaborador de Código - -## Nosso Compromisso - -No interesse de promover um ambiente aberto e acolhedor, nos como colaboradores e mantenedores comprometidos a fazer participação em nosso projeto e nossa comunidade uma experiência livre de assédio para todos, independentemente da idade, estatura, deficiência, etnia, identidade de gênero e expressão, nível de experiência, nacionalidade, aparência pessoal, raça, religião ou identidade sexual e orientação. - -## Nossos Padrões - -Exemplos de comportamento que contribui para criar um ambiente positivo incluem: - -* Usar uma linguagem de boas-vindas e inclusiva -* Ser respeitoso com diferentes pontos de vista e experiências -* Graciosamente aceitar críticas construtivas -* Incidindo sobre o que é melhor para a comunidade -* Mostrando empatia para com outros membros da comunidade - -Exemplos de comportamento inaceitável pelos participantes incluem: - -* O uso de linguagem sexualizada ou imagens e atenção sexual indesejada ou avanços -* Trolando, comentários depreciativos, e ataques insultantes/pessoais ou políticos -* Assédio público ou privado -* A publicação de outras informações privadas, tais como um endereço físico ou eletrônico, sem permissão explícita -* Outra conduta que possa ser razoavelmente considerada inadequada em um ambiente profissional - -## Nossas Responsabilidades - -Mantenedores do projeto são responsáveis por esclarecer as normas do comportamento aceitável e espera-se que as medidas corretivas adequadas e justas em resposta a todas as instâncias do comportamento inaceitável. - -Mantenedores do projeto têm o direito e a responsabilidade de remover, editar, ou rejeitar comentários, commits, código, edição de wiki, issues e outras contribuições que não estão alinhadas a este Código de Conduta, ou proibir temporária ou permanentemente qualquer colaborador por outros comportamentos que considerem inapropriado, ameaçador, ofensivo ou prejudicial. - -## Escopo - -Este Código de Conduta aplica-se tanto dentro dos espaços do projeto e em espaços públicos quando um indivíduo está representando o projeto ou sua comunidade. Exemplos de que representa um projeto ou comunidade incluem o uso de um endereço de e-mail do projeto oficial, postado através de uma conta oficial de mídia social, ou agindo como um representante nomeado em um evento on-line ou off-line. Representação de um projeto pode ser ainda definidos e esclarecidos pelos mantenedores do projeto. - -## Aplicação - -Instânicas de assédio ou comportamento abusivo, de outro modo inaceitáveis podem ser relatados em contato com a equipe do projeto em [electron@github.com](mailto:electron@github.com). Todas as reclamações serão analisadas e investigadas e irá resultar em uma resposta que for considerada necessária e adequada ás circunstâncias. A equipe do projeto é obrigada a manter a confidencialidade no que diz respeito ao relato de um incidente. Mais detalhes das políticas de aplicação específicas podem ser publicadas separadamente. - -Mantenedores de projetos que não seguem ou fazem cumprir o Código de Conduta de boa-fé podem enfrentar repercussões temporárias ou permanentes, conforme determinado por outros membros da liderança do projeto. - -## Atribuição - -Este Código de Conduta é uma adaptação do [Pacto do Colaborador][homepage], versão 1.4, disponível em [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/docs-translations/pt-BR/project/CONTRIBUTING.md b/docs-translations/pt-BR/project/CONTRIBUTING.md deleted file mode 100644 index cf5725a1dbd0..000000000000 --- a/docs-translations/pt-BR/project/CONTRIBUTING.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contribuindo com Electron - -:memo: Traduções disponíveis: [Inglês](https://github.com/electron/electron/tree/master/CONTRIBUTING.md) | [Coreano](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/CONTRIBUTING.md) | [Chinês Simplificado](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/CONTRIBUTING.md) - -:+1::tada: Primeiramente, obrigado por utilizar seu tempo contribuindo! :tada::+1: - -Esse projeto segue um [código de conduta](CODE_OF_CONDUCT.md). -Ao participar, é esperado que o código seja seguido. Favor reportar comportamentos inaceitáveis para electron@github.com. - -O texto a seguir é um conjunto de diretrizes para a contribuir com o Electron. -Estas são apenas diretrizes e não regras, use o seu bom senso e sinta-se livre para propor alterações nesse documento em um pull request. - -## Reportando Issues - -* Você pode criar uma issue [aqui](https://github.com/electron/electron/issues/new), -mas antes disso, por favor, leia as notas abaixo e inclua o máximo de detalhes possíveis em seu relato. Se puder, favor informar: - * A versão do Electron utilizada - * O sistema operacional utilizado - * Se possível, o que estava fazendo quando o problema ocorreu e o que era esperado que acontecesse -* Alguns outros meios que irão ajudar a resolver a issue: - * Capturas de tela e GIFs animados - * Saída de erro que aparece no terminal, dev tools ou algum em algum alerta - * Faça uma [pesquisa rápida](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+) - para verificar se já não existe uma issue similar já aberta - -## Submetendo Pull Requests - -* Inclua capturas de tela e GIFs animados em seu pull request sempre que possível. -* Siga os [padrões de código definidos nos documentos](/docs/development/coding-style.md) para JavaScript, C++, e Python. -* Escreva a documentação em [Markdown](https://daringfireball.net/projects/markdown). - Veja o [Guia de estilo de documentação](/docs/styleguide.md). -* Use mensagens curtas e com a conjugação verbal no tempo presente. Veja em [Guia de estilo de mensagens de commit](#git-commit-messages). - -## Guias de estilo - -### Código Geral - -* Terminar arquivos com uma nova linha. -* A organização deve estar na seguinte ordem: - * Módulos embutidos do Node (como o `path`) - * Módulos embutidos do Electron (como `ipc`, `app`) - * Módulos locais (usando caminhos relativos) -* Defina as propriedades da classe na seguinte ordem: - * Métodos e propriedades da classe (métodos iniciam com `@`) - * Métodos e propriedades de instância -* Evite o uso de códigos dependentes da plataforma: - * Use `path.join()` para concatenar nomes de arquivos. - * Use `os.tmpdir()` ao invés de `/tmp` quando precisar referenciar o diretório temporário. -* Use um simples `return` para retornar explícitamente o fim de uma função. - * Não usar `return null`, `return undefined`, `null`, ou `undefined` - -### Mensagens de Commit do Git - -* Use o tempo presente ("Adicionando função" não "Adicionada função") -* Use o modo imperativo ("Mova o cursor para..." não "O cursor deve ser movido...") -* Limite a primeira linha para 72 caracteres ou menos -* Referencie issues e pull requests livremente -* Quando alterar somente a documentação. inclua `[ci skip]` na descrição do commit -* Considerando iniciar a mensagem do commit com um emoji: - * :art: `:art:` quando aperfeiçoar o formato/estrutura do código - * :racehorse: `:racehorse:` quando aperfeiçoar a performance - * :non-potable_water: `:non-potable_water:` quando previnir vazamento de memória - * :memo: `:memo:` quando escrever documentação - * :penguin: `:penguin:` quando corrigir algo no Linux - * :apple: `:apple:` quando corrigir algo no OSX - * :checkered_flag: `:checkered_flag:` quando corrigir algo no Windows - * :bug: `:bug:` quando corrigir um bug - * :fire: `:fire:` quando remover código ou arquivos - * :green_heart: `:green_heart:` quando corrigir o build do CI - * :white_check_mark: `:white_check_mark:` quando adicionar testes - * :lock: `:lock:` quando estiver lidando com segurança - * :arrow_up: `:arrow_up:` quando atualizar dependências - * :arrow_down: `:arrow_down:` quando abaixar as dependências - * :shirt: `:shirt:` quando remover avisos do linter diff --git a/docs-translations/pt-BR/project/README.md b/docs-translations/pt-BR/project/README.md deleted file mode 100644 index b2e8807a36e9..000000000000 --- a/docs-translations/pt-BR/project/README.md +++ /dev/null @@ -1,67 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron#info=devDependencies) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -:memo: Available Translations: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) - -O framework Electron permite escrever aplicações desktop multi-plataforma usando JavaScript, HTML e CSS. Baseia-se em [Node.js](https://nodejs.org/) e [Chromium](http://www.chromium.org) e é usado pelo [editor Atom](https://github.com/atom/atom) e muitas outras [aplicações](https://electron.atom.io/apps). - -Siga [@ElectronJS](https://twitter.com/electronjs) no Twitter para anúncios importantes. - -Este projeto adere ao código do Pacto do Colaborador [código de conduta](CODE_OF_CONDUCT.md). Ao participar, espera-se que você siga esse código. Por favor, reporte o comportamento inaceitável para electron@github.com. - -## Downloads - -Binários pré-construídos e símbolos de depuração do Electron para Linux, Windows e macOS podem ser encontrados na página de [releases](https://github.com/electron/electron/releases). - -Você também pode usar [`npm`](https://docs.npmjs.com/) para instalar os binários do electron: - -```sh -# Install the `electron` command globally in your $PATH -npm install electron -g - -# Install as a development dependency -npm install electron --save-dev -``` - -### Mirrors - -- [China](https://npm.taobao.org/mirrors/electron) - -## Documentação - -Guias de referência da API estão localizados no diretório [docs](https://github.com/electron/electron/tree/master/docs). Ele também contém documentos que descrevem como construir e contribuir para o Electron. - -## Documentos Traduzidos - -- [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [Japanese](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es) -- [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [Ukrainian](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [Russian](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [French](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) - -## Começo Rápido - -Clone o repositório e execute o [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) para ver um pequeno aplicativo Electron em ação. - -## Comunidade - -Você pode fazer perguntas e interagir com a comunidade nos seguintes locais: -- [`electron`](http://discuss.atom.io/c/electron) categoria nos fóruns Atom -- `#atom-shell` canal na Freenode -- [`Atom`](http://atom-slack.herokuapp.com/) canal no Slack -- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Korean)* -- [`electron-jp`](https://electron-jp-slackin.herokuapp.com/) *(Japanese)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(Turkish)* -- [`electron-id`](https://electron-id.slack.com) *(Indonesia)* - -Confira [awesome-electron](https://github.com/sindresorhus/awesome-electron) para uma lista mantida pela comunidade de exemplos de aplicativos úteis, ferramentas e recursos. diff --git a/docs-translations/pt-BR/styleguide.md b/docs-translations/pt-BR/styleguide.md deleted file mode 100644 index 6294585a5bbf..000000000000 --- a/docs-translations/pt-BR/styleguide.md +++ /dev/null @@ -1,77 +0,0 @@ -# Styleguide do Electron - -Localize a seção apropriada para a sua tarefa: [Lendo a documentação do Electron](#) -ou [Escrevendo documentação para o Electron](#). - -## Escrevendo documentação para o Electron - -Estas são as formas que escrevemos a documentação do Electron. - -- No Máximo um `h1` por página. -- Usar `bash` ao invés de` cmd` em blocos de código (por causa do syntax highlighter). -- Títulos `h1` deve coincidir com o nome do objeto (i.e. `browser-window` → -`BrowserWindow`). -- Nomes de arquivos separados por hífen. -- Adicionar pelo menos uma descrição a cada frase. -- Métodos de cabeçalhos são envolto em `code`. -- Cabeçalhos de eventos são envolto em single 'quotation' marks. -- Não há listas com identação com mais de 2 níveis (por causa do markdown). -- Adicione títulos nas seções: Events, Class Methods e Instance Methods. -- Use 'will' ao invéis de 'would' ao descrever os resultados. -- Eventos e métodos são com cabeçalhos `h3`. -- Argumentos opcionais escritos como `function (required[, optional])`. -- Argumentos opcionais são indicados quando chamado na lista. -- Comprimento da linha é de 80 caracteres com colunas quebradas. -- Métodos específicos para uma plataforma são postos em itálico seguindo o cabeçalho do método. - - ```### `method(foo, bar)` _macOS_``` - -## Lendo a documentação do Electron - -Aqui estão algumas dicas de como entender a sintaxe da documentação do Electron. - -### Métodos - -Um exemplo de [method](https://developer.mozilla.org/en-US/docs/Glossary/Method) -documentação: - ---- - -`methodName(required[, optional]))` - -* `require` String, **required** -* `optional` Integer - ---- - -O nome do método é seguido pelos seus argumentos. Argumentos opcionais são -simbolizada por colchetes que cercam o argumento opcional, bem como a vírgula -requerido se este argumento opcional segue outro argumento. - -Abaixo o método é para obter informações detalhadas sobre cada um dos argumentos. O tipo -de argumento é simbolizada por qualquer um dos tipos mais comuns: [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), [` Number`](https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript Referência/Global_Objects/Object), [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -ou um tipo personalizado como o de Electron [`webContent`](api/web-content.md). - -### Eventos - -Um exemplo de [evento](https://developer.mozilla.org/en-US/docs/Web/API/Event) -documentação: - ---- - -Event: 'wake-up' - -Returns: - -* `time` String - ---- - -O evento é uma cadeia que é utilizada após um `.on` em um método listner. Se ela retorna --lhe um valor e seu tipo é observado abaixo. Se você quiser um método para esctuar e responder -crie algo parecido com o exemplo abaixo: - -```javascript -Alarm.on('wake-up', function (time) { - console.log(time) -}) -``` diff --git a/docs-translations/pt-BR/tutorial/accessibility.md b/docs-translations/pt-BR/tutorial/accessibility.md deleted file mode 100644 index 8e39a42f9e46..000000000000 --- a/docs-translations/pt-BR/tutorial/accessibility.md +++ /dev/null @@ -1,33 +0,0 @@ -# Acessibilidade - -Fazendo aplicações acessíveis é importante e nós estamos felizes em apresentar uma nova funcionalidade para [Devtron](https://electron.atom.io/devtron) e [Spectron](https://electron.atom.io/spectron) que dá aos desenvolvedores a oportunidade de fazer as suas aplicações melhor para todos. - ---- - -Preocupações de acessibilidade em aplicações Electron são semelhantes aos de websites, porque eles são ambos em última análise HTML. Com aplicativos Electron, no entanto, você não pode usar recursos on-line para auditorias de acessibilidade porque a sua aplicação não tem uma URL para apontar para o auditor. - -Esses novos recursos trazem essas ferramentas de auditoria para a sua aplicação Electron. Você pode optar por adicionar auditorias aos seus testes com Spectron ou usá-los dentro do DevTools com Devtron. Leia a seguir para obter um resumo das ferramentas ou verifique nossa [documentação de acessibilidade](https://electron.atom.io/docs/tutorial/accessibility) para obter mais informações. - -### Spectron - -No framework de testes Spectron, agora você pode auditar cada janela e tag `` em seu aplicativo. Por exemplo: - -```javascript -app.client.auditAccessibility().then(function (audit) { - if (audit.failed) { - console.error(audit.message) - } -}) -``` - -Você pode ler mais sobre este recurso na [documentação do Spectron](https://github.com/electron/spectron#accessibility-testing). - -### Devtron - -Em Devtron há uma nova guia de acessibilidade que permitirá auditar uma página no seu aplicativo, classificar e filtrar os resultados. - -![devtron screenshot](https://cloud.githubusercontent.com/assets/1305617/17156618/9f9bcd72-533f-11e6-880d-389115f40a2a.png) - -Ambas as ferramentas estão usando a biblioteca [Accessibility Developer Tools](https://github.com/GoogleChrome/accessibility-developer-tools) construída pela Google para o Chrome. Você pode aprender mais sobre as regras de auditoria da biblioteca de acessibilidade no [wiki do repositório](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules). - -Se você souber de outras ferramentas de acessibilidade para o Electron, adicione-as à [documentação de acessibilidade](https://electron.atom.io/docs/tutorial/accessibility) através de um pull request. diff --git a/docs-translations/pt-BR/tutorial/application-distribution.md b/docs-translations/pt-BR/tutorial/application-distribution.md deleted file mode 100644 index d2bc020bedfe..000000000000 --- a/docs-translations/pt-BR/tutorial/application-distribution.md +++ /dev/null @@ -1,117 +0,0 @@ -# Distribuição de aplicações - -Para distribuir sua aplicação com o Electron, você deve nomear o diretório que contém sua aplicação como -`app` e dentro deste diretório colocar os recursos que você está utilizando (no macOS -`Electron.app/Contents/Resources/`, -no Linux e no Windows é em `resources/`): - -No macOS: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -No Windows e Linux: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -Logo após execute `Electron.app` (ou `electron` no Linux e `electron.exe` no Windows), -e o Electron iniciaria a aplicação. O diretório `electron` será utilizado para criar a distribuição para -usuários finais. - -## Empacotando sua aplicação em um arquivo. - -Além de copiar todos os seus arquivos fontes para a distribuição, você também pode -empacotar seu aplicativo em um arquivo [asar](https://github.com/atom/asar) para evitar -de expor seu código fonte aos usuários finais. - -Para usar um arquivo `asar` ao invés da pasta `app` você precisa mudar o nome do -arquivo para `app.asar` e colocá-lo sob o diretório de recursos do Electron como -mostrado abaixo, então o Electron vai ler o arquivo e iniciar a aplicação a partir dele. - -No macOS: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -No Windows e Linux: - -```text -electron/resources/ -└── app.asar -``` - -Mais detalhes podem ser encontrados em [Empacotamento da aplicação](../../../docs/tutorial/application-packaging.md). - -## Renomeando a marca Electron na sua distribuição - -Depois de empacotar seu aplicativo Electron, você vai querer renomear a marca Electron -antes de distribuí-lo aos usuários. - -### Windows - -Você pode renomear `electron.exe` para o nome que desejar e editar o seu ícone e outras -informações com ferramentas como [rcedit](https://github.com/atom/rcedit). - -### macOS - -Você pode renomear `Electron.app` para o nome que desejar e também pode mudar o nome -do `CFBundleDisplayName`, `CFBundleIdentifier` e os campos em `CFBundleName` -nos seguinte arquivos: - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/frameworks/Electron Helper.app/Contents/Info.plist` - -Você também pode renomear o arquivo de ajuda para evitar a exibição de `Electron Helper` no -Monitor de Atividades, mas certifique-se de também renomear o arquivo de ajuda no executável do -aplicativo. - -A estrutura de uma aplicação renomada seria assim: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -Você pode renomear o executável `electron` para o nome que desejar. - -## Renomeando a marca Electron do código fonte. - -Também é possível fazer renomear a marca Electron do código fonte, alterando o nome do produto e -reconstruí-lo a partir da fonte, para fazer isso você precisa modificar o arquivo `atom.gyp`. - -### grunt-build-atom-shell - -A modificação do código fonte do Electron para ganhar a sua marca pode ser muito complexa, por isso, -uma tarefa para o Grunt foi criado e irá cuidar desta tarefa automaticamente para você: -[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -Esta tarefa irá automaticamente editar o arquivo `.gyp`, compilar o código -e reconstruir os módulos nativos da aplicação para utilizar o novo nome. diff --git a/docs-translations/pt-BR/tutorial/application-packaging.md b/docs-translations/pt-BR/tutorial/application-packaging.md deleted file mode 100644 index 612384607dae..000000000000 --- a/docs-translations/pt-BR/tutorial/application-packaging.md +++ /dev/null @@ -1,158 +0,0 @@ -# Empacotamento da aplicação - -Para proteger os recursos e o código fonte da sua aplicação você pode optar por -empacotar a sua aplicação em um arquivo [asar](https://github.com/atom/asar), isto é possível com poucas -alterações em seu código. - -## Gerando um arquivo `asar` - -Um arquivo [asar][asar] é um formato parecido com tar ou zip bem simples que concatena arquivos -em um único arquivo. O Electron pode ler arquivos arbitrários a partir dele sem descompactar -o arquivo inteiro. - -Passos para empacotar a sua aplicação em um arquivo `asar`: - -### 1. Instale o utilitário asar - -```bash -$ npm install -g asar -``` - -### 2. Empacote a sua aplicação - -```bash -$ asar pack your-app app.asar -``` - -## Usando arquivos `asar` - -No Electron existem dois conjuntos de APIs: Node APIs fornecidas pelo Node.js e Web -APIs fornecidas pelo Chromium. Ambas as APIs suportam a leitura de arquivos `asar`. - -### Node API - -As API's do Node como `fs.readFile` e `require` tratam os pacotes `asar` -como diretórios virtuais e os arquivos dentro dele como arquivos normais. - -Por exemplo, temos um arquivo `example.asar` sob `/path/to`: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -Lendo um arquivo em pacote `asar`: - -```javascript -var fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -Listando todos os arquivos a partir da raiz: - -```javascript -var fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -Utilizando um módulo dentro do pacote `asar`: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -Você também pode renderizar uma página web apartir de um arquivo `asar` utilizando o módulo `BrowserWindow`: - -```javascript -var BrowserWindow = require('browser-window') -var win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### API Web - -Em uma página web, arquivos em um pacote `asar` pode ser solicitado com o protocolo `file:`. -Como a API Node, arquivos `asar` são tratadas como diretórios. - -Por exemplo, para obter um arquivo com `$ .get`: - -```html - -``` - -### Tratando um pacote `asar` como um arquivo normal - -Para alguns casos, precisamos verificar o checksum de um pacote `asar`, para fazer isto, precisamos ler -o arquivo `asar` como um arquivo normal. Para isto, você pode usar o built-in -`original-fs` que fornece a API `fs`, sem apoio a arquivos asar`: - -```javascript -var originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -## Limitaçõs na API Node - -Mesmo fazendo grandes esforços para pacotes `asar` ser tratado no Node como diretórios, -ainda existem limitações devido a natureza de baixo nível do Node - -### Arquivos `asar` são somente leitura - -Os arquivos `asar` não podem ser modificados. - -### Diretório de trabalho não pode ser comportar como diretório de arquivos - -Embora pacotes `asar` são tratadas como diretórios, não há -diretórios reais no sistema de arquivos, assim você nunca pode definir o diretório de trabalho para -diretórios em pacotes `asar`, passando-os como a opção `cwd` de algumas APIs -também irá causar erros. - -### Descompactação extra em algumas APIs - -A maioria das APIs `fs` pode ler um arquivo ou obter informações de um arquivo a partir de pacotes `asar` -sem descompacta-lo, mas para algumas APIs da rota real o Electron irá extrair o arquivo necessário para um -arquivo temporário e passar o caminho do arquivo temporário para as APIs, -isso adiciona um pouco de sobrecarga para essas APIs. - -APIs que requer descompactação extras são: - -* `child_process.execFile` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - Usado por `require` em módulos nativos - -### Falsas informações de status do módulo `fs.stat` - -O objeto `Stats` retornado por` fs.stat` e outras funções relacionadas não são informações confiáveis, -você não deve confiar no objeto `Stats` exceto para obter o -tamanho do arquivo e verificação de tipo de arquivo. - -## Adicionando arquivos em um pacote `asar` - -Como dito acima, algumas APIs deo Node irá descompactar o arquivo para quando o filesystem -requsistar, além dos problemas de desempenho, ele também pode levar a falsos alertas -de vírus. - -Para contornar isso, você pode descompactar alguns arquivos usando a -opção `--unpack`, um exemplo de exclusão de bibliotecas compartilhadas de módulos nativos -é: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -Depois de executar o comando, além do `app.asar`, há também -`app.asar.unpacked` pasta gerada que contém os arquivos descompactados, você -deve copiá-lo juntamente com `app.asar` quando enviá-lo para os usuários. - -Mais informações no repositório [asar](https://github.com/atom/asar) diff --git a/docs-translations/pt-BR/tutorial/debugging-main-process.md b/docs-translations/pt-BR/tutorial/debugging-main-process.md deleted file mode 100644 index ee79a523e928..000000000000 --- a/docs-translations/pt-BR/tutorial/debugging-main-process.md +++ /dev/null @@ -1,53 +0,0 @@ -# Depurando o Processo Principal - -A janela do navegador, DevTools, pode somente depurar o processo de renderização -de scripts (por exemplo, as páginas da web). Para providenciar um modo de -depurar os scripts através do processo principal, o Electron criou as opções -`--debug` e `--debug-brk`. - -## Opções da Linha de Comando - -Use a seguinte opção na linha de comando para depurar o processo principal do -Electron: - -### `--debug=[porta]` - -Quando este comando é usado, o Electron irá executar o protocolo de depuração -V8 mandando as mensagens na `porta`. A `porta` padrão é `5858`. - -### `--debug-brk=[porta]` - -Semelhante ao `--debug`, porém pausa o script na primeira linha. - -## Usando node-inspector para depurar - -__Nota:__ O Electron usa a versão v0.11.13 do Node, a qual, atualmenta não -funciona muito bem com node-inspector, e o processo principal irá quebrar se -você inspecionar o objeto `process` pelo console do node-inspector. - -### 1. Inicie o servidor [node-inspector][node-inspector] - -```bash -$ node-inspector -``` - -### 2. Habilite o modo de depuração para o Electron - -Você pode também iniciar o Electron com um ponto de depuração, desta maneira: - -```bash -$ electron --debug=5858 sua/aplicacao -``` - -ou para pausar o script na primeira linha: - -```bash -$ electron --debug-brk=5858 sua/aplicacao -``` - -### 3. Carregue o debugger UI - -Abra este endereço http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 -usando o Chrome. - -[node-inspector]: https://github.com/node-inspector/node-inspector diff --git a/docs-translations/pt-BR/tutorial/desktop-environment-integration.md b/docs-translations/pt-BR/tutorial/desktop-environment-integration.md deleted file mode 100644 index 214f5c8269d8..000000000000 --- a/docs-translations/pt-BR/tutorial/desktop-environment-integration.md +++ /dev/null @@ -1,262 +0,0 @@ -# Integração com o ambiente desktop - -Diferentes sistemas operacionais possuem diferentes formas de integrar -aplicações desktop em seus ambientes. Por exemplo, no Windows, as aplicações podem -inserir atalhos no JumpList da barra de tarefas, no Mac, aplicações podem implementar um -menu customizado na dock. - -Este guia explica como integrar suas aplicações no ambiente desktop com a API -do Electron. - -## Documentos Recentes (Windows & macOS) - -O Windows e o macOS disponibilizam um acesso fácil para a lista de arquivos -abertos recentemente pela aplicação através do JumpList ou Dock Menu respectivamente. - -__JumpList:__ - -![JumpList Recent Files](http://i.msdn.microsoft.com/dynimg/IC420538.png) - -__Dock menu da Aplicação:__ - - - -Para adicionar um arquivo para os documentos recentes, você pode usar a API -[app.addRecentDocument][addrecentdocument]: - -```javascript -var app = require('app') -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -``` - -E você pode usar a API [app.clearRecentDocuments][clearrecentdocuments] para -limpar a lista de documentos recentes. - -```javascript -app.clearRecentDocuments() -``` - -### Notas para Windows - -A fim de ser possível usar estas funcionalidades no Windows, sua aplicação deve -estar registrada como um handler daquele tipo de documento, caso contrário, o -arquivo não será exibido no JumpList mesmo depois de você ter adicionado isto. -Você pode encontrar qualquer coisa sobre o registro da aplicacão em -[Application Registration][app-registration]. - -Quando um usuário clica em um arquivo na JumpList, uma nova instância da sua aplicacão -deve ser iniciada com o caminho do arquivo adicionado como um argumento de -linha de comando. - -### Notas para macOS - -Quando um arquivo for requisitado pelo menu de documentos recentes, o evento `open-file` -do módulo `app` irá ser emitido. - -## Dock Menu customizado (macOS) - -macOS permite que desenvolvedores especifiquem um menu customizado para a dock, -que normalmente contém alguns atalhos para as funcionalidades mais utilizadas -da sua aplicação. - -__Dock menu do Terminal.app:__ - - - -Para criar seu Dock Menu customizado, você pode usar a API `app.dock.setMenu`, -ela está disponível apenas no macOS: - -```javascript -const {app, Menu} = require('electron') - -const dockMenu = Menu.buildFromTemplate([ - {label: 'New Window', click () { console.log('New Window') }}, - {label: 'New Window with Settings', - submenu: [ - {label: 'Basic'}, - {label: 'Pro'} - ] - }, - {label: 'New Command...'} -]) -app.dock.setMenu(dockMenu) -``` - -## Tarefas do Usuário (Windows) - -No Windows você pode especificar ações customizadas na categoria `Tarefas` do JumpList, -esse texto foi copiado do MSDN: - -> Applications define tasks based on both the program's features and the key -> things a user is expected to do with them. Tasks should be context-free, in -> that the application does not need to be running for them to work. They -> should also be the statistically most common actions that a normal user would -> perform in an application, such as compose an email message or open the -> calendar in a mail program, create a new document in a word processor, launch -> an application in a certain mode, or launch one of its subcommands. An -> application should not clutter the menu with advanced features that standard -> users won't need or one-time actions such as registration. Do not use tasks -> for promotional items such as upgrades or special offers. -> -> It is strongly recommended that the task list be static. It should remain the -> same regardless of the state or status of the application. While it is -> possible to vary the list dynamically, you should consider that this could -> confuse the user who does not expect that portion of the destination list to -> change. - -__Tarefas do Internet Explorer:__ - -![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png) - -Ao contrário do Menu Dock no macOS que é um verdadeiro menu, tarefas do usuário no Windows -funcionam como atalhos, de uma forma que quando o usuário clica em uma tarefa, um programa -deve ser executado com os argumentos especificados. - -Para setar tarefas do usuário para sua aplicação, você pode usar a API -[app.setUserTasks][setusertaskstasks]: - -```javascript -var app = require('app') -app.setUserTasks([ - { - program: process.execPath, - arguments: '--new-window', - iconPath: process.execPath, - iconIndex: 0, - title: 'New Window', - description: 'Create a new window' - } -]) -``` - -Para limpar sua lista de tarefas, apenas chame `app.setUserTasks` com um -array vazio. - -```javascript -app.setUserTasks([]) -``` - -As tarefas do usuário são exibidas mesmo depois da aplicação ser fechada, -então o ícone e o caminho do programa especificado pela tarefa deve existir -até sua aplicação ser desinstalada. - -## Miniaturas na Barra de Ferramentas - -No Windows você pode adicionar uma miniatura na barra de ferramentas com botões -específicos para a janela e barra de tarefas para aplicação. Isso provê ao usuário -uma forma de acessar um comando específico para janela sem ser necessário restaurar -ou ativar a janela. - -Isto é ilustrado no MSDN: - -> This toolbar is simply the familiar standard toolbar common control. It has a -> maximum of seven buttons. Each button's ID, image, tooltip, and state are defined -> in a structure, which is then passed to the taskbar. The application can show, -> enable, disable, or hide buttons from the thumbnail toolbar as required by its -> current state. -> -> For example, Windows Media Player might offer standard media transport controls -> such as play, pause, mute, and stop. - -__Miniaturas da barra de tarefas do Windows Media Player:__ - -![player](https://i-msdn.sec.s-msft.com/dynimg/IC420540.png) - -Você pode usar [BrowserWindow.setThumbarButtons][setthumbarbuttons] para criar -miniaturas na barra de ferramentas para sua aplicação. - -```javascript -var BrowserWindow = require('browser-window') -var path = require('path') -var win = new BrowserWindow({ - width: 800, - height: 600 -}) -win.setThumbarButtons([ - { - tooltip: 'button1', - icon: path.join(__dirname, 'button1.png'), - click: function () { console.log('button2 clicked') } - }, - { - tooltip: 'button2', - icon: path.join(__dirname, 'button2.png'), - flags: ['enabled', 'dismissonclick'], - click: function () { console.log('button2 clicked.') } - } -]) -``` - -Para limpar os botões na miniatura da barra de ferramentas, apenas chame -`BrowserWindow.setThumbarButtons` com um array vazio. - -```javascript -win.setThumbarButtons([]) -``` - -## Unity Launcher Shortcuts (Linux) - -No Unity, você pode adicionar entradas customizadas para estes lançadores modificando -o arquivo `.desktop`, veja [Adding Shortcuts to a Launcher][unity-launcher]. - -__Launcher shortcuts do Audacious:__ - -![audacious](https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles?action=AttachFile&do=get&target=shortcuts.png) - -## Barra de Progresso na Barra de Tarefas (Windows & Unity) - -No Windows o botão na barra de tarefas pode ser usado para exibir uma barra de progresso. -Isto permite que a janela exiba informação sobre o progresso de algum processo sem -a necessidade do usuário mudar de janela. - -A Unity DE também tem uma funcionalidade parecida que permite especificar uma barra -de progresso no ícone do lançador. - -__Barra de Progresso no botão da barra de tarefas:__ - -![Barra de Progresso na Barra de Tarefas](https://cloud.githubusercontent.com/assets/639601/5081682/16691fda-6f0e-11e4-9676-49b6418f1264.png) - -__Barra de progresso no Unity launcher:__ - -![Unity Launcher](https://cloud.githubusercontent.com/assets/639601/5081747/4a0a589e-6f0f-11e4-803f-91594716a546.png) - -Para adicionar uma barra de progresso para uma janela, você pode ver a API: -[BrowserWindow.setProgressBar][setprogressbar]: - -```javascript -var window = new BrowserWindow() -window.setProgressBar(0.5) -``` - -## Representação do arquivo na janela (macOS) - -No macOS, uma janela pode possuir a representação de um arquivo na barra de título, -permitindo que ao usuário acionar um Command-Click ou Control-Click sobre o título da janela, -uma pop-up de navegação entre arquivos é exibida. - -Você também pode inserir um estado de edição na janela para que o ícone do arquivo -possa indicar se o documento nesta janela foi modificado. - -__Menu popup da representação de arquivo:__ - - - -Para inserir o arquivo de representacão da janela, você pode usar as API -[BrowserWindow.setRepresentedFilename][setrepresentedfilename] e -[BrowserWindow.setDocumentEdited][setdocumentedited]: - -```javascript -var window = new BrowserWindow() -window.setRepresentedFilename('/etc/passwd') -window.setDocumentEdited(true) -``` - -[addrecentdocument]: ../api/app.md#appaddrecentdocumentpath -[clearrecentdocuments]: ../api/app.md#appclearrecentdocuments -[setusertaskstasks]: ../api/app.md#appsetusertaskstasks -[setprogressbar]: ../api/browser-window.md#browserwindowsetprogressbarprogress -[setrepresentedfilename]: ../api/browser-window.md#browserwindowsetrepresentedfilenamefilename -[setdocumentedited]: ../api/browser-window.md#browserwindowsetdocumenteditededited -[app-registration]: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx -[unity-launcher]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher -[setthumbarbuttons]: ../api/browser-window.md#browserwindowsetthumbarbuttonsbuttons diff --git a/docs-translations/pt-BR/tutorial/devtools-extension.md b/docs-translations/pt-BR/tutorial/devtools-extension.md deleted file mode 100644 index 60df9e07ab27..000000000000 --- a/docs-translations/pt-BR/tutorial/devtools-extension.md +++ /dev/null @@ -1,46 +0,0 @@ -# Extensão DevTools - -Para facilitar a depuração, o Electron provê suporte para a extensão [Chrome DevTools][devtools-extension]. - -Para a maioria das extensões DevTools você pode simplesmente baixar o código-fonte e usar a função `BrowserWindow.addDevToolsExtension` para carregá-las. As extensões carregadas serão lembradas, assim você não precisa carregar sempre que criar uma nova janela. - -**NOTA: Se o DevTools React não funcionar, verifique a issue https://github.com/electron/electron/issues/915** - -Por exemplo, para usar a extensão [React DevTools](https://github.com/facebook/react-devtools), primeiro você deve baixar seu código-fonte: - -```bash -$ cd /some-directory -$ git clone --recursive https://github.com/facebook/react-devtools.git -``` - -Siga as instruções em [`react-devtools/shells/chrome/Readme.md`](https://github.com/facebook/react-devtools/blob/master/shells/chrome/Readme.md) para fazer o build da extensão. - -Agora você poderá carregar a extensão no Electron abrindo o DevTools em qualquer janela, e executando o seguinte código no console do DevTools: - -```javascript -const BrowserWindow = require('electron').remote.BrowserWindow -BrowserWindow.addDevToolsExtension('/some-directory/react-devtools/shells/chrome') -``` - -Para remover a extensão, você pode executar a chamada `BrowserWindow.removeDevToolsExtension` -com o nome da extensão e ela não será carregada na próxima vez que você abrir o DevTools: - -```javascript -BrowserWindow.removeDevToolsExtension('React Developer Tools') -``` - -## Formato das extensões DevTools - -Idealmente todas as extensões DevTools escritas para o navegador Chrome podem ser carregadas pelo Electron, mas elas devem estar em um diretório. Pacotes com extensão `crx` não podem ser carregados pelo Electron a não ser que tenha uma forma de extraí-los em um diretório. - -## Páginas em segundo plano (background pages) - -Atualmente o Electron não suporta páginas em segundo plano nas extensões do Chrome, então extensões com essa característica podem não funcionar no Electron. - -## APIs `chrome.*` - -Algumas extensões do Chrome podem usar a API `chrome.*`. Apesar de um esforço na implementação destas APIs no Electron, elas ainda não estão finalizadas. - -Dado que nem todas as funções `chrome.*` estão implementadas, algumas extensões que utilizam `chrome.devtools.*` podem não funcionar. Você pode reportar este erro no issue tracker para que possamos adicionar suporte a essas APIs. - -[devtools-extension]: https://developer.chrome.com/extensions/devtools diff --git a/docs-translations/pt-BR/tutorial/online-offline-events.md b/docs-translations/pt-BR/tutorial/online-offline-events.md deleted file mode 100644 index 97eca7acd8bc..000000000000 --- a/docs-translations/pt-BR/tutorial/online-offline-events.md +++ /dev/null @@ -1,83 +0,0 @@ -# Online/Offline Event Detection - -Os eventos de detecção Online e Offline podem ser implementados no processo -de renderização utilizando a API padrão do HTML, como é mostrado no exemplo -a seguir: - -_main.js_ - -```javascript -var app = require('app') -var BrowserWindow = require('browser-window') -var onlineStatusWindow - -app.on('ready', function () { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -Pode haver casos onde você também deseja responder a estes eventos no processo principal. -Mas o processo principal não consegue detectar esses eventos diretamente, pois não possui -um objeto `navigator`. Utilizando a ferramentas para comunicação entre processos, os eventos -podem ser direcionados para o processo principal e manipulados quando necessário. Você -pode ver isto no exemplo abaixo: - -_main.js_ - -```javascript -var app = require('app') -var ipc = require('ipc') -var BrowserWindow = require('browser-window') -var onlineStatusWindow - -app.on('ready', function () { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) - -ipc.on('online-status-changed', function (event, status) { - console.log(status) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` diff --git a/docs-translations/pt-BR/tutorial/quick-start.md b/docs-translations/pt-BR/tutorial/quick-start.md deleted file mode 100644 index 4da563346f98..000000000000 --- a/docs-translations/pt-BR/tutorial/quick-start.md +++ /dev/null @@ -1,200 +0,0 @@ -# Introdução - -Electron permite criar aplicações desktop com puro JavaScript através de -um runtime com APIs ricas e nativas. Você pode ver isso como uma variação do -runtime do io.js que é focado em aplicações desktop em vez de web servers. - -Isso não significa que o Electron é uma ligação em JavaScript para bibliotecas -de interface gráfica (GUI). Em vez disso, Electron usa páginas web como -interface gráfica, então você pode ver isso também como um navegador Chromium -mínimo, controlado por JavaScript. - -### Processo Principal - -No Electron, o processo que executa o script principal (main) do `package.json` -é chamado __processo principal__. O script que roda no processo principal pode -mostrar uma GUI criando páginas web. - -### Processo Renderizador - -Já que o Electron usa o Chromium para mostrar as páginas web, a arquitetura -multi-processo do Chromium também é usada. Cada página web no Electron roda em -seu próprio processo, o que é chamado de __processo renderizador__. - -Em navegadores comuns, as páginas web normalmente rodam em um ambiente em sandbox -e não têm permissão de acesso para recursos nativos. Usuários Electron, entretanto, -têm o poder de usar as APIs do io.js nas páginas web, permitindo interações de baixo -nível no sistema operacional. - -### Diferenças Entre o Processo Principal e o Processo Renderizador - -O processo principal cria as páginas web criando instâncias de `BrowserWindow`. -Cada instância de `BrowserWindow` roda a página web em seu próprio processo renderizador. -Quando uma instância de `BrowserWindow` é destruída, o processo renderizador -correspondente também é finalizado. - -O processo principal gerencia todas as páginas web de seus processos renderizadores -correspondentes. Cada processo renderizador é isolado e toma conta de sua -respectiva página web. - -Nas páginas web, chamar APIs nativas relacionadas à GUI não é permitido porque -gerenciar recursos de GUI em páginas web é muito perigoso e torna fácil o vazamento de -recursos. Se você quer realizar operações com GUI em páginas web, o processo -renderizador da página web deve se comunicar com o processo principal para requisitar -que o processo principal realize estas operações. - -No Electron, nós fornecemos o módulo [ipc](../../../docs/api/ipc-renderer.md) para -comunicação entre o processo principal e o processo renderizador. Que é também um -módulo [remoto](../../../docs/api/remote.md) para comunicação RPC. - -## Crie seu Primeiro App Electron - -Geralmente, um app Electron é estruturado assim: - -```text -seu-app/ -├── package.json -├── main.js -└── index.html -``` - -O formato de `package.json` é exatamente o mesmo que o dos módulos do Node, -e o script especificado pelo campo `main` é o script de inicialização do seu app, -que irá executar o processo principal. Um exemplo do seu `package.json` deve parecer -com isso: - -```javascripton -{ - "name" : "seu-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__Nota__: Se o campo `main` não estiver presente no `package.json`, o Electron irá -tentar carregar um `index.js` - -O `main.js` deve criar as janelas e os manipuladores de eventos do sistema, um típico -exemplo: - -```javascript -const {app, BrowserWindow} = require('electron') - -// Keep a global reference of the window object, if you don't, the window will -// be closed automatically when the JavaScript object is garbage collected. -let win - -function createWindow () { - // Create the browser window. - win = new BrowserWindow({width: 800, height: 600}) - - // and load the index.html of the app. - win.loadURL(`file://${__dirname}/index.html`) - - // Open the DevTools. - win.webContents.openDevTools() - - // Emitted when the window is closed. - win.on('closed', () => { - // Dereference the window object, usually you would store windows - // in an array if your app supports multi windows, this is the time - // when you should delete the corresponding element. - win = null - }) -} - -// This method will be called when Electron has finished -// initialization and is ready to create browser windows. -// Some APIs can only be used after this event occurs. -app.on('ready', createWindow) - -// Quit when all windows are closed. -app.on('window-all-closed', () => { - // On macOS it is common for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (win === null) { - createWindow() - } -}) - -// In this file you can include the rest of your app's specific main process -// code. You can also put them in separate files and require them here. -``` - -Finalmente o `index.html` é a página web que você quer mostrar: - -```html - - - - - Hello World! - - -

Hello World!

- Nós estamos usando io.js - e Electron . - - -``` - -## Execute seu App - -Uma vez que você criou seus arquivos `main.js`, `index.html`, e `package.json` iniciais, -você provavelmente vai querer tentar executar seu app localmente para testa-lo e ter -certeza que funciona como você espera. - -### electron-prebuilt - -Se você instalou `electron-prebuilt` globalmente com `npm`, então você irá precisar apenas -rodar o seguinte comando no diretório fonte do seu app: - -```bash -electron . -``` - -Se você o instalou localmente, então execute: - -```bash -./node_modules/.bin/electron . -``` - -### Binário do Electron Baixado Manualmente - -Se você baixou o Electron manualmente, você pode também usar o binário incluído para -executar seu app diretamente. - -#### Windows - -```bash -$ .\electron\electron.exe seu-app\ -``` - -#### Linux - -```bash -$ ./electron/electron seu-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron seu-app/ -``` - -`Electron.app` aqui é uma parte do pacote de lançamento do Electron, você pode baixa-lo -[aqui](https://github.com/electron/electron/releases). - -### Executar como uma distribuição - -Depois de terminar seu app, você pode criar uma distribuição seguindo o guia -[Distribuição de aplicações](./application-distribution.md) e então executar o app -empacotado. diff --git a/docs-translations/pt-BR/tutorial/security.md b/docs-translations/pt-BR/tutorial/security.md deleted file mode 100644 index 308dc4a9e559..000000000000 --- a/docs-translations/pt-BR/tutorial/security.md +++ /dev/null @@ -1,54 +0,0 @@ -# Segurança, Capacidade Nativas, e sua Responsabilidade - -Como desenvolvedores web, que normalmente aproveitamos a forte rede de segurança do navegador - os riscos associados com o código que escrevemos são relativamente pequenos. Nossos sites são concedidos com poderes limitados em uma sandbox, e confiamos que nossos usuários desfrutem de um navegador construído por uma grande equipe de engenheiros que é capaz de responder rapidamente a ameaças de segurança recém-descobertas. - -Ao trabalhar com Electron, é importante compreender que Electron não é um navegador web. Ele permite que você construa aplicações desktop ricas em recursos com tecnologias web familiares, mas seu código exerce um poder muito maior. JavaScript pode acessar o sistema de arquivos, shell do usuário, e muito mais. Isto lhe permite construir aplicações nativas de alta qualidade, mas os riscos de segurança inerentes escala com os poderes adicionais concedidos ao seu código. - -Com isso em mente, estar ciente de que a exibição de conteúdo arbitrário de fontes não confiáveis representa um risco de segurança grave que o Electron não se destina a tratar. Na verdade, os mais populares aplicativos do Electron (Atom, Slack, Visual Studio Code, etc) exibi conteúdo principalmente local (ou de confiança, conteúdo remoto seguro sem integração com Node) – se o seu aplicativo executa o código a partir de uma fonte on-line, é sua responsabilidade garantir que o código não é malicioso. - -## Chromium Security Issues e Upgrades - -Enquanto Electron se esforça para suportar novas versões do Chromium, logo que possível, os desenvolvedores devem estar cientes que a atualização é um empreendimento importante - envolvendo dezenas de mãos ou mesmo centenas de arquivos. Dados os recursos e contribuições disponíveis hoje, Electron muitas vezes não vai estar na mais recente versão do Chromium, ficando para trás, quer por dias ou semanas. - -Nós sentimos que nosso sistema atual de atualizar o componente do Chromium estabelece um equilíbrio adequado entre os recursos que temos disponíveis e as necessidades da maioria das aplicações construídas em cima do framework. Nós definitivamente estamos interessados em saber mais sobre casos de uso específicos de pessoas que constroem coisas em cima do Electron. Pull requests e contribuições para apoiar este esforço são sempre muito bem-vindas. - -## Ignorando o Conselho Acima - -Um problema de segurança existe sempre que você receba um código a partir de um destino remoto e o executa localmente. Como exemplo, considere um site remoto que está sendo exibido dentro de uma janela do navegador. Se um atacante de alguma forma consegue mudar esse conteúdo (seja por atacar a fonte diretamente, ou por estar entre seu aplicativo e o destino real), eles serão capazes de executar código nativo na máquina do usuário. - -> :warning: Sobre nenhuma circunstância você deve carregar e executar código remoto com integração com Node. Em vez disso, use somente arquivos locais (embalados juntamente com a sua aplicação) para executar código Node. Para exibir o conteúdo remoto, use a tag `webview` e certifique-se de desativar o `nodeIntegration`. - -#### Checklist - -Este não é á prova de balas, mas, ao menos, você deve tentar o seguinte: - -* Somente exibir conteúdo seguro (https) -* Desativar a integração do Node em todos os renderizadores que exibem conteúdo remoto (utilizando `webPreferences`) -* Não desative `webSecurity`. Destivá-lo irá desativar a política de mesma origem. -* Definir um [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/), e usar regras restritivas (i.e. `script-src 'self'`) -* [Substituir e desativar `eval`](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6-L8), que permite strings para ser executadas como código. -* Nao defina `allowRunningInsecureContent` para true. -* Não ative `experimentalFeatures` ou `experimentalCanvasFeatures` se você não sabe o que está fazendo. -* Não use `blinkFeatures` se você não sabe o que está fazendo. -* WebViews: Defina `nodeintegration` para false -* WebViews: Não use `disablewebsecurity` -* WebViews: Não use `allowpopups` -* WebViews: Não use `insertCSS` ou `executeJavaScript` com CSS/JS. - -Mais uma vez, esta lista apenas minimiza o risco, não removê-la. Se o seu objetivo é o de apresentar um site, um navegador será uma opção mais segura. - -## Buffer Global - -Classe Node's [Buffer](https://nodejs.org/api/buffer.html) está atualmente disponível como global, mesmo quando `nodeIntegration` é definida como `false`. Você pode excluir este em seu aplicativo fazendo o seguinte no seu script de `preload`: - -```js -delete global.Buffer -``` - -Excluí-lo pode quebrar módulos Node usado em seu script preload e aplicação já que muitas bibliotecas esperaram que ele seja global em vez de exigir-lo diretamente via: - -```js -const {Buffer} = require('buffer') -``` - -O `Buffer` global pode ser removido em futuras versões principais do Electron. diff --git a/docs-translations/pt-BR/tutorial/supported-platforms.md b/docs-translations/pt-BR/tutorial/supported-platforms.md deleted file mode 100644 index 59b0df0698ab..000000000000 --- a/docs-translations/pt-BR/tutorial/supported-platforms.md +++ /dev/null @@ -1,22 +0,0 @@ -# Plataformas Suportadas - -As plataformas suportadas por Electron são: - -### macOS - -Somente binários em 64bit são construídos para macOS e a versão mínima suportada é macOS 10.9. - -### Windows -Suporte para Windows 7 ou superior, versões anteriores não são suportados (e não ira funcionar) - -Binários em `x86` e `amd64` (x64) são construídos para Windows. Atenção: Versão `ARM` do Windows não é suportada agora. - -### Linux -Binario pré-construído `ia32`(`i686`) e binario `x64`(`amd64`) são construídas no Ubuntu 12.04, binario `arm` está construído contra ARM v7 com hard-float ABI e NEION para Debian Wheezy. - -Se o pré-compilador poderá ser executado por uma distribuição, depende se a distribuição inclui as bibliotecas que o Eletron está vinculando na plataforma de construção, por este motivo apenas Ubuntu 12.04 é garantido para funcionar corretamente, mas as seguintes distribuições foram verificados com o pre-compilador: - - -* Ubuntu 12.04 ou superior -* Fedora 21 -* Debian 8 diff --git a/docs-translations/pt-BR/tutorial/using-native-node-modules.md b/docs-translations/pt-BR/tutorial/using-native-node-modules.md deleted file mode 100644 index 86abe1a5d1d5..000000000000 --- a/docs-translations/pt-BR/tutorial/using-native-node-modules.md +++ /dev/null @@ -1,68 +0,0 @@ -# Usando Módulos Nativos do Node - -Os módulos nativos do Node são suportados pelo Electron, desde que o Electron -esteja usando uma versão diferente da oficial V8 do Node, você tem de -especificar manualmente a localização das headers do Electron quando compilar os -módulos nativos. - -## Compatibilidade de Módulos Nativos do Node - -Módulos nativos podem quebrar quando utilizar a nova versão do Node, V8. -Para ter certeza que o módulo que você está interessado em trabalhar com o -Electron, você deve checar se a versão do Node utilizada é compatível com a -usada pelo Electron. -Você pode verificar qual versão do Node foi utilizada no Electron olhando na -página [releases](https://github.com/electron/electron/releases) ou usando -`process.version` (veja em [Introdução](quick-start.md) -por exemplo). - -Considere usar [NAN](https://github.com/nodejs/nan/) para seus próprios -módulos, caso isso facilite o suporte das múltiplas versões do Node. Isso é -também de grande ajuda para fazer a portabilidade dos módulos antigos para as -versões mais novas do Node, assim podendo trabalhar com o Electron. - -## Como Instalar os Módulos Nativos - -Existem três maneiras de instalar os módulos nativos: - -### O Modo Fácil - -O modo mais direto para recompilar os módulos é pelo pacote -[`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild), -o que lida com passos manuais para baixar as headers e construir os módulos -nativos: - -```sh -npm install --save-dev electron-rebuild - -# Sempre que rodar npm install, execute também: -node ./node_modules/.bin/electron-rebuild -``` - -### Via npm - -Você pode usar também `npm` para instalar os módulos. Os passos são exatamente -os mesmos com os módulos Node, exceto que você precisa configurar algumas -variáveis da ambiente: - -```bash -export npm_config_disturl=https://atom.io/download/electron -export npm_config_target=0.33.1 -export npm_config_arch=x64 -export npm_config_runtime=electron -HOME=~/.electron-gyp npm install module-name -``` - -### O modo node-gyp - -Para compilar os módulos do Node com as headers do Electron, você precisa dizer -ao `node-gyp` onde baixar as headers e qual versão usar: - -```bash -$ cd /path-to-module/ -$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/electron -``` - -A tag `HOME=~/.electron-gyp` altera onde encontrar as headers de desenvolvimento. -A tag `--target=0.29.1` é a versão do Electron. A tag `--dist-url=...` especifica -onde baixar as headers. A tag `--arch=x64` diz ao módulo que é feito em 64bit. diff --git a/docs-translations/pt-BR/tutorial/using-pepper-flash-plugin.md b/docs-translations/pt-BR/tutorial/using-pepper-flash-plugin.md deleted file mode 100644 index fe0feac5abad..000000000000 --- a/docs-translations/pt-BR/tutorial/using-pepper-flash-plugin.md +++ /dev/null @@ -1,62 +0,0 @@ -# Usando o Plugin Pepper Flash - -Electron atualmente suporta o plugin Pepper Flash. Para usá-lo no Electron, -você deve especificar manualmente a localização do plugin e então ele será -habilitado em sua aplicação. - -## Prepare uma cópia do plugin Flash - -Tanto no macOS como no Linux, os detalhes do plugin Pepper Flash podem ser -encontrados navegando por `chrome://plugins` no navegador Chrome. Essa -localização e versão são úteis para o suporte do plugin Electron's Pepper Flash. -Você pode também copiar para outra localização. - -## Adicionando a opçao Electron - -Você pode adicionar diretamente `--ppapi-flash-path` e `ppapi-flash-version` -para a linha de comando do Electron ou usando o método -`app.commandLine.appendSwitch` após o evento pronto. Também, adicione a opção -`plugins` em `browser-window`. -Por exemplo: - -```javascript -const {app, BrowserWindow} = require('electron') - -// Mantém uma referência global da janela, se não manter, a janela irá fechar -// automaticamente quando o objeto javascript for GCed. -let mainWindow = null - -// Sai assim que todas as janelas forem fechadas. -app.on('window-all-closed', function () { - if (process.platform !== 'darwin') app.quit() -}) - -// Especifica o caminho do flash. -// No Windows, deve ser /path/to/pepflashplayer.dll -// No macOS, /path/to/PepperFlashPlayer.plugin -// No Linux, /path/to/libpepflashplayer.so -app.commandLine.appendSwitch('ppapi-flash-path', '/path/to/libpepflashplayer.so') - -// Especifica a versão do flash, por exemplo, v17.0.0.169 -app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169') - -app.on('ready', function () { - mainWindow = new BrowserWindow({ - 'width': 800, - 'height': 600, - 'web-preferences': { - 'plugins': true - } - }) - mainWindow.loadURL(`file://${__dirname}/index.html`) - // Algo mais -}) -``` - -## Ative o plugin Flash na tag `` - -Adicione o atributo `plugins` na tag ``. - -```html - -``` diff --git a/docs-translations/ru-RU/README.md b/docs-translations/ru-RU/README.md deleted file mode 100644 index dd674c1c105c..000000000000 --- a/docs-translations/ru-RU/README.md +++ /dev/null @@ -1,82 +0,0 @@ -Пожалуйста, убедитесь, что вы используете документацию, которая соответствует вашей версии Electron. -Номер версии должен быть частью адреса страницы. Если это не так, вы, -возможно, используете документацию ветки разработки, которая может содержать изменения API, -которые не совместимы с вашей версией Electron. Если это так, -вы можете переключиться на другую версию документации в списке -[доступные версии](https://electron.atom.io/docs/) на [atom.io](atom.io), или -если вы используете интерфейс GitHub, откройте список "переключение ветки/тега" и -выберите тег, который соответствует вашей версии. - -## Руководства - -* [Поддерживаемые платформы](tutorial/supported-platforms.md) -* [Application Distribution](tutorial/application-distribution.md) -* [Mac App Store Submission Guide](tutorial/mac-app-store-submission-guide.md) -* [Application Packaging](tutorial/application-packaging.md) -* [Использование нативных модулей NodeJS](tutorial/using-native-node-modules.md) -* [Отладка главного процесса](tutorial/debugging-main-process.md) -* [Использование Selenium и WebDriver](tutorial/using-selenium-and-webdriver.md) -* [DevTools Extension](tutorial/devtools-extension.md) -* [Использование Pepper Flash Plugin](tutorial/using-pepper-flash-plugin.md) - -## Учебники - -* [Быстрый старт](tutorial/quick-start.md) -* [Интеграция рабочего окружения](tutorial/desktop-environment-integration.md) -* [Определение Онлайн/Оффлайн состояния](tutorial/online-offline-events.md) - -## API References - -* [Краткий обзор](api/synopsis.md) -* [Process Object](api/process.md) -* [Поддерживаемые параметры командной строки Chrome](api/chrome-command-line-switches.md) - -### Пользовательские элементы DOM: - -* [`File` Object](api/file-object.md) -* [`` Tag](api/webview-tag.md) -* [`window.open` Function](api/window-open.md) - -### Модули для Main Process: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [webContents](api/web-contents.md) -* [Tray](api/tray.md) - -### Модули для Renderer Process (Web Page): - -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### Модули для обоих процессов: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## Разработка - -* [Стиль кодирования](development/coding-style.md) -* [Структура папок с исходным кодом](development/source-code-directory-structure.md) -* [Technical Differences to NW.js (formerly node-webkit)](development/atom-shell-vs-node-webkit.md) -* [Обзор системы сборки](development/build-system-overview.md) -* [Инструкции по сборке (macOS)](development/build-instructions-osx.md) -* [Инструкции по сборке (Windows)](development/build-instructions-windows.md) -* [Инструкции по сборке (Linux)](development/build-instructions-linux.md) -* [Настройка сервера символов для отладчика](development/setting-up-symbol-server.md) - diff --git a/docs-translations/ru-RU/tutorial/application-distribution.md b/docs-translations/ru-RU/tutorial/application-distribution.md deleted file mode 100644 index 9f77ead1186e..000000000000 --- a/docs-translations/ru-RU/tutorial/application-distribution.md +++ /dev/null @@ -1,127 +0,0 @@ -# Распространение приложения - -Чтобы распространять ваше приложение на Electron, папка с вашим приложением -должна называться `app` и находиться в папке ресурсов Electron (в macOS это -`Electron.app/Contents/Resources/`, в Linux и Windows - `resources/`), -вот так: - -Для macOS: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -Для Windows и Linux: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -Затем запустите `Electron.app` (или `electron` в Linux, `electron.exe` в Windows), -и Electron запустится как ваше приложение. Теперь папка `electron` и есть дистрибутив, -который Вы должны распространять пользователям. - -## Упаковка вашего приложения в файл - -Если Вы `не хотите` распространять исходные коды вашего проекта, Вы можете -упаковать его в архив [asar](https://github.com/atom/asar), чтобы не -показывать пользователям исходные коды. - -Чтобы использовать `asar` для замены папки `app` на архив вам нужно -переименовать архив в `app.asar` и положить его в папку ресурсов Electron, -после чего Electron попробует считать ресурсы и запустить архив. - - -Для macOS: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -Для Windows и Linux: - -```text -electron/resources/ -└── app.asar -``` - -Больше деталей можно найти в [инструкции по упаковке приложения](application-packaging.md). - -## Ребрендирование скачанных исполняемых файлов - -После того, как Вы подключили ваше приложение к Electron, -Вам наверняка захочется ребрендировать его перед распространением. - -### Windows - -Вы можете переименовать `electron.exe` как пожелаете и поменять иконку и прочую -информацию приложениями вроде [rcedit](https://github.com/atom/rcedit). - -### macOS - -Вы можете переименовать `Electron.app` как пожелаете, а также изменить -поля `CFBundleDisplayName`, `CFBundleIdentifier` и `CFBundleName` в следующих -файлах: - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -Вы таже можете переименовать приложение-помощник, чтобы оно не показывало `Electron Helper`, -убедитесь, что Вы переименовали его исполняемый файл. - -Структура переименованного приложения выглядит примерно так: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -Вы можете переименовать исполняемый файл `electron` как пожелаете. - -## Rebranding by Rebuilding Electron from Source - -Вы также можете ребрендировать Electron изменив имя продукта и собрав его -из исходных кодов. Чтобы сделать это Вам нужно изменить `atom.gyp` и полностью -пересобрать Electron. - -### grunt-build-atom-shell - -Проверка и пересборка кода Electron довольно сложная задача, так что мы -сделали файл-инструкцию для Grunt, который будет делать это автоматически: -[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -Этот файл автоматически просмотрит изменения в `.gyp` файле, соберёт -Electron из исходных кодов и пересоберёт модули Node, чтобы всё подходило -под новое имя. - -## Инструменты - -Вы также можете использовать инструменты от третьих лиц, -которые сделают работу за вас: - -* [electron-packager](https://github.com/maxogden/electron-packager) -* [electron-builder](https://github.com/loopline-systems/electron-builder) diff --git a/docs-translations/ru-RU/tutorial/application-packaging.md b/docs-translations/ru-RU/tutorial/application-packaging.md deleted file mode 100644 index 2192206e9f7b..000000000000 --- a/docs-translations/ru-RU/tutorial/application-packaging.md +++ /dev/null @@ -1,180 +0,0 @@ -# Упаковка приложения - -Чтобы смягчить [проблемы](https://github.com/joyent/node/issues/6960) с длинными -именами под Windows, немного ускорить `require` и скрыть ваши исходные коды, Вы -можете упаковать его в архив [asar][asar], немного поменяв исходный код. - -## Генерация архива `asar` - -Архив [asar][asar] - простой фомат похожий на tar, который собирает много файлов -в один. Electron может читать такой файл без распаковки. - -Шаги для упавки вашего приложения архив `asar`: - -### 1. Установите саму утилиту asar - -```bash -$ npm install -g asar -``` - -### 2. Упакуйте с помощью `asar pack` - -```bash -$ asar pack your-app app.asar -``` - -## Использование архивов `asar` - -В Electron есть два вида API: API Node, которые устанавливаются с помощью Node.JS и -веб API, которые предоставляюся Chromium. Оба предоставляют возможность считывать из -архивов `asar`. - -### Node API - -Со специальными патчами в Electron, части Node API вроде `fs.readFile` и `require` -считают архивы `asar` виртуальными папками и файлы в них доступны как в обычных. - -Например, у нас есть архив `example.asar` в `/path/to`: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -Прочитаеем файл в архиве `asar`: - -```javascript -const fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -Список всех файлов начиная от корня архива: - -```javascript -const fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -Используем модуль из архива: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -Вы также можете показывать веб-страницы из архива `asar` через `BrowserWindow`: - -```javascript -const BrowserWindow = require('electron').BrowserWindow -var win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### Веб API - -На веб-страницах файлы запрашиваются с помощью протокола `file:`. Как и в Node API -архивы `asar` считаются за директории. - -Пример получения файла с помощью `$.get`: - -```html - -``` - - -### Использование архива `asar` в качестве обычного файла - -Для случаев, когда Вам, например, нужно проверить хэш-сумму архива `asar`, -нужно использовать архив как файл. Для этой цели существует встроенный модуль -`original-fs`, который предоставляет доступ к `fs` без поддежки `asar`: - -```javascript -var originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -Вы также можете выставить `process.noAsar` в `true`, чтобы выключить поддержку `asar` -в модуле `fs`: - -```javascript -process.noAsar = true -fs.readFileSync('/path/to/example.asar') -``` - -## Ограничения Node API - -Хотя мы и старались как могли, чтобы сделать `asar` максимально похожим на папки, -всё ещё существуют некоторые ограничения из-за низкоуровневой архитектуры Node API. - -### Архивы только для чтения - -Архивы не могут быть изменены, так что все функции API Node, которые меняют файлы, -не буду работать с архивами `asar`. - -### Нельзя установить рабочую директорию в архиве - -Хотя архивы `asar` и считаются папками, они ими на самом деле не являются ими, -так что Вы не можете установить в них рабочую директорию. Передача -архивов `asar` в качестве аргумента `cwd` некоторым API также может вызывать ошибки. - - -### Распаковка для некоторых API - -Большинство API `fs` могут читать файлы или получить сведения о них прямо из -архива, без распаковки, однако для некоторых, которые передают путь к системным -вызовам, Electron распакует нужный файл в временную папку и передаст путь к этому -файлу. - -API которым нужна распаковка: - -* `child_process.execFile` -* `child_process.execFileSync` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - используется `require` на нативных модулях - -### Подельная информация для `fs.stat` - -Объект `Stats`, возвращаемый `fs.stat`, и его друзья для остальных файлов -в архиве `asar` специально генерируются, потому что на самом деле этих файлов -не существует в файловой системе. Вам не стоит доверять информации -из объектов `Stats`, кроме, разве что, размера и типа файлов. - -### Запуск исполняемых файлов из архивов `asar` - -Существуют некоторые API Node, которые исполняют файлы, например `child_process.exec`, -`child_process.spawn` и `child_process.execFile`, но только `execFile` может -исполнять файлы из архивов `asar`. - -Так вышло потому, что `exec` и `spawn` принимают `команду`, а не `файл` как параметр, -а `команды` исполняются в оболочке. Нет никакой реальной возможности проверить, -реален ли файл или находится в архиве `asar`, и даже если мы смогли бы проверить, -то неясно, как земенить путь к файлу без побочных эффектов. - -## Добавление распакованых файлов в архив `asar` - -Как говорилось выше, некоторые API Node будут распаковывать файлы, -чтобы их использовать. Кроме увеличенного потребления ресурсов это также -может вызвать предупреждения от антивирусов. - -Чтобы обойти это, Вы можете распаковать некоторые файлы, создавая архивы, -с помощью опции `--unpack`. Пример показывает распаковку нативных модулей: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -После запуска команды выше в вашей папке, кроме `app.asar`, появится -`app.asar.unpacked`, которая будет содержать распакованные файлы, эту -папку стоит копировать вместе с `app.asar` при распространении. - -[asar]: https://github.com/atom/asar diff --git a/docs-translations/ru-RU/tutorial/mac-app-store-submission-guide.md b/docs-translations/ru-RU/tutorial/mac-app-store-submission-guide.md deleted file mode 100644 index 6b711e55cbc7..000000000000 --- a/docs-translations/ru-RU/tutorial/mac-app-store-submission-guide.md +++ /dev/null @@ -1,152 +0,0 @@ - -#Руководство по утверждению вашего приложения в App Store - -Начиная с версии v0.34.0 Electron позволяет Вам сформировать данные для App Store к вашему приложению. -Данное руководство представляет собой пошаговую инструкцию по созданию данных файлов. - -Помните, что когда Вы подаете свое приложение на рассмотрение в App Store Вы должны обладать аккаунтом разработчика, -который стоит денег. - -## Как отправить свое приложение на рассмотрение в App Store - -Последующие шаги подробно описывают, что и в какой последовательности Вам требуется сделать, но не гарантируют, что Ваше приложение будет рассмотрено Apple. Мы также рекомендуем Вам прочитать официальную документацию по оформлению своего приложения и информации к нему, чтобы пройти проверку в App Store. - -## Получение сертификата - -Перед тем, как отправить свое приложение Вы должны получить сертефикат, как это описано в этом [руководстве](https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline#first-steps "Ссылка на руководство") - -## Регистрируем свое приложение (подписываем) - -После того, как Вы получили сертефикат, Вы можете упаковать свое прилоежние следуя правилам Application Distribution, -а затем подписать свое приложение. Этот шаг является базовым, но подписывать свое приложение нам нужно всего лишь один раз. - -Во-первых, нам нужно подготовить два файла: - -`child.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.inherit - - - -``` - -`parent.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.temporary-exception.sbpl - (allow mach-lookup (global-name-regex #"^org.chromium.Chromium.rohitfork.[0-9]+$")) - - -``` - -Затем подписываем свое приложение, с помощью специального сценария: - -```bash - #!/bin/bash - - # Имя вашего приложения. - APP="YourApp" - # Путь до вашейго приложения. - APP_PATH="/path/to/YourApp.app" - # Путь до вашего установочного пакета. - RESULT_PATH="~/Desktop/$APP.pkg" - # Имя сертификата которое вы хотите. - APP_KEY="3rd Party Mac Developer Application: Company Name (APPIDENTITY)" - INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)" - - FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" - - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/Contents/MacOS/$APP Helper EH" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/Contents/MacOS/$APP Helper NP" - codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/" - codesign -s "$APP_KEY" -f --entitlements child.plist "$APP_PATH/Contents/MacOS/$APP" - codesign -s "$APP_KEY" -f --entitlements parent.plist "$APP_PATH" - - productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" -``` - -Если вы только начали разрабатывать под macOS, то мы советуем Вам прочитать [App SandBox](https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html "Ссылка для новичков в разработке приложений для macOS") - -## Обновление приложения - -После того, как Вы подписали свое приложение Вы сможете загрузить его в Itunes Connect для обработки, убедитесь, что Вы создали [запись](https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.html "ссылка на показ как создавать запись в Itunes Connect") перед отправкой. - -## Объяснение использования 'temporary-exception' - -Когда песочница Apple временно исключила ваше приложение, согласно [документации](https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html "Документация по исключениям") Вам нужно объяснить насколько это важное исключение: - ->Примечание: если Вы временно исключаете свое приложение, обязательно прочитайте и выполните рекомендации по правам на исключение. ->которые предоставляются в Itunes Connect. Самое важное указать почему ваше приложение должно быть исключенно. - -Вы можете объяснить, что ваше приложение построено на основе браузера Chromium, который использует Mach из-за его мультипроцессной архитектуры. Но есть еще вероятность, что ваше приложение не удалось проверить именно из-за этого. - -## Отправка приложения на проверку - -Следующие шаги описаны в официальной [документации](https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html "Официальная статья по отправке приложения на проверку") - -# Ограничения в Mac App Store - -Для того чтобы удовлетворить всем просьбам SandBox App Store, некоторые из модулей были отключены: -- crashReporter -- autoUpdater - -А также следующие проблемы были несколько изменены: -- Захват видео на некоторых машинах может не работать -- Некоторые специальные возможности могут не работать -- Приложения не будут в курсе изменения DNS - -Также из-за использования SandBox App Store некоторые возможности могут быть не доступны или ограничены, подробнее о ограничениях -Вы можете прочитать в [документации](https://developer.apple.com/app-sandboxing/ "Ссылка на ограничения в SandBox AppStore") - -# Криптографические алгоритмы которые использует Electron - -Смотря в какой стране и городе Вы находитесь, Apple может потребовать от Вас задокументировать алгоритмы криптографии которые Вы используете -и если потребуется, то попросит Вас предоставить копию регистрации вашего алгоритма шифрования. - -Electron использует следующие алгоритмы шифрования: -- AES - NIST SP 800-38A, NIST SP 800-38D, RFC 3394 -- HMAC - FIPS 198-1 -- ECDSA - ANS X9.62–2005 -- ECDH - ANS X9.63–2001 -- HKDF - NIST SP 800-56C -- PBKDF2 - RFC 2898 -- RSA - RFC 3447 -- SHA - FIPS 180-4 -- Blowfish - https://www.schneier.com/cryptography/blowfish/ -- CAST - RFC 2144, RFC 2612 -- DES - FIPS 46-3 -- DH - RFC 2631 -- DSA - ANSI X9.30 -- EC - SEC 1 -- IDEA - “On the Design and Security of Block Ciphers” book by X. Lai -- MD2 - RFC 1319 -- MD4 - RFC 6150 -- MD5 - RFC 1321 -- MDC2 - ISO/IEC 10118-2 -- RC2 - RFC 2268 -- RC4 - RFC 4345 -- RC5 - http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf -- RIPEMD - ISO/IEC 10118-3 - -Если Вы используете необычный алгоритм, то вот статья о том, как получить разрешение на использование собственного алгоритма шифрования в -рамках закона США - [статья](https://pupeno.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/ "Статья о том как получить разрешение на свой алгоритм шифрования") diff --git a/docs-translations/ru-RU/tutorial/quick-start.md b/docs-translations/ru-RU/tutorial/quick-start.md deleted file mode 100644 index a943d09e8b65..000000000000 --- a/docs-translations/ru-RU/tutorial/quick-start.md +++ /dev/null @@ -1,224 +0,0 @@ -# Быстрый старт - -Electron позволяет Вам делать приложения для рабочего стола на чистом JavaScript, -предоставляя среду с богатым API. Можете представлять его как Node.js приложение, которое -ориентировано для рабочего стола, а не для веб сервера. - -Однако это не значит, что Electron — лишь привязка к GUI билиотекам. На деле -Electron использует веб-страницы как интерфейс, так что Вы можете считать его -небольшим Chroumium браузером, который контролируется с помощью JavaScript. - -### Главный процесс - -В Electron процесс, который запускает `main` из `package.json` называется -__главным процессом__. Скрипт, который работает в главном процессе может -показывать GUI, создавая веб-страницы. - -### Процесс-рендерер - -Так как Electron использует Chromium для показа веб-страниц, -мульти-процессовая архитектура показа страниц Chromium тоже используется. -Каждая веб-страница в Electron работает в своём собственном процессе, -который называется __процесс-рендерер__. - -В обычных браузерах веб-страницы обычно запускаются в "песочнице" и им недоступны -реальные ресурсы компьютера. Пользователи Electron напротив могут использовать API -Node.js на страницах, что допускает более низкоуровневую работу с операционной системой. - -### Разница между главным процессом и процессом-рендерером - -Главный процесс создаёт веб-страницы используя `BrowserWindow`. Каждый экземпляр -`BrowserWindow` показывает веб-страницу через свой собственный процесс-рендерер. -Если экземпляр `BrowserWindow` уничтожается, то и соответствующий процесс-рендерер тоже -завершается. - -Главный процесс управляет всеми веб-страницами и соответствующими им процессами-редерерами. -Каждый процесс-рендерер изолирован и управляет только своей веб-страницей. - -На веб-страницах не позволяется вызывать нативные API, которые управляют GUI, -потому что это очень опасно и может легко вызвать утечку ресурсов. Если вы хотите -выполнить действия с GUI на странице, процесс-рендерер этой страницы должен -"попросить" главный процесс сделать эти действия. - -В Electron есть несолько способов общения между процессам. Например, модули -[`ipcRenderer`](../api/ipc-renderer.md) и [`ipcMain`](../api/ipc-main.md) используются -для отправки сообщений, а [remote](../api/remote.md) - для коммуникации в RPC стиле. -В FAQ также есть пункт о том, [как разделять информацию между страницами][share-data] - -## Первое приложение на Electron - -Как правило, приложение Electron структурировано следующим образом: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -Формат `package.json` точно такой же, как у модулей Node и скрипт, объявленый -как `main`, будет выполняться при запуске вашего приложения, работая в -главном процессе. Например, Ваш `package.json` может выглядеть вот так: - -```javascripton -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__Заметка__: Если поле `main` отсутствует в `package.json`, Electron попробует -загрузить `index.js`. - - -`main.js` должен создавать окно и управлять системными событиями, -типичный пример: - -```javascript -const electron = require('electron') -// Модуль, контролирующий основное: сам Electron. -const app = electron.app -// Модуль, создающий окно приложения. -const BrowserWindow = electron.BrowserWindow - -// Удерживайте глобальное обращение к объекту окна, если Вы так не сделаете, то -// окно само закроется после того, как объект будет собран сборщиком мусора. -let mainWindow - -function createWindow () { - // Создаём окно браузера - mainWindow = new BrowserWindow({width: 800, height: 600}) - - // и загружаем index.html приложения. - mainWindow.loadURL(`file://${__dirname}/index.html`) - - // Открываем DevTools. - mainWindow.webContents.openDevTools() - - // Будет выполнено, когда пользователь закроет окно - mainWindow.on('closed', function () { - // Убрать обращение на объект окна, обычно стоит хранить окна в массиве, - // если ваше приложение поддерживает несколько, сейчас стоит удалить - // соответствующий элемент. - mainWindow = null - }) -} - -// Этот метод будет вызван, когда Electron закончит инициализацию -// и будет готов создавать окна браузера. -// Некоторые API возможно использовать только после того, как -// это произойдёт. -app.on('ready', createWindow) - -// Выйти, если все окна закрыты -app.on('window-all-closed', function () { - // На macOS приложение и его строка меню обычно остаются активными, - // пока пользователь не завершит их с помощью `Cmd + Q`. - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', function () { - // На macOS приложение обычно пересоздаёт окно, когда - // пользователь кликает на его иконку в доке, если не открыто - // других окон. - if (mainWindow === null) { - createWindow() - } -}) - -// В этот файл Вы можете включить остальной код вашего главного процесса. -// Вы также можете разложить его по отдельным файлам и подключить с помощью require. -``` - -Наконец, `index.html`, страница, которую Вы хотите показать: - -```html - - - - - Hello World! - - -

Привет, мир!

- Мы используем Node , - Chrome , - и Electron . - - -``` - -## Запуск вашего приложения - -После того как Вы создали `main.js`, `index.html` и `package.json` Вам скорее всего захочется -запустить приложение, чтобы проверить, что оно работает так, как надо. - -### electron-prebuilt - -[`electron-prebuilt`](https://github.com/electron-userland/electron-prebuilt) — `npm` модуль, -который содержит прекомпилированную версию Electron. - -Если вы установили Electron глобально через `npm`, то Вам нужно будет всего лишь -запустить сдедующее в папке вашего проекта: - -```bash -electron . -``` - -Если Вы установили Electron локально, то выполните это: - -```bash -./node_modules/.bin/electron . -``` - -### Исполняемые файлы Electron, скачанные вручную - -Если Вы скачали Electron вручную, то Вы можете использовать -исполняемые файлы прямо в папке вашего проекта. - -#### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -#### Linux - -```bash -$ ./electron/electron your-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` — часть реализного пакета Electron, Вы можете скачать его -[тут](https://github.com/electron/electron/releases). - -### Запустить как дистрибутив - -Когда Вы закончили написание вашего приложения, Вы можете создать -дистрибутив, следуя инструкциям [отсюда](./application-distribution.md) и -затем запустить полученное приложение. - -### Попробуйте этот пример - -Скопируйте и запустите этот обучающий код, используя репозиторий [`atom/electron-quick-start`](https://github.com/electron/electron-quick-start) - -**Заметка**: Для запуска требуется [Git](https://git-scm.com) и [Node.js](https://nodejs.org/en/download/) (который включает в себя [npm](https://npmjs.org)). - -```bash -# Клонируем репозиторий -$ git clone https://github.com/electron/electron-quick-start -# Переходим в папку скачанного репозитория -$ cd electron-quick-start -# Устанавливаем зависимости и запускаем -$ npm install && npm start -``` - -[share-data]: ../faq/electron-faq.md#how-to-share-data-between-web-pages diff --git a/docs-translations/ru-RU/tutorial/supported-platforms.md b/docs-translations/ru-RU/tutorial/supported-platforms.md deleted file mode 100644 index 0c929daa1196..000000000000 --- a/docs-translations/ru-RU/tutorial/supported-platforms.md +++ /dev/null @@ -1,24 +0,0 @@ -# Платформы поддерживаемые Electron: - -Следующие платформы поддерживаются Electron: - -### macOS - -Поддерживает только 64-x битные macOS. Минимально поддерживаемой версией является macOS 10.9 - -### Windows - -Поддерживаются операционные системы Windows 7 и выше, старые операционные системы не поддерживаются (и не работают). - -Поддерживаются бинарники `x86` и `amd64` (x64) для Windows. Будьте внимательны, `ARM` версия Windows не поддерживается на данный момент. - -### Linux - -Подготовленные бинарники Electron для `ia32`(`i686`) и `x64`(`amd64`) архитектур сделаны на Ubuntu 12.04, -`arm` бинарник сделан на ARM v7 с hard-float ABI и NEON для Debian Wheezy. - -Гарантированно будет работать в дистрибутивах: - -* Ubuntu 12.04 и выше -* Fedora 21 -* Debian 8 diff --git a/docs-translations/th-TH/README.md b/docs-translations/th-TH/README.md deleted file mode 100644 index 97a6f3f86871..000000000000 --- a/docs-translations/th-TH/README.md +++ /dev/null @@ -1,94 +0,0 @@ -กรุณาตรวจสอบว่าคุณกำลังใช้คู่มือที่ตรงกับเวอร์ชั่นของ Electon ของคุณด้วย ตัวเลขเวอร์ชั่นจะมีบอกใน URL ของหน้าเพจ ถ้าไม่มีหมายความว่าคุณอาจจะใช้เอกสารของ development branch ที่ API อาจจะมีการเปลี่ยนแปลง ซึ่งไม่สามารถใช้ร่วมกับ Electron เวอร์ชั่นที่คุณใช้อยู่ได้ เพื่อที่จะดูเอกสารเวอร์ชั่นเก่า [คุณสามารถที่จะดูแท็ก](https://github.com/electron/electron/tree/v1.4.0) ใน GitHub โดยการที่คลิกที่ "เรียกดูตามกิ่ง/แท็ก" แล้วเลือกแท็กที่ตรงกับเวอร์ชั่นของคุณ - -## คำถามที่ถูกถามบ่อย - -รวบรวมคำถามที่ถูกถามบ่อย กรุณาอ่านก่อนเปิด issue: - -* [คำถามที่ถูกถามบ่อยเกี่ยวกับ Electron](faq.md) - -## คู่มือ - -* [คำศัพท์เฉพาะ](glossary.md) -* [แพลตฟอร์มที่รองรับ](tutorial/supported-platforms.md) -* [ความปลอดภัย](tutorial/security.md) -* [การเผยแพร่แอปพลิเคชัน](tutorial/application-distribution.md) -* [แนวทางการส่งแอปเข้า Mac App Store](tutorial/mac-app-store-submission-guide.md) -* [คู่มือ Windows Store](tutorial/mac-app-store-submission-guide.md) -* [การบรรจุแอปพลิเคชัน](tutorial/application-packaging.md) -* [การใช้โมดูลของ Node](tutorial/using-native-node-modules.md) -* [การหาข้อผิดพลาดในกระบวนการหลัก](tutorial/debugging-main-process.md) -* [การใช้งาน Selenium และ WebDriver](tutorial/using-selenium-and-webdriver.md) -* [ส่วนเสริมของ DevTools](tutorial/devtools-extension.md) -* [การใช้งานส่วนเสริม Pepper Flash](tutorial/using-pepper-flash-plugin.md) -* [การใช้งานส่วนเสริม Widevine CDM Plugin](tutorial/using-pepper-flash-plugin.md) -* [การทดสอบบน CI (Travis, Jenkins)](tutorial/testing-on-headless-ci.md) -* [การเลนเดอร์นอกหน้าต่าง] (tutorial/offscreen-rendering.md) - -## แนะนำ - -* [เริ่มต้นอย่างคราวๆ](tutorial/quick-start.md) -* [การร่วมกันของสภาพแวดล้อมบนเดสทอป](tutorial/desktop-environment-integration.md) -* [การตรวจจับเหตุการณ์ออนไลน์หรือออฟไลน์](tutorial/online-offline-events.md) -* [REPL](tutorial/repl.md) - -## แหล่งอ้างอิงของ API - -* [สรุปความ](api/synopsis.md) -* [โปรเซสออบเจค](api/process.md) -* [คำสั่งสำหรับเปลี่ยนแปลงค่าของ Chrome ที่รองรับ](api/chrome-command-line-switches.md) -* [Variables สภาพแวดล้อม](api/environment-variables.md) - -### การปรับแต่ง DOM: - -* [วัตถุ `File`](api/file-object.md) -* [แท็ก ``](api/webview-tag.md) -* [ฟังก์ชัน `window.open`](api/window-open.md) - -### โมดูลสำหรับกระบวนการหลัก : - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [systemPreferences](api/system-preferences.md) -* [Tray](api/tray.md) -* [webContents](api/web-contents.md) - -### โมดูลสำหรับกระบวนการ Renderer (เว็บเพจ): - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### โมดูลสำหรับทั้งสองกระบวนการ: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## การพัฒนา - -* [ลักษณะการเขียนโค้ด](development/coding-style.md) -* [การใช้ clang-format สำหรับโค้ด C++](development/clang-format.md) -* [โครงสร้างไดเรคทอรี่ของซอร์สโค้ด](development/source-code-directory-structure.md) -* [ความแตกต่างทางเทคนิคจาก NW.js (หรือ node-webkit)](development/atom-shell-vs-node-webkit.md) -* [ภาพรวมการสร้างระบบ](development/build-system-overview.md) -* [ขั้นตอนการสร้าง (macOS)](development/build-instructions-osx.md) -* [ขั้นตอนการสร้าง (Windows)](development/build-instructions-windows.md) -* [ขั้นตอนการสร้าง (Linux)](development/build-instructions-linux.md) -* [ขั้นตอนการแก้บัค (macOS)](development/debugging-instructions-macos.md) -* [ขั้นตอนการแก้บัค (Windows)](development/debug-instructions-windows.md) -* [การติดตั้งเซิร์ฟเวอร์ Symbol Server ใน debugger](development/setting-up-symbol-server.md) -* [ลักษณะการแก้เอกสาร](styleguide.md) diff --git a/docs-translations/th-TH/faq.md b/docs-translations/th-TH/faq.md deleted file mode 100644 index 4a4ddc0a84ea..000000000000 --- a/docs-translations/th-TH/faq.md +++ /dev/null @@ -1,142 +0,0 @@ -# คำถามที่ถูกถามบ่อยเกี่ยวกับ Electron (Electron FAQ) - -## เมื่อไหร่ Electron จะอัพเกรดไปเวอร์ชั่นล่าสุดของ Chrome ? - -โดยส่วยมาก Chrome เวอร์ชั่นใน Electron จะโดนอัพเกรดโดยประมาณหนี่งถึงสองอาทิตย์หลังจากมีเวอร์ชั่นใหม่ของ Chrome ที่เสถียร - -Chrome เวอร์ชั่นที่เสถียรเท่านั้นที่จะถูกใช้ ถ้ามีการแก้บัคที่สำคัญในช่องทางเบต้าหรือพัฒนา เราจะนำมันเข้ามาใช้ด้วย - -สำหรับข้อมูลเพิ่มเติม โปรดดูที่ [บทนำความปลอดภัย](tutorial/security.md) - -## เมื่อไหร่ Electron จะอัพเกรดไปเวอร์ชั่นล่าสุดของ Node.js ? - -เมื่อเวอร์ชั่นใหม่ของ Node.js ถูกปล่อยออกมา เราจะรอโดยประมาณหนึ่งเดือนก่อนที่จะอัพเกรด Node.js ที่อยู่ใน Electron เพื่อที่ว่าเราจะได้ลดความเสี่ยงถึงผลกระทบของบัคใน Node.js เวอร์ชั่นใหม่ซึ่งเกิดขึ้นบ่อยมาก - -ความสามารถใหม่ของ Node.js โดยส่วนมากจะมากับการอัพเกรด V8 เนื่องจาก Electron นั้นใช้ V8 ที่มาพร้อมกับ Chrome browser อยู่แล้ว ทำให้ Electron มีความสามารถใหม่ของ JavaScript ที่มาพร้อมกับ Node.js เวอร์ชั่นใหม่อยู่แล้ว - -## วิธีการแบ่งข้อมูลระหว่างเว็ปเพจ - -ในการที่จะแบ่งข้อมูลนั้น (the renderer processes) วิธีการที่เรียบง่ายที่สุดคือการใช้ APIs ของ HTML5 ซี่งใช้ได้อยู่แล้วในเว็ปบราวเซอร์ ทางเลือกอื่นๆที่ดีคือ [Storage API][storage], [`localStorage`][local-storage], -[`sessionStorage`][session-storage], และ [IndexedDB][indexed-db]. - -หรือคุณจะสามารถใช้ระบบ IPC ซึ่งสำหรับ Electron มันจะเก็บ objects ในโปรเซสหลักในรูปของ global variable แล้วจึงเรียกมันจากตัว renderer ผ่านทาง `remote` ของ `electron` โมดูล - -```javascript -// ในโปรเซสหลัก -global.sharedObject = { - someProperty: 'default value' -} -``` - -```javascript -// ในเพจหนึ่ง -require('electron').remote.getGlobal('sharedObject').someProperty = 'new value' -``` - -```javascript -// ในเพจสอง -console.log(require('electron').remote.getGlobal('sharedObject').someProperty) -``` - -## หน้าต่างของแอพฉันหายไปหลังจากไม่กี่นาที - -เหตุการณ์นี้เกิดขึ้นมื่อ variable ที่ใช้เก็บค่าหน้าต่างโดนหน่วยความจำเก็บกวาด - -* [การจัดการหน่วยความจำ][memory-management] -* [ขอบเขตของตัวแปร][variable-scope] - -วิธีการแก้แบบรวดเร็ว: เปลี่ยนตัวแปรให้เป็น global ด้วยการเปลี่ยนจากโค้ดนี้ - -```javascript -const {app, Tray} = require('electron') -app.on('ready', () => { - const tray = new Tray('/path/to/icon.png') - tray.setTitle('hello world') -}) -``` - -เป็น : - -```javascript -const {app, Tray} = require('electron') -let tray = null -app.on('ready', () => { - tray = new Tray('/path/to/icon.png') - tray.setTitle('hello world') -}) -``` - -## ไม่สามารถใช้ jQuery/RequireJS/Meteor/AngularJS ใน Electron - -เนื่องจากการรวบรวม Node.js เข้าไปใน Electron จึงทำให้เกิดการใส่อักขระเพิ่มเตืมลงไปใน DOM เช่น `module`, `export`, `require` - -มันทำให้เกิดปัญหากับ library อื่นๆที่ต้องการจะใช้อักขระตัวเดียวกัน - -ในการแก้ปัญหานี้ คุณจะต้องปิด node ใน Electron: - -```javascript -// ในโปรเซสหลัก -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -win.show() -``` - -แต่ถ้าคุณยังต้องการที่จะใช้ Node.js และ API ของ Electron คุณจะค้องเปลี่ยนชื่อของอักขระในเพจดังนี้ : - -```html - - - - -``` - -## `require('electron').xxx` is undefined. - -ในตอนที่คุณใช้โมดูลที่มาพร้อมกับ Electron คุณอาจจะเจอปัญหาดังกล่าว: - -``` -> require('electron').webFrame.setZoomFactor(1.0); -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -มันเปิดมาจากคุณได้ลง [module npm `electron`][electron-module] ในเครื่องไม่ว่าจะเป็น locally หรือ globally ซึ่งมันจะทับโมดูลที่มาพร้อมกับ Electron - -เพื่อตรวจสอบว่าคุณกำลังใช้โมดูลที่ถูกต้อง คุณสามารถที่จะส่ง command ที่จะปริ้น path ของ `electron` ได้: - -```javascript -console.log(require.resolve('electron')) -``` - -แล้วก้เช็คว่าผลลัพท์อยู่ในรูปของ: - -``` -"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -ถ้าผลลัพท์ที่ได้จากการส่ง command อยู่ในรูปแบบ `node_modules/electron/index.js` คุณจะต้องลบโมดูล `electron` ใน npm หรือไม่ก็เปลี่ยนชื่อมัน - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -ถ้าหากว่าคุณกำลังใช้โมดูลที่มาพร้อมกับ Electron แล้วยังเกิดข้อผิดผลาดดังกล่าว มีความเป็นไปได้สูงว่าคุณกำลังใช้โมดูลในโปรเซสที่ผิด - -ยกตัวอย่างเช่น `electron.app` จะสามารถใช้ได้ในโปรเซสหลักเท่านั้น แต่ว่าในขณะเดียวกัน `electron.webFrame` นั้นใช้ได้ในโปรเซส renderer เท่านั้น - -[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron -[storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage -[local-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage -[session-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage -[indexed-db]: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API diff --git a/docs-translations/th-TH/glossary.md b/docs-translations/th-TH/glossary.md deleted file mode 100644 index 9164f75ef1ca..000000000000 --- a/docs-translations/th-TH/glossary.md +++ /dev/null @@ -1,157 +0,0 @@ -# อภิธานศัพท์ (Glossary) - -เพจนี้จะบ่งบอกคำศัพท์ที่ถูกใช่บ่อยๆในการพัฒนา Electron - -### ASAR - -[ASAR (Atom Shell Archive Format)][asar] เป็น extension ของไฟล์ -มันมีลักษณะความคล้ายครีง `tar` ที่รวมหลายไฟล์ลงไปในไฟล์เดียว -Electron สามารถอ่านไฟล์ ASAR ได้เลยโดยที่ไม่ต้อง unpack - -กำลังทำ: ไฟล์ประเภท ASAR นั้น สร้างมาเพื่อเพิ่มประสิทธิถาพบนระบบปฎิบัติการ Windows - -### Brightray - -[Brightray][brightray] เป็น static library ที่ทำให้ [libchromiumcontent] ใช้ได้ง่ายขึ้น -ในแอพพิเคชั่น มันถูกสร้างขึ้นมาเพื่อ Electron โดยเฉพาะ -แต่ว่ามันสามารถเปิดใช้ในแอพที่ใช้ Chromium's render ซึ่งไม่ถูกสร้างจาก Electron ได้ - -Brightray เป็น dependency ของ Electron ที่ไม่ค่อยได้ใช้งานสำหรับผู้ใช้ Electron ทั่วไป - -### DMG - -DMG เป็นรูปแบบไฟล์ที่ใช้กับ Apple Disk Image - -โดยส่วนมากไฟล์ DMG จะถูกใช้ในการแจกแจงตัวติดตั้งของแอพพิเคชั่น -คุณสามารถใช้ [electron-builder] ในการสร้างไฟล์ขึ้นมาได้ - -### IPC - -IPC ย่อมาจาก Inter-Process Communication ซึ่ง Electron ใช้ IPC -ในการที่จะส่งข้อความ JSON ระหว่าง [โปรเซสหลัก][main] และ [ตัวเรนเดอร์][renderer] - -### libchromiumcontent - -เป็น library รวมที่มี Chromium Content โมดูลและ dependencies ต่างๆเข้าไปด้วย -(อาทิเช่น Blink, [V8], ฯลฯ) - -### โปรเซสหลัก - -โปรเซสหลักในส่วนมากจะเป็นไฟล์ `main.js` ซึ่งเป็นจุดเริ่มต้นของทุกๆแอพของ Electron -โปรเซสหลักเป็นตัวที่กำหนดการทำงานของแอพตั้งแต่ต้นจนจบ มันจะควบคุมองค์ประกอบของแอพเช่น -Menu, Menu Bar, Dock, Tray, ฯลฯ โปรเซสหลักนั้นจะรับผิดชอบการสร้างตัวเรนเดอร์ใหม่ในแอพ - -Node API นั้นมาพร้อมกับ Electron - -`package.json` จะสามารถใช้ระบุโปรเซสหลักของทุกๆแอพบน Electron ได้ -นี้คือเหตุผลที่ `electron .` รู้ว่าไฟล์ไหนควรจะรันตอนเริ่มต้น - -เพิ่มเติม: [process](#process), [renderer process](#renderer-process) - -### MAS - -MAS เป็นตัวย่อของ Mac App Store -ในการที่จะส่งไฟล์ลง MAS นั้นโปรดดู [การแนะนำการส่ง Mac App Store](Mac App Store Submission Guide) - -### native modules - -Native โมดูล (อีกชื่อคือ [addons]) คือโมดูลที่เขียนด้วย C หรือ C++ -ที่สามารถจะโหลดอยู่ใน Node.js หรือ Electron โดยการใช้ฟังค์ชั่น require() -และใช้แบบเดียวกับโมดูล Node.js ธรรมดา - -โดยส่วนมากมันถูกใช้เป็นอินเตอร์เฟสระหว่าง JavaScript และ Node.js ผ่านทาง C/C++ - -Native Node โมดูลจะได้รับการสนับสนุนจาก Electron -แต่ว่ามีความเป็นไปได้ว่า Electron นั้นจะใช้ V8 คนละเวอร์ชั่นกับ Node ที่มีอยู่ในระบบ -คุณจะต้องเป็นคนเลือก Electron's header ด้วยตนเอง - -เพิ่มเติม: [วิธีการใช้ Native Node โมดูล][Using Native Node Modules] - -## NSIS - -NSIS ย่อมาจาก Nullsoft Scriptable Install System คือตัวติดตั้งที่ขับเคลื่อนด้วยสคริปท์ -สำหรับระบบปฎิบัติการ Windows มันได้รับการจดลิขสิทธ์สำหรับใช้ทุกๆคน -มันถูกใช้แทนสินค้าเชิงพาณิชย์เช่น InstallShield -[electron-builder] นั้นรองรับการสร้าง NSIS - -### process - -โปรเซสคือ instance ของโปรแกรมที่กำลังทำงานอยู่ -Electron แอพนั้นใช้ [โปรเซสหลัก][main] และ [ตัวเรนเดอร์][renderer] หนึ่งตัวขึ้นไปที่รัน -หลายๆโปรเกรมพร้อมๆกัน - -ใน Node.js และ Electron นั้น แต่ละโปรเซสที่กำลังรันอยู่จะมี `process` object -Object ตัวนี้เป็น global ที่ให้ข้อมูลและการควบคุมของตัวโปรเซสนั้นๆ - -เพราะว่ามันเป็น global ดังนั้นจึงไม่จำเป็นที่จะเรียก `require()` เพื่อใช้งาน - -เพิ่มเติม: [โปรเซสหลัก](#main-process), [ตัวเรนเดอร์](#renderer-process) - -### renderer process - -ตัวเรนเดอร์ คือ หน้าต่างบราวเซอร์ของแอพพิเคชั่นของคุณ -มันแตกต่างจากโปรเซสหลักโดยที่มันจะสามารถมีอยู่พร้อมกันหลายตัวได้ -และแต่ละตัวนั้นใช้ โปรเซส ที่ต่างกันออกไป -นอกจากนั้นมันยังสามารถซ่อนได้อีกด้วย - -ใน บราวเซอร์ ทั่วๆไป -เว็ปเพจจะได้รับการรันด้วยสภาพแวดล้อมจำกัดและจะไม่สามารถใช้ทรัพยากร native ได้ - -แต่ว่าสำหับผู้ใช้ Electron นั้นเราสามารถให้ -เว็ปเพจมีการปฏิสัมพันธ์กับระบบปฎิบัติการได้โดยผ่านทาง API ของ Node.js - -เพิ่มเติม: [โปรเซสหลัก](#main-process), [ตัวเรนเดอร์](#renderer-process) - -### Squirrel - -Squirrel เป็น open-source framework ที่ทำให้แอพ Electron นั้น -อัพเดทได้อย่างอัตโนมัดเมื่อมีเวอร์ชั่นใหม่เข้ามา - -เพิ่มเติม: [autoUpdater] API เพื่อการใช้งาน Squirrel เบื้องต้น - -### userland - -"Userland" แต่แรกทีมาจากสังคม unix ซึ่งหมายถึงโปรแกรมที่รันข้างนอก kernel ของระบบปฎิบัติการ -ภายหลังนี้ "userland" ได้รับความสนใจจากสังคม Node และ npm เพื่อใช้ในการอธิบายความแตกต่าง -ของ feature ที่พร้อมไช้งานใน "node core" กับ แพ็คเกจที่ได้รับการแจกจ่ายถายใน npm registry -ซึ่งมาจากเหล่าคนใช้ที่กว้างขวาง - -Electron นั้นมีความคล้ายคลึงกับ Node ตรงที่มี API ที่ไม่เยอะแต่ว่ามีความสามารถเพียงพอ -ในการพัฒนา multi-platform แอพพิเคชั่น - -ด้วยปรัชญาการออกแบบนี้เองที่ทำให้ Electron นั้นเป็นเครื่องมือที่มีความยืดหยุ่นโดยที่ไม่กำหนดให้ผู้ใช้ -ใช้งานได้เพียงตามที่ออกแบบไว้ - -Userland ได้เปิดโอกาสให้ผู้ใช้สามารถสร้างและแบ่งปันเครื่องมือนอกเหนือจากอะไรก็ตามที่มีอยู่ใน "core" - -### V8 - -V8 เป็น JavaScripe engine ของ Google ที่เป็น open source -มันถูกเขียนขึ้นด้วย C++ และถูกใช้ใน Google Chrome - -Google Chrome เป็น open source บราวส์เซอร์ของ Google - -V8 สามารถรันแยกเองต่างหากได้ หรือจะสามารถนำไปใช้กับแอพพิเคชั่น C++ อะไรก็ได้ - -### webview - -`webview` เป็นแท็กที่ใช้ในการใส่ข้อมูลสำหรับคนใช้ทั่วไป (เช่นเว็ปภายนอก) ใน Electron แอพของคุณ -มันมีความคล้ายครึงกับ `iframe` แต่ว่าต่างกันโดยที่ webview รันโดยโปรเซสคนละตัว -มันไม่มี permission เหมือนกับเว็ปเพจของคุณและการมีปฏิสัมพันธ์ระหว่าง -แอพของคุงกับสิ่งที่ฝังอยู่จะเป็นไปโดยราบลื่นโดยที่ไม่ต้องซิ้งค์ (asynchronous) - -ด้วยเหตุนี้เองทำให้ แอพของคุณปลอกภัยจากสิ่งที่ถูกฝัง - - -[addons]: https://nodejs.org/api/addons.html -[asar]: https://github.com/electron/asar -[autoUpdater]: api/auto-updater.md -[brightray]: https://github.com/electron/brightray -[electron-builder]: https://github.com/electron-userland/electron-builder -[libchromiumcontent]: #libchromiumcontent -[Mac App Store Submission Guide]: tutorials/mac-app-store-submission-guide.md -[main]: #main-process -[renderer]: #renderer-process -[Using Native Node Modules]: tutorial/using-native-node-modules.md -[userland]: #userland -[V8]: #v8 diff --git a/docs-translations/th-TH/styleguide.md b/docs-translations/th-TH/styleguide.md deleted file mode 100644 index 85caeea5ddfb..000000000000 --- a/docs-translations/th-TH/styleguide.md +++ /dev/null @@ -1,213 +0,0 @@ -# ลักษณะเอกสาร Electron - -นี้คือกฎในการเขียนเอกสารประกอบ Electron - -## หัวข้อ - -* ทุกๆเพจจะมี `#` อยู่ข้างบนสุดของเอกสาร -* ทุกๆบทจะต้องมี `##` ในหัวข้อ -* ทุกๆบทย่อยจะเพิ่ม `#` ลงไปในหัวข้อตามความลึกของบทย่อย - -ยกตัวอย่างเช่น `การเริ่มต้น`: - -```markdown -# การเริ่มต้น - -... - -## โปรเซสหลัก - -... - -## โปรเซส render - -... - -## การรันแอพ - -... - -``` - -สำหรับการอ้างอิงของ API จะไม่ใช้กฎนี้ - -## กฎของ Markdown - -* ใช้ `bash` แทน `cmd` ในการเขียน code blocks (เพราะตัวไฮไลท์ syntax) -* บรรทัดควรที่จะเริ่มต้นใหม่ที่ 80 คอลัมน์ -* ไม่ควรใส่ลิสต์ที่มีมากกว่าสองชั้น (เพราะตัว render ของ markdown) -* ทุก `js` แลพ `javascript` code blocks จะไฮไลท์ด้วย -[standard-markdown](http://npm.im/standard-markdown). - -## การใช้คำ - -* ใช้ 'จะ' แทนที่ 'ควรจะ' ตอนอธิบายผลลัทธ์ - -## การอ้างอิงของ API - -กฎดังต่อไปนี้จะใช้สำหรับเอกสาร API เท่านั้น - -### หัวข้อเพจ - -ทุกๆเพจจะใช้ชื่อของ object ที่ได้รับจาก `require('electron')` เป็นหัวข้อ อาทิเช่น `BrowserWindow`, `autoUpdater` และ `session` - -ข้างล่างหัวข้อจะเป็นคำอธิบายหนึ่งบรรทัดเริ่มต้นด้วย `>` - -```markdown -# session - -> คำอธิบาย -``` - -### โมดูล methods และ events - -สำหรับโมดูลที่ไม่ใช่คราสนั้น methods และ events ของมันจะต้องอยู่ในลิสต์ภายใต้บท `## Methods` และ `## Events` - -ยกตัวอย่างเช่น `autoUpdater`: - -```markdown -# autoUpdater - -## Events - -### Event: 'error' - -## Methods - -### `autoUpdater.setFeedURL(url[, requestHeaders])` -``` - -### คราส (Classes) - -* คราส API หรือ คราสที่เป็นส่วนของโมดูลจะต้องอยู่ในบท `## Class: TheClassName` -* หนึ่งเพจสามารถมีหลายคราสได้ -* Constructors จะต้องอยู่ใน `###` -* [Static Methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static) จะต้องอยู่ในบทของ `### Static Method` -* [Instance Methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Prototype_methods) จะต้องอยู่ในบทของ `### Instance Methods` -* ทุกๆ methods ที่มีค่า รีเทิร์น(return) จะต้องเริ่มต้นคำอธิบายด้วย "Returns `[TYPE]` - คำอธิบายค่ารีเทิร์น" - * ถ้า method รีเทิร์น `Object` โครงสร้างจองมันจะอธิบายได้ด้วยการใช้ ','(โคล่อน) ตามด้วยบรรทัดใหม่ จากนั้นก็ ลิสต์ของคุณสมบัติที่ไม่เรียงกัน (เหมือนกับ parametres ของฟังค์ชั่น) -* Instance ของ Events จะต้องอยู่ในบทของ `### Instance Events` -* Instance ของ Properties จะต้องอยู่ในบทของ `### Instance Properties` - * จะเริ่มต้นด้วย "A [Type ของ คุณสมบัติ]" - -ยกตัวอย่างเช่น `Session` และ `Cookies` คราส: - -```markdown -# session - -## Methods - -### session.fromPartition(partition) - -## Properties - -### session.defaultSession - -## Class: Session - -### Instance Events - -#### Event: 'will-download' - -### Instance Methods - -#### `ses.getCacheSize(callback)` - -### Instance Properties - -#### `ses.cookies` - -## Class: Cookies - -### Instance Methods - -#### `cookies.get(filter, callback)` -``` - -### Methods - -บท methods จะอยู่ในรูปแบบดังนี้: - -```markdown -### `objectName.methodName(required[, optional]))` - -* `required` String - A parameter description. -* `optional` Integer (optional) - Another parameter description. - -... -``` - -หัวข้อจะสามารถอยู่ในรูปของ `###` หรือ `####` (ตามว่าเป็น method ของโมดูลหรือของคราส) - -สำหรับโมดูล `objectName` คือชื่อของโมดูล แต่ว่าสำหรับคราสนั้น ชื่อจะต้องเป็น instance ของคราสและจะต้องไม่ซ้ำกับชื่อโมดูล - -ยกตัวอย่างเช่น method ของคราส `Session` ที่อยู่ใน `session` โมดูลจะต้องใช้ `ses` เหมือนกับ `objectName`. - -หากมี arguments เพิ่มเตินนั้นจะได้รับการบันทึกภายใน `[]` รวมถึงคอมม่ถ้าหากว่า arguement นี้ตามด้วย argument เสริมอื่นๆ - -``` -required[, optional] -``` - -ข้างล่าง method จะเป็นข้อคาวมโดยละเอียดเกี่ยวกับ arguments อื่นๆ, ชนิค (Type) ของ argument จะโดนบันทีกตาม type ทั่วไป - -* [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) -* [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) -* [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) -* [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -* [`Boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) -* หรือ type พิเศษเช่น Electron [`WebContent`](api/web-contents.md) - -หาก argument หรือ method มีเฉพาะเจาะจงกับ platform นั้น ให้ใช้ตัว italic (เอียง) ลิสต์ตาม datatype -โดยที่ตัวลิสต์นั้นจะจำกัดอยู่ที่ `macOS`, `Windows`, หรือ `Linux` เท่านั้น - -```markdown -* `animate` Boolean (optional) _macOS_ _Windows_ - เล่นแอนนิเมชัั่น. -``` - -Arguments ชนิด `Array` จะต้องบอกว่า array นั้นจะใส่อะไรลงไปตามข้อมูลด้านล่าง - -ข้อความอธิบาย arguments ของ ฟังค์ชั่น (function) จะต้องบอกเจาะจงถึงวิธีการใช้งานและชนิดของ parametres ที่ฟังค์ชั่นนั้นรับ - -### อีเว้น (Events) - -บทอีเว้นจะต้องอยู่ในรูปแบบดังนี้: - -```markdown -### Event: 'wake-up' - -Returns: - -* `time` String - -... -``` - -หัวข้อจะสามารถอยู่ในรูปของ `###` หรือ `####` (ตามว่าเป็นอีเว้นของโมดูลหรือของคราส) - -แบบเอกสาร arguments ของอีเว้นจะใช้กฎเดียวกับ methods - -### คุณสมบัติ (Properties) - -บทคุณสมบัติจะต้องอยู่ในรูปแบบดังนี้: - -```markdown -### session.defaultSession - -... -``` - -หัวข้อจะสามารถอยู่ในรูปของ `###` หรือ `####` (ตามว่าเป็นคุณสมบัติของโมดูลหรือของคราส) - -## การแปลเอกสาร - -เอกสารของ Electron ที่ถูกแปลแล้ว จะอยู่ในโฟลเดอร์ `docs-translation` - -ในการสร้างเซ็ตของภาษาใหม่ (เพิ่มในบางส่วน) - -* สร้างที่อยู่ย่อยตามตัวย่อของภาษา -* แปลภาษา -* อัพเดท `README.md` ภายในเพื่อเป็นสารลิงค์ไฟล์ต่างๆที่แปลแล้ว -* เพิ่มลิ้งค์ลง [README](https://github.com/electron/electron#documentation-translations) หลักของ Electron - -โน้ต: ไฟล์ที่อยู่ใน `docs-translations` จะมีแค่ที่แปลแล้วเท่านั้น ไฟล์ต้นตำรับภาษาอังกริษไม่ควรจะโดนก้อปปี้ลงไปด้วย diff --git a/docs-translations/th-TH/tutorial/about.md b/docs-translations/th-TH/tutorial/about.md deleted file mode 100644 index 310682e33b26..000000000000 --- a/docs-translations/th-TH/tutorial/about.md +++ /dev/null @@ -1,57 +0,0 @@ -# เกี่ยวกับ Electron - -[Electron](https://electron.atom.io) เป็นโอเพ่นซอร์สไลบรารี พัฒนา โดย GitHub สำหรับการสร้างการใช้งานเดสก์ทอปข้ามแพลตฟอร์มกับ HTML, CSS และ JavaScript Electron เกิดขึ้นได้โดยการ่วม [Chromium](https://www.chromium.org/Home) กับ [Node.js](https://nodejs.org) เข้าด้วยกันเป็นหนึงruntimeและปพลิเคชันสามารถบรรจุสำหรับ Mac, Windows และ Linux - -Electron began in 2013 as the framework on which [Atom](https://atom.io), GitHub's hackable text editor, would be built. The two were open sourced in the Spring of 2014. - -It has since become a popular tool used by open source developers, startups, and established companies. [See who is building on Electron](/apps). - -Read on to learn more about the contributors and releases of Electron or get started building with Electron in the [Quick Start Guide](quick-start.md). - -## Core Team and Contributors - -Electron is maintained by a team at GitHub as well as a group of [active contributors](https://github.com/electron/electron/graphs/contributors) from the community. Some of the contributors are individuals and some work at larger companies who are developing on Electron. We're happy to add frequent contributors to the project as maintainers. Read more about [contributing to Electron](https://github.com/electron/electron/blob/master/CONTRIBUTING.md). - -## Releases - -[Electron releases](https://github.com/electron/electron/releases) frequently. We release when there are significant bug fixes, new APIs or are updating versions of Chromium or Node.js. - -### Updating Dependencies - -Electron's version of Chromium is usually updated within one or two weeks after a new stable Chromium version is released, depending on the effort involved in the upgrade. - -When a new version of Node.js is released, Electron usually waits about a month before upgrading in order to bring in a more stable version. - -ใน Electron, Node.js and Chromium share a single V8 instance—usually the version that Chromium is using. Most of the time this _just works_ but sometimes it means patching Node.js. - - -### Versioning - -Due to the hard dependency on Node.js and Chromium, Electron is in a tricky versioning position and [does not follow `semver`](http://semver.org). You should therefore always reference a specific version of Electron. [Read more about Electron's versioning](https://electron.atom.io/docs/tutorial/electron-versioning/) or see the [versions currently in use](https://electron.atom.io/#electron-versions). - -### LTS - -Long term support of older versions of Electron does not currently exist. If your current version of Electron works for you, you can stay on it for as long as you'd like. If you want to make use of new features as they come in you should upgrade to a newer version. - -A major update came with version `v1.0.0`. If you're not yet using this version, you should [read more about the `v1.0.0` changes](https://electron.atom.io/blog/2016/05/11/electron-1-0). - -## Core Philosophy - -In order to keep Electron small (file size) and sustainable (the spread of dependencies and APIs) the project limits the scope of the core project. - -For instance, Electron uses just the rendering library from Chromium rather than all of Chromium. This makes it easier to upgrade Chromium but also means some browser features found in Google Chrome do not exist in Electron. - -New features added to Electron should primarily be native APIs. If a feature can be its own Node.js module, it probably should be. See the [Electron tools built by the community](https://electron.atom.io/community). - -## History - -Below are milestones in Electron's history. - -| :calendar: | :tada: | -| --- | --- | -| **April 2013**| [Atom Shell is started](https://github.com/electron/electron/commit/6ef8875b1e93787fa9759f602e7880f28e8e6b45).| -| **May 2014** | [Atom Shell is open sourced](http://blog.atom.io/2014/05/06/atom-is-now-open-source.html). | -| **April 2015** | [Atom Shell is re-named Electron](https://github.com/electron/electron/pull/1389). | -| **May 2016** | [Electron releases `v1.0.0`](https://electron.atom.io/blog/2016/05/11/electron-1-0).| -| **May 2016** | [Electron apps compatible with Mac App Store](https://electron.atom.io/docs/tutorial/mac-app-store-submission-guide).| -| **August 2016** | [Windows Store support for Electron apps](https://electron.atom.io/docs/tutorial/windows-store-guide).| diff --git a/docs-translations/th-TH/tutorial/accessibility.md b/docs-translations/th-TH/tutorial/accessibility.md deleted file mode 100644 index 0fda6e6a959f..000000000000 --- a/docs-translations/th-TH/tutorial/accessibility.md +++ /dev/null @@ -1,40 +0,0 @@ -# การเข้าถึง (Accessibility) - -การที่จะทำให้แอพพิเคชั่นนั้นเข้าถึงได้เป็นเรื่องที่สำคัญมาก และ เรามีความสุขที่จะต้อนรับความสามารถใหม่ของเราสู่ [Devtron](https://electron.atom.io/devtron) และ [Spectron](https://electron.atom.io/spectron) ซึ่งได้ให้โอกาสผู้พัฒนาในการที่จะสร้างแอพพิเคชั่นที่ดีขึ้นเพื่อทุกๆคน - ---- - -ความกังวลเกี่ยวกับการเข้าถึงของแอพพิเคชั่น Electron นั้นมีความคล้ายครึงกับความกังวลของเว็ปไซต์ เพราะว่าทั้งสองนั้นเป็น HTML ด้วยกัน ในขณะเดียวกันนั้น แต่ว่าในแอพ Electron คุณไม่สามารถใช้ทรัพยากรณ์ออนไลน์ได้เพราะว่าแอพของคุณนั้นไม่มี URL ที่สามารถเข้าถึงได้ - -ความสามารถใหม่ๆนี้นำอุปกรณ์การแก้ไขต่างๆเข้ามาใส่แอพ Electron ของคุณ คุณสามารถเลือกที่จะแก้ไขบททดสองของคุณได้ด้วย Spectron หรือว่าใช้มันใน DevTools ด้วย Devtron - -กรุณาอ่านต่อเพื่อบทสรุปของอุปกรณ์หรือดู [เอกสารการเข้าถึง](https://electron.atom.io/docs/tutorial/accessibility) ของเราสำหรับข้อมูลเพิ่มเติม - -### Spectron - -ในการทดสอบเฟรมเวิร์ค Spectron นั้น -คุณจะใช้วิธีการแก้ไขทุกๆหน้าต่าง และ แท็ก `` ในแอพพิเคชั่นของคุณได้ - -ยกตัวอย่างเช่น: - -```javascript -app.client.autidAccessibility().then(function (audit) { - if (audit.failed) { - console.error(audit.message) - } -}) -``` - -คุณสามารถอ่านข้อมูลเพิ่มเติมสำหรับได้ที่ [เอกสาร Spectron](https://github.com/electron/spectron#accessibility-testing) - -### Devtron - -ใน Devtron นั้น จะมีแท็ปการเข้าถึง ซึ่งจะทำให้คุณสามารถจัดการเพจในแอพของคุณได้ - -![devtron screenshot](https://cloud.githubusercontent.com/assets/1305617/17156618/9f9bcd72-533f-11e6-880d-389115f40a2a.png) - -ทั้งสองเครื่องมือใช้ [Accessibility Developer Tools](https://github.com/GoogleChrome/accessibility-developer-tools) ซึ่งเป็น library ที่สร้างขึ้นโดย Google เพื่อ Chrome - -คุณสามารถศึกษาเพิ่มเติมเกี่ยวกับมันได้ที่ [รีโปนี้](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules) - -ถ้าคุณมีความรู้เกี่ยวกับอุปกรณือื่นๆที่สามารถใช้กับ Electron ได้ โปรดใส่มันเพิ่มใน [เอกสารการเข้าถึง](https://electron.atom.io/docs/tutorial/accessibility) ด้วยการขอดึงจาก Electron (pull request) diff --git a/docs-translations/th-TH/tutorial/quick-start.md b/docs-translations/th-TH/tutorial/quick-start.md deleted file mode 100644 index 291d22d63958..000000000000 --- a/docs-translations/th-TH/tutorial/quick-start.md +++ /dev/null @@ -1,244 +0,0 @@ -# การเริ่มต้นอย่างรวดเร็ว - -Electronช่วยให้คุณสามารถสร้างโปรแกรมคอมพิวเตอร์ด้วย JavaScript โดย -ให้รันไทม์ที่สอดคล้องกับ APIs ระดับระบบปฏิบัติการ You could see it -as a variant of the Node.js runtime that is focused on desktop applications -instead of web servers. - -This doesn't mean Electron is a JavaScript binding to graphical user interface -(GUI) libraries. Instead, Electron uses web pages as its GUI, so you could also -see it as a minimal Chromium browser, controlled by JavaScript. - -### Main Process - -In Electron, the process that runs `package.json`'s `main` script is called -__the main process__. The script that runs in the main process can display a GUI -by creating web pages. - -### Renderer Process - -Since Electron uses Chromium for displaying web pages, Chromium's -multi-process architecture is also used. Each web page in Electron runs in -its own process, which is called __the renderer process__. - -In normal browsers, web pages usually run in a sandboxed environment and are not -allowed access to native resources. Electron users, however, have the power to -use Node.js APIs in web pages allowing lower level operating system -interactions. - -### Differences Between Main Process and Renderer Process - -The main process creates web pages by creating `BrowserWindow` instances. Each -`BrowserWindow` instance runs the web page in its own renderer process. When a -`BrowserWindow` instance is destroyed, the corresponding renderer process -is also terminated. - -The main process manages all web pages and their corresponding renderer -processes. Each renderer process is isolated and only cares about the web page -running in it. - -In web pages, calling native GUI related APIs is not allowed because managing -native GUI resources in web pages is very dangerous and it is easy to leak -resources. If you want to perform GUI operations in a web page, the renderer -process of the web page must communicate with the main process to request that -the main process perform those operations. - -In Electron, we have several ways to communicate between the main process and -renderer processes. Like [`ipcRenderer`](../api/ipc-renderer.md) and -[`ipcMain`](../api/ipc-main.md) modules for sending messages, and the -[remote](../api/remote.md) module for RPC style communication. There is also -an FAQ entry on [how to share data between web pages][share-data]. - -## Write your First Electron App - -Generally, an Electron app is structured like this: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -The format of `package.json` is exactly the same as that of Node's modules, and -the script specified by the `main` field is the startup script of your app, -which will run the main process. An example of your `package.json` might look -like this: - -```json -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__Note__: If the `main` field is not present in `package.json`, Electron will -attempt to load an `index.js`. - -The `main.js` should create windows and handle system events, a typical -example being: - -```javascript -const {app, BrowserWindow} = require('electron') -const path = require('path') -const url = require('url') - -// Keep a global reference of the window object, if you don't, the window will -// be closed automatically when the JavaScript object is garbage collected. -let win - -function createWindow () { - // Create the browser window. - win = new BrowserWindow({width: 800, height: 600}) - - // and load the index.html of the app. - win.loadURL(url.format({ - pathname: path.join(__dirname, 'index.html'), - protocol: 'file:', - slashes: true - })) - - // Open the DevTools. - win.webContents.openDevTools() - - // Emitted when the window is closed. - win.on('closed', () => { - // Dereference the window object, usually you would store windows - // in an array if your app supports multi windows, this is the time - // when you should delete the corresponding element. - win = null - }) -} - -// This method will be called when Electron has finished -// initialization and is ready to create browser windows. -// Some APIs can only be used after this event occurs. -app.on('ready', createWindow) - -// Quit when all windows are closed. -app.on('window-all-closed', () => { - // On macOS it is common for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (win === null) { - createWindow() - } -}) - -// In this file you can include the rest of your app's specific main process -// code. You can also put them in separate files and require them here. -``` - -Finally the `index.html` is the web page you want to show: - -```html - - - - - Hello World! - - -

Hello World!

- We are using node , - Chrome , - and Electron . - - -``` - -## Run your app - -Once you've created your initial `main.js`, `index.html`, and `package.json` files, -you'll probably want to try running your app locally to test it and make sure it's -working as expected. - -### `electron` - -[`electron`](https://github.com/electron-userland/electron-prebuilt) is -an `npm` module that contains pre-compiled versions of Electron. - -If you've installed it globally with `npm`, then you will only need to run the -following in your app's source directory: - -```bash -electron . -``` - -If you've installed it locally, then run: - -#### macOS / Linux - -```bash -$ ./node_modules/.bin/electron . -``` - -#### Windows - -```bash -$ .\node_modules\.bin\electron . -``` - -### Manually Downloaded Electron Binary - -If you downloaded Electron manually, you can also use the included -binary to execute your app directly. - -#### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -#### Linux - -```bash -$ ./electron/electron your-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` here is part of the Electron's release package, you can download -it from [here](https://github.com/electron/electron/releases). - -### Run as a distribution - -After you're done writing your app, you can create a distribution by -following the [Application Distribution](./application-distribution.md) guide -and then executing the packaged app. - -### Try this Example - -Clone and run the code in this tutorial by using the [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -repository. - -**Note**: Running this requires [Git](https://git-scm.com) and [Node.js](https://nodejs.org/en/download/) (which includes [npm](https://npmjs.org)) on your system. - -```bash -# Clone the repository -$ git clone https://github.com/electron/electron-quick-start -# Go into the repository -$ cd electron-quick-start -# Install dependencies -$ npm install -# Run the app -$ npm start -``` - -For more example apps, see the -[list of boilerplates](https://electron.atom.io/community/#boilerplates) -created by the awesome electron community. - -[share-data]: ../faq.md#how-to-share-data-between-web-pages diff --git a/docs-translations/tr-TR/README.md b/docs-translations/tr-TR/README.md deleted file mode 100644 index eedd9f375a75..000000000000 --- a/docs-translations/tr-TR/README.md +++ /dev/null @@ -1,86 +0,0 @@ -Lütfen kullandığınız dokümanın Electron versiyonunuzla aynı olduğundan emin olun. -Versiyon numarası okuduğunuz dokümanın URL'sindekiyle aynı olmalı. Eğer aynı değilse, muhtemelen geliştirme aşamasındaki API değişikliklerini içerebilecek dokümantasyonudur. -Eğer öyleyse, atom.io üzerinden [mevcut sürümler](https://electron.atom.io/docs/)e göz atabilirsiniz ya da eğer GitHub arayüzünü kullanıyorsanız "Switch branches/tags" açılır menüsünden versiyonunuza uygun olanı seçebilirsiniz. - -## SSS(Sıkça Sorulan Sorular) - -Bir problem(issue) bildirmeden önce sıkça sorulan sorulara göz atın: -* [Electron SSS](https://github.com/electron/electron/blob/master/docs/faq.md) - -## Klavuzlar - -* [Desteklenen Platformlar ](tutorial/supported-platforms.md) -* [Uygulama Dağıtımı](tutorial/application-distribution.md) -* [Mac Uygulama Mağazası Başvuru Klavuzu](https://github.com/electron/electron/tree/master/docs/tutorial/mac-app-store-submission-guide.md) -* [Uygulama Paketleme](https://github.com/electron/electron/tree/master/docs/tutorial/application-packaging.md) -* [Native Node Modüllerini Kullanma](https://github.com/electron/electron/tree/master/docs/tutorial/using-native-node-modules.md) -* [Ana Süreç(Main Process) Hata ayıklama](https://github.com/electron/electron/tree/master/docs/tutorial/debugging-main-process.md) -* [Selenium ve WebDriver kullanımı](https://github.com/electron/electron/tree/master/docs/tutorial/using-selenium-and-webdriver.md) -* [DevTools Eklentisi](https://github.com/electron/electron/tree/master/docs/tutorial/devtools-extension.md) -* [Pepper Flash Kullanımı](https://github.com/electron/electron/tree/master/docs/tutorial/using-pepper-flash-plugin.md) -* [Widevine CDM Kullanımı](https://github.com/electron/electron/tree/master/docs/tutorial/using-widevine-cdm-plugin.md) -* [CI Sistem Testleri (Travis, Jenkins)](https://github.com/electron/electron/tree/master/docs/tutorial/testing-on-headless-ci.md) - -## Eğitimler - -* [Hızlı Başlangıç](tutorial/quick-start.md) -* [Desktop Environment Integration](https://github.com/electron/electron/tree/master/docs/tutorial/desktop-environment-integration.md) -* [Online/Offline Event Detection](https://github.com/electron/electron/tree/master/docs/tutorial/online-offline-events.md) - -## API Kaynakları - -* [Synopsis](https://github.com/electron/electron/tree/master/docs/api/synopsis.md) -* [Process Object](https://github.com/electron/electron/tree/master/docs/api/process.md) -* [Desteklenen Chrome Komut Satırı Anahtarları](https://github.com/electron/electron/tree/master/docs/api/chrome-command-line-switches.md) -* [Environment Değişkenleri](https://github.com/electron/electron/tree/master/docs/api/environment-variables.md) - -### Özel DOM Elementleri: - -* [`File` Nesnesi](api/file-object.md) -* [`` Etiketi](https://github.com/electron/electron/tree/master/docs/api/webview-tag.md) -* [`window.open` Fonksiyonu](https://github.com/electron/electron/tree/master/docs/api/window-open.md) - -### Ana Süreç(Main Process) Modülleri: - -* [app](https://github.com/electron/electron/tree/master/docs/api/app.md) -* [autoUpdater](https://github.com/electron/electron/tree/master/docs/api/auto-updater.md) -* [BrowserWindow](https://github.com/electron/electron/tree/master/docs/api/browser-window.md) -* [contentTracing](https://github.com/electron/electron/tree/master/docs/api/content-tracing.md) -* [dialog](https://github.com/electron/electron/tree/master/docs/api/dialog.md) -* [globalShortcut](https://github.com/electron/electron/tree/master/docs/api/global-shortcut.md) -* [ipcMain](https://github.com/electron/electron/tree/master/docs/api/ipc-main.md) -* [Menu](https://github.com/electron/electron/tree/master/docs/api/menu.md) -* [MenuItem](https://github.com/electron/electron/tree/master/docs/api/menu-item.md) -* [powerMonitor](https://github.com/electron/electron/tree/master/docs/api/power-monitor.md) -* [powerSaveBlocker](https://github.com/electron/electron/tree/master/docs/api/power-save-blocker.md) -* [protocol](https://github.com/electron/electron/tree/master/docs/api/protocol.md) -* [session](https://github.com/electron/electron/tree/master/docs/api/session.md) -* [webContents](https://github.com/electron/electron/tree/master/docs/api/web-contents.md) -* [Tray](https://github.com/electron/electron/tree/master/docs/api/tray.md) - -### Renderer Process Modülleri (Web Page): - -* [desktopCapturer](https://github.com/electron/electron/tree/master/docs/api/desktop-capturer.md) -* [ipcRenderer](https://github.com/electron/electron/tree/master/docs/api/ipc-renderer.md) -* [remote](https://github.com/electron/electron/tree/master/docs/api/remote.md) -* [webFrame](https://github.com/electron/electron/tree/master/docs/api/web-frame.md) - -### Her İki Süreç İçin Geçerli Modüller: - -* [clipboard](https://github.com/electron/electron/tree/master/docs/api/clipboard.md) -* [crashReporter](https://github.com/electron/electron/tree/master/docs/api/crash-reporter.md) -* [nativeImage](https://github.com/electron/electron/tree/master/docs/api/native-image.md) -* [screen](https://github.com/electron/electron/tree/master/docs/api/screen.md) -* [shell](https://github.com/electron/electron/tree/master/docs/api/shell.md) - -## Geliştirme - -* [Kodlama Stili](https://github.com/electron/electron/tree/master/docs/development/coding-style.md) -* [Kaynak Kod Dizin Yapısı](https://github.com/electron/electron/tree/master/docs/development/source-code-directory-structure.md) -* [NW.js(node-webkit adıyla bilinen) İle Arasındaki Teknik Farklılıklar](https://github.com/electron/electron/tree/master/docs/development/atom-shell-vs-node-webkit.md) -* [Build Sisyem Genel Bakış](https://github.com/electron/electron/tree/master/docs/development/build-system-overview.md) -* [(macOS) Build Komutları](https://github.com/electron/electron/tree/master/docs/development/build-instructions-osx.md) -* [(Windows) Build Komutları](https://github.com/electron/electron/tree/master/docs/development/build-instructions-windows.md) -* [(Linux) Build Komutları](https://github.com/electron/electron/tree/master/docs/development/build-instructions-linux.md) -* [(Windows) Hata Ayıklama Komutları](https://github.com/electron/electron/tree/master/docs/development/debug-instructions-windows.md) -* [Simge Sunucusu(Symbol Server) Hata Ayıklama Kurulumu](https://github.com/electron/electron/tree/master/docs/development/setting-up-symbol-server.md) diff --git a/docs-translations/tr-TR/api/accelerator.md b/docs-translations/tr-TR/api/accelerator.md deleted file mode 100644 index be1acfbed1cf..000000000000 --- a/docs-translations/tr-TR/api/accelerator.md +++ /dev/null @@ -1,49 +0,0 @@ -# Hızlandırıcı - -> Kısayol Tanımlama. - -Hızlandırıcılar `+` karakteriyle birden fazla niteleyici ile kombinlenebilir. - -Örnek: - -* `CommandOrControl+A` -* `CommandOrControl+Shift+Z` - -## Platform bilgileri - -Linux ve Windows'ta `Command` tuşu herhangi bir etki göstermez. Bunun yerine -`CommandOrControl` niteleyicisini kullanın. Bu işlem macOS'te `Command`, -Linux ve Windows'ta `Control` tuşunun işlevini sağlar. `Alt` ise tüm platformlarda mevcuttur. - -`Super` tuşu Windows ve Linux'te `Windows` tuşuna, macOS'te ise `Cmd` tuşuna eşleştirilmiştir. - -## Mevcut düzenleyiciler - -* `Command` (ya da kısa tanım için `Cmd`) -* `Control` (ya da kısa tanım için `Ctrl`) -* `CommandOrControl` (ya da kısa tanım için `CmdOrCtrl`) -* `Alt` -* `Option` -* `AltGr` -* `Shift` -* `Super` - -## Mevcut tuş kodları - -* `0`dan `9`a -* `A`dan `Z`ye -* `F1`dan `F24`e -* Noktalama işaretleri `~`, `!`, `@`, `#`, `$`, vb. -* `Plus` -* `Space` -* `Backspace` -* `Delete` -* `Insert` -* `Return` (ya da `Enter`) -* `Up`, `Down`, `Left` ve `Right` -* `Home` ve `End` -* `PageUp` ve `PageDown` -* `Escape` (ya da kısa tanım için `Esc`) -* `VolumeUp`, `VolumeDown` ve `VolumeMute` -* `MediaNextTrack`, `MediaPreviousTrack`, `MediaStop` ve `MediaPlayPause` -* `PrintScreen` diff --git a/docs-translations/tr-TR/api/file-object.md b/docs-translations/tr-TR/api/file-object.md deleted file mode 100644 index a99bdb329c5d..000000000000 --- a/docs-translations/tr-TR/api/file-object.md +++ /dev/null @@ -1,29 +0,0 @@ -# `File` nesnesi - -> Dosya ve dosya sistemlerinde HTML5 `File` nesnesini native olarak çalışır. - -DOM Dosya arayüzü HTML5 dosya API'sini kullanarak kullanıcılara doğrudan native dosyalar üzerinde çalışmasına olanak sağlar. Electron'da `File` arayüzü için `path` özelliğini eklemiştir. - -`dragged-onto-the-app`'dan tam dosya yolu alma örneği: - -```html -
- Dosyalarınızı buraya sürükleyin -
- - -``` diff --git a/docs-translations/tr-TR/project/README.md b/docs-translations/tr-TR/project/README.md deleted file mode 100644 index ea6ee9f09e8d..000000000000 --- a/docs-translations/tr-TR/project/README.md +++ /dev/null @@ -1,85 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/bc56v83355fi3369/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron/branch/master) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -:memo: Mevcut çeviriler: [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/README.md) | [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/README.md) | [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR/project/README.md) | [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW/project/README.md) | [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es/project/README.md)| [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR/project/README.md) - -Electron framework JavaScript, HTML ve CSS kullanarak çapraz platform -masaüstü uygulamaları yazmanıza yarar. Electron [Node.js](https://nodejs.org/) ile geliştirilmiş; -[Atom editor](https://github.com/atom/atom) ve birçok uygulama [apps](https://electron.atom.io/apps) tarafından kullanılmaktadir. - -Önemli duyurular için Twitter da [@ElectronJS](https://twitter.com/electronjs) adresini takip edin. - -Bu proje katılımcı sözleşmesine bağlıdır. Katılarak, -bu kodun sürdürülebilir olduğunu üstlenmeniz beklenmekte. -Lütfen uygun olmayan davranışları electron@github.com'a rapor edin. - -## İndirme Bağlantıları - -Electron prebuilt mimarisini yüklemek için, -[`npm`](https://docs.npmjs.com/): - -```sh -# Geliştirme bağımlılığı olarak yükleyin -npm install electron --save-dev - -# `electron` komutunu global olarak $PATH'a yükleyin -npm install electron -g -``` - -Prebuilt mimarileri, debug sembolleri ve fazlası için -[releases](https://github.com/electron/electron/releases) sayfasını ziyaret edin. - -### Alternatif Bağlantılar - -- [China](https://npm.taobao.org/mirrors/electron) - -## Dokümantasyon - -Klavuz ve API referansları [docs](https://github.com/electron/electron/tree/master/docs) klasöründe bulunabilir. -Aynı zamanda nasıl kurulum gerçekleştirileceği ve Electron'un gelişimine nasıl katılacağınızı -açıklayan dosyalar içermektedir. - -## Dökümantasyon Çevirileri - -- [Brazilian Portuguese](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [Korean](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [Japanese](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [Spanish](https://github.com/electron/electron/tree/master/docs-translations/es) -- [Simplified Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [Traditional Chinese](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [Turkish](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [Thai](https://github.com/electron/electron/tree/master/docs-Translations/th-TH) -- [Ukrainian](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [Russian](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [French](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) - -## Hızlı Başlangıç - -Minimal Electron uygulamasını calışırken görmek için [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -repository'ni klonla ve çalıştır. - -## Topluluk - -Asağıdaki sayfalardan sorular sorabilir ve topluluk ile etkileşime geçebilirsiniz: - -- [`electron`](http://discuss.atom.io/c/electron) Atom forumundaki kategoriler -- `#atom-shell` Freenode kanal'ı -- [`Atom`](http://atom-slack.herokuapp.com/) Slack kanal'ı -- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(Korean)* -- [`electron-jp`](https://electron-jp.slack.com) *(Japanese)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(Turkish)* -- [`electron-id`](https://electron-id.slack.com) *(Indonesia)* - -Topluluk tarafından sağlanan örnek uygulamaları, aracları ve kaynaklara ulaşmak için -[awesome-electron](https://github.com/sindresorhus/awesome-electron) sayfasını ziyaret et. - -## Lisans - -[MIT](https://github.com/electron/electron/blob/master/LICENSE) - -Electron veya Github logolarını kullandığınızda, [GitHub logo guidelines](https://github.com/logos) sayfasını okuduğunuzdan emin olun. diff --git a/docs-translations/tr-TR/styleguide.md b/docs-translations/tr-TR/styleguide.md deleted file mode 100644 index a1f171d8b065..000000000000 --- a/docs-translations/tr-TR/styleguide.md +++ /dev/null @@ -1,95 +0,0 @@ -# Electron Dokümantasyonu Stil Rehberi - -Size uygun bölümü bulun: [Electron Dokümantasyonunu okumak](#reading-electron-documentation) -ya da [Electron Dokümantasyonunu yazmak](#writing-electron-documentation). - -## Electron Dokümantasyonunu Yazmak - -Electron Dokümantasyonunu geliştirmek için aşağıdaki yöntemleri takip edin. - -- Her sayfada en fazla bir tane `h1` etiketi olmalıdır. -- Kod bloklarında `cmd` yerine `bash` kullanın.(syntax highlighter için). -- `h1` Başlığı nesne ismiyle eşleşmeli (ör. `browser-window` → - `BrowserWindow`). - - Hyphen separated filenames, however, are fine. -- No headers following headers, add at least a one-sentence description. -- Methods headers are wrapped in `code` ticks. -- Event headers are wrapped in single 'quotation' marks. -- No nesting lists more than 2 levels (unfortunately because of markdown - renderer). -- Add section titles: Events, Class Methods and Instance Methods. -- Use 'will' over 'would' when describing outcomes. -- Events and methods are `h3` headers. -- Optional arguments written as `function (required[, optional])`. -- Optional arguments are denoted when called out in list. -- Line length is 80-column wrapped. -- Platform specific methods are noted in italics following method header. - - ```### `method(foo, bar)` _macOS_``` -- Prefer 'in the ___ process' over 'on' - -### Dokümantasyon Çevirisi - -Electron Dokümantasyonunun çevirileri `docs-translations` klasörü içerisindedir. - -To add another set (or partial set): - -- Create a subdirectory named by language abbreviation. -- Within that subdirectory, duplicate the `docs` directory, keeping the - names of directories and files same. -- Translate the files. -- Update the `README.md` within your language directory to link to the files - you have translated. -- Add a link to your translation directory on the main Electron [README](https://github.com/electron/electron#documentation-translations). - -## Electron Dokümantasyonunu Okumak - -Electron Dokümantasyon sözdizimini(syntax) anlayabileceğiniz bir kaç ipucu: - -### Metodlar - -[Method](https://developer.mozilla.org/en-US/docs/Glossary/Method) dokümantasyonunun bir örneği: - ---- - -`methodName(required[, optional]))` - -* `require` String (**required**) -* `optional` Integer - ---- - -The method name is followed by the arguments it takes. Optional arguments are -notated by brackets surrounding the optional argument as well as the comma -required if this optional argument follows another argument. - -Below the method is more detailed information on each of the arguments. The type -of argument is notated by either the common types: -[`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), -[`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), -[`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object), -[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -or a custom type like Electron's [`webContent`](https://github.com/electron/electron/tree/master/docs/api/web-content.md). - -### Events - -[event](https://developer.mozilla.org/en-US/docs/Web/API/Event) Dokümantasyonunun bir örneği: - ---- - -Event: 'wake-up' - -Returns: - -* `time` String - ---- - -The event is a string that is used after a `.on` listener method. If it returns -a value it and its type is noted below. If you were to listen and respond to -this event it might look something like this: - -```javascript -Alarm.on('wake-up', function (time) { - console.log(time) -}) -``` diff --git a/docs-translations/tr-TR/tutorial/application-distribution.md b/docs-translations/tr-TR/tutorial/application-distribution.md deleted file mode 100644 index 319f8af787e5..000000000000 --- a/docs-translations/tr-TR/tutorial/application-distribution.md +++ /dev/null @@ -1,178 +0,0 @@ -# Application Distribution - -Electron uygulamanızı dağıtmak için önce Electron nun [prebuilt mimarilerini] -(https://github.com/electron/electron/releases) indirmeniz gerekmektedir. -Sonrasında, uygulamanızın bulundugu klasör `app` şeklinde isimlendirilmeli ve -Electron kaynaklar klasörüne aşagıda gösterildiği gibi yerleştirilmelidir. -Unutmayın, Electronun prebuilt mimarileri aşağıdaki örneklerde `electron/` -şeklinde belirtilmiştir. - - -MacOS da: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -Windows ve Linux da: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -Ardından `Electron.app` (veya `electron` Linux'da, `electron.exe` Windows'da) şeklinde çalıstırın, -ve Electron uygulama şeklinde çalışacaktır. -`electron` klasörü son kullanıcıya aktaracağınız dağıtımınız olacaktır. - -## Uygulamanın bir dosya şeklinde paketlenmesi - -Tüm kaynak kodlarını kopyalama yoluyla uygulamanızı dağıtmak haricinde, -uygulamanızı [asar](https://github.com/electron/asar) ile arşiv haline getirerek, -kaynak kodlarınızın kullanıcılar tarafından görülmesini engelliye bilirsiniz. - -`app` klasörü yerine `asar` arşiv dosyası kullanmak için, arşiv dosyanızı `app.asar` -şeklinde isimlendirmeniz gerekiyor, ve bu dosyayı Electron'nun kaynak klasörüne aşağıdaki -gibi yerleştirmelisiniz. Böylelikle Electron arşivi okuyup ondan başlayacaktır. - - -MacOS'da: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -Windows ve Linux'da: - -```text -electron/resources/ -└── app.asar -``` - -Daha fazla bilgi için [Application packaging](application-packaging.md). - -## İndirilen mimarileri yeniden adlandırma - -Uygulamanızı Electron ile paketledikten sonra ve kullanıcılara uygulamanızı dağıtmadan önce -adını değiştirmek isteye bilirsiniz. - -### Windows - -`electron.exe` istediğiniz şekilde yeniden adlandırabilirsiniz. Icon ve diğer -bilgileri bu gibi araçlar [rcedit](https://github.com/atom/rcedit) ile düzenleye bilirsiniz. - -### macOS - -`Electron.app`'i istediğiniz şekilde yeniden adlandırabilirsiniz, ve aşağıdaki dosyalarda -`CFBundleDisplayName`, `CFBundleIdentifier` ve `CFBundleName` kısımlarınıda düzenlemelisiniz. - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -Görev yöneticisinde `Electron Helper` şeklinde göstermek yerine, -isterseniz helper uygulamasınında adını değiştire bilirsiniz, -ancak dosyanın adını açılabilir olduğundan emin olun. - -Yeniden adlandırılmış uygulamanın klasör yapısı bu şekilde görünecektir: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -`electron` dosyasını istediğiniz şekilde yeniden adlandırabilirsiniz. - -## Paketleme Araçları - -Uygulamanızı manuel şekilde paketlemek dışında, üçüncü parti -paketleme araçlarıylada otomatik olarak ayni şekilde paketliye bilirsiniz: - -* [electron-builder](https://github.com/electron-userland/electron-builder) -* [electron-packager](https://github.com/electron-userland/electron-packager) - -## Kaynaktan yeniden kurulum yoluyla isim değişikliği - -Ürün adını değiştirip, kaynaktan kurulum yoluylada Electron'nun adını değiştirmek mümkün. -Bunun için `atom.gyp` dosyasını yeniden modifiye edip, tekrardan temiz bir kurulum yapmalısınız. - -### grunt-build-atom-shell - -Manuel olarak Electron kodlarını kontrol edip tekrar kurulum yapmak biraz zor olabilir, -bu yüzden tüm bu işlemleri otomatik olarak gerçekleştirecek bir Grunt görevi oluşturuldu: -[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -Bu görev otomatik olarak `.gyp` dosyasını düzenleyecek, kaynaktan kurulumu gerçekleştirecek, -sonrasında ise uygulamanızın doğal Node modüllerini, yeni yürütülebilen isim ile eşleştirmek icin -tekrardan kuracaktır. - -### Özel bir Electron kopyası oluşturma - -Electron'un size ait bir kopyasını oluşturmak, neredeyse uygulamanızı kurmak için hiç ihtiyacınız -olmayacak bir işlemdir, "Production Level" uygulamalarda buna dahildir. -`electron-packager` veya `electron-builder` gibi araçlar kullanarak yukarıda ki işlemleri -gerçekleştirmeksizin, "Rebrand" Electron işlemini uygulaya bilirsiniz. - -Eğer kendinize ait yüklenemiyen veya resmi versiyondan red edilmiş, -direk olarak Electron a paketlediğiniz C++ kodunuz var ise, -öncelikle Electron'un bir kopyasını oluşturmalısınız. -Electron'nun destekleyicileri olarak, senaryonuzun çalışmasını çok isteriz, -bu yüzden lütfen yapacağınız değişiklikleri Electron'nun resmi versiyonuna -entegre etmeye calışın, bu sizin için daha kolay olacaktır, ve yardimlarınız -için cok minnettar olacağız. - -#### surf-build İle Özel Dağıtım oluşturulması - -1. Npm yoluyla [Surf](https://github.com/surf-build/surf) yükleyin: - `npm install -g surf-build@latest` - - -2. Yeni bir S3 bucket ve aşağıdakı boş klasör yapısını oluşturun: - - ``` - - atom-shell/ - - symbols/ - - dist/ - ``` - -3. Aşağıdaki Ortam Değişkenlerini ayarlayın: - - * `ELECTRON_GITHUB_TOKEN` - GitHub üzerinden dağıtım oluşturan token - * `ELECTRON_S3_ACCESS_KEY`, `ELECTRON_S3_BUCKET`, `ELECTRON_S3_SECRET_KEY` - - node.js bağlantılarını ve sembollerini yükleyeceğiniz yer - * `ELECTRON_RELEASE` - `true` şeklinde ayarlayın ve yükleme işlemi çalışacaktır, - yapmamanız halinde, `surf-build` sadece CI-type kontrolü yapacak, - tüm pull isteklerine uygun hale getirecektir. - * `CI` - `true` olarak ayarlayın yoksa çalışmayacaktır. - * `GITHUB_TOKEN` - bununla aynı şekilde ayarlayın `ELECTRON_GITHUB_TOKEN` - * `SURF_TEMP` - Windowsda ki 'path too long' sorunundan kaçınmak için `C:\Temp` şeklinde ayarlayın - * `TARGET_ARCH` - `ia32` veya `x64` şeklinde ayarlayın - -4. `script/upload.py` dosyasında ki `ELECTRON_REPO` kısmını, kendi kopyanız ile değiştirmek _zorundasınız_, - özellikle eğer bir Electron proper destekleyicisi iseniz. - -5. `surf-build -r https://github.com/MYORG/electron -s YOUR_COMMIT -n 'surf-PLATFORM-ARCH'` - -6. Kurulum bitene kadar uzunca bekleyin. diff --git a/docs-translations/tr-TR/tutorial/quick-start.md b/docs-translations/tr-TR/tutorial/quick-start.md deleted file mode 100644 index 792e8cbeacdb..000000000000 --- a/docs-translations/tr-TR/tutorial/quick-start.md +++ /dev/null @@ -1,251 +0,0 @@ -# Hızlı Başlangıç - -Electron, zengin native(işletim sistemi) API runtime sağlayarak, saf Javascript -ile masaüstü uygulamalar geliştirmenize yarar. Electron'u Node.js in, web serverları -yerine masaüstü uygulamalara odaklanmış bir variyasyonu olarak kabul edebilirsiniz. - -Bu Electronun, grafik kullanıcı arayüzüne bir JavaScript bağlantısı olduğu -anlamına gelmez. Aksine, Electron web sayfalarını GUI'si olarak kullanır, -yani onu Javascript tarafından kontrol edilen bir minimal Chromium tarayıcısı -olarak görebilirsiniz. - -### Ana İşlem - -Electron da, `package.json` nun `main` skriptini cağıran işlem _the main process__ dir. -Ana işlemde çalışan bu script, GUI'yi web sayfalarını oluşturarak gösterebilir. - -### Render İşlemi - -Electron, web sayfalarını görüntülemek için Chromium kullandığından, -aynı zamanda Chromiumun multi-işlem mimarisinide kullanmaktadır. -Electron da calıştırılan her web sayfası, __the renderer process__ -adı altında kendi işlemlerini çalıştırırlar. - -Normal tarayıcılarda, web sayfaları genellikle korumalı bir ortamda çalışır ve -yerel kaynaklara erişmesine izin verilmez. Bununla birlikte, elektron kullanıcıları, -alt düzey işletim sistemi etkileşimlerine izin veren web sayfalarında -Node.js API'lerini kullanma imkanina sahiplerdir. - -### Ana işlem ile render işlemi arasındaki farklar - -Ana işlem, `BrowserWindow` örneklerini oluşturarak, web sayfalarını hazır -hale getirir. Her bir `BrowserWindow` örneği web sayfasını kendi render -işleminde çalıştırır. Eger bir `BrowserWindow` örneği ortadan kaldırıldıysa, -bununla bağlantılı olan render işlemide aynı şekilde sonlandırılır. - -Ana işlem tüm web sayfaları ve onların ilgili olduğu render işlemlerini yönetir. -Her bir render işlemi izole edilmiş ve sadece kendisinde çalışan web sayfasıyla ilgilenir. - -Native GUI ile çalışan API ları web sayfalarında çalıştırmaya izin verilmemektedir, -çünkü native GUI kaynaklarının web sayfalarında yönetimi çok tehlikeli ve -kaynakların sızdırılması gayet kolaydır. Eğer GUI operasyonlarını bir web sayfasinda -gerçekleştirmek istiyorsanız, web sayfasının render işlemi, ana işlem ile, bu tür -işlemleri gerçekleştirilmesini talep etmek için kommunikasyon halinde olmalı. - -Electron da ana işlem ve render işlemi arasında birden fazla kommunikasyon yolu vardır. -[`ipcRenderer`](../api/ipc-renderer.md) gibi ve mesaj gönderimi icin -[`ipcMain`](../api/ipc-main.md) modülleri, RPC tarzında kommunikasyon -için ise [remote](../api/remote.md) modülü barındırmakta. -Ayrıca SSS başlıkları [how to share data between web pages][share-data] adresinde bulunabilir. - -## İlk Electron uygulamanızı yazın - -Electron uygulaması genellikle aşağıdaki gibi yapılandırılmıştır: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -`package.json` dosyasının formatı tamamen Node modüllerine benzer veya aynıdır ve -`main` şeklinde adlandırılmış script uygulamanızı başlatan komut dosyasıdır, -bu komut dosyası daha sonra main process'i çalıştıracak dosyadır. -`package.json` dosyasınızın bir örneği aşağıdaki gibi olabilir: - - -```json -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__Note__: Eğer `package.json` dosyasında `main` kısmı bulunmuyorsa, Electron standart olarak -`index.js` dosyasını cağıracaktır. - -`main.js` dosyası pencereleri oluşturur, sistem durumlarını handle eder, tipik bir -örnek asağıdaki gibidir: - -```javascript -const {app, BrowserWindow} = require('electron') -const path = require('path') -const url = require('url') - -// Pencere objesini daima global referans olarak tanımla, aksi takdirde, -// eğer JavaScript objesi gereksiz veriler toplayacağı için, pencere -// otomatik olarak kapanacaktır. - -let win - -function createWindow () { - // Tarayıcı pencerelerini oluşturur. - win = new BrowserWindow({width: 800, height: 600}) - - // ve uygulamanın index.html sayfasını yükler. - win.loadURL(url.format({ - pathname: path.join(__dirname, 'index.html'), - protocol: 'file:', - slashes: true - })) - - // DevTools her uygulama başlatıldığında açılır. - - win.webContents.openDevTools() - - // Pencere kapandıktan sonra çağrılacaktır. - win.on('closed', () => { - // Dereference the window object, usually you would store windows - // in an array if your app supports multi windows, this is the time - // when you should delete the corresponding element. - win = null - }) -} - -// Bu metod Electronun başlatılması tamamlandıktan sonra -// çagrılacak ve yeni tarayıcı pencereleri açmaya hazır hale gelecektir. -// Bazı API lar sadece bu event gerçekleştikten sonra kullanılabilir. - -app.on('ready', createWindow) - -// Eğer tüm pencereler kapandıysa, çıkış yap. - -app.on('window-all-closed', () => { - // On macOS it is common for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (win === null) { - createWindow() - } -}) - -// Bu sayfada, uygulamanızın spesifik main process kodlarını dahil edebilirsiniz. -// Aynı zamanda bu kodları ayrı dosyalar halinde oluştura bilir -// ve buraya require yoluyla ekleye bilirsiniz. -``` - -Son olarak `index.html` yani göstermek istediğiniz web sayfası: - -```html - - - - - Hello World! - - -

Hello World!

- We are using node , - Chrome , - and Electron . - - -``` - -## Uygulamanızı çalıştırın - -`main.js`, `index.html`, ve `package.json` dosyalarını oluşturduktan sonra, -uygulamanızı lokal olarak test ederek, doğru çalışıp çalışmadığını -test etmek isteye bilirsiniz. O halde aşağıdaki yönergeleri takip edin: - -### `electron` - -[`electron`](https://github.com/electron-userland/electron-prebuilt), -Electron'un pre-compiled versiyonunu içeren bir `npm` modülüdür. - - -Eğer bunu global olarak `npm` yoluyla yüklediyseniz, o halde sadece aşağıdaki komutu -uygulamanızın kaynak klasöründe çalıstırmanız yeterlidir: - -```bash -electron . -``` - -Eğer lokal olarak yüklediyseniz, o zaman aşağıda ki gibi -çalıştırın: - -#### macOS / Linux - -```bash -$ ./node_modules/.bin/electron . -``` - -#### Windows - -```bash -$ .\node_modules\.bin\electron . -``` - -### Manuel olarak indirilmiş Electron mimarisi - -Eğer Electronu manuel olarak indirdiyseniz, aynı zamanda dahili olan -mimariyide kullanarak, uygulamanızı çalıştıra bilirsiniz. - -#### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -#### Linux - -```bash -$ ./electron/electron your-app/ -``` - -#### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` Electron un dağı₺tım paketinin bir parçasıdır, -bunu [adresinden](https://github.com/electron/electron/releases) indirebilirsiniz. - -### Dağıtım olarak çalıştır - -Uygulamanızı yazdıktan sonra, bir dağıtım oluşturmak için -[Application Distribution](./application-distribution.md) -sayfasında ki yönergeleri izleyin ve daha sonra arşivlenmiş uygulamayı çalıştırın. - -### Örneği deneyin - -[`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) repository klonlayarak bu eğitimdeki kodu çalıştıra bilirsiniz. - -**Note**: Bu işlemleri uygulamak için [Git](https://git-scm.com) ve [Node.js](https://nodejs.org/en/download/) ([npm](https://npmjs.org) da bununla birlikte gelir) sisteminizde yüklü olması gerekmektedir. - -```bash -# Repository klonla -$ git clone https://github.com/electron/electron-quick-start -# Electron repositorye git -$ cd electron-quick-start -# Gerekli kütüphaneleri yükle -$ npm install -# Uygulamayı çalıştır -$ npm start -``` - -Daha fazla örnek uygulama için, harika electron topluluğu tarafından oluşturulan, -[list of boilerplates](https://electron.atom.io/community/#boilerplates) -sayfasını ziyaret edin. - -[share-data]: ../faq.md#how-to-share-data-between-web-pages diff --git a/docs-translations/tr-TR/tutorial/supported-platforms.md b/docs-translations/tr-TR/tutorial/supported-platforms.md deleted file mode 100644 index 4cc131b103a5..000000000000 --- a/docs-translations/tr-TR/tutorial/supported-platforms.md +++ /dev/null @@ -1,29 +0,0 @@ -# Desteklenen platformlar - -Aşağıdaki platformlar Electron tarafından desteklenmektedir: - -### macOS - -MacOS için sadece 64bit mimariler sağlanmakta olup, desteklenen minimum macOS versiyonu 10.9 dur. - -### Windows - -Windows 7 ve gelişmiş versiyonlar desteklenmektedir, eski işletim sistemleri desteklenmemektedir -(ve çalışmayacaktır). - -Windows `ia32` (`x86`) ve `x64` (`amd64`) mimarileri desteklenmektedir. -Unutmayın, `ARM` mimarisi al₺tında çalışan Windows işletim sistemleri şuan için desteklenmemektedir. - -### Linux - -Electron `ia32` (`i686`) ve `x64` (`amd64`) Prebuilt mimarileri Ubuntu 12.04 üzerinde kurulmuştur, -`arm` mimarisi ARM v7 ye karşılık olarak, hard-float ABI ve NEON Debian Wheezy ile kurulmuştur. - -Prebuilt -Prebuilt mimarisi ancak Electron'nun yapı platformu ile bağlantılı olan kütüphaneleri içeren dağıtımlar ile çalışır. -Bu yüzden sadece Ubuntu 12.04 üzerinde çalışması garanti ediliyor, fakat aşagidaki platformlarında -Electron Prebuilt mimarisini çalıştıra bileceği doğrulanmıştır. - -* Ubuntu 12.04 ve sonrası -* Fedora 21 -* Debian 8 diff --git a/docs-translations/uk-UA/README.md b/docs-translations/uk-UA/README.md deleted file mode 100644 index 414c2d9eccf8..000000000000 --- a/docs-translations/uk-UA/README.md +++ /dev/null @@ -1,83 +0,0 @@ -Будь ласка, переконайтесь що ви використовуєте документацію, яка відповідає вашій версії Electron. -Номер версії повинен бути присутнім в URL адресі сторінки. Якщо це не так, Ви можливо, -використовуєте документацію із development гілки, -яка може містити зміни в API, які не сумісні з вашою версією Electron. -Якщо це так, тоді Ви можете переключитись на іншу версію документації -із списку [доступних версій](https://electron.atom.io/docs/) на atom.io, -або якщо ви використовуєте інтеррфейс GitHub, -тоді відкрийте список "Switch branches/tags" і виберіть потрібну вам -версію із списку тегів. - -## Довідник - -* [Підтримувані платформи](tutorial/supported-platforms.md) -* [Application Distribution](tutorial/application-distribution.md) -* [Mac App Store Submission Guide](tutorial/mac-app-store-submission-guide.md) -* [Упаковка додатку](tutorial/application-packaging.md) -* [Використання Native Node модулів](tutorial/using-native-node-modules.md) -* [Debugging Main Process](tutorial/debugging-main-process.md) -* [Використання Selenium and WebDriver](tutorial/using-selenium-and-webdriver.md) -* [DevTools Extension](tutorial/devtools-extension.md) -* [Використання Pepper Flash плагіну](tutorial/using-pepper-flash-plugin.md) - -## Підручники - -* [Швидкий старт](tutorial/quick-start.md) -* [Desktop Environment Integration](tutorial/desktop-environment-integration.md) -* [Online/Offline Event Detection](tutorial/online-offline-events.md) - -## API References - -* [Synopsis](api/synopsis.md) -* [Process Object](api/process.md) -* [Supported Chrome Command Line Switches](api/chrome-command-line-switches.md) -* [Environment Variables](api/environment-variables.md) - -### Користувальницькі елементи DOM - -* [`File` Object](api/file-object.md) -* [`` Tag](api/webview-tag.md) -* [`window.open` Function](api/window-open.md) - -### Модулі для Main Process: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [webContents](api/web-contents.md) -* [Tray](api/tray.md) - -### Модулі для Renderer Process (Web Page): - -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### Модулі для Both Processes: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## Розробка - -* [Стиль кодування](development/coding-style.md) -* [Source Code Directory Structure](development/source-code-directory-structure.md) -* [Technical Differences to NW.js (formerly node-webkit)](development/atom-shell-vs-node-webkit.md) -* [Build System Overview](development/build-system-overview.md) -* [Build Instructions (macOS)](development/build-instructions-osx.md) -* [Build Instructions (Windows)](development/build-instructions-windows.md) -* [Build Instructions (Linux)](development/build-instructions-linux.md) -* [Setting Up Symbol Server in debugger](development/setting-up-symbol-server.md) diff --git a/docs-translations/uk-UA/styleguide.md b/docs-translations/uk-UA/styleguide.md deleted file mode 100644 index 6c711387615f..000000000000 --- a/docs-translations/uk-UA/styleguide.md +++ /dev/null @@ -1,97 +0,0 @@ -# Electron Documentation Styleguide - -Find the appropriate section for your task: [reading Electron documentation](#reading-electron-documentation) -or [writing Electron documentation](#writing-electron-documentation). - -## Написання документації для Electron - -Існує кілька способів за допомогою яких ми ствоюємо документацію для Electron. - -- Maximum one `h1` title per page. -- Use `bash` instead of `cmd` in code blocks (because of syntax highlighter). -- Doc `h1` titles should match object name (i.e. `browser-window` → - `BrowserWindow`). - - Hyphen separated filenames, however, are fine. -- No headers following headers, add at least a one-sentence description. -- Methods headers are wrapped in `code` ticks. -- Event headers are wrapped in single 'quotation' marks. -- No nesting lists more than 2 levels (unfortunately because of markdown - renderer). -- Add section titles: Events, Class Methods and Instance Methods. -- Use 'will' over 'would' when describing outcomes. -- Events and methods are `h3` headers. -- Optional arguments written as `function (required[, optional])`. -- Optional arguments are denoted when called out in list. -- Line length is 80-column wrapped. -- Platform specific methods are noted in italics following method header. - - ```### `method(foo, bar)` _macOS_``` -- Prefer 'in the ___ process' over 'on' - -### Переклад документації - -Переклади документації знаходяться в дерикторії `docs-translations`. - -Щоб додати переклад (або частковий переклад) документації: - -- Create a subdirectory named by language abbreviation. -- Within that subdirectory, duplicate the `docs` directory, keeping the - names of directories and files same. -- Translate the files. -- Update the `README.md` within your language directory to link to the files - you have translated. -- Add a link to your translation directory on the main Electron [README](https://github.com/electron/electron#documentation-translations). - -## Читання документації Electron - -Кілька порад для того щоб легше зрозуміти синтаксис документації Electron. - -### Методи - -Приклад [методу](https://developer.mozilla.org/en-US/docs/Glossary/Method) -в документації: - ---- - -`methodName(required[, optional]))` - -* `require` String, **required** -* `optional` Integer - ---- - -The method name is followed by the arguments it takes. Optional arguments are -notated by brackets surrounding the optional argument as well as the comma -required if this optional argument follows another argument. - -Below the method is more detailed information on each of the arguments. The type -of argument is notated by either the common types: -[`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), -[`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number), -[`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object), -[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -or a custom type like Electron's [`webContent`](api/web-content.md). - -### Події - -Приклад [події](https://developer.mozilla.org/en-US/docs/Web/API/Event) -в документації: - ---- - -Подія: 'wake-up' - -Повердає: - -* `time` Текст - ---- - -The event is a string that is used after a `.on` listener method. If it returns -a value it and its type is noted below. If you were to listen and respond to -this event it might look something like this: - -```javascript -Alarm.on('wake-up', function (time) { - console.log(time) -}) -``` diff --git a/docs-translations/zh-CN/README.md b/docs-translations/zh-CN/README.md deleted file mode 100644 index c6ff17cda90f..000000000000 --- a/docs-translations/zh-CN/README.md +++ /dev/null @@ -1,102 +0,0 @@ -请确认你的使用的文档匹配你的 Electron 版本。你可以在页面的 URL 中找到版本号。 -如果不是,你可能在使用开发分支版本的文档,其中包括了一些与你的 Electron 版本不兼容的 API。 -如果想要访问老版本的文档,你可以通过 GitHub 的[切换分支功能](https://github.com/electron/electron/tree/v1.4.0),在下拉菜单中选择与你的版本匹配的分支。 - -## 常见问题 - -这里是一些被经常问到的问题,在提 issue 之前请先看一下这里。 - -+ [Electron 常见问题](faq/electron-faq.md) - -## 向导 - -* [术语表](glossary.md) -* [支持平台](tutorial/supported-platforms.md) -* [安全性](tutorial/security.md) -* [Electron 版本管理](tutorial/electron-versioning.md) -* [分发应用](tutorial/application-distribution.md) -* [提交应用到 Mac App Store](tutorial/mac-app-store-submission-guide.md) -* [Windows 商店提交指引](tutorial/windows-store-guide.md) -* [打包应用](tutorial/application-packaging.md) -* [使用 Node 原生模块](tutorial/using-native-node-modules.md) -* [主进程调试](tutorial/debugging-main-process.md) -* [使用 Selenium 和 WebDriver](tutorial/using-selenium-and-webdriver.md) -* [使用开发人员工具扩展](tutorial/devtools-extension.md) -* [使用 Pepper Flash 插件](tutorial/using-pepper-flash-plugin.md) -* [使用 Widevine CDM 插件](tutorial/using-widevine-cdm-plugin.md) -* [通过自动化持续集成系统(CI)进行测试 (Travis, Jenkins)](tutorial/testing-on-headless-ci.md) -* [离屏渲染](tutorial/offscreen-rendering.md) -* [快捷键](tutorial/keyboard-shortcuts.md) - -## 教程 - -* [快速入门](tutorial/quick-start.md) -* [桌面环境集成](tutorial/desktop-environment-integration.md) -* [在线/离线事件探测](tutorial/online-offline-events.md) -* [交互式解释器(REPL)](tutorial/repl.md) - -## API文档 - -* [简介](api/synopsis.md) -* [进程对象](api/process.md) -* [支持的 Chrome 命令行开关](api/chrome-command-line-switches.md) -* [环境变量](api/environment-variables.md) - -### 自定义的 DOM 元素: - -* [`File` 对象](api/file-object.md) -* [`` 标签](api/webview-tag.md) -* [`window.open` 函数](api/window-open.md) - -### 在主进程内可用的模块: - -* [app](api/app.md) -* [autoUpdater](api/auto-updater.md) -* [BrowserWindow](api/browser-window.md) -* [contentTracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [globalShortcut](api/global-shortcut.md) -* [ipcMain](api/ipc-main.md) -* [Menu](api/menu.md) -* [MenuItem](api/menu-item.md) -* [net](api/net.md) -* [powerMonitor](api/power-monitor.md) -* [powerSaveBlocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [systemPreferences](api/system-preferences.md) -* [Tray](api/tray.md) -* [webContents](api/web-contents.md) - -### 在渲染进程(网页)内可用的模块: - -* [desktopCapturer](api/desktop-capturer.md) -* [ipcRenderer](api/ipc-renderer.md) -* [remote](api/remote.md) -* [webFrame](api/web-frame.md) - -### 在两种进程中都可用的模块: - -* [clipboard](api/clipboard.md) -* [crashReporter](api/crash-reporter.md) -* [nativeImage](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## 开发 - -* [代码规范](development/coding-style.md) -* [在 C++ 代码中使用 clang-format 工具](development/clang-format.md) -* [源码目录结构](development/source-code-directory-structure.md) -* [与 NW.js(原 node-webkit)在技术上的差异](development/atom-shell-vs-node-webkit.md) -* [构建系统概览](development/build-system-overview.md) -* [构建步骤(macOS)](development/build-instructions-osx.md) -* [构建步骤(Windows)](development/build-instructions-windows.md) -* [构建步骤(Linux)](development/build-instructions-linux.md) -* [调试步骤 (macOS)](development/debugging-instructions-macos.md) -* [调试步骤 (Windows)](development/debug-instructions-windows.md) -* [在调试中使用 Symbol Server](development/setting-up-symbol-server.md) -* [文档风格指南](styleguide.md) -* [升级 Chrome](development/upgrading-chrome.md) -* [Chromium 开发](development/chromium-development.md) -* [V8 开发](development/v8-development.md) diff --git a/docs-translations/zh-CN/api/accelerator.md b/docs-translations/zh-CN/api/accelerator.md deleted file mode 100644 index 0e6d44b742be..000000000000 --- a/docs-translations/zh-CN/api/accelerator.md +++ /dev/null @@ -1,62 +0,0 @@ -# Accelerator - -一个 `Accelerator` 是一个表示某个快捷键组合的字符串。它包含了用 `+` 连接的若干个按键。 - -例如: - -* `CommandOrControl+A` -* `CommandOrControl+Shift+Z` - -快捷键使用 [`globalShortcut`](global-shortcut.md)里的 [`register`](global-shortcut.md#globalshortcutregisteraccelerator-callback) 方法注册 - -```javascript -const {app, globalShortcut} = require('electron') - -app.on('ready', () => { - // Register a 'CommandOrControl+Y' shortcut listener. - globalShortcut.register('CommandOrControl+Y', () => { - // Do stuff when Y and either Command/Control is pressed. - }) -}) -``` - -## 运行平台相关的提示 - -在 Linux 和 Windows 上,`Command` 键并不存在,因此我们通常用 `CommandOrControl` 来表示“在 macOS 下为 `Command` 键,但在 -Linux 和 Windows 下为 `Control` 键。 - -使用 `Alt` 键 代替 `Option`。`Option` 键只在 macOS 系统上存在,而 `Alt` 键在任何系统上都有效。 - -`Super` 键是指 Linux 和 Windows 上的 `Windows` 键,但是在 macOS 下为 `Cmd` 键。 - -## 可用的功能按键 - -* `Command`(缩写为 `Cmd`) -* `Control`(缩写为 `Ctrl`) -* `CommandOrControl`(缩写为 `CmdOrCtrl`) -* `Alt` -* `Option` -* `AltGr` -* `Shift` -* `Super` - -## 可用的普通按键 - -* `0` 到 `9` -* `A` 到 `Z` -* `F1` 到 `F24` -* 类似与 `~`、`!`、`@`、`#`、`$` 的标点符号。 -* `Plus` -* `Space` -* `Tab` -* `Backspace` -* `Delete` -* `Insert` -* `Return`(和 `Enter` 等同) -* `Up`、`Down`、`Left` 和 `Right` -* `Home` 和 `End` -* `PageUp` 和 `PageDown` -* `Escape`(缩写为 `Esc`) -* `VolumeUp`、`VolumeDown` 和 `VolumeMute` -* `MediaNextTrack`、`MediaPreviousTrack`、`MediaStop` 和 `MediaPlayPause` -* `PrintScreen` diff --git a/docs-translations/zh-CN/api/app.md b/docs-translations/zh-CN/api/app.md deleted file mode 100644 index 04680d548ba5..000000000000 --- a/docs-translations/zh-CN/api/app.md +++ /dev/null @@ -1,856 +0,0 @@ -# app - -> `app` 模块是为了控制整个应用的生命周期设计的。 - -进程: [主进程](../tutorial/quick-start.md#main-process) - -下面的这个例子将会展示如何在最后一个窗口被关闭时退出应用: - -```javascript -const {app} = require('electron') -app.on('window-all-closed', () => { - app.quit() -}) -``` - -## 事件列表 - -`app` 对象会触发以下的事件: - -### 事件:'will-finish-launching' - -当应用程序完成基础的启动的时候被触发。在 Windows 和 Linux 中, -`will-finish-launching` 事件与 `ready` 事件是相同的; 在 macOS 中, -这个事件相当于 `NSApplication` 中的 `applicationWillFinishLaunching` 提示。 -你应该经常在这里为 `open-file` 和 `open-url` 设置监听器,并启动崩溃报告和自动更新。 - -在大多数的情况下,你应该只在 `ready` 事件处理器中完成所有的业务。 - -### 事件:'ready' - -返回: - -* `launchInfo` Object _macOS_ - -当 Electron 完成初始化时被触发。在 macOs 中, 如果从通知中心中启动,那么`launchInfo` 中的`userInfo`包含 -用来打开应用程序的 `NSUserNotification` 信息。你可以通过调用 `app.isReady()` -方法来检查此事件是否已触发。 - -### 事件:'window-all-closed' - -当所有的窗口都被关闭时触发。 - -如果您没有监听此事件,当所有窗口都已关闭时,默认值行为是退出应用程序。但如果你监听此事件, -将由你来控制应用程序是否退出。 如果用户按下了 `Cmd + Q`,或者开发者调用了 `app.quit()` , -Electron 将会先尝试关闭所有的窗口再触发 `will-quit` 事件,在这种情况下 `window-all-closed` - 不会被触发。 - -### 事件:'before-quit' - -返回: - -* `event` Event - -在应用程序开始关闭它的窗口的时候被触发。 -调用 `event.preventDefault()` 将会阻止终止应用程序的默认行为。 - -### 事件:'will-quit' - -返回: - -* `event` Event - -当所有的窗口已经被关闭,应用即将退出时被触发。 -调用 `event.preventDefault()` 将会阻止终止应用程序的默认行为。 - -你可以在 `window-all-closed` 事件的描述中看到 `will-quit` 事件 -和 `window-all-closed` 事件的区别。 - -### 事件:'quit' -返回: - -* `event` Event -* `exitCode` Integer - -当应用程序正在退出时触发。 - -### 事件:'open-file' _macOS_ - -返回: - -* `event` Event -* `path` String - -当用户想要在应用中打开一个文件时触发。`open-file` 事件常常在应用已经打开并且系统想要再次使用应用打开文件时被触发。 - `open-file` 也会在一个文件被拖入 dock 且应用还没有运行的时候被触发。 -请确认在应用启动的时候(甚至在 `ready` 事件被触发前)就对 `open-file` 事件进行监听,以处理这种情况。 - -如果你想处理这个事件,你应该调用 `event.preventDefault()` 。 -在 Windows系统中, 你需要通过解析 process.argv 来获取文件路径。 - -### 事件:'open-url' _macOS_ - -返回: - -* `event` Event -* `url` String - -当用户想要在应用中打开一个url的时候被触发。URL格式必须要提前标识才能被你的应用打开。 - -如果你想处理这个事件,你应该调用 `event.preventDefault()` 。 - -### 事件:'activate' _macOS_ - -返回: - -* `event` Event -* `hasVisibleWindows` Boolean - -当应用被激活时触发,常用于点击应用的 dock 图标的时候。 - -### 事件: 'continue-activity' _macOS_ - -返回: - -* `event` Event -* `type` String - 标识当前状态的字符串。 映射到[`NSUserActivity.activityType`] [activity-type]。 -* `userInfo` Object - 包含由另一个设备上的活动所存储的应用程序特定的状态。 - -当来自不同设备的活动通过 [Handoff][handoff] 想要恢复时触发。如果需要处理这个事件, -调用 `event.preventDefault()` 方法。 -只有具有支持相应的活动类型并且相同的开发团队ID作为启动程序时,用户行为才会进行。 -所支持活动类型已在应用的`Info.plist`中的`NSUserActivityTypes`明确定义。 - -### 事件:'browser-window-blur' - -返回: - -* `event` Event -* `window` BrowserWindow - -当一个 [BrowserWindow](browser-window.md) 失去焦点的时候触发。 - -### 事件:'browser-window-focus' - -返回: - -* `event` Event -* `window` BrowserWindow - -当一个 [BrowserWindow](browser-window.md) 获得焦点的时候触发。 - -### 事件:'browser-window-created' - -返回: - -* `event` Event -* `window` BrowserWindow - -当一个 [BrowserWindow](browser-window.md) 被创建的时候触发。 - -### 事件: 'web-contents-created' - -Returns: - -* `event` Event -* `webContents` WebContents - -在新的 [webContents](web-contents.md) 创建后触发. - - -### 事件:'certificate-error' - -返回: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `url` String - URL 地址 -* `error` String - 错误码 -* `certificate` Object - * `data` Buffer - PEM 编码数据 - * `issuerName` String - 发行者的公有名称 -* `callback` Function - -当对 `url` 验证 `certificate` 证书失败的时候触发,如果需要信任这个证书,你需要阻止默认行为 `event.preventDefault()` 并且 -调用 `callback(true)`。 - -```javascript -const {app} = require('electron') - -app.on('certificate-error', (event, webContents, url, error, certificate, callback) => { - if (url === 'https://github.com') { - // Verification logic. - event.preventDefault() - callback(true) - } else { - callback(false) - } -}) -``` - -### 事件:'select-client-certificate' - - -返回: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `url` String - URL 地址 -* `certificateList` [Object] - * `data` Buffer - PEM 编码数据 - * `issuerName` String - 发行者的公有名称 -* `callback` Function - -当一个客户端认证被请求的时候被触发。 - -`url` 指的是请求客户端认证的网页地址,调用 `callback` 时需要传入一个证书列表中的证书。 - -需要通过调用 `event.preventDefault()` 来防止应用自动使用第一个证书进行验证。如下所示: - -```javascript -app.on('select-certificate', function (event, host, url, list, callback) { - event.preventDefault() - callback(list[0]) -}) -``` -### 事件: 'login' - -返回: - -* `event` Event -* `webContents` [WebContents](web-contents.md) -* `request` Object - * `method` String - * `url` URL - * `referrer` URL -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - -当 `webContents` 要做进行一次 HTTP 登陆验证时被触发。 - -默认情况下,Electron 会取消所有的验证行为,如果需要重写这个行为,你需要用 `event.preventDefault()` 来阻止默认行为,并且 -用 `callback(username, password)` 来进行验证。 - -```javascript -const {app} = require('electron') - -app.on('login', (event, webContents, request, authInfo, callback) => { - event.preventDefault() - callback('username', 'secret') -}) -``` -### 事件:'gpu-process-crashed' - -返回: - -* `event` Event -* `killed` Boolean - -当 GPU 进程崩溃时触发。 - -### 事件: 'accessibility-support-changed' _macOS_ _Windows_ - -返回: - -* `event` Event -* `accessibilitySupportEnabled` Boolean - 当启用Chrome的辅助功能时候为`true`, 其他情况为 `false`. - -当 Chrome 的辅助功能状态改变时触发,比如屏幕阅读被启用或被禁用。 -点此 https://www.chromium.org/developers/design-documents/accessibility 查看更多详情。 - - -## 方法列表 - -`app` 对象拥有以下的方法: - -**请注意** 有的方法只能用于特定的操作系统,并被标注。 - -### `app.quit()` - -试图关掉所有的窗口。`before-quit` 事件将会最先被触发。如果所有的窗口都被成功关闭了, -`will-quit` 事件将会被触发,默认下应用将会被关闭。 - -这个方法保证了所有的 `beforeunload` 和 `unload` 事件处理器被正确执行。假如一个窗口的 `beforeunload` 事件处理器返回 `false`,那么整个应用可能会取消退出。 - -### `app.exit(exitCode)` - -* `exitCode` 整数 - -带着`exitCode`退出应用,`exitCode` 默认为0 - -所有的窗口会被立刻关闭,不会询问用户。`before-quit` 和 `will-quit` 这2个事件不会被触发 - -### `app.relaunch([options])` - -* `options` Object (optional) - * `args` String[] (optional) - * `execPath` String (optional) - -当前实例退出,重启应用。 - -默认情况下,新的实例会和当前实例使用相同的工作目录以及命令行参数。指定 `args` 参数, -`args` 将会被作为替换的命令行参数。指定 `execPath` 参数,`execPath` 将会作为执行的目录。 - -记住,这个方法不会退出正在执行的应用。你需要在调用`app.relaunch`方法后再执行`app.quit`或者`app.exit` -来让应用重启。 - - -调用多次`app.relaunch`方法,当前实例退出后多个实例会被启动。 - -例子:立即重启当前实例并向新的实例添加一个新的命令行参数 - -```javascript -const {app} = require('electron') - -app.relaunch({args: process.argv.slice(1).concat(['--relaunch'])}) -app.exit(0) -``` - -### `app.isReady()` - -返回 `Boolean` - `true` 如果Electron 初始化完成, `false` 其他情况. - -### `app.focus()` - -在Linux系统中, 使第一个可见窗口获取焦点. macOS, 让该应用成为活动应用程序。 -Windows, 使应用的第一个窗口获取焦点. - -### `app.hide()` _macOS_ - -隐藏所有的应用窗口,不是最小化. - -### `app.show()` _macOS_ - -隐藏后重新显示所有的窗口,不会自动选中他们。 - -### `app.getAppPath()` - -返回当前应用所在的文件路径。 - -### `app.getPath(name)` - -* `name` String - -返回一个与 `name` 参数相关的特殊文件夹或文件路径。当失败时抛出一个 `Error` 。 - -你可以通过名称请求以下的路径: - -* `home` 用户的 home 文件夹(主目录) -* `appData` 当前用户的应用数据文件夹,默认对应: - * `%APPDATA%` Windows 中 - * `$XDG_CONFIG_HOME` or `~/.config` Linux 中 - * `~/Library/Application Support` macOS 中 -* `userData` 储存你应用程序设置文件的文件夹,默认是 `appData` 文件夹附加应用的名称 -* `temp` 临时文件夹 -* `exe` 当前的可执行文件 -* `module` `libchromiumcontent` 库 -* `desktop` 当前用户的桌面文件夹 -* `documents` 用户文档目录的路径 -* `downloads` 用户下载目录的路径. -* `music` 用户音乐目录的路径. -* `pictures` 用户图片目录的路径. -* `videos` 用户视频目录的路径. - -### `app.getFileIcon(path[, options], callback)` -* `path` String -* `options` Object(可选) - * `size` String - * `small` - 16x16 - * `normal` - 32x32 - * `large` - Linux 为 48x48, Windows 为 32x32, Mac 系统不支持 -* `callback` Function - * `error` Error - * `icon` [NativeImage](native-image.md) - - -获取文件关联的图标. - -在 Windows 系统中, 有2种图标类型: - -- 图标与某些文件扩展名关联, 比如 `.mp3`, `.png`, 等等. -- 图标在文件内部, 比如 `.exe`, `.dll`, `.ico`. - -在 Linux 和 Mac 系统中, 图标取决于应用程序相关文件的 mime 类型 - -### `app.setPath(name, path)` - -* `name` String -* `path` String - -重写某个 `name` 的路径为 `path`,`path` 可以是一个文件夹或者一个文件,这个和 `name` 的类型有关。 -如果这个路径指向的文件夹不存在,这个文件夹将会被这个方法创建。 -如果错误则会抛出 `Error`。 - -`name` 参数只能使用 `app.getPath` 中定义过 `name`。 - -默认情况下,网页的 cookie 和缓存都会储存在 `userData` 文件夹。 -如果你想要改变这个位置,你需要在 `app` 模块中的 `ready` 事件被触发之前重写 `userData` 的路径。 - -### `app.getVersion()` - -返回加载应用程序的版本。如果应用程序的 `package.json` 文件中没有写版本号, -将会返回当前包或者可执行文件的版本。 - -### `app.getName()` - -返回当前应用程序的 `package.json` 文件中的名称。 - -由于 npm 的命名规则,通常 `name` 字段是一个短的小写字符串。但是应用名的完整名称通常是首字母大写的,你应该单独使用一个 -`productName` 字段,用于表示你的应用程序的完整名称。Electron 会优先使用这个字段作为应用名。 - -### `app.setName(name)` - -* `name` String - -重写当前应用的名字 - -### `app.getLocale()` - -返回当前应用程序的语言。 - -### `app.addRecentDocument(path)` _macOS_ _Windows_ - -* `path` String - -在最近访问的文档列表中添加 `path`。 - -这个列表由操作系统进行管理。在 Windows 中您可以通过任务条进行访问,在 macOS 中你可以通过 dock 菜单进行访问。 - -### `app.clearRecentDocuments()` _macOS_ _Windows_ - -清除最近访问的文档列表。 - -### `app.setAsDefaultProtocolClient(protocol[, path, args])` _macOS_ _Windows_ - -* `protocol` String - 协议的名字, 不包含 `://`.如果你希望你的应用处理链接 `electron://` , - 将 `electron` 作为该方法的参数. -* `path` String (optional) _Windows_ - Defaults to `process.execPath` -* `args` String[] (optional) _Windows_ - Defaults to an empty array - -返回 `Boolean` - 调用是否成功. - -此方法将当前可执行程序设置为协议(亦称 URI scheme)的默认处理程序。 -这允许您将应用程序更深入地集成到操作系统中. 一旦注册成功, -所有 `your-protocol://` 格式的链接都会使用你的程序打开。整个链接(包括协议)将作为参数传递到应用程序中。 - -在Windows系统中,你可以提供可选参数path,到执行文件的地址;args,一个在启动时传递给可执行文件的参数数组 - -**注意:** 在macOS上,您只能注册已添加到应用程序的`info.plist`的协议,该协议不能在运行时修改。 -但是,您可以在构建时使用简单的文本编辑器或脚本更改文件。 有关详细信息,请参阅 [Apple's documentation][CFBundleURLTypes] - -该API在内部使用Windows注册表和lssetdefaulthandlerforurlscheme。 - -### `app.removeAsDefaultProtocolClient(protocol[, path, args])` _macOS_ _Windows_ - -* `protocol` String - 协议的名字, 不包含 `://`. -* `path` String (optional) _Windows_ - 默认为 `process.execPath` -* `args` String[] (optional) _Windows_ - 默认为空数组 - -返回 `Boolean` - 调用是否成功. - -此方法检查当前程序是否为协议(也称为URI scheme)的默认处理程序。 -如果是,它会移除程序默认处理该协议。 - -### `app.isDefaultProtocolClient(protocol[, path, args])` _macOS_ _Windows_ - -* `protocol` String - 协议的名字, 不包含 `://`. -* `path` String (optional) _Windows_ - 默认值 `process.execPath` -* `args` String[] (optional) _Windows_ - 默认为空数组 - -返回 `Boolean` - -此方法检查当前程序是否为协议(也称为URI scheme)的默认处理程序。 -是则返回true 否则返回false - -**提示:** 在 macOS 系统中, 您可以使用此方法检查应用程序是否已注册为协议的默认处理程序。 -同时可以通过查看 `~/Library/Preferences/com.apple.LaunchServices.plist` 来确认。 -有关详细信息,请参阅 [Apple's documentation][LSCopyDefaultHandlerForURLScheme] 。 - -该API在内部使用Windows注册表和lssetdefaulthandlerforurlscheme。 - -### `app.setUserTasks(tasks)` _Windows_ - -* `tasks` [Task] - 一个由 Task 对象构成的数组 - -将 `tasks` 添加到 Windows 中 JumpList 功能的 [Tasks][tasks] 分类中。 - -`tasks` 中的 `Task` 对象格式如下: - -`Task` Object -* `program` String - 执行程序的路径,通常你应该说明当前程序的路径为 `process.execPath` 字段。 -* `arguments` String - 当 `program` 执行时的命令行参数。 -* `title` String - JumpList 中显示的标题。 -* `description` String - 对这个任务的描述。 -* `iconPath` String - JumpList 中显示的图标的绝对路径,可以是一个任意包含一个图标的资源文件。通常来说,你可以通过指明 `process.execPath` 来显示程序中的图标。 -* `iconIndex` Integer - 图标文件中的采用的图标位置。如果一个图标文件包括了多个图标,就需要设置这个值以确定使用的是哪一个图标。 -如果这个图标文件中只包含一个图标,那么这个值为 0。 - -返回 `Boolean` - 执行是否成功. - -**提示:** 如果希望更多的定制任务栏跳转列表,请使用 `app.setJumpList(categories)` 。 - -### `app.getJumpListSettings()` _Windows_ - -返回 `Object`: - -* `minItems` Integer - 将在跳转列表中显示项目的最小数量 (有关此值的更详细描述,请参阅 - [MSDN docs][JumpListBeginListMSDN]). -* `removedItems` [JumpListItem[]](structures/jump-list-item.md) - `JumpListItem` 对象数组,对应用户在跳转列表中明确删除的项目。 -这些项目不能在 **接下来**调用`app.setJumpList()` 时重新添加到跳转列表中, -Windows不会显示任何包含已删除项目的自定义类别. - -### `app.setJumpList(categories)` _Windows_ - -* `categories` [JumpListCategory[]](structures/jump-list-category.md) 或者 `null` - `JumpListCategory` 对象的数组. - -设置或删除应用程序的自定义跳转列表,并返回以下字符串之一: - -* `ok` - 没有出现错误。 -* `error` - 发生一个或多个错误,启用运行日志记录找出可能的原因。 -* `invalidSeparatorError` -尝试向跳转列表中的自定义跳转列表添加分隔符。 分隔符只允许在标准的 `Tasks` 类别中。 -* `fileTypeRegistrationError` - 尝试向自定义跳转列表添加一个文件链接,但是该应用未注册处理该应用类型。 -* `customCategoryAccessDeniedError` - 由于用户隐私或策略组设置,自定义类别无法添加到跳转列表。 - -如果`categories` 值为 `null` ,之前设定的自定义跳转列表(如果存在)将被替换为 -标准的应用跳转列表(由windows生成) - -`JumpListCategory` 对象需要包含以下属性: - -* `type` String - 以下其中一个: - * `tasks` - 此类别中的项目将被放置到标准的`Tasks`类别中。只能有一个这样的类别, - 将总是显示在跳转列表的底部。 - * `frequent` - 显示应用常用文件列表,类别的名称及其项目由Windows设置。 - * `recent` - 显示应用最近打开的文件的列表,类别的名称及其项目由Windows设置。 - 可以使用`app.addRecentDocument(path)`间接添加到项目到此类别。 - * `custom` - 显示任务或文件链接,`name`必须由应用程序设置。 -* `name` String - 当`type` 为 `custom` 时此值为必填项,否则应省略。 -* `items` Array - `JumpListItem` 对象数组,如果 `type` 值为 `tasks` 或 - `custom` 时必填,否则应省略。 - -**注意:** 如果`JumpListCategory`对象没有设置`type`和`name`属性, -那么`type`默认为`tasks`。 如果设置`name`属性,省略`type`属性, -则`type`默认为`custom`。 - -**注意:** 用户可以从自定义类别中移除项目,**下次**调用`app.setJumpList(categories)`方法之前, -Windows不允许删除的项目添加回自定义类别。 尝试提前将删除的项目重新添加 -到自定义类别中,将导致整个自定义类别被隐藏。 删除的项目可以使用 `app.getJumpListSettings()`获取。 - -`JumpListItem` 对象需要包含以下属性: - -* `type` String - 以下其中一个值: - * `task` - 带有特殊参数的方式启动一个应用; - * `separator` - 可以用于标准的 `Tasks`类别中的独立项目; - * `file` - 一个链接将使用创建跳转列表的应用程序打开一个文件,对应的应用程序必须 - 注册为这个文件类型的处理程序(不必是默认的处理程序) -* `path` String - 要打开的文件的路径, 只有当 `type` 值为 `file`时设置 -* `program` String - 要执行程序的路径, 通常需要指定`process.execPath` 打开当前的应用程序. - 只有当 `type` 值为 `task`时设置 -* `args` String - `program` 运行时的命令参数, 只有当 `type` 值为 `task`时设置 -* `title` String - 跳转列表中项目的展示文本. - 只有当 `type` 值为 `task`时设置 -* `description` String - 任务说明(显示在工具提示中). - 只有当 `type` 值为 `task`时设置 -* `iconPath` String - 要显示在跳转列表中的图标的绝对路径,可以是包含图标的 -任意资源文件(例如`.ico`,`.exe`,`.dll`)。 你通常可以指定`process.execPath`来显示程序图标。 -* `iconIndex` Integer - 资源文件中图标的索引。 如果资源文件包含多个图标, -则此值可用于指定此任务图标的(从0开始)索引,如果资源文件只包含一个图标,则此属性应设置为0 - -以下是一个创建一个自定义跳转列表的简单例子: - -```javascript -const {app} = require('electron') - -app.setJumpList([ - { - type: 'custom', - name: 'Recent Projects', - items: [ - { type: 'file', path: 'C:\\Projects\\project1.proj' }, - { type: 'file', path: 'C:\\Projects\\project2.proj' } - ] - }, - { // has a name so `type` is assumed to be "custom" - name: 'Tools', - items: [ - { - type: 'task', - title: 'Tool A', - program: process.execPath, - args: '--run-tool-a', - icon: process.execPath, - iconIndex: 0, - description: 'Runs Tool A' - }, - { - type: 'task', - title: 'Tool B', - program: process.execPath, - args: '--run-tool-b', - icon: process.execPath, - iconIndex: 0, - description: 'Runs Tool B' - } - ] - }, - { type: 'frequent' }, - { // has no name and no type so `type` is assumed to be "tasks" - items: [ - { - type: 'task', - title: 'New Project', - program: process.execPath, - args: '--new-project', - description: 'Create a new project.' - }, - { type: 'separator' }, - { - type: 'task', - title: 'Recover Project', - program: process.execPath, - args: '--recover-project', - description: 'Recover Project' - } - ] - } -]) -``` - -### `app.makeSingleInstance(callback)` - -* `callback` Function - -这个方法可以让你的应用在同一时刻最多只会有一个实例,否则你的应用可以被运行多次并产生多个实例。你可以利用这个接口保证只有一个实例正 -常运行,其余的实例全部会被终止并退出。 - -如果多个实例同时运行,那么第一个被运行的实例中 `callback` 会以 `callback(argv, workingDirectory)` 的形式被调用。其余的实例 -会被终止。 -`argv` 是一个包含了这个实例的命令行参数列表的数组,`workingDirectory` 是这个实例目前的运行目录。通常来说,我们会用通过将应用在 -主屏幕上激活,并且取消最小化,来提醒用户这个应用已经被打开了。 - -在 `app` 的 `ready` 事件后,`callback` 才有可能被调用。 - -如果当前实例为第一个实例,那么在这个方法将会返回 `false` 来保证它继续运行。否则将会返回 `true` 来让它立刻退出。 - -在 macOS 中,如果用户通过 Finder、`open-file` 或者 `open-url` 打开应用,系统会强制确保只有一个实例在运行。但是如果用户是通过 -命令行打开,这个系统机制会被忽略,所以你仍然需要靠这个方法来保证应用为单实例运行的。 - -下面是一个简单的例子。我们可以通过这个例子了解如何确保应用为单实例运行状态。 - -```javascript -const {app} = require('electron') -let myWindow = null - -const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => { - // Someone tried to run a second instance, we should focus our window. - if (myWindow) { - if (myWindow.isMinimized()) myWindow.restore() - myWindow.focus() - } -}) - -if (shouldQuit) { - app.quit() -} - -// Create myWindow, load the rest of the app, etc... -app.on('ready', () => { -}) -``` - -### `app.releaseSingleInstance()` - -释放所有由 `makeSingleInstance` 创建的限制. -这将允许应用程序的多个实例依次运行. - -### `app.setUserActivity(type, userInfo[, webpageURL])` _macOS_ - -* `type` String - 唯一标识活动. 映射到 - [`NSUserActivity.activityType`][activity-type]. -* `userInfo` Object - 应用程序特定状态,供其他设备使用 -* `webpageURL` String - 如果在恢复设备上未安装合适的应用程序,则会在浏览器中加载网页。 -该格式必须是“http”或“https”。 - -创建一个 `NSUserActivity` 并将其设置为当前activity,该 Activity -有资格进行 [Handoff][handoff] 到另一个设备. - -### `app.getCurrentActivityType()` _macOS_ - -返回: `String` - 正在运行的 activity 的类型. - -### `app.setAppUserModelId(id)` _Windows_ - -* `id` String - -改变当前应用的 [Application User Model ID][app-user-model-id] 为 `id`. - -### `app.importCertificate(options, callback)` _LINUX_ - -* `options` Object - * `certificate` String - pkcs12 文件的路径. - * `password` String - 证书的密码. -* `callback` Function - * `result` Integer - 导入结果. - -将pkcs12格式的证书导入证书库. 导入操作的回调函数,带有的`result`参数, -`0` 表示成功,其他值表示失败,参照 [net_error_list](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h). - -### `app.disableHardwareAcceleration()` - -为当前应用程序禁用硬件加速 - -该方法只能在应用ready之前调用 - -### `app.setBadgeCount(count)` _Linux_ _macOS_ - -* `count` Integer - -返回 `Boolean` - 执行是否成功. - -设置当前app的badge上的值. `0` 将会隐藏该badge - -macOS系统中,这会展示在dock图标上,在Linux系统中,仅仅在 Unity launcher上有效。 - -**注意:** Unity launcher工作依赖于 `.desktop`文件, -详细信息请参阅 [Desktop Environment Integration][unity-requiremnt]. - -### `app.getBadgeCount()` _Linux_ _macOS_ - -返回 `Integer` - 当前展示在badge上的值. - -### `app.isUnityRunning()` _Linux_ - -返回 `Boolean` - 当前工作环境是否为 Unity launcher. - -### `app.getLoginItemSettings()` _macOS_ _Windows_ - -返回 `Object`: - -* `openAtLogin` Boolean - `true` 如果程序设置的在登录时启动. -* `openAsHidden` Boolean - `true` 如果程序设置在登录时隐藏启动. - 该设定仅支持macOS. -* `wasOpenedAtLogin` Boolean - `true` 如果程序在登录时已自动启动. 该设定仅支持macOS. -* `wasOpenedAsHidden` Boolean - `true` 如果该程序在登录时已经隐藏启动. -这表示该程序不应在启动时打开任何窗口.该设定仅支持macOS. -* `restoreState` Boolean - `true` 如果该程序作为登录启动项并且需要回复之前的会话状态, -这表示程序应该还原上次关闭时打开的窗口。该设定仅支持macOS. - -**注意:** 该 API 不影响 -[MAS builds][mas-builds]. - -### `app.setLoginItemSettings(settings)` _macOS_ _Windows_ - -* `settings` Object - * `openAtLogin` Boolean - `true` 在登录时启动程序, `false` 移除程序作为登录启动项. 默认为 `false`. - * `openAsHidden` Boolean - `true` 登录时隐藏启动程序.默认为 - `false`. 用户可以从系统首选项编辑此设置。因此程序启动后可以通过 - `app.getLoginItemStatus().wasOpenedAsHidden` 检查当前值. 该设置仅适用于macOS - -设定应用的登录选项。 - -**注意:** 该 API 不影响 -[MAS builds][mas-builds]. - -### `app.isAccessibilitySupportEnabled()` _macOS_ _Windows_ - -返回: `Boolean` - 如果开启了Chrome的辅助功能,则返回`true`, -其他情况返回 `false`. 如果使用了辅助技术,将会返回 `true` , 比如检测到使用屏幕阅读功能。详细信息请参阅 -https://www.chromium.org/developers/design-documents/accessibility - -### `app.setAboutPanelOptions(options)` _macOS_ - -* `options` Object - * `applicationName` String (optional) - 应用名. - * `applicationVersion` String (optional) - 应用版本. - * `copyright` String (optional) - Copyright 信息. - * `credits` String (optional) - 信誉信息. - * `version` String (optional) - 开发版本号. - -设置关于面板的选项,这将覆盖应用程序`.plist`文件中定义的值。 -详细信息,请参阅 [Apple docs][about-panel-options] . - -### `app.commandLine.appendSwitch(switch[, value])` - -通过可选的参数 `value` 给 Chromium 中添加一个命令行开关。 - -**注意** 这个方法不会影响 `process.argv`,我们通常用这个方法控制一些底层 Chromium 行为。 - -### `app.commandLine.appendArgument(value)` - -给 Chromium 中直接添加一个命令行参数,这个参数 `value` 的引号和格式必须正确。 - -**注意** 这个方法不会影响 `process.argv`。 - -### `app.dock.bounce([type])` _macOS_ - -* `type` String - 可选参数,可以是 `critical` 或 `informational`。默认为 `informational`。 - -当传入的是 `critical` 时,dock 中的应用将会开始弹跳,直到这个应用被激活或者这个请求被取消。 - -当传入的是 `informational` 时,dock 中的图标只会弹跳一秒钟。但是,这个请求仍然会激活,直到应用被激活或者请求被取消。 - -这个方法返回的返回值表示这个请求的 ID。 - -### `app.dock.cancelBounce(id)` _macOS_ - -* `id` Integer - -取消这个 `id` 对应的请求。 - -### `app.dock.downloadFinished(filePath)` _macOS_ - -* `filePath` String - -如果filePath位于Downloads文件夹中,则弹出下载队列。 - -### `app.dock.setBadge(text)` _macOS_ - -* `text` String - -设置应用在 dock 中显示的字符串。 - -### `app.dock.getBadge()` _macOS_ - -返回应用在 dock 中显示的字符串。 - -### `app.dock.hide()` _macOS_ - -隐藏应用在 dock 中的图标。 - -### `app.dock.show()` _macOS_ - -显示应用在 dock 中的图标。 - -### `app.dock.isVisible()` _macOS_ - -返回 `Boolean` - dock 图标是否可见. -`app.dock.show()` 是异步方法,因此此方法可能无法在调用之后立即返回true. - -### `app.dock.setMenu(menu)` _macOS_ - -* `menu` [Menu](menu.md) - -设置应用的 [dock 菜单][dock-menu]. - -### `app.dock.setIcon(image)` _macOS_ - -* `image` [NativeImage](native-image.md) - -设置应用在 dock 中显示的图标。 - - -[dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103 -[tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[CFBundleURLTypes]: https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102207-TPXREF115 -[LSCopyDefaultHandlerForURLScheme]: https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/#//apple_ref/c/func/LSCopyDefaultHandlerForURLScheme -[handoff]: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/HandoffFundamentals/HandoffFundamentals.html -[activity-type]: https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSUserActivity_Class/index.html#//apple_ref/occ/instp/NSUserActivity/activityType -[unity-requiremnt]: ../tutorial/desktop-environment-integration.md#unity-launcher-shortcuts-linux -[mas-builds]: ../tutorial/mac-app-store-submission-guide.md -[JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx -[about-panel-options]: https://developer.apple.com/reference/appkit/nsapplication/1428479-orderfrontstandardaboutpanelwith?language=objc diff --git a/docs-translations/zh-CN/api/auto-updater.md b/docs-translations/zh-CN/api/auto-updater.md deleted file mode 100644 index 75a816484b9c..000000000000 --- a/docs-translations/zh-CN/api/auto-updater.md +++ /dev/null @@ -1,127 +0,0 @@ -# autoUpdater - -> 使应用程序能够自动更新。 - -进程: [Main](../glossary.md#main-process) - -`autoUpdater` 模块提供了来自 -[Squirrel](https://github.com/Squirrel) 框架的一个接口。 - -你可以快速启动多平台发布服务器来分发您的 -应用程序通过使用下列项目中的一个: - -- [nuts][nuts]: *针对你的应用程序的智能发布服务器,使用 GitHub 作为后端。 使用 Squirrel 自动更新(Mac 和 Windows)* -- [electron-release-server][electron-release-server]: *一个功能齐全, - electron 应用的自托管发布服务器,兼容 auto-updater* -- [squirrel-updates-server][squirrel-updates-server]: *对于使用 GitHub 版本的 Squirrel.Mac 和 Squirrel.Windows 的一个简单的 node.js 服务器* -- [squirrel-release-server][squirrel-release-server]: *一个简单的 Squirrel.Windows 的 PHP 应用程序,它从文件夹读取更新,并支持增量更新* - -## 平台相关的提示 - -虽然 `autoUpdater` 模块提供了一套各平台通用的接口,但是在每个平台间依然会有一些微小的差异。 - -### macOS - -在 macOS 上,`autoUpdater` 模块依靠的是内置的 [Squirrel.Mac][squirrel-mac],这意味着你不需要依靠其他的设置就能使用。关于 -更新服务器的配置,你可以通过阅读 [Server Support][server-support] 这篇文章来了解。注意 [App -Transport Security](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW35) (ATS) 适用于所有请求作为的一部分 -更新过程。需要禁用 ATS 的应用程序可以在应用程序的 plist 添加 -`NSAllowsArbitraryLoads` 属性。 - -**注意:** 你的应用程序必须签署 macOS 自动更新。 -这是 `Squirrel.Mac` 的要求。 - -### Windows - -在 Windows 上,你必须使用安装程序将你的应用装到用户的计算机上,所以比较推荐的方法是用 [electron-winstaller][installer-lib], [electron-builder][electron-builder-lib] 或者 [grunt-electron-installer][installer] 模块来自动生成一个 Windows 安装向导。 - -当使用 [electron-winstaller][installer-lib] 或者 [electron-builder][electron-builder-lib] - -当使用 [electron-winstaller][installer-lib] 或者 [electron-builder][electron-builder-lib] 确保你不尝试更新你的应用程序 [the first time it runs](https://github.com/electron/windows-installer#handling-squirrel-events)(另见 [this issue for more info](https://github.com/electron/electron/issues/7155))。 建议使用 [electron-squirrel-startup](https://github.com/mongodb-js/electron-squirrel-startup) 获取应用程序的桌面快捷方式。 - -Squirrel 自动生成的安装向导会生成一个带 [Application User Model ID][app-user-model-id] 的快捷方式。 -Application User Model ID 的格式是 `com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE`, 比如 -像 `com.squirrel.slack.Slack` 和 `com.squirrel.code.Code` 这样的。你应该在自己的应用中使用 `app.setAppUserModelId` 方法设置相同的 API,不然 Windows 将不能正确地把你的应用固定在任务栏上。 - -服务器端的配置和 macOS 也是不一样的,你可以阅读 [Squirrel.Windows][squirrel-windows] 这个文档来获得详细信息。 - -### Linux - -Linux 下没有任何的自动更新支持,所以我们推荐用各个 Linux 发行版的包管理器来分发你的应用。 - -## 事件列表 - -`autoUpdater` 对象会触发以下的事件: - -### 事件:'error' - -返回: - -* `error` Error - -当更新发生错误的时候触发。 - -### 事件:'checking-for-update' - -当开始检查更新的时候触发。 - -### 事件:'update-available' - -当发现一个可用更新的时候触发,更新包下载会自动开始。 - -### 事件:'update-not-available' - -当没有可用更新的时候触发。 - -### 事件:'update-downloaded' - -返回: - -* `event` Event -* `releaseNotes` String - 新版本更新公告 -* `releaseName` String - 新的版本号 -* `releaseDate` Date - 新版本发布的日期 -* `updateURL` String - 更新地址 - -在更新下载完成的时候触发。 - -在 Windows 上只有 `releaseName` 是有效的。 - -## 方法列表 - -`autoUpdater` 对象有以下的方法: - -### `autoUpdater.setFeedURL(url[, requestHeaders])` - -* `url` String -* `requestHeaders` Object _macOS_ (optional) - HTTP请求头。 - -设置检查更新的 `url`,并且初始化自动更新。 - -### `autoUpdater.getFeedURL()` - -返回 `String` - 当前更新提要 URL。 - -### `autoUpdater.checkForUpdates()` - -向服务端查询现在是否有可用的更新。在调用这个方法之前,必须要先调用 `setFeedURL`。 - -### `autoUpdater.quitAndInstall()` - -在下载完成后,重启当前的应用并且安装更新。这个方法应该仅在 `update-downloaded` 事件触发后被调用。 - -**注意:** `autoUpdater.quitAndInstall()` 将先关闭所有应用程序窗口 -并且只在 `app` 上发出 `before-quit` 事件。这不同于 -从正常退出的事件序列。 - -[squirrel-mac]: https://github.com/Squirrel/Squirrel.Mac -[server-support]: https://github.com/Squirrel/Squirrel.Mac#server-support -[squirrel-windows]: https://github.com/Squirrel/Squirrel.Windows -[installer]: https://github.com/electron/grunt-electron-installer -[installer-lib]: https://github.com/electron/windows-installer -[electron-builder-lib]: https://github.com/electron-userland/electron-builder -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[electron-release-server]: https://github.com/ArekSredzki/electron-release-server -[squirrel-updates-server]: https://github.com/Aluxian/squirrel-updates-server -[nuts]: https://github.com/GitbookIO/nuts -[squirrel-release-server]: https://github.com/Arcath/squirrel-release-server diff --git a/docs-translations/zh-CN/api/browser-window.md b/docs-translations/zh-CN/api/browser-window.md deleted file mode 100644 index ed898c756b73..000000000000 --- a/docs-translations/zh-CN/api/browser-window.md +++ /dev/null @@ -1,845 +0,0 @@ -# BrowserWindow - -> 创建和控制浏览器窗口。 - -进程: [Main](../glossary.md#main-process) - -```javascript -// In the main process. -const {BrowserWindow} = require('electron') - -// Or use `remote` from the renderer process. -// const {BrowserWindow} = require('electron').remote - -let win = new BrowserWindow({width: 800, height: 600}) -win.on('closed', () => { - win = null -}) - -// Load a remote URL -win.loadURL('https://github.com') - -// Or load a local HTML file -win.loadURL(`file://${__dirname}/app/index.html`) -``` - -## Frameless window - -不通过chrome创建窗口,或者一个任意形状的透明窗口, -你可以使用 [Frameless Window](frameless-window.md) API。 - -## Showing window gracefully - -When loading a page in the window directly, users may see the page load incrementally, which is not a good experience for a native app. To make the window display -without visual flash, there are two solutions for different situations. - -## 优雅地显示窗口 - -当在窗口中直接加载页面时,用户可能会看到增量加载页面,这不是一个好的原生应用程序的体验。使窗口显示 -没有可视闪烁,有两种解决方案适用于不同的情况。 - -### 使用 `ready-to-show` 事件 - -在加载页面时,进程第一次完成绘制时,渲染器会发出 `ready-to-show` 事件 -,在此事件后显示窗口将没有可视闪烁: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({show: false}) -win.once('ready-to-show', () => { - win.show() -}) -``` - -这个事件通常发生在 `did-finish-load` 事件之后,但是 -页面有许多远程资源,它可能会在 `did-finish-load` 之前发出 -事件。 - -### 设置 `backgroundColor` - -对于一个复杂的应用程序,`ready-to-show` 事件可能发出太晚,使 -应用程序感觉缓慢。在这种情况下,建议立即显示窗口, -并使用接近应用程序的背景 `backgroundColor`: - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({backgroundColor: '#2e2c29'}) -win.loadURL('https://github.com') -``` - -请注意,即使是使用 `ready-to-show` 事件的应用程序,仍建议使用 -设置 `backgroundColor` 使应用程序感觉更原生。 - -## Parent 和 child 窗口 - -使用 `parent` 选项,你可以创建 child 窗口: - -```javascript -const {BrowserWindow} = require('electron') - -let top = new BrowserWindow() -let child = new BrowserWindow({parent: top}) -child.show() -top.show() -``` - -`child` 窗口将总是显示在 `top` 窗口的顶部。 - -### Modal 窗口 - -模态窗口是禁用父窗口的子窗口,以创建模态 -窗口,你必须设置 `parent` 和 `modal` 选项: - -```javascript -const {BrowserWindow} = require('electron') - -let child = new BrowserWindow({parent: top, modal: true, show: false}) -child.loadURL('https://github.com') -child.once('ready-to-show', () => { - child.show() -}) -``` - -### 平台通知 - -* 在 macOS 上,modal 窗口将显示为附加到父窗口的工作表。 -* 在 macOS 上,子窗口将保持与父窗口的相对位置 -   当父窗口移动时,而在 Windows 和 Linux 子窗口不会 -   移动。 -* 在Windows上,不支持动态更改父窗口。 -* 在Linux上,模态窗口的类型将更改为 `dialog`。 -* 在Linux上,许多桌面环境不支持隐藏模态窗口。 - -## Class: BrowserWindow - -`BrowserWindow` 是一个 -[EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)。 - -通过 `options` 可以创建一个具有原生属性的 `BrowserWindow`。 - -### `new BrowserWindow([options])` - -* `options` Object - * `width` Integer - 窗口宽度,单位像素. 默认是 `800`. - * `height` Integer - 窗口高度,单位像素. 默认是 `600`. - * `x` Integer - 窗口相对于屏幕的左偏移位置.默认居中. - * `y` Integer - 窗口相对于屏幕的顶部偏移位置.默认居中. - * `useContentSize` Boolean - `width` 和 `height` 使用web网页size, 这意味着实际窗口的size应该包括窗口框架的size,稍微会大一点,默认为 `false`. - * `center` Boolean - 窗口屏幕居中. - * `minWidth` Integer - 窗口最小宽度,默认为 `0`. - * `minHeight` Integer - 窗口最小高度,默认为 `0`. - * `maxWidth` Integer - 窗口最大宽度,默认无限制. - * `maxHeight` Integer - 窗口最大高度,默认无限制. - * `resizable` Boolean - 是否可以改变窗口size,默认为 `true`. - * `movable` Boolean - 窗口是否可以拖动. 在 Linux 上无效. 默认为 `true`. - * `minimizable` Boolean - 窗口是否可以最小化. 在 Linux 上无效. 默认为 `true`. - * `maximizable` Boolean - 窗口是否可以最大化. 在 Linux 上无效. 默认为 `true`. - * `closable` Boolean - 窗口是否可以关闭. 在 Linux 上无效. 默认为 `true`. - * `alwaysOnTop` Boolean - 窗口是否总是显示在其他窗口之前. 在 Linux 上无效. 默认为 `false`. - * `fullscreen` Boolean - 窗口是否可以全屏幕. 当明确设置值为 `false` ,全屏化按钮将会隐藏,在 macOS 将禁用. 默认 `false`. - * `fullscreenable` Boolean - 在 macOS 上,全屏化按钮是否可用,默认为 `true`. - * `skipTaskbar` Boolean - 是否在任务栏中显示窗口. 默认是`false`. - * `kiosk` Boolean - kiosk 方式. 默认为 `false`. - * `title` String - 窗口默认title. 默认 `"Electron"`. - * `icon` [NativeImage](native-image.md) - 窗口图标, 如果不设置,窗口将使用可用的默认图标. - * `show` Boolean - 窗口创建的时候是否显示. 默认为 `true`. - * `frame` Boolean - 指定 `false` 来创建一个 - [Frameless Window](frameless-window.md). 默认为 `true`. - * `acceptFirstMouse` Boolean - 是否允许单击web view来激活窗口 . 默认为 `false`. - * `disableAutoHideCursor` Boolean - 当 typing 时是否隐藏鼠标.默认 `false`. - * `autoHideMenuBar` Boolean - 除非点击 `Alt`,否则隐藏菜单栏.默认为 `false`. - * `enableLargerThanScreen` Boolean - 是否允许改变窗口大小大于屏幕. 默认是 `false`. - * `backgroundColor` String -窗口的 background color 值为十六进制,如 `#66CD00` 或 `#FFF` 或 `#80FFFFFF` (支持透明度). 默认为在 Linux 和 Windows 上为 - `#000` (黑色) , Mac上为 `#FFF`(或透明). - * `hasShadow` Boolean - 窗口是否有阴影. 只在 macOS 上有效. 默认为 `true`. - * `darkTheme` Boolean - 为窗口使用 dark 主题, 只在一些拥有 GTK+3 桌面环境上有效. 默认为 `false`. - * `transparent` Boolean - 窗口 [透明](frameless-window.md). - 默认为 `false`. - * `type` String - 窗口type, 默认普通窗口. 下面查看更多. - * `titleBarStyle` String - 窗口标题栏样式. 下面查看更多. - * `webPreferences` Object - 设置界面特性. 下面查看更多. - -`type` 的值和效果不同平台展示效果不同,具体: - -* Linux, 可用值为 `desktop`, `dock`, `toolbar`, `splash`, - `notification`. -* macOS, 可用值为 `desktop`, `textured`. - * `textured` type 添加金属梯度效果 - (`NSTexturedBackgroundWindowMask`). - * `desktop` 设置窗口在桌面背景窗口水平 - (`kCGDesktopWindowLevel - 1`). 注意桌面窗口不可聚焦, 不可不支持键盘和鼠标事件, 但是可以使用 `globalShortcut` 来解决输入问题. - -`titleBarStyle` 只在 macOS 10.10 Yosemite 或更新版本上支持. -可用值: - -* `default` 以及无值, 显示在 Mac 标题栏上为不透明的标准灰色. -* `hidden` 隐藏标题栏,内容充满整个窗口, 然后它依然在左上角,仍然受标准窗口控制. -* `hidden-inset`主体隐藏,显示小的控制按钮在窗口边缘. - -`webPreferences` 参数是个对象,它的属性: - -* `nodeIntegration` Boolean - 是否完整支持node. 默认为 `true`. -* `preload` String - 界面的其它脚本运行之前预先加载一个指定脚本. 这个脚本将一直可以使用 node APIs 无论 node integration 是否开启. 脚本路径为绝对路径. - 当 node integration 关闭, 预加载的脚本将从全局范围重新引入node的全局引用标志. 查看例子 - [here](process.md#event-loaded). -* `session` [Session](session.md#class-session) - 设置界面session. 而不是直接忽略session对象 , 也可用 `partition` 来代替, 它接受一个 partition 字符串. 当同时使用 `session` 和 `partition`, `session` 优先级更高. - 默认使用默认 session. -* `partition` String - 通过session的partition字符串来设置界面session. 如果 `partition` 以 `persist:` 开头, 这个界面将会为所有界面使用相同的 `partition`. 如果没有 `persist:` 前缀, 界面使用历史session. 通过分享同一个 `partition`, 所有界面使用相同的session. 默认使用默认 session. -* `zoomFactor` Number - 界面默认缩放值, `3.0` 表示 - `300%`. 默认 `1.0`. -* `javascript` Boolean - 开启javascript支持. 默认为`true`. -* `webSecurity` Boolean - 当设置为 `false`, 它将禁用同源策略 (通常用来测试网站), 并且如果有2个非用户设置的参数,就设置 - `allowRunningInsecureContent` 的值为`true`. 默认为 `true`. -* `allowRunningInsecureContent` Boolean - Boolean -允许一个使用 https的界面来渲染由 http URLs 提交的html,css,javascript. 默认为 `false`. -* `images` Boolean - 开启图片使用支持. 默认 `true`. -* `textAreasAreResizable` Boolean - textArea 可以编辑. 默认为 `true`. -* `webgl` Boolean - 开启 WebGL 支持. 默认为 `true`. -* `webaudio` Boolean - 开启 WebAudio 支持. 默认为 `true`. -* `plugins` Boolean - 是否开启插件支持. 默认为 `false`. -* `experimentalFeatures` Boolean - 开启 Chromium 的 可测试 特性. - 默认为 `false`. -* `experimentalCanvasFeatures` Boolean - 开启 Chromium 的 canvas 可测试特性. 默认为 `false`. -* `blinkFeatures` String - 以 `,` 分隔的特性列表, 如 - `CSSVariables,KeyboardEventKey`. 被支持的所有特性可在 [setFeatureEnabledFromString][blink-feature-string] - 中找到. -* `defaultFontFamily` Object - 设置 font-family 默认字体. - * `standard` String - 默认为 `Times New Roman`. - * `serif` String - 默认为 `Times New Roman`. - * `sansSerif` String - 默认为 `Arial`. - * `monospace` String - 默认为 `Courier New`. -* `defaultFontSize` Integer - 默认为 `16`. -* `defaultMonospaceFontSize` Integer - 默认为 `13`. -* `minimumFontSize` Integer - 默认为 `0`. -* `defaultEncoding` String - 默认为 `ISO-8859-1`. - -## 事件 - - `BrowserWindow` 对象可触发下列事件: - -**注意:** 一些事件只能在特定os环境中触发,已经尽可能地标出. - -### Event: 'page-title-updated' - -返回: - -* `event` Event - -当文档改变标题时触发,使用 `event.preventDefault()` 可以阻止原窗口的标题改变. - -### Event: 'close' - -返回: - -* `event` Event - -在窗口要关闭的时候触发. 它在DOM的 `beforeunload` and `unload` 事件之前触发.使用 `event.preventDefault()` 可以取消这个操作 - -通常你想通过 `beforeunload` 处理器来决定是否关闭窗口,但是它也会在窗口重载的时候被触发. 在 Electron 中,返回一个空的字符串或 `false` 可以取消关闭.例如: - -```javascript -window.onbeforeunload = function (e) { - console.log('I do not want to be closed') - - // Unlike usual browsers, in which a string should be returned and the user is - // prompted to confirm the page unload, Electron gives developers more options. - // Returning empty string or false would prevent the unloading now. - // You can also use the dialog API to let the user confirm closing the application. - e.returnValue = false -} -``` - -### Event: 'closed' - -当窗口已经关闭的时候触发.当你接收到这个事件的时候,你应当删除对已经关闭的窗口的引用对象和避免再次使用它. - -### Event: 'unresponsive' - -在界面卡死的时候触发事件. - -### Event: 'responsive' - -在界面恢复卡死的时候触发. - -### Event: 'blur' - -在窗口失去焦点的时候触发. - -### Event: 'focus' - -在窗口获得焦点的时候触发. - -### Event: 'maximize' - -在窗口最大化的时候触发. - -### Event: 'unmaximize' - -在窗口退出最大化的时候触发. - -### Event: 'minimize' - -在窗口最小化的时候触发. - -### Event: 'restore' - -在窗口从最小化恢复的时候触发. - -### Event: 'resize' - -在窗口size改变的时候触发. - -### Event: 'move' - -在窗口移动的时候触发. - -注意:在 macOS 中别名为 `moved`. - -### Event: 'moved' _macOS_ - -在窗口移动的时候触发. - -### Event: 'enter-full-screen' - -在的窗口进入全屏状态时候触发. - -### Event: 'leave-full-screen' - -在的窗口退出全屏状态时候触发. - -### Event: 'enter-html-full-screen' - -在的窗口通过 html api 进入全屏状态时候触发. - -### Event: 'leave-html-full-screen' - -在的窗口通过 html api 退出全屏状态时候触发. - -### Event: 'app-command' _Windows_ - -在请求一个[App Command](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx)的时候触发. -典型的是键盘媒体或浏览器命令, Windows上的 "Back" 按钮用作鼠标也会触发. - -```javascript -someWindow.on('app-command', function (e, cmd) { - // Navigate the window back when the user hits their mouse back button - if (cmd === 'browser-backward' && someWindow.webContents.canGoBack()) { - someWindow.webContents.goBack() - } -}) -``` - -### Event: 'scroll-touch-begin' _macOS_ - -在滚动条事件开始的时候触发. - -### Event: 'scroll-touch-end' _macOS_ - -在滚动条事件结束的时候触发. - -## 方法 - -`BrowserWindow` 对象有如下方法: - -### `BrowserWindow.getAllWindows()` - -返回一个所有已经打开了窗口的对象数组. - -### `BrowserWindow.getFocusedWindow()` - -返回应用当前获得焦点窗口,如果没有就返回 `null`. - -### `BrowserWindow.fromWebContents(webContents)` - -* `webContents` [WebContents](web-contents.md) - -根据 `webContents` 查找窗口. - -### `BrowserWindow.fromId(id)` - -* `id` Integer - -根据 id 查找窗口. - -### `BrowserWindow.addDevToolsExtension(path)` - -* `path` String - -添加位于 `path` 的开发者工具栏扩展,并且返回扩展项的名字. - -这个扩展会被添加到历史,所以只需要使用这个API一次,这个api不可用作编程使用. - -### `BrowserWindow.removeDevToolsExtension(name)` - -* `name` String - -删除开发者工具栏名为 `name` 的扩展. - -## 实例属性 - -使用 `new BrowserWindow` 创建的实例对象,有如下属性: - -```javascript -// In this example `win` is our instance -var win = new BrowserWindow({ width: 800, height: 600 }) -``` - -### `win.webContents` - -这个窗口的 `WebContents` 对象,所有与界面相关的事件和方法都通过它完成的. - -查看 [`webContents` documentation](web-contents.md) 的方法和事件. - -### `win.id` - -窗口的唯一id. - -## 实例方法 - -使用 `new BrowserWindow` 创建的实例对象,有如下方法: - -**注意:** 一些方法只能在特定os环境中调用,已经尽可能地标出. - -### `win.destroy()` - -强制关闭窗口, `unload` and `beforeunload` 不会触发,并且 `close` 也不会触发, 但是它保证了 `closed` 触发. - -### `win.close()` - -尝试关闭窗口,这与用户点击关闭按钮的效果一样. 虽然网页可能会取消关闭,查看 [close event](#event-close). - -### `win.focus()` - -窗口获得焦点. - -### `win.isFocused()` - -返回 boolean, 窗口是否获得焦点. - -### `win.show()` - -展示并且使窗口获得焦点. - -### `win.showInactive()` - -展示窗口但是不获得焦点. - -### `win.hide()` - -隐藏窗口. - -### `win.isVisible()` - -返回 boolean, 窗口是否可见. - -### `win.maximize()` - -窗口最大化. - -### `win.unmaximize()` - -取消窗口最大化. - -### `win.isMaximized()` - -返回 boolean, 窗口是否最大化. - -### `win.minimize()` - -窗口最小化. 在一些os中,它将在dock中显示. - -### `win.restore()` - -将最小化的窗口恢复为之前的状态. - -### `win.isMinimized()` - -返回 boolean, 窗口是否最小化. - -### `win.setFullScreen(flag)` - -* `flag` Boolean - -设置是否全屏. - -### `win.isFullScreen()` - -返回 boolean, 窗口是否全屏化. - -### `win.setAspectRatio(aspectRatio[, extraSize])` _macOS_ - -* `aspectRatio` 维持部分视图内容窗口的高宽比值. -* `extraSize` Object (可选) - 维持高宽比值时不包含的额外size. - * `width` Integer - * `height` Integer - -由一个窗口来维持高宽比值. `extraSize` 允许开发者使用它,它的单位为像素,不包含在 `aspectRatio` 中.这个 API 可用来区分窗口的size和内容的size . - -想象一个普通可控的HD video 播放器窗口. 假如左边缘有15控制像素,右边缘有25控制像素,在播放器下面有50控制像素.为了在播放器内保持一个 16:9 的高宽比例,我们可以调用这个api传入参数16/9 and -[ 40, 50 ].第二个参数不管网页中的额外的宽度和高度在什么位置,只要它们存在就行.只需要把网页中的所有额外的高度和宽度加起来就行. - -### `win.setBounds(options[, animate])` - -* `options` Object - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer -* `animate` Boolean (可选) _macOS_ - -重新设置窗口的宽高值,并且移动到指定的 `x`, `y` 位置. - -### `win.getBounds()` - -返回一个对象,它包含了窗口的宽,高,x坐标,y坐标. - -### `win.setSize(width, height[, animate])` - -* `width` Integer -* `height` Integer -* `animate` Boolean (可选) _macOS_ - -重新设置窗口的宽高值. - -### `win.getSize()` - -返回一个数组,它包含了窗口的宽,高. - -### `win.setContentSize(width, height[, animate])` - -* `width` Integer -* `height` Integer -* `animate` Boolean (可选) _macOS_ - -重新设置窗口客户端的宽高值(例如网页界面). - -### `win.getContentSize()` - -返回一个数组,它包含了窗口客户端的宽,高. - -### `win.setMinimumSize(width, height)` - -* `width` Integer -* `height` Integer - -设置窗口最小化的宽高值. - -### `win.getMinimumSize()` - -返回一个数组,它包含了窗口最小化的宽,高. - -### `win.setMaximumSize(width, height)` - -* `width` Integer -* `height` Integer - -设置窗口最大化的宽高值. - -### `win.getMaximumSize()` - -返回一个数组,它包含了窗口最大化的宽,高. - -### `win.setResizable(resizable)` - -* `resizable` Boolean - -设置窗口是否可以被用户改变size. - -### `win.isResizable()` - -返回 boolean,窗口是否可以被用户改变size. - -### `win.setMovable(movable)` _macOS_ _Windows_ - -* `movable` Boolean - -设置窗口是否可以被用户拖动. Linux 无效. - -### `win.isMovable()` _macOS_ _Windows_ - -返回 boolean,窗口是否可以被用户拖动. Linux 总是返回 `true`. - -### `win.setMinimizable(minimizable)` _macOS_ _Windows_ - -* `minimizable` Boolean - -设置窗口是否可以最小化. Linux 无效. - -### `win.isMinimizable()` _macOS_ _Windows_ - -返回 boolean,窗口是否可以最小化. Linux 总是返回 `true`. - -### `win.setMaximizable(maximizable)` _macOS_ _Windows_ - -* `maximizable` Boolean - -设置窗口是否可以最大化. Linux 无效. - -### `win.isMaximizable()` _macOS_ _Windows_ - -返回 boolean,窗口是否可以最大化. Linux 总是返回 `true`. - -### `win.setFullScreenable(fullscreenable)` - -* `fullscreenable` Boolean - -设置点击最大化按钮是否可以全屏或最大化窗口. - -### `win.isFullScreenable()` - -返回 boolean,点击最大化按钮是否可以全屏或最大化窗口. - -### `win.setClosable(closable)` _macOS_ _Windows_ - -* `closable` Boolean - -设置窗口是否可以人为关闭. Linux 无效. - -### `win.isClosable()` _macOS_ _Windows_ - -返回 boolean,窗口是否可以人为关闭. Linux 总是返回 `true`. - -### `win.setAlwaysOnTop(flag)` - -* `flag` Boolean - -是否设置这个窗口始终在其他窗口之上.设置之后,这个窗口仍然是一个普通的窗口,不是一个不可以获得焦点的工具箱窗口. - -### `win.isAlwaysOnTop()` - -返回 boolean,当前窗口是否始终在其它窗口之前. - -### `win.center()` - -窗口居中. - -### `win.setPosition(x, y[, animate])` - -* `x` Integer -* `y` Integer -* `animate` Boolean (可选) _macOS_ - -移动窗口到对应的 `x` and `y` 坐标. - -### `win.getPosition()` - -返回一个包含当前窗口位置的数组. - -### `win.setTitle(title)` - -* `title` String - -改变原窗口的title. - -### `win.getTitle()` - -返回原窗口的title. - -**注意:** 界面title可能和窗口title不相同. - -### `win.flashFrame(flag)` - -* `flag` Boolean - -开始或停止显示窗口来获得用户的关注. - -### `win.setSkipTaskbar(skip)` - -* `skip` Boolean - -让窗口不在任务栏中显示. - -### `win.setKiosk(flag)` - -* `flag` Boolean - -进入或离开 kiosk 模式. - -### `win.isKiosk()` - -返回 boolean,是否进入或离开 kiosk 模式. - -### `win.getNativeWindowHandle()` - -以 `Buffer` 形式返回这个具体平台的窗口的句柄. - -windows上句柄类型为 `HWND` ,macOS `NSView*` , Linux `Window`. - -### `win.hookWindowMessage(message, callback)` _Windows_ - -* `message` Integer -* `callback` Function - -拦截windows 消息,在 WndProc 接收到消息时触发 `callback`函数. - -### `win.isWindowMessageHooked(message)` _Windows_ - -* `message` Integer - -返回 `true` or `false` 来代表是否拦截到消息. - -### `win.unhookWindowMessage(message)` _Windows_ - -* `message` Integer - -不拦截窗口消息. - -### `win.unhookAllWindowMessages()` _Windows_ - -窗口消息全部不拦截. - -### `win.setRepresentedFilename(filename)` _macOS_ - -* `filename` String - -设置窗口当前文件路径,并且将这个文件的图标放在窗口标题栏上. - -### `win.getRepresentedFilename()` _macOS_ - -获取窗口当前文件路径. - -### `win.setDocumentEdited(edited)` _macOS_ - -* `edited` Boolean - -明确指出窗口文档是否可以编辑,如果可以编辑则将标题栏的图标变成灰色. - -### `win.isDocumentEdited()` _macOS_ - -返回 boolean,当前窗口文档是否可编辑. - -### `win.focusOnWebView()` - -### `win.blurWebView()` - -### `win.capturePage([rect, ]callback)` - -* `rect` Object (可选) - 捕获Page位置 - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer -* `callback` Function - -捕获 `rect` 中的page 的快照.完成后将调用回调函数 `callback` 并返回 `image` . `image` 是存储了快照信息的[NativeImage](native-image.md)实例.如果不设置 `rect` 则将捕获所有可见page. - -### `win.loadURL(url[, options])` - -类似 `webContents.loadURL(url[, options])`. - -### `win.reload()` - -类似 `webContents.reload`. - -### `win.setMenu(menu)` _Linux_ _Windows_ - -* `menu` Menu - -设置菜单栏的 `menu` ,设置它为 `null` 则表示不设置菜单栏. - -### `win.setProgressBar(progress)` - -* `progress` Double - -在进度条中设置进度值,有效范围 [0, 1.0]. - -当进度小于0时则不显示进度; -当进度大于0时显示结果不确定. - -在libux上,只支持Unity桌面环境,需要指明 `*.desktop` 文件并且在 `package.json` 中添加文件名字.默认它为 `app.getName().desktop`. - -### `win.setOverlayIcon(overlay, description)` _Windows 7+_ - -* `overlay` [NativeImage](native-image.md) - 在底部任务栏右边显示图标. -* `description` String - 描述. - -向当前任务栏添加一个 16 x 16 像素的图标,通常用来覆盖一些应用的状态,或者直接来提示用户. - -### `win.setHasShadow(hasShadow)` _macOS_ - -* `hasShadow` (Boolean) - -设置窗口是否应该有阴影.在Windows和Linux系统无效. - -### `win.hasShadow()` _macOS_ - -返回 boolean,设置窗口是否有阴影.在Windows和Linux系统始终返回 -`true`. - -### `win.setThumbarButtons(buttons)` _Windows 7+_ - -* `buttons` Array - -在窗口的任务栏button布局出为缩略图添加一个有特殊button的缩略图工具栏. 返回一个 `Boolean` 对象来指示是否成功添加这个缩略图工具栏. - -因为空间有限,缩略图工具栏上的 button 数量不应该超过7个.一旦设置了,由于平台限制,就不能移动它了.但是你可使用一个空数组来调用api来清除 buttons . - -所有 `buttons` 是一个 `Button` 对象数组: - -* `Button` Object - * `icon` [NativeImage](native-image.md) - 在工具栏上显示的图标. - * `click` Function - * `tooltip` String (可选) - tooltip 文字. - * `flags` Array (可选) - 控制button的状态和行为. 默认它是 `['enabled']`. - -`flags` 是一个数组,它包含下面这些 `String`s: - -* `enabled` - button 为激活状态并且开放给用户. -* `disabled` -button 不可用. 目前它有一个可见的状态来表示它不会响应你的行为. -* `dismissonclick` - 点击button,这个缩略窗口直接关闭. -* `nobackground` - 不绘制边框,仅仅使用图像. -* `hidden` - button 对用户不可见. -* `noninteractive` - button 可用但是不可响应; 也不显示按下的状态. 它的值意味着这是一个在通知单使用 button 的实例. - -### `win.showDefinitionForSelection()` _macOS_ - -在界面查找选中文字时显示弹出字典. - -### `win.setAutoHideMenuBar(hide)` - -* `hide` Boolean - -设置窗口的菜单栏是否可以自动隐藏. 一旦设置了,只有当用户按下 `Alt` 键时则显示. - -如果菜单栏已经可见,调用 `setAutoHideMenuBar(true)` 则不会立刻隐藏. - -### `win.isMenuBarAutoHide()` - -返回 boolean,窗口的菜单栏是否可以自动隐藏. - -### `win.setMenuBarVisibility(visible)` _Windows_ _Linux_ - -* `visible` Boolean - -设置菜单栏是否可见.如果菜单栏自动隐藏,用户仍然可以按下 `Alt` 键来显示. - -### `win.isMenuBarVisible()` - -返回 boolean,菜单栏是否可见. - -### `win.setVisibleOnAllWorkspaces(visible)` - -* `visible` Boolean - -设置窗口是否在所有地方都可见. - -**注意:** 这个api 在windows无效. - -### `win.isVisibleOnAllWorkspaces()` - -返回 boolean,窗口是否在所有地方都可见. - -**注意:** 在 windows上始终返回 false. - -### `win.setIgnoreMouseEvents(ignore)` _macOS_ - -* `ignore` Boolean - -忽略窗口的所有鼠标事件. - - -[blink-feature-string]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5?l=62 -[quick-look]: https://en.wikipedia.org/wiki/Quick_Look -[vibrancy-docs]: https://developer.apple.com/reference/appkit/nsvisualeffectview?language=objc -[window-levels]: https://developer.apple.com/reference/appkit/nswindow/1664726-window_levels -[chrome-content-scripts]: https://developer.chrome.com/extensions/content_scripts#execution-environment diff --git a/docs-translations/zh-CN/api/chrome-command-line-switches.md b/docs-translations/zh-CN/api/chrome-command-line-switches.md deleted file mode 100644 index 8bb540e44278..000000000000 --- a/docs-translations/zh-CN/api/chrome-command-line-switches.md +++ /dev/null @@ -1,136 +0,0 @@ -# 支持的 Chrome 命令行开关 - -> Electron 支持的命令行开关。 - -你可以在 [app][app] 模块的 [ready][ready] 事件发出之前使用 [app.commandLine.appendSwitch][append-switch] 来添加它们到你应用的 main 脚本里面: - -```javascript -const {app} = require('electron') -app.commandLine.appendSwitch('remote-debugging-port', '8315') -app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1') - -app.on('ready', () => { - // Your code here -}) -``` - -## --client-certificate=`path` - -设置客户端的证书文件 `path` . - -## --ignore-connections-limit=`domains` - -忽略用 `,` 分隔的 `domains` 列表的连接限制. - -## --disable-http-cache - -禁止请求 HTTP 时使用磁盘缓存. - -## --remote-debugging-port=`port` - -在指定的 `端口` 通过 HTTP 开启远程调试. - -## --js-flags=`flags` - -指定引擎过渡到 JS 引擎. - -在启动Electron时,如果你想在主进程中激活 `flags` ,它将被转换. - -```bash -$ electron --js-flags="--harmony_proxies --harmony_collections" your-app -``` - -## --proxy-server=`address:port` - -使用一个特定的代理服务器,它将比系统设置的优先级更高.这个开关只有在使用 HTTP 协议时有效,它包含 HTTPS 和 WebSocket 请求. 值得注意的是,不是所有的代理服务器都支持 HTTPS 和 WebSocket 请求. - -## --proxy-bypass-list=`hosts` - -让 Electron 使用(原文:bypass) 提供的以 semi-colon 分隔的hosts列表的代理服务器.这个开关只有在使用 `--proxy-server` 时有效. - -例如: - -```javascript -app.commandLine.appendSwitch('proxy-bypass-list', ';*.google.com;*foo.com;1.2.3.4:5678') -``` - - -将会为所有的hosts使用代理服务器,除了本地地址 (`localhost`, -`127.0.0.1` etc.), `google.com` 子域, 以 `foo.com` 结尾的hosts,和所有类似 `1.2.3.4:5678`的. - -## --proxy-pac-url=`url` - -在指定的 `url` 上使用 PAC 脚本. - -## --no-proxy-server - -不使用代理服务并且总是使用直接连接.忽略所有的合理代理标志. - -## --host-rules=`rules` - -一个逗号分隔的 `rule` 列表来控制主机名如何映射. - -例如: - -* `MAP * 127.0.0.1` 强制所有主机名映射到 127.0.0.1 -* `MAP *.google.com proxy` 强制所有 google.com 子域 使用 "proxy". -* `MAP test.com [::1]:77` 强制 "test.com" 使用 IPv6 回环地址. 也强制使用端口 77. -* `MAP * baz, EXCLUDE www.google.com` 重新全部映射到 "baz", 除了 - "www.google.com". - -这些映射适用于终端网络请求 -(TCP 连接 -和 主机解析 以直接连接的方式, 和 `CONNECT` 以代理连接, 还有 终端 host 使用 `SOCKS` 代理连接). - -## --host-resolver-rules=`rules` - -类似 `--host-rules` ,但是 `rules` 只适合主机解析. - -## --ignore-certificate-errors - -忽略与证书相关的错误. - -## --ppapi-flash-path=`path` - -设置Pepper Flash插件的路径 `path` . - -## --ppapi-flash-version=`version` - -设置Pepper Flash插件版本号. - -## --log-net-log=`path` - -使网络日志事件能够被读写到 `path`. - -## --disable-renderer-backgrounding - -防止 Chromium 降低隐藏的渲染进程优先级. - -这个标志对所有渲染进程全局有效,如果你只想在一个窗口中禁止使用,你可以采用 hack 方法[playing silent audio][play-silent-audio]. - -## --enable-logging - -打印 Chromium 信息输出到控制台. - -如果在用户应用加载完成之前解析`app.commandLine.appendSwitch` ,这个开关将实效,但是你可以设置 `ELECTRON_ENABLE_LOGGING` 环境变量来达到相同的效果. - -## --v=`log_level` - -设置默认最大活跃 V-logging 标准; 默认为 0.通常 V-logging 标准值为肯定值. - -这个开关只有在 `--enable-logging` 开启时有效. - -## --vmodule=`pattern` - -赋予每个模块最大的 V-logging levels 来覆盖 `--v` 给的值.E.g. `my_module=2,foo*=3` 会改变所有源文件 `my_module.*` and `foo*.*` 的代码中的 logging level . - -任何包含向前的(forward slash)或者向后的(backward slash)模式将被测试用于阻止整个路径名,并且不仅是E.g模块.`*/foo/bar/*=2` 将会改变所有在 `foo/bar` 下的源文件代码中的 logging level . - -这个开关只有在 `--enable-logging` 开启时有效. - -[app]: app.md -[append-switch]: app.md#appcommandlineappendswitchswitch-value -[ready]: app.md#event-ready -[play-silent-audio]: https://github.com/atom/atom/pull/9485/files -[debugging-main-process]: ../tutorial/debugging-main-process.md -[node-cli]: https://nodejs.org/api/cli.html diff --git a/docs-translations/zh-CN/api/clipboard.md b/docs-translations/zh-CN/api/clipboard.md deleted file mode 100644 index 8f549f7a890a..000000000000 --- a/docs-translations/zh-CN/api/clipboard.md +++ /dev/null @@ -1,117 +0,0 @@ -# clipboard - -`clipboard` 模块提供方法来供复制和粘贴操作 . -下面例子展示了如何将一个字符串写道 clipboard 上: - -```javascript -const clipboard = require('electron').clipboard -clipboard.writeText('Example String') -``` - -在 X Window 系统上, 有一个可选的 clipboard. 你可以为每个方法使用 `selection` 来控制它: - -```javascript -clipboard.writeText('Example String', 'selection') -console.log(clipboard.readText('selection')) -``` - -## 方法 - -`clipboard` 模块有以下方法: - -**注意:** 测试 APIs 已经标明,并且在将来会被删除 . - -### `clipboard.readText([type])` - -* `type` String (可选) - -以纯文本形式从 clipboard 返回内容 . - -### `clipboard.writeText(text[, type])` - -* `text` String -* `type` String (可选) - -以纯文本形式向 clipboard 添加内容 . - -### `clipboard.readHTML([type])` - -* `type` String (可选) - -返回 clipboard 中的标记内容. - -### `clipboard.writeHTML(markup[, type])` - -* `markup` String -* `type` String (可选) - -向 clipboard 添加 `markup` 内容 . - -### `clipboard.readImage([type])` - -* `type` String (可选) - -从 clipboard 中返回 [NativeImage](native-image.md) 内容. - -### `clipboard.writeImage(image[, type])` - -* `image` [NativeImage](native-image.md) -* `type` String (可选) - -向 clipboard 中写入 `image` . - -### `clipboard.readRTF([type])` - -* `type` String (可选) - -从 clipboard 中返回 RTF 内容. - -### `clipboard.writeRTF(text[, type])` - -* `text` String -* `type` String (可选) - -向 clipboard 中写入 RTF 格式的 `text` . - -### `clipboard.clear([type])` - -* `type` String (可选) - -清空 clipboard 内容. - -### `clipboard.availableFormats([type])` - -* `type` String (可选) - -返回 clipboard 支持的格式数组 . - -### `clipboard.has(data[, type])` _Experimental_ - -* `data` String -* `type` String (可选) - -返回 clipboard 是否支持指定 `data` 的格式. - -```javascript -console.log(clipboard.has('

selection

')) -``` - -### `clipboard.read(data[, type])` _Experimental_ - -* `data` String -* `type` String (可选) - -读取 clipboard 的 `data`. - -### `clipboard.write(data[, type])` - -* `data` Object - * `text` String - * `html` String - * `image` [NativeImage](native-image.md) -* `type` String (可选) - -```javascript -clipboard.write({text: 'test', html: 'test'}) -``` -向 clipboard 写入 `data` . \ No newline at end of file diff --git a/docs-translations/zh-CN/api/content-tracing.md b/docs-translations/zh-CN/api/content-tracing.md deleted file mode 100644 index 6b675d09a72a..000000000000 --- a/docs-translations/zh-CN/api/content-tracing.md +++ /dev/null @@ -1,130 +0,0 @@ -# contentTracing - -> 从 Chromium 的 content 模块收集跟踪数据,以查找性能 -瓶颈和运行缓慢的原因。 - -进程: [Main](../glossary.md#main-process) - -这个模块不具备web接口,所有需要我们在 Chrome 浏览器中打开 `chrome://tracing/` 来加载生成文件从而查看结果。 - -**注意:** 你不应该使用这个模块,直到应用程序发出 `ready` 事件。 - -```javascript -const {app, contentTracing} = require('electron') - -app.on('ready', () => { - const options = { - categoryFilter: '*', - traceOptions: 'record-until-full,enable-sampling' - } - - contentTracing.startRecording(options, () => { - console.log('Tracing started') - - setTimeout(() => { - contentTracing.stopRecording('', (path) => { - console.log('Tracing data recorded to ' + path) - }) - }, 5000) - }) -}) -``` - -## 方法 - - `content-tracing` 模块的方法如下: - -### `contentTracing.getCategories(callback)` - -* `callback` Function - -获得一组分类组. 分类组可以更改为新的代码路径。 - -一旦所有的子进程都接受到了 `getCategories` 方法请求, 分类组将调用 `callback`。 - -### `contentTracing.startRecording(options, callback)` - -* `options` Object - * `categoryFilter` String - * `traceOptions` String -* `callback` Function - -开始向所有进程进行记录。 - -一旦收到可以开始记录的请求,记录将会立马启动并且在子进程是异步记录听的. 当所有的子进程都收到 `startRecording` 请求的时候,`callback` 将会被调用。 - -`categoryFilter`是一个过滤器,它用来控制那些分类组应该被用来查找.过滤器应当有一个可选的 `-` 前缀来排除匹配的分类组。不允许同一个列表既是包含又是排斥。 - -例子: - -* `test_MyTest*`, -* `test_MyTest*,test_OtherStuff`, -* `"-excluded_category1,-excluded_category2` - -`traceOptions` 控制着哪种查找应该被启动,这是一个用逗号分隔的列表。可用参数如下: - -* `record-until-full` -* `record-continuously` -* `trace-to-console` -* `enable-sampling` -* `enable-systrace` - -前3个参数是来查找记录模块,并且以后都互斥。如果在 `traceOptions` 中超过一个跟踪 -记录模式,那最后一个的优先级最高.如果没有指明跟踪 -记录模式,那么它默认为 `record-until-full`。 - -在 `traceOptions` 中的参数被解析应用之前,查找参数初始化默认为 (`record_mode` 设置为 -`record-until-full`, `enable_sampling` 和 `enable_systrace` 设置为 `false`)。 - -### `contentTracing.stopRecording(resultFilePath, callback)` - -* `resultFilePath` String -* `callback` Function - * `resultFilePath` String - -停止对所有子进程的记录。 - -子进程通常缓存查找数据,并且仅仅将数据截取和发送给主进程。这有利于在通过 IPC 发送查找数据之前减小查找时的运行开销,这样做很有价值.因此,发送查找数据,我们应当异步通知所有子进程来截取任何待查找的数据。 - -一旦所有子进程接收到了 `stopRecording` 请求,将调用 `callback` ,并且返回一个包含查找数据的文件。 - -如果 `resultFilePath` 不为空,那么将把查找数据写入其中,否则写入一个临时文件。实际文件路径如果不为空,则将调用 `callback`。 - -### `contentTracing.startMonitoring(options, callback)` - -* `options` Object - * `categoryFilter` String - * `traceOptions` String -* `callback` Function - -开始向所有进程进行监听。 - -一旦收到可以开始监听的请求,记录将会立马启动并且在子进程是异步记监听的。当所有的子进程都收到 `startMonitoring` 请求的时候,`callback` 将会被调用。 - -### `contentTracing.stopMonitoring(callback)` - -* `callback` Function - -停止对所有子进程的监听。 - -一旦所有子进程接收到了 `stopMonitoring` 请求,将调用 `callback`。 - -### `contentTracing.captureMonitoringSnapshot(resultFilePath, callback)` - -* `resultFilePath` String -* `callback` Function - * `resultFilePath` String - -获取当前监听的查找数据。 - -子进程通常缓存查找数据,并且仅仅将数据截取和发送给主进程.因为如果直接通过 IPC 来发送查找数据的代价昂贵,我们宁愿避免不必要的查找运行开销。因此,为了停止查找,我们应当异步通知所有子进程来截取任何待查找的数据。 - -一旦所有子进程接收到了 `captureMonitoringSnapshot` 请求,将调用 `callback` ,并且返回一个包含查找数据的文件。 - -### `contentTracing.getTraceBufferUsage(callback)` - -* `callback` Function - * `value` Number - * `percentage` Number - -通过查找 buffer 进程来获取百分比最大使用量.当确定了TraceBufferUsage 的值确定的时候,就调用 `callback`。 diff --git a/docs-translations/zh-CN/api/crash-reporter.md b/docs-translations/zh-CN/api/crash-reporter.md deleted file mode 100644 index 9479495a269e..000000000000 --- a/docs-translations/zh-CN/api/crash-reporter.md +++ /dev/null @@ -1,66 +0,0 @@ -# crashReporter - -`crash-reporter` 模块开启发送应用崩溃报告. - -下面是一个自动提交崩溃报告给服务器的例子 : - -```javascript -const crashReporter = require('electron').crashReporter - -crashReporter.start({ - productName: 'YourName', - companyName: 'YourCompany', - submitURL: 'https://your-domain.com/url-to-submit', - autoSubmit: true -}) -``` - -可以使用下面的项目来创建一个服务器,用来接收和处理崩溃报告 : - -* [socorro](https://github.com/mozilla/socorro) -* [mini-breakpad-server](https://github.com/atom/mini-breakpad-server) - -## 方法 - -`crash-reporter` 模块有如下方法: - -### `crashReporter.start(options)` - -* `options` Object - * `companyName` String - * `submitURL` String - 崩溃报告发送的路径,以post方式. - * `productName` String (可选) - 默认为 `Electron`. - * `autoSubmit` Boolean - 是否自动提交. - 默认为 `true`. - * `ignoreSystemCrashHandler` Boolean - 默认为 `false`. - * `extra` Object - 一个你可以定义的对象,附带在崩溃报告上一起发送 . 只有字符串属性可以被正确发送,不支持嵌套对象. - -只可以在使用其它 `crashReporter` APIs 之前使用这个方法. - -**注意:** 在 macOS, Electron 使用一个新的 `crashpad` 客户端, 与 Windows 和 Linux 的 `breakpad` 不同. 为了开启崩溃点搜集,你需要在主进程和其它每个你需要搜集崩溃报告的渲染进程中调用 `crashReporter.start` API 来初始化 `crashpad`. - -### `crashReporter.getLastCrashReport()` - -返回最后一个崩溃报告的日期和 ID.如果没有过崩溃报告发送过来,或者还没有开始崩溃报告搜集,将返回 `null` . - -### `crashReporter.getUploadedReports()` - -返回所有上载的崩溃报告,每个报告包含了上载日期和 ID. - -## crash-reporter Payload - -崩溃报告将发送下面 `multipart/form-data` `POST` 型的数据给 `submitURL` : - -* `ver` String - Electron 版本. -* `platform` String - 例如 'win32'. -* `process_type` String - 例如 'renderer'. -* `guid` String - 例如 '5e1286fc-da97-479e-918b-6bfb0c3d1c72' -* `_version` String - `package.json` 版本. -* `_productName` String - `crashReporter` `options` - 对象中的产品名字. -* `prod` String - 基础产品名字. 这种情况为 Electron. -* `_companyName` String - `crashReporter` `options` - 对象中的公司名字. -* `upload_file_minidump` File - 崩溃报告按照 `minidump` 的格式. -* `crashReporter` 中的 `extra` 对象的所有等级和一个属性. - `options` object \ No newline at end of file diff --git a/docs-translations/zh-CN/api/desktop-capturer.md b/docs-translations/zh-CN/api/desktop-capturer.md deleted file mode 100644 index 89709ada28dd..000000000000 --- a/docs-translations/zh-CN/api/desktop-capturer.md +++ /dev/null @@ -1,64 +0,0 @@ -# desktopCapturer - -`desktopCapturer` 模块可用来获取可用资源,这个资源可通过 `getUserMedia` 捕获得到. - -```javascript -// 在渲染进程中. -var desktopCapturer = require('electron').desktopCapturer - -desktopCapturer.getSources({types: ['window', 'screen']}, function (error, sources) { - if (error) throw error - for (var i = 0; i < sources.length; ++i) { - if (sources[i].name === 'Electron') { - navigator.webkitGetUserMedia({ - audio: false, - video: { - mandatory: { - chromeMediaSource: 'desktop', - chromeMediaSourceId: sources[i].id, - minWidth: 1280, - maxWidth: 1280, - minHeight: 720, - maxHeight: 720 - } - } - }, gotStream, getUserMediaError) - return - } - } -}) - -function gotStream (stream) { - document.querySelector('video').src = URL.createObjectURL(stream) -} - -function getUserMediaError (e) { - console.log('getUserMediaError') -} -``` - -当调用 `navigator.webkitGetUserMedia` 时创建一个约束对象,如果使用 `desktopCapturer` 的资源,必须设置 `chromeMediaSource` 为 `"desktop"` ,并且 `audio` 为 `false`. - -如果你想捕获整个桌面的 audio 和 video,你可以设置 `chromeMediaSource` 为 `"screen"` ,和 `audio` 为 `true`. -当使用这个方法的时候,不可以指定一个 `chromeMediaSourceId`. - -## 方法 - -`desktopCapturer` 模块有如下方法: - -### `desktopCapturer.getSources(options, callback)` - -* `options` Object - * `types` Array - 一个 String 数组,列出了可以捕获的桌面资源类型, 可用类型为 `screen` 和 `window`. - * `thumbnailSize` Object (可选) - 建议缩略可被缩放的 size, 默认为 `{width: 150, height: 150}`. -* `callback` Function - -发起一个请求,获取所有桌面资源,当请求完成的时候使用 `callback(error, sources)` 调用 `callback` . - -`sources` 是一个 `Source` 对象数组, 每个 `Source` 表示了一个捕获的屏幕或单独窗口,并且有如下属性 : -* `id` String - 在 `navigator.webkitGetUserMedia` 中使用的捕获窗口或屏幕的 id . 格式为 `window:XX` 祸 - `screen:XX`,`XX` 是一个随机数. -* `name` String - 捕获窗口或屏幕的描述名 . 如果资源为屏幕,名字为 `Entire Screen` 或 `Screen `; 如果资源为窗口, 名字为窗口的标题. -* `thumbnail` [NativeImage](NativeImage.md) - 缩略图. - -**注意:** 不能保证 `source.thumbnail` 的 size 和 `options` 中的 `thumnbailSize` 一直一致. 它也取决于屏幕或窗口的缩放比例. diff --git a/docs-translations/zh-CN/api/dialog.md b/docs-translations/zh-CN/api/dialog.md deleted file mode 100644 index 41ec25672196..000000000000 --- a/docs-translations/zh-CN/api/dialog.md +++ /dev/null @@ -1,146 +0,0 @@ -# dialog - -> 显示用于打开和保存文件,alert框等的原生的系统对话框 - -进程: [Main](../glossary.md#main-process) - -对话框例子,展示了选择文件和目录: - -```javascript -const {dialog} = require('electron') -console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) -``` - -对话框从 Electron 的主线程打开。如果要从渲染器进程使用对话框 -对象,记得使用 remote 访问它: - -```javascript -const {dialog} = require('electron').remote -console.log(dialog) -``` - -## 方法 - -`dialog` 模块有以下方法: - -### `dialog.showOpenDialog([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (可选) -* `options` Object - * `title` String (可选) - * `defaultPath` String (可选) - * `buttonLabel` String (可选) - Custom label for the confirmation button, when - left empty the default label will be used. - * `filters` [FileFilter[]](structures/file-filter.md) (optional) - * `properties` String[] (可选) - Contains which features the dialog should - use. The following values are supported: - * `openFile` - Allow files to be selected. - * `openDirectory` - Allow directories to be selected. - * `multiSelections` - Allow multiple paths to be selected. - * `showHiddenFiles` - Show hidden files in dialog. - * `createDirectory` _macOS_ - Allow creating new directories from dialog. - * `promptToCreate` _Windows_ - Prompt for creation if the file path entered - in the dialog does not exist. This does not actually create the file at - the path but allows non-existent paths to be returned that should be - created by the application. - * `normalizeAccessKeys` Boolean (可选) - Normalize the keyboard access keys - across platforms. Default is `false`. Enabling this assumes `&` is used in - the button labels for the placement of the keyboard shortcut access key - and labels will be converted so they work correctly on each platform, `&` - characters are removed on macOS, converted to `_` on Linux, and left - untouched on Windows. For example, a button label of `Vie&w` will be - converted to `Vie_w` on Linux and `View` on macOS and can be selected - via `Alt-W` on Windows and Linux. -* `callback` Function (可选) - * `filePaths` String[] - An array of file paths chosen by the user - -成功使用这个方法的话,就返回一个可供用户选择的文件路径数组,失败返回 `undefined`。 - -`browserWindow` 参数允许对话框将自身附加到父窗口,使其成为模态。 - -`filters` 当需要限定用户的行为的时候,指定一个文件数组给用户展示或选择。例如: - -```javascript -{ - filters: [ - {name: 'Images', extensions: ['jpg', 'png', 'gif']}, - {name: 'Movies', extensions: ['mkv', 'avi', 'mp4']}, - {name: 'Custom File Type', extensions: ['as']}, - {name: 'All Files', extensions: ['*']} - ] -} -``` - -`extensions` 数组应当只包含扩展名,不应该包含通配符或 '.' 号 (例如 -`'png'` 正确,但是 `'.png'` 和 `'*.png'` 不正确)。展示全部文件的话,使用 -`'*'` 通配符 (不支持其他通配符)。 - -如果 `callback` 被调用,将异步调用 API ,并且结果将用过 `callback(filenames)` 展示。 - -**注意:** 在 Windows 和 Linux ,一个打开的 dialog 不能既是文件选择框又是目录选择框, 所以如果在这些平台上设置 `properties` 的值为 -`['openFile', 'openDirectory']` ,将展示一个目录选择框。 - -### `dialog.showSaveDialog([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (可选) -* `options` Object - * `title` String (可选) - * `defaultPath` String (可选) - * `buttonLabel` String (可选) - Custom label for the confirmation button, when - left empty the default label will be used. - * `filters` [FileFilter[]](structures/file-filter.md) (optional) -* `callback` Function (可选) - * `filename` String - -成功使用这个方法的话,就返回一个可供用户选择的文件路径数组,失败返回 `undefined`。 - -`browserWindow` 参数允许对话框将自身附加到父窗口,使其成为模态。 - -`filters` 指定展示一个文件类型数组, 例子 -`dialog.showOpenDialog` 。 - -如果 `callback` 被调用, 将异步调用 API ,并且结果将用过 `callback(filenames)` 展示。 - -### `dialog.showMessageBox([browserWindow, ]options[, callback])` - -* `browserWindow` BrowserWindow (可选) -* `options` Object - * `type` String - 可以是 `"none"`, `"info"`, `"error"`, `"question"` 或 - `"warning"`. 在 Windows, "question" 与 "info" 展示图标相同, 除非你使用 "icon" 参数. - * `buttons` String[]- (可选) - 按钮上文字的数组,在 Windows 系统中,空数组在按钮上会显示 “OK”. - * `defaultId` Integer (可选) - 在 message box 对话框打开的时候,设置默认选中的按钮,值为在 buttons 数组中的索引. - * `title` String (可选) - message box 的标题,一些平台不显示. - * `message` String (可选) - message box 的内容. - * `detail` String (可选)- 额外信息. - * `checkboxLabel` String (可选) - 如果有该参数,message box 中会显示一个 checkbox 复选框,它的勾选状态可以在 `callback` 回调方法中获取。 - * `checkboxChecked` Boolean (可选) - checkbox 的初始值,默认为`false`. - * `icon` [NativeImage](native-image.md)(可选) - * `cancelId` Integer - 当用户不是通过按钮而是使用其他方式关闭对话框时,比如按`Esc`键,就返回该值.默认值为对应 "cancel" 或 "no" 标签 button 的索引值, 如果没有这种 button,就返回0. 该选项在 Windows 上无效. - * `noLink` Boolean(可选) - 在 Windows 系统中,Electron 将尝试识别哪个button 是普通 button (如 "Cancel" 或 "Yes"), 然后在对话框中以链接命令(command links)方式展现其它的 button . 这能让对话框展示得很炫酷.如果你不喜欢这种效果,你可以设置 `noLink` 为 `true`. -* `callback` Function (可选) - * `response` Number - 被点击按钮的索引值。 - * `checkboxChecked` Boolean - 如果设置了 `checkboxLabel` ,会显示 checkbox 的选中状态,否则显示 `false` - -返回 `Integer`,如果提供了回调,它会返回点击的按钮的索引或者 undefined 。 - -显示 message box 时, 它会阻塞进程,直到 message box 关闭为止.返回点击按钮的索引值。 - -`browserWindow` 参数允许对话框将自身附加到父窗口,使其成为模态。 - -如果 `callback` 被调用, 将异步调用 API ,并且结果将用过 `callback(response)` 展示。 - -### `dialog.showErrorBox(title, content)` - -* `title` String - 错误框中的标题 -* `content` String - 错误框中的内容 - -展示一个传统的包含错误信息的对话框. - -在 `app` 模块触发 `ready` 事件之前,这个 api 可以被安全调用,通常它被用来在启动的早期阶段报告错误. 在 Linux 上,如果在 `app` 模块触发 `ready` 事件之前调用,message 将会被触发显示 stderr ,并且没有实际 GUI 框显示. - -## Sheets - -在 macOS 上,如果你想像 sheets 一样展示对话框,只需要在`browserWindow` 参数中提供一个 `BrowserWindow` 的引用对象.,如果没有则为模态窗口。 - -你可以调用 `BrowserWindow.getCurrentWindow().setSheetOffset(offset)` 来改变 -sheets 的窗口框架的偏移量。 diff --git a/docs-translations/zh-CN/api/download-item.md b/docs-translations/zh-CN/api/download-item.md deleted file mode 100644 index d35605bbb114..000000000000 --- a/docs-translations/zh-CN/api/download-item.md +++ /dev/null @@ -1,127 +0,0 @@ -# DownloadItem - -`DownloadItem`(下载项)是一个在Electron中展示下载项的 -[EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)。 -它被用于`Session`模块中的`will-download`事件,允许用户去控制下载项。 - -```javascript -// In the main process. -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.webContents.session.on('will-download', (event, item, webContents) => { - // Set the save path, making Electron not to prompt a save dialog. - item.setSavePath('/tmp/save.pdf') - - item.on('updated', (event, state) => { - if (state === 'interrupted') { - console.log('Download is interrupted but can be resumed') - } else if (state === 'progressing') { - if (item.isPaused()) { - console.log('Download is paused') - } else { - console.log(`Received bytes: ${item.getReceivedBytes()}`) - } - } - }) - item.once('done', (event, state) => { - if (state === 'completed') { - console.log('Download successfully') - } else { - console.log(`Download failed: ${state}`) - } - }) -}) -``` - -## 事件 - -### 事件: 'updated' - -* `event` Event -* `state` String - * `progressing` - 下载中。 - * `interrupted` - 下载被中断且可恢复。 - -当`downloadItem`获得更新且未终止时触发。 - -### 事件: 'done' - -* `event` Event -* `state` String - * `completed` - 下载成功。 - * `cancelled` - 下载被取消。 - * `interrupted` - 下载被中断且不可恢复。 - -当下载处于一个终止状态时触发。这包括了一个完成的下载,一个被取消的下载(via `downloadItem.cancel()`), -和一个被意外中断的下载(无法恢复)。 - -## 方法 - -`downloadItem`对象有以下一些方法: - -### `downloadItem.setSavePath(path)` - -* `path` String - 设置下载项的保存文件路径. - -这个API仅仅在`session`的`will-download`回调函数中可用。 -如果用户没有这个API去设置保存路径,Electron会用原始程序去确定保存路径(通常提示一个保存对话框)。 - -### `downloadItem.pause()` - -暂停下载。 - -### `downloadItem.isPause()` - -返回一个`Boolean`表示是否暂定下载。 - -### `downloadItem.resume()` - -恢复被暂停的下载。 - -### `downloadItem.canResume()` - -返回一个`Boolean`表示是否可以恢复被暂停的下载。 - -### `downloadItem.cancel()` - -取消下载操作。 - -### `downloadItem.getURL()` - -以`String`形式返回一个该下载项的下载源url。 - -### `downloadItem.getMimeType()` - -返回一个表示mime类型的`String`。 - -### `downloadItem.hasUserGesture()` - -返回一个`Boolean`表示下载是否有用户动作。 - -### `downloadItem.getFilename()` - -返回一个表示下载项文件名的`String`。 - -**Note:** 此文件名不一定总是保存在本地硬盘上的实际文件名。 -如果用户在下载保存对话框中修改了文件名,保存的文件的实际名称会与`downloadItem.getFilename()`方法返回的文件名不同。 - -### `downloadItem.getTotalBytes()` - -返回一个表示下载项总字节数大小的`Integer`。如果大小未知,返回0。 - -### `downloadItem.getReceivedBytes()` - -返回一个表示下载项已经接收的字节数大小的`Integer`。 - -### `downloadItem.getContentDisposition()` - -以`String`形式返回响应头(response header)中的`Content-Disposition`域。 - -### `downloadItem.getState()` - -以`String`形式返回该下载项的目前状态。 - -* `progressing` - 下载中。 -* `completed` - 下载成功。 -* `cancelled` - 下载被取消。 -* `interrupted` - 下载被中断。 diff --git a/docs-translations/zh-CN/api/environment-variables.md b/docs-translations/zh-CN/api/environment-variables.md deleted file mode 100644 index 706e340245f1..000000000000 --- a/docs-translations/zh-CN/api/environment-variables.md +++ /dev/null @@ -1,53 +0,0 @@ -# 环境变量 - -一些 Electron 的行为受到环境变量的控制,因为他们的初始化比命令行和应用代码更早. - -POSIX shells 的例子: - -```bash -$ export ELECTRON_ENABLE_LOGGING=true -$ electron -``` - -Windows 控制台: - -```powershell -> set ELECTRON_ENABLE_LOGGING=true -> electron -``` - -## `ELECTRON_RUN_AS_NODE` - -类似node.js普通进程启动方式. - -## `ELECTRON_ENABLE_LOGGING` - -打印 Chrome 的内部日志到控制台. - -## `ELECTRON_LOG_ASAR_READS` - -当 Electron 读取 ASA 文档,把 read offset 和文档路径做日志记录到系统 `tmpdir`.结果文件将提供给 ASAR 模块来优化文档组织. - -## `ELECTRON_ENABLE_STACK_DUMPING` - -当 Electron 崩溃的时候,打印堆栈记录到控制台. - -如果 `crashReporter` 已经启动那么这个环境变量实效. - -## `ELECTRON_DEFAULT_ERROR_MODE` _Windows_ - -当 Electron 崩溃的时候,显示windows的崩溃对话框. - -如果 `crashReporter` 已经启动那么这个环境变量实效. - -## `ELECTRON_NO_ATTACH_CONSOLE` _Windows_ - -不可使用当前控制台. - -## `ELECTRON_FORCE_WINDOW_MENU_BAR` _Linux_ - -不可在 Linux 上使用全局菜单栏. - -## `ELECTRON_HIDE_INTERNAL_MODULES` - -关闭旧的内置模块如 `require('ipc')` 的通用模块. \ No newline at end of file diff --git a/docs-translations/zh-CN/api/file-object.md b/docs-translations/zh-CN/api/file-object.md deleted file mode 100644 index 1f3b08c99d29..000000000000 --- a/docs-translations/zh-CN/api/file-object.md +++ /dev/null @@ -1,30 +0,0 @@ -# `File` 对象 - -> 在文件系统上使用 HTML5 `File` API 与本地文件交互。 - -为了让用户能够通过 HTML5 的 file API 直接操作本地文件,DOM 的 File 接口提供了对本地文件的抽象。Electron 在 File 接口中增加了一个 path 属性,它是文件在系统中的真实路径。 - -获取拖动到 APP 中文件的真实路径的例子: - -```html -
- Drag your file here -
- - -``` diff --git a/docs-translations/zh-CN/api/frameless-window.md b/docs-translations/zh-CN/api/frameless-window.md deleted file mode 100644 index 9e0c60ad7d25..000000000000 --- a/docs-translations/zh-CN/api/frameless-window.md +++ /dev/null @@ -1,87 +0,0 @@ -# Frameless Window - -无边框窗口指的是不包含除页面本身以外任何其它可视部分的窗口([chrome](https://developer.mozilla.org/en-US/docs/Glossary/Chrome))。 -像工具栏,是窗口的一部分,但并不属于页面。这些是[`BrowserWindow`](browser-window.md) 类的选项。 - -## 创建无边框窗口 - -为了创建一个无边框窗口,你需要设置[BrowserWindow](browser-window.md)的`frame`为`false`: - - - -```javascript -const BrowserWindow = require('electron').BrowserWindow -var win = new BrowserWindow({ width: 800, height: 600, frame: false }) -``` - -### macOS上的替代方案 - -在macOS 10.10 Yosemite或者更新的版本中,有一个替代方案去生成一个无边框窗口。 -不同于设置`frame`为`false`会隐藏标题栏以及失去对窗口的控制,你可能想隐藏标题栏使你的页面内容显示在整个窗口上 -,同时又想保持对窗口的控制("traffic lights")。你可以通过指定`titleBarStyle`这一新选项达到目标: - -```javascript -var win = new BrowserWindow({ 'titleBarStyle': 'hidden' }) -``` - -## 透明窗口 - -通过设置`transparent` 选项为 `true`,你能使无边框窗口透明: - -```javascript -var win = new BrowserWindow({ transparent: true, frame: false }) -``` - -### 限制 - -* 你无法点击透明的区域。我们正在采用一个新的API去设置窗口的外形以解决这个问题, - 详见[our issue](https://github.com/electron/electron/issues/1335)。 -* 透明窗口是不可调整大小的。在某些平台上,设置`resizable`为`true`也许会造成这个透明窗口停止工作。 -* `blur`滤光器器只适用于网页,所以没法将模糊效果用于窗口之下(i.e. 其它在用户的系统中打开的应用)。 -* 在Windows系统中,当DWM被禁用时透明窗口不会工作。 -* Linux用户需要在命令行中输入`--enable-transparent-visuals --disable-gpu` - 去禁用GPU以及允许ARGB去渲染透明窗口,这是由于一个Linux上的上游bug[alpha channel doesn't work on some - NVidia drivers](https://code.google.com/p/chromium/issues/detail?id=369209)造成的 -* 在Mac上,透明窗口的阴影不会显示出来. - -## 可拖动区域 - -默认情况下,无边框窗口是不可拖动的。应用在CSS中设置`-webkit-app-region: drag` -告诉Electron哪个区域是可拖动的(比如系统标准的标题栏),应用也可以设置`-webkit-app-region: no-drag` -在可拖动区域中排除不可拖动的区域。需要注意的是,目前只支持矩形区域。 - -为了让整个窗口可拖动,你可以在`body`的样式中添加`-webkit-app-region: drag`: - -```html - - -``` - -另外需要注意的是,如果你设置了整个窗口可拖动,你必须标记按钮为不可拖动的(non-draggable), -否则用户不能点击它们: - -```css -button { - -webkit-app-region: no-drag; -} -``` - -如果你设置一个自定义的标题栏可拖动,你同样需要设置标题栏中所有的按钮为不可拖动(non-draggable)。 - -## 文本选择 - -在一个无边框窗口中,拖动动作会与文本选择发生冲突。比如,当你拖动标题栏,偶尔会选中标题栏上的文本。 -为了防止这种情况发生,你需要向下面这样在一个可拖动区域中禁用文本选择: - -```css -.titlebar { - -webkit-user-select: none; - -webkit-app-region: drag; -} -``` - -## 上下文菜单 - -在一些平台上,可拖动区域会被认为是非客户端框架(non-client frame),所有当你点击右键时,一个系统菜单会弹出。 -为了保证上下文菜单在所有平台下正确的显示,你不应该在可拖动区域使用自定义上下文菜单。 - diff --git a/docs-translations/zh-CN/api/global-shortcut.md b/docs-translations/zh-CN/api/global-shortcut.md deleted file mode 100644 index 15037c73c087..000000000000 --- a/docs-translations/zh-CN/api/global-shortcut.md +++ /dev/null @@ -1,71 +0,0 @@ -# globalShortcut - -> 当应用程序没有键盘焦点时检测键盘事件。 - -进程: [Main](../glossary.md#main-process) - -`globalShortcut` 模块可以便捷的为你设置(注册/注销)各种自定义操作的快捷键。 - -**注意:** 使用此模块注册的快捷键是系统全局的(QQ截图那种), 不要在应用模块(app module)响应 `ready` -消息前使用此模块(注册快捷键)。 - -```javascript -const {app, globalShortcut} = require('electron') - -app.on('ready', () => { - // Register a 'CommandOrControl+X' shortcut listener. - const ret = globalShortcut.register('CommandOrControl+X', () => { - console.log('CommandOrControl+X is pressed') - }) - - if (!ret) { - console.log('registration failed') - } - - // Check whether a shortcut is registered. - console.log(globalShortcut.isRegistered('CommandOrControl+X')) -}) - -app.on('will-quit', () => { - // Unregister a shortcut. - globalShortcut.unregister('CommandOrControl+X') - - // Unregister all shortcuts. - globalShortcut.unregisterAll() -}) -``` - -## Methods - -`globalShortcut` 模块包含以下函数: - -### `globalShortcut.register(accelerator, callback)` - -* `accelerator` [Accelerator](accelerator.md) -* `callback` Function - -注册 `accelerator` 快捷键。当用户按下注册的快捷键时将会调用 `callback` 函数。 - -当 accelerator 已经被其他应用程序占用时,此调用将 -默默地失败。这种行为是操作系统的意图,因为它们没有 -想要应用程序争取全局快捷键。 - -### `globalShortcut.isRegistered(accelerator)` - -* `accelerator` [Accelerator](accelerator.md) - -返回 `Boolean` - 查询 `accelerator` 快捷键是否已经被注册过了,将会返回 `true` 或 `false`。 - -当 accelerator 已经被其他应用程序占用时,此调用将 -默默地失败。这种行为是操作系统的意图,因为它们没有 -想要应用程序争取全局快捷键。 - -### `globalShortcut.unregister(accelerator)` - -* `accelerator` [Accelerator](accelerator.md) - -注销全局快捷键 `accelerator`。 - -### `globalShortcut.unregisterAll()` - -注销本应用程序注册的所有全局快捷键。 diff --git a/docs-translations/zh-CN/api/ipc-main-process.md b/docs-translations/zh-CN/api/ipc-main-process.md deleted file mode 100644 index d74794eeecd9..000000000000 --- a/docs-translations/zh-CN/api/ipc-main-process.md +++ /dev/null @@ -1,68 +0,0 @@ -# ipc (主进程) - -在主进程使用`ipc`模块时,`ipc`负责捕获从渲染进程(网页)发送的同步或者是异步消息. - -## 发送消息 - -主进程也可以向渲染进程发送信息,具体可以看[WebContents.send](web-contents.md#webcontentssendchannel-args). - -- 当发送消息的时候,事件名字为`channel`. -- 回复一个同步消息的时候,你需要使用`event.returnValue` -- 回复一个异步消息的时候,使用`event.sender.send(...)` - -下面是一个主进程和渲染进程的通信例子. - -```javascript -// 在主进程中. -var ipc = require('ipc') -ipc.on('asynchronous-message', function (event, arg) { - console.log(arg) // 打印 "ping" - event.sender.send('asynchronous-reply', 'pong') -}) - -ipc.on('synchronous-message', function (event, arg) { - console.log(arg) // 打印 "ping" - event.returnValue = 'pong' -}) -``` - -```javascript -// 在渲染进程(网页). -var ipc = require('ipc') -console.log(ipc.sendSync('synchronous-message', 'ping')) // 打印 "pong" - -ipc.on('asynchronous-reply', function (arg) { - console.log(arg) // 打印 "pong" -}) -ipc.send('asynchronous-message', 'ping') -``` - -## 监听消息 - -`ipc`模块有下列几种方法来监听事件. - -### `ipc.on(channel, callback)` - -* `channel` - 事件名称. -* `callback` - 回调函数. - -当事件发生的时候,会传入`callback` `event`和`arg`参数. - -## IPC 事件 - -传入`callback`的`event`对象含有下列方法. - -### `Event.returnValue` - -在同步消息中,设置这个值将会被返回. - -### `Event.sender` - -返回一个可以发送消息的`WebContents`. - -### `Event.sender.send(channel[.arg1][,arg2][,...])` - -* `channel` - 事件名称. -* `arg` (选用) - -这个可以发送一个可带参数的异步消息回渲染进程. diff --git a/docs-translations/zh-CN/api/ipc-main.md b/docs-translations/zh-CN/api/ipc-main.md deleted file mode 100644 index e84a9f4f4efc..000000000000 --- a/docs-translations/zh-CN/api/ipc-main.md +++ /dev/null @@ -1,89 +0,0 @@ -# ipcMain - -> 从主进程到渲染器进程异步通信。 - -进程:[Main](../glossary.md#main-process) - -`ipcMain` 模块是类 -[EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) 的实例。当在主进程中使用它的时候,它控制着由渲染进程(web page)发送过来的异步或同步消息。从渲染进程发送过来的消息将触发事件。 - -## 发送消息 - -同样也可以从主进程向渲染进程发送消息,查看更多 [webContents.send][web-contents-send] 。 - -* 发送消息,事件名为 `channel`。 -* 回应同步消息, 你可以设置 `event.returnValue`。 -* 回应异步消息, 你可以使用 - `event.sender.send(...)`。 - -一个例子,在主进程和渲染进程之间发送和处理消息: - -```javascript -// In main process. -const {ipcMain} = require('electron') -ipcMain.on('asynchronous-message', (event, arg) => { - console.log(arg) // prints "ping" - event.sender.send('asynchronous-reply', 'pong') -}) - -ipcMain.on('synchronous-message', (event, arg) => { - console.log(arg) // prints "ping" - event.returnValue = 'pong' -}) -``` - -```javascript -// In renderer process (web page). -const {ipcRenderer} = require('electron') -console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong" - -ipcRenderer.on('asynchronous-reply', (event, arg) => { - console.log(arg) // prints "pong" -}) -ipcRenderer.send('asynchronous-message', 'ping') -``` - -## 方法 - -`ipcMain` 模块有如下监听事件方法: - -### `ipcMain.on(channel, listener)` - -* `channel` String -* `listener` Function - -监听 `channel`, 当新消息到达,将通过 `listener(event, args...)` 调用 `listener`。 - -### `ipcMain.once(channel, listener)` - -* `channel` String -* `listener` Function - -为事件添加一个一次性用的`listener` 函数。这个 `listener` 只有在下次的消息到达 `channel` 时被请求调用,之后就被删除了。 - -### `ipcMain.removeListener(channel, listener)` - -* `channel` String -* `listener` Function - -为特定的 `channel` 从监听队列中删除特定的 `listener` 监听者。 - -### `ipcMain.removeAllListeners([channel])` - -* `channel` String (可选) - -删除所有监听者,或特指的 `channel` 的所有监听者。 - -## 事件对象 - -传递给 `callback` 的 `event` 对象有如下方法: - -### `event.returnValue` - -将此设置为在一个同步消息中返回的值。 - -### `event.sender` - -返回发送消息的 `webContents` ,你可以调用 `event.sender.send` 来回复异步消息,更多信息 [webContents.send][web-contents-send]。 - -[web-contents-send]: web-contents.md#webcontentssendchannel-arg1-arg2- diff --git a/docs-translations/zh-CN/api/ipc-renderer.md b/docs-translations/zh-CN/api/ipc-renderer.md deleted file mode 100644 index beeaa6d76232..000000000000 --- a/docs-translations/zh-CN/api/ipc-renderer.md +++ /dev/null @@ -1,69 +0,0 @@ -# ipcRenderer - -`ipcRenderer` 模块是一个 -[EventEmitter](https://nodejs.org/api/events.html) 类的实例. 它提供了有限的方法,你可以从渲染进程向主进程发送同步或异步消息. 也可以收到主进程的相应. - -查看 [ipcMain](ipc-main.md) 代码例子. - -## 消息监听 - -`ipcRenderer` 模块有下列方法来监听事件: - -### `ipcRenderer.on(channel, listener)` - -* `channel` String -* `listener` Function - -监听 `channel`, 当有新消息到达,使用 `listener(event, args...)` 调用 `listener` . - -### `ipcRenderer.once(channel, listener)` - -* `channel` String -* `listener` Function - -为这个事件添加一个一次性 `listener` 函数.这个 `listener` 将在下一次有新消息被发送到 `channel` 的时候被请求调用,之后就被删除了. - -### `ipcRenderer.removeListener(channel, listener)` - -* `channel` String -* `listener` Function - -从指定的 `channel` 中的监听者数组删除指定的 `listener` . - -### `ipcRenderer.removeAllListeners([channel])` - -* `channel` String (optional) - -删除所有的监听者,或者删除指定 `channel` 中的全部. - -## 发送消息 - -`ipcRenderer` 模块有如下方法来发送消息: - -### `ipcRenderer.send(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (可选) - -通过 `channel` 向主进程发送异步消息,也可以发送任意参数.参数会被JSON序列化,之后就不会包含函数或原型链. - -主进程通过使用 `ipcMain` 模块来监听 `channel`,从而处理消息. - -### `ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (可选) - -通过 `channel` 向主进程发送同步消息,也可以发送任意参数.参数会被JSON序列化,之后就不会包含函数或原型链. - -主进程通过使用 `ipcMain` 模块来监听 `channel`,从而处理消息, -通过 `event.returnValue` 来响应. - -__注意:__ 发送同步消息将会阻塞整个渲染进程,除非你知道你在做什么,否则就永远不要用它 . - -### `ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (可选) - -类似 `ipcRenderer.send` ,但是它的事件将发往 host page 的 `` 元素,而不是主进程. \ No newline at end of file diff --git a/docs-translations/zh-CN/api/menu-item.md b/docs-translations/zh-CN/api/menu-item.md deleted file mode 100644 index 662a1ed03a59..000000000000 --- a/docs-translations/zh-CN/api/menu-item.md +++ /dev/null @@ -1,106 +0,0 @@ -# 菜单项 - -## 类:菜单项 - -> 向原生的应用菜单和 context 菜单添加菜单项。 - -进程: [Main](../glossary.md#main-process) - -查看 [`Menu`](menu.md) 的示。 - -### `new MenuItem(options)` - -* `options` Object - * `click` Function (可选) - 当菜单项被点击的时候,使用 `click(menuItem,browserWindow)` 调用。 - * `menuItem` MenuItem - * `browserWindow` BrowserWindow - * `event` Event - * `role` String (可选) - 定义菜单项的行为,在指定 `click` 属性时将会被忽略。参见 [roles](#roles). - * `type` String (可选) - 取值 `normal`, `separator`, `submenu`, `checkbox` 或 `radio`。 - * `label` String - (可选) - * `sublabel` String - (可选) - * `accelerator` [Accelerator](accelerator.md) (可选) - * `icon` ([NativeImage](native-image.md) | String) (可选) - * `enabled` Boolean (可选) - 如果为 false,菜单项将显示为灰色不可点击。 - * `visible` Boolean (可选) - 如果为 false,菜单项将完全隐藏。 - * `checked` Boolean (可选) - 只为 `checkbox` 或 `radio` 类型的菜单项。 - * `submenu` (MenuItemConstructorOptions[] | Menu) (可选) - 应当作为 `submenu` 菜单项的特定类型,当它作为 `type: 'submenu'` 菜单项的特定类型时可以忽略。如果它的值不是 `Menu`,将自动转为 `Menu.buildFromTemplate`。 - * `id` String (可选) - 菜单的唯一标识。如果被定义使用,它将被用作这个菜单项的参考位置属性。 - * `position` String (可选) - 定义菜单的具体指定位置信息。 - -### Roles -Roles 允许菜单项有预定义的行为。最好为每个菜单项指定一个行为,而不是自己实现一个 `click` 函数中的行为。内置的 `role` 行为将提供最好的原生体验。 - -当使用 `role` 时,`label` 和 `accelerator` 的值是可选的,会针对每个平台设置默认值。 - - -`role`属性值可以为: - -* `undo` -* `redo` -* `cut` -* `copy` -* `paste` -* `pasteandmatchstyle` -* `selectall` -* `delete` -* `minimize` - 最小化当前窗口 -* `close` - 关闭当前窗口 -* `quit`- 退出应用程序 -* `reload` - 正常重新加载当前窗口 -* `forcereload` - 忽略缓存并重新加载当前窗口 -* `toggledevtools` - 在当前窗口中切换开发者工具 -* `togglefullscreen`- 在当前窗口中切换全屏模式 -* `resetzoom` - 将对焦页面的缩放级别重置为原始大小 -* `zoomin` - 将聚焦页面缩小10% -* `zoomout` - 将聚焦页面放大10% -* `editMenu` - 完整的默认 "Edit" 编辑菜单(拷贝,黏贴,等) -* `windowMenu` - 完整的默认 "Window" 窗口菜单(最小化,关闭,等) - -在 macOS 上,`role` 还可以有以下值: - -* `about` - 匹配 `orderFrontStandardAboutPanel` 行为 -* `hide` - 匹配 `hide` 行为 -* `hideothers` - 匹配 `hideOtherApplications` 行为 -* `unhide` - 匹配 `unhideAllApplications` 行为 -* `startspeaking` - 匹配 `startSpeaking` 行为 -* `stopspeaking` - 匹配 `stopSpeaking` 行为 -* `front` - 匹配 `arrangeInFront` 行为 -* `zoom` - 匹配 `performZoom` 行为 -* `window` - "Window" 菜单项 -* `help` - "Help" 菜单项 -* `services` - "Services" 菜单项 - -当在 macOS 上指定 `role` 时,`label` 和 `accelerator` 是影响MenuItem的唯一的选项 -所有其他选项将被忽略。 - -### 实例属性 - -`MenuItem` 对象拥有以下属性: - -#### `menuItem.enabled` - -一个布尔值表示是否启用该项,此属性可以动态改变。 - -#### `menuItem.visible` - -一个布尔值表示是否可见,此属性可以动态改变。 - -#### `menuItem.checked` - -一个布尔值表示是否选中该项,此属性可以动态改变。 - -`checkbox` 菜单项将在选中和未选中切换 `checked` 属性。 - -`radio` 菜单项将在选中切换 `checked` 属性,并且 -将关闭同一菜单中所有相邻项目的属性。 - -您可以为其他行为添加一个 `click` 函数。 - -#### `menuItem.label` - -一个表示菜单项可见标签的字符串 - -#### `menuItem.click` - -当 MenuItem 接收到点击事件时触发的函数 diff --git a/docs-translations/zh-CN/api/menu.md b/docs-translations/zh-CN/api/menu.md deleted file mode 100644 index ebccfe5ee93d..000000000000 --- a/docs-translations/zh-CN/api/menu.md +++ /dev/null @@ -1,306 +0,0 @@ -# 类:菜单 - -> 创建原生的应用菜单和 context 菜单。 - -进程: [Main](../glossary.md#main-process) - -### `new Menu()` - -创建一个新的菜单。 - -### 静态方法 - -`菜单` 类有如下静态方法: - -#### `Menu.setApplicationMenu(menu)` - -* `menu` Menu - -在 macOS 上设置应用菜单 `menu`。 -在 windows 和 linux,是为每个窗口都在其顶部设置菜单 `menu`。 - -设置为 `null` 时,将在 Windows 和 Linux 上删除菜单条,但在 macOS 系统中无效。 - -**注意:** 这个API必须在 `app` 模块的 `ready` 事件后调用。 - -#### `Menu.getApplicationMenu()` - -返回 `Menu` - 应用程序菜单,设置、 `null` 、或未设置。 - -#### `Menu.sendActionToFirstResponder(action)` _macOS_ - -* `action` String - -发送 `action` 给应用的第一个响应器.这个用来模仿 Cocoa 菜单的默认行为,通常你只需要使用 [`MenuItem`](menu-item.md) 的属性 [`role`](menu-item.md#roles). - -查看更多 macOS 的原生 action [macOS Cocoa Event Handling Guide](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW7) . - -#### `Menu.buildFromTemplate(template)` - -* `template` MenuItemConstructorOptions[] - -返回 `Menu` - -一般来说,`template` 只是用来创建 [MenuItem](menu-item.md) 的数组 `参数`。 - -你也可以向 `template` 元素添加其它东西,并且他们会变成已经有的菜单项的属性。 - -### 实例方法 - -`menu` 对象有如下实例方法 - -#### `menu.popup([browserWindow, options])` - -* `browserWindow` BrowserWindow (可选) - 默认为当前激活的窗口. -* `options` Object (可选) - * `x` Number (可选) - 默认为当前光标所在的位置. - * `y` Number (**必须** 如果x设置了) - 默认为当前光标所在的位置. - * `async` Boolean (可选) - 设置为 `true` 时,调用这个方法会立即返回。设置为 `false` 时,当菜单被选择或者被关闭时才会返回。默认为 `false`。 - * `positioningItem` Number (可选) _macOS_ - 指定坐标鼠标位置下面的菜单项的索引. 默认为 - -1. - -在 `browserWindow` 中弹出菜单. - -#### `menu.closePopup([browserWindow])` - -* `browserWindow` BrowserWindow (可选) - 默认为当前激活的窗口. - -在 `browserWindow` 关闭菜单. - -#### `menu.append(menuItem)` - -* `menuItem` MenuItem - -添加菜单项。 - -#### `menu.insert(pos, menuItem)` - -* `pos` Integer -* `menuItem` MenuItem - -在指定位置添加菜单项。 - -### 实例属性 - -`menu` 对象拥有以下属性: - -#### `menu.items()` - -获取一个菜单项数组。 - -## 例子 - -`Menu` 类只能在主进程中使用,但你也可以 -在渲染过程中通过 [`remote`](remote.md) 模块使用它。 - -### 主进程 - -在主进程中创建应用程序菜单的示例 -简单模板API: - -```javascript -const {app, Menu} = require('electron') - -const template = [ - { - label: 'Edit', - submenu: [ - {role: 'undo'}, - {role: 'redo'}, - {type: 'separator'}, - {role: 'cut'}, - {role: 'copy'}, - {role: 'paste'}, - {role: 'pasteandmatchstyle'}, - {role: 'delete'}, - {role: 'selectall'} - ] - }, - { - label: 'View', - submenu: [ - {role: 'reload'}, - {role: 'forcereload'}, - {role: 'toggledevtools'}, - {type: 'separator'}, - {role: 'resetzoom'}, - {role: 'zoomin'}, - {role: 'zoomout'}, - {type: 'separator'}, - {role: 'togglefullscreen'} - ] - }, - { - role: 'window', - submenu: [ - {role: 'minimize'}, - {role: 'close'} - ] - }, - { - role: 'help', - submenu: [ - { - label: 'Learn More', - click () { require('electron').shell.openExternal('https://electron.atom.io') } - } - ] - } -] - -if (process.platform === 'darwin') { - template.unshift({ - label: app.getName(), - submenu: [ - {role: 'about'}, - {type: 'separator'}, - {role: 'services', submenu: []}, - {type: 'separator'}, - {role: 'hide'}, - {role: 'hideothers'}, - {role: 'unhide'}, - {type: 'separator'}, - {role: 'quit'} - ] - }) - - // Edit menu - template[1].submenu.push( - {type: 'separator'}, - { - label: 'Speech', - submenu: [ - {role: 'startspeaking'}, - {role: 'stopspeaking'} - ] - } - ) - - // Window menu - template[3].submenu = [ - {role: 'close'}, - {role: 'minimize'}, - {role: 'zoom'}, - {type: 'separator'}, - {role: 'front'} - ] -} - -const menu = Menu.buildFromTemplate(template) -Menu.setApplicationMenu(menu) -``` - -### 渲染进程 - -以下是通过使用 [`remote`](remote.md) 模块在网页(渲染进程)中动态创建菜单的示例 -,并在用户点击右键时显示: - -```html - - -``` - -## macOS Application 上的菜单的注意事项 - -相对于 windows 和 linux, macOS 上的应用菜单是完全不同的 style,这里是一些注意事项,来让你的菜单项更原生化。 - -### 标准菜单 - -在 macOS 上,有很多系统定义的标准菜单,例如 `Services` and -`Windows` 菜单.为了让你的应用更标准化,你可以为你的菜单的 `role` 设置值,然后 Electron 将会识别他们并且让你的菜单更标准: - -* `window` -* `help` -* `services` - -### 标准菜单项行为 - -macOS 为一些菜单项提供了标准的行为方法,例如 `About xxx`, -`Hide xxx`,和 `Hide Others`. 为了让你的菜单项的行为更标准化,你应该为菜单项设置 `role` 属性。 - -### 主菜单名 - -在 macOS ,无论你设置的什么标签,应用菜单的第一个菜单项的标签始终未你的应用名字。想要改变它的话,你必须通过修改应用绑定的 `Info.plist` 文件来修改应用名字,更多信息参考 [About Information -Property List Files][AboutInformationPropertyListFiles] 。 - -## 为制定浏览器窗口设置菜单 (*Linux* *Windows*) - -浏览器窗口的 [`setMenu` 方法][setMenu] 能够设置菜单为特定浏览器窗口的类型。 - -## 菜单项位置 - -当通过 `Menu.buildFromTemplate` 创建菜单的时候,你可以使用 `position` and `id` 来放置菜单项。 - -`MenuItem` 的属性 `position` 格式为 `[placement]=[id]`,`placement` 取值为 `before`, `after`, 或 `endof` 和 `id`, `id` 是菜单已经存在的菜单项的唯一 ID: - -* `before` - 在对应引用id菜单项之前插入。如果引用的菜单项不存在,则将其插在菜单末尾。 -* `after` - 在对应引用id菜单项之后插入。如果引用的菜单项不存在,则将其插在菜单末尾。 -* `endof` - 在逻辑上包含对应引用id菜单项的集合末尾插入。如果引用的菜单项不存在, 则将使用给定的id创建一个新的集合,并且这个菜单项将插入。 - -当一个菜档项插入成功了,所有的没有插入的菜单项将一个接一个地在后面插入。所以如果你想在同一个位置插入一组菜单项,只需要为这组菜单项的第一个指定位置。 - -### 例子 - -模板: - -```javascript -[ - {label: '4', id: '4'}, - {label: '5', id: '5'}, - {label: '1', id: '1', position: 'before=4'}, - {label: '2', id: '2'}, - {label: '3', id: '3'} -] -``` - -菜单: - -``` -- 1 -- 2 -- 3 -- 4 -- 5 -``` - -模板: - -```javascript -[ - {label: 'a', position: 'endof=letters'}, - {label: '1', position: 'endof=numbers'}, - {label: 'b', position: 'endof=letters'}, - {label: '2', position: 'endof=numbers'}, - {label: 'c', position: 'endof=letters'}, - {label: '3', position: 'endof=numbers'} -] -``` - -菜单: - -``` -- --- -- a -- b -- c -- --- -- 1 -- 2 -- 3 -``` - -[AboutInformationPropertyListFiles]: https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html -[setMenu]: https://github.com/electron/electron/blob/master/docs/api/browser-window.md#winsetmenumenu-linux-windows diff --git a/docs-translations/zh-CN/api/native-image.md b/docs-translations/zh-CN/api/native-image.md deleted file mode 100644 index b24c33933544..000000000000 --- a/docs-translations/zh-CN/api/native-image.md +++ /dev/null @@ -1,148 +0,0 @@ -# nativeImage - -在 Electron 中, 对所有创建 images 的 api 来说, 你可以使用文件路径或 `nativeImage` 实例. 如果使用 `null` ,将创建一个空的image 对象. - -例如, 当创建一个 tray 或设置窗口的图标时候,你可以使用一个字符串的图片路径 : - -```javascript -var appIcon = new Tray('/Users/somebody/images/icon.png') -var window = new BrowserWindow({icon: '/Users/somebody/images/window.png'}) -``` - -或者从剪切板中读取图片,它返回的是 `nativeImage`: - -```javascript -var image = clipboard.readImage() -var appIcon = new Tray(image) -``` - -## 支持的格式 - -当前支持 `PNG` 和 `JPEG` 图片格式. 推荐 `PNG` ,因为它支持透明和无损压缩. - -在 Windows, 你也可以使用 `ICO` 图标的格式. - -## 高分辨率图片 - -如果平台支持 high-DPI,你可以在图片基础路径后面添加 `@2x` ,可以标识它为高分辨率的图片. - -例如,如果 `icon.png` 是一个普通图片并且拥有标准分辨率,然后 `icon@2x.png`将被当作高分辨率的图片处理,它将拥有双倍 DPI 密度. - -如果想同时支持展示不同分辨率的图片,你可以将拥有不同size 的图片放在同一个文件夹下,不用 DPI 后缀.例如 : - -```text -images/ -├── icon.png -├── icon@2x.png -└── icon@3x.png -``` - - -```javascript -var appIcon = new Tray('/Users/somebody/images/icon.png') -``` - -也支持下面这些 DPI 后缀: - -* `@1x` -* `@1.25x` -* `@1.33x` -* `@1.4x` -* `@1.5x` -* `@1.8x` -* `@2x` -* `@2.5x` -* `@3x` -* `@4x` -* `@5x` - -## 模板图片 - -模板图片由黑色和清色(和一个 alpha 通道)组成. -模板图片不是单独使用的,而是通常和其它内容混合起来创建期望的最终效果. - -最常见的用力是将模板图片用到菜单栏图片上,所以它可以同时适应亮、黑不同的菜单栏. - -**注意:** 模板图片只在 macOS 上可用. - -为了将图片标识为一个模板图片,它的文件名应当以 `Template` 结尾. 例如: - -* `xxxTemplate.png` -* `xxxTemplate@2x.png` - -## 方法 - -`nativeImage` 类有如下方法: - -### `nativeImage.createEmpty()` - -创建一个空的 `nativeImage` 实例. - -### `nativeImage.createFromPath(path)` - -* `path` String - -从指定 `path` 创建一个新的 `nativeImage` 实例 . - -### `nativeImage.createFromBuffer(buffer[, scaleFactor])` - -* `buffer` [Buffer][buffer] -* `scaleFactor` Double (可选) - -从 `buffer` 创建一个新的 `nativeImage` 实例 .默认 `scaleFactor` 是 1.0. - -### `nativeImage.createFromDataURL(dataURL)` - -* `dataURL` String - -从 `dataURL` 创建一个新的 `nativeImage` 实例 . - -## 实例方法 - -`nativeImage` 有如下方法: - -```javascript -const nativeImage = require('electron').nativeImage - -var image = nativeImage.createFromPath('/Users/somebody/images/icon.png') -``` - -### `image.toPNG()` - -返回一个 [Buffer][buffer] ,它包含了图片的 `PNG` 编码数据. - -### `image.toJPEG(quality)` - -* `quality` Integer (**必须**) - 在 0 - 100 之间. - -返回一个 [Buffer][buffer] ,它包含了图片的 `JPEG` 编码数据. - -### `image.toDataURL()` - -返回图片数据的 URL. - -### `image.getNativeHandle()` _macOS_ - -返回一个保存了 c 指针的 [Buffer][buffer] 来潜在处理原始图像.在macOS, 将会返回一个 `NSImage` 指针实例. - -注意那返回的指针是潜在原始图像的弱指针,而不是一个复制,你_必须_ 确保与 `nativeImage` 的关联不间断 . - -### `image.isEmpty()` - -返回一个 boolean ,标识图片是否为空. - -### `image.getSize()` - -返回图片的 size. - -[buffer]: https://nodejs.org/api/buffer.html#buffer_class_buffer - -### `image.setTemplateImage(option)` - -* `option` Boolean - -将图片标识为模板图片. - -### `image.isTemplateImage()` - -返回一个 boolean ,标识图片是否是模板图片. \ No newline at end of file diff --git a/docs-translations/zh-CN/api/net.md b/docs-translations/zh-CN/api/net.md deleted file mode 100644 index 7daecfe1692a..000000000000 --- a/docs-translations/zh-CN/api/net.md +++ /dev/null @@ -1,54 +0,0 @@ -# net - -> 使用原生 Chromium 的 networking 库来解决 HTTP/HTTPS 请求问题。 - -可使用的进程: [主进程](../tutorial/quick-start.md#main-process) - -`net` 模块是一个客户端 API 用于解决 HTTP(S) 请求问题。它和 Node.js 中的 [HTTP](https://nodejs.org/api/http.html) 和 [HTTPS](https://nodejs.org/api/https.html) 模块比较相似,但是它使用了 Chromium 的原生 API 来替代 Node.js 的方案 ,相对而言更加适合 web 端的请求处理。 - -以下是部分简要的原因来阐述为什么你需要考虑使用 `net` 来替代 Node.js 的原生模块: - -* 自动管理系统代理设置,支持 wpad 协议和 pac 代理配置文件。 -* 自动使用隧道通过 HTTPS 请求。 -* 支持 basic, digest, NTLM, Kerberos or - negotiate 等身份验证模式作为身份验证代理。 -* 支持 traffic monitoring proxies: 类似于 Fiddler 的代理用于监控和操作网络请求。 - -`net` 模块的 API 在设计上特别的模仿了 Node.js 的 API 从而达到比较接近的体验。在 API 组件中包含了类,方法,属性还有事件等名称,这些都像是在使用 Node.js 的 API。 - -例如下面一个例子就快速展示了如何使用 `net` API : - -```javascript -const {app} = require('electron') -app.on('ready', () => { - const {net} = require('electron') - const request = net.request('https://github.com') - request.on('response', (response) => { - console.log(`STATUS: ${response.statusCode}`) - console.log(`HEADERS: ${JSON.stringify(response.headers)}`) - response.on('data', (chunk) => { - console.log(`BODY: ${chunk}`) - }) - response.on('end', () => { - console.log('No more data in response.') - }) - }) - request.end() -}) -``` - -也就是说,它对于你使用过 Node.js 的 [HTTP](https://nodejs.org/api/http.html)/[HTTPS](https://nodejs.org/api/https.html) 模块来说是非常的相似的。 - -`net` API 只有在应用触发 `ready` 事件后才可以使用。如果在 `ready` 事件前尝试使用会抛出一个错误。 - -## 方法 - -`net` 模块拥有以下方法: - -### `net.request(options)` - -* `options` (Object | String) - `ClientRequest` 的构造参数。 - -返回 `ClientRequest` - -创建一个 [`ClientRequest`](./client-request.md) 使用提供的参数来作为构造器。`net.request` 方法会根据设置中的相应的协议方来处理处理安全和不受信任的 HTTP 请求。 \ No newline at end of file diff --git a/docs-translations/zh-CN/api/notification.md b/docs-translations/zh-CN/api/notification.md deleted file mode 100644 index ff00ec53e8f7..000000000000 --- a/docs-translations/zh-CN/api/notification.md +++ /dev/null @@ -1,109 +0,0 @@ -# 通知 - -> 创建系统桌面通知 - -进程: [Main](../glossary.md#main-process) - -## 在渲染器进程中使用 - -如果你想要从渲染器进程显示通知,则应使用 [HTML5 Notification API](../tutorial/notifications.md) - -## 类: Notification - -> 创建系统桌面通知 - -进程: [Main](../glossary.md#main-process) - -`Notification` 是一个 -[EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter). - -它通过由 `options ` 设置的原生属性创建一个新的 `Notification`. - -### 静态方法 - -`Notification` 类具有以下静态方法: - -#### `Notification.isSupported()` - -返回 `Boolean` - 无论当前系统是否支持桌面通知 - -### `new Notification([options])` _实验性_ - -* `options` 对象 - * `title` 字符串 - 通知的标题,显示在通知窗口的顶部. - * `subtitle` 字符串 - (可选) 通知的副标题,将显示在标题下方. _macOS_ - * `body` 字符串 - 通知的正文,将显示在标题或副标题下方. - * `silent` 布尔 - (可选) 是否在显示通知时发出系统通知提示音. - * `icon` [NativeImage](native-image.md) - (可选) 通知所使用的图标 - * `hasReply` 布尔 - (可选) 是否在通知中添加内联的回复选项. _macOS_ - * `replyPlaceholder` 字符串 - (可选) 在内联输入字段中的提示占位符. _macOS_ - * `sound` 字符串 - (可选) 显示通知时要播放的声音文件的名称. _macOS_ - * `actions` [NotificationAction[]](structures/notification-action.md) - (可选) 添加到通知中的操作. 请阅读 `NotificationAction` 文档中的可用操作和限制. _macOS_ - - -### 实例事件 - -使用 `new Notification` 创建的对象会发出以下事件: - -**注意:** 某些事件仅在特定的操作系统上可用,请参照标签标示。 - -#### 事件: 'show' - -返回: - -* `event` 事件 - -当向用户显示通知时发出. 注意这可以被多次触发, 因为通知可以通过 `show()` 方法多次显示. - -#### 事件: 'click' - -返回: - -* `event` 事件 - -当用户点击通知时发出. - -#### 事件: 'close' - -返回: - -* `event` 事件 - -当用户手动关闭通知时发出. - -在关闭所有通知的情况下,不能保证会发送此事件. - -#### 事件: 'reply' _macOS_ - -返回: - -* `event` 事件 -* `reply` 字符串 - 用户输入到内联回复字段的字符串. - -当用户点击 `hasReply: true` 的通知上的 “回复” 按钮时发出. - -#### Event: 'action' _macOS_ - -返回: - -* `event` 事件 -* `index` Number - The index of the action that was activated - -### 实例方法 - -使用 `new Notification` 创建的对象具有以下实例方法: - -#### `notification.show()` - -立即向用户显示通知. 请注意这不同于 HTML5 Notification 的实现, 简单地实例化一个 `new Notification` 不会立即向用户显示, 你需要在操作系统显示之前调用此方法. - -### 播放声音 - -在 macOS 上, 你可以在显示通知时指定要播放的声音的名称. 除了自定义声音文件, 可以使用任意默认声音 (在 “系统偏好设置” > “声音” 下) . 同时确保声音文件被复制到应用程序包下 (例如`YourApp.app/Contents/Resources`), 或以下位置之一: - -* `~/Library/Sounds` -* `/Library/Sounds` -* `/Network/Library/Sounds` -* `/System/Library/Sounds` - -查看 [`NSSound`](https://developer.apple.com/documentation/appkit/nssound) 文档获取更多信息. diff --git a/docs-translations/zh-CN/api/power-monitor.md b/docs-translations/zh-CN/api/power-monitor.md deleted file mode 100644 index 39bbaa6efe5f..000000000000 --- a/docs-translations/zh-CN/api/power-monitor.md +++ /dev/null @@ -1,40 +0,0 @@ -# powerMonitor - -> 监视电源状态更改。 - -进程: [Main](../glossary.md#main-process) - -在 `app` 模块的 `ready` 事件触发之后就不能使用这个模块了。 - -例如: - -```javascript -const electron = require('electron') -const {app} = electron - -app.on('ready', () => { - electron.powerMonitor.on('suspend', () => { - console.log('The system is going to sleep') - }) -}) -``` - -## 事件 - -`powerMonitor` 模块可以触发下列事件: - -### Event: 'suspend' - -在系统挂起的时候触发。 - -### Event: 'resume' - -在系统恢复继续工作的时候触发。 - -### Event: 'on-ac' - -在系统使用交流电的时候触发。 - -### Event: 'on-battery' - -在系统使用电池电源的时候触发。 diff --git a/docs-translations/zh-CN/api/power-save-blocker.md b/docs-translations/zh-CN/api/power-save-blocker.md deleted file mode 100644 index da6ffbdb8002..000000000000 --- a/docs-translations/zh-CN/api/power-save-blocker.md +++ /dev/null @@ -1,52 +0,0 @@ -# powerSaveBlocker - -> 阻止系统进入低功耗(睡眠)模式。 - -进程: [Main](../glossary.md#main-process) - -例如: - -```javascript -const {powerSaveBlocker} = require('electron') - -const id = powerSaveBlocker.start('prevent-display-sleep') -console.log(powerSaveBlocker.isStarted(id)) - -powerSaveBlocker.stop(id) -``` - -## 方法 - -`powerSaveBlocker` 模块有如下方法: - -### `powerSaveBlocker.start(type)` - -* `type` String - 强行保存阻塞类型。 - * `prevent-app-suspension` - 阻止应用挂起。 - 保持系统活跃,但是允许屏幕不亮。例如: - 下载文件或者播放音频。 - * `prevent-display-sleep`- 阻止应用进入休眠。保持系统和屏幕活跃,屏幕一直亮。例如:播放音频。 - -返回 `Integer` - 分配给此阻断器的 blocker ID - -开始阻止系统进入睡眠模式。返回一个整数,这个整数标识了保持活跃的blocker ID。 - -**注意:** `prevent-display-sleep` 有更高的优先级 -`prevent-app-suspension`。只有最高优先级生效,换句话说, `prevent-display-sleep` 优先级永远高于 -`prevent-app-suspension`。 - -例如, A 请求调用了 `prevent-app-suspension`,B请求调用了 `prevent-display-sleep`。`prevent-display-sleep` -将一直工作,直到B停止调用。在那之后,`prevent-app-suspension` -才起效。 - -### `powerSaveBlocker.stop(id)` - -* `id` Integer - 通过 `powerSaveBlocker.start` 返回保持活跃的 blocker id. - -让指定 blocker 停止活跃。 - -### `powerSaveBlocker.isStarted(id)` - -* `id` Integer - 通过 `powerSaveBlocker.start` 返回保持活跃的 blocker id. - -返回 boolean,对应的 `powerSaveBlocker` 是否已经启动。 diff --git a/docs-translations/zh-CN/api/process.md b/docs-translations/zh-CN/api/process.md deleted file mode 100644 index ba9cdb2f0025..000000000000 --- a/docs-translations/zh-CN/api/process.md +++ /dev/null @@ -1,101 +0,0 @@ -# 进程 - -> process 对象扩展。 - -Process: [Main](../glossary.md#main-process), [Renderer](../glossary.md#renderer-process) - -Electron 的 `process` 对象是 -[Node.js `process` 对象](https://nodejs.org/api/process.html) 的扩展。 -它添加了以下事件、属性和方法: - -## 事件 - -### 事件: 'loaded' - -在Electron已经加载了其内部预置脚本和它准备加载网页或者主进程的时候触发。 - -当node被完全关闭的时候,它可以被预加载脚本使用来添加(原文: removed)与node无关的全局符号来回退到全局范围: - -```javascript -// preload.js -const _setImmediate = setImmediate -const _clearImmediate = clearImmediate -process.once('loaded', () => { - global.setImmediate = _setImmediate - global.clearImmediate = _clearImmediate -}) -``` - -## 属性 - -### `process.noAsar` - -设置它为 `true` 可以使 `asar` 文件在node的内置模块中失效。 - -### `process.type` - -当前 `process` 的类型,值为`"browser"` (即主进程) 或 `"renderer"`。 - -### `process.versions.electron` - -Electron的版本号。 - -### `process.versions.chrome` - -Chrome的版本号。 - -### `process.resourcesPath` - -资源文件夹的路径。 - -### `process.mas` - -在 Mac App Store 的构建中,该属性为 `true`, 其他平台的构建均为 `undefined`。 - -### `process.windowsStore` - -如果 app 是运行在 Windows Store app (appx) 中,该属性为 `true`, 其他情况均为 `undefined`。 - -### `process.defaultApp` - -当 app 在启动时,被作为参数传递给默认应用程序,在主进程中该属性为 `true`, 其他情况均为 `undefined`。 - -## 方法 - -`process` 对象有如下方法: - -### `process.crash()` - -使当前进程的主线程崩溃。 - -### `process.hang()` - -使当前进程的主线程挂起。 - -### `process.setFdLimit(maxDescriptors)` _macOS_ _Linux_ - -* `maxDescriptors` Integer - -设置文件描述符软限制于 `maxDescriptors` 或硬限制于OS, 无论它是否低于当前进程。 - -### `process.getProcessMemoryInfo()` - -返回 `Object`: - -* `workingSetSize` Integer - 当前固定到实际物理内存的内存量。 -* `peakWorkingSetSize` Integer - 被固定在实际物理内存上的最大内存量。 -* `privateBytes` Integer - 不被其他进程共享的内存量,如JS堆或HTML内容。 -* `sharedBytes` Integer - 进程之间共享的内存量,通常是 Electron 代码本身所消耗的内存。 - -返回当前进程的内存使用统计信息的对象。请注意,所有数据的单位都是KB。 - -### `process.getSystemMemoryInfo()` - -返回 `Object`: - -* `total` Integer - 系统的物理内存总量。 -* `free` Integer - 未被应用程序或磁盘缓存使用的物理内存总量。 -* `swapTotal` Integer - 系统 swap 分区(虚拟内存)总量。 _Windows_ _Linux_ -* `swapFree` Integer - 系统剩余可用的 swap 分区(虚拟内存)量。 _Windows_ _Linux_ - -返回系统的内存使用统计信息的对象。请注意,所有数据的单位都是KB。 diff --git a/docs-translations/zh-CN/api/protocol.md b/docs-translations/zh-CN/api/protocol.md deleted file mode 100644 index bbfa48b35134..000000000000 --- a/docs-translations/zh-CN/api/protocol.md +++ /dev/null @@ -1,276 +0,0 @@ -# 协议 - -> 注册一个自定义协议,或者使用一个已经存在的协议。 - -进程: [Main](../glossary.md#main-process) - -例如使用一个与 `file://` 功能相似的协议: - -```javascript -const {app, protocol} = require('electron') -const path = require('path') - -app.on('ready', () => { - protocol.registerFileProtocol('atom', (request, callback) => { - const url = request.url.substr(7) - callback({path: path.normalize(`${__dirname}/${url}`)}) - }, (error) => { - if (error) console.error('Failed to register protocol') - }) -}) -``` - -**注意:** 这个模块只有在 `app` 模块的 `ready` 事件触发之后才可使用。 - -## 方法 - -`protocol` 模块有如下方法: - -### `protocol.registerStandardSchemes(schemes[, options])` - -* `schemes` String[] - 将一个自定义的方案注册为标准的方案。 -* `options` Object (可选) - * `secure` Boolean (可选) - `true` 将方案注册为安全。 - 默认值 `false`。 - -一个标准的 `scheme` 遵循 RFC 3986 的 -[generic URI syntax](https://tools.ietf.org/html/rfc3986#section-3) 标准。例如 `http` 和 -`https` 是标准方案,而 `file` 不是。 - -注册一个 `scheme` 作为标准,将允许相对和绝对的资源 -在服务时正确解析。 否则该方案将表现得像 -`file` 协议,但无法解析相对 URLs。 - -例如,当你加载以下页面与自定义协议无法 -注册为标准 `scheme`,图像将不会加载,因为 -非标准方案无法识别相对 URLs: - -```html - - - -``` - -注册方案作为标准将允许通过访问文件 -[FileSystem API][file-system-api]。 否则渲染器将抛出一个安全性 -错误。 - -默认情况下 web storage apis(localStorage,sessionStorage,webSQL,indexedDB,cookies) -对于非标准方案禁用。所以一般来说如果你想注册一个 -自定义协议替换 `http` 协议,您必须将其注册为标准方案: - -```javascript -const {app, protocol} = require('electron') - -protocol.registerStandardSchemes(['atom']) -app.on('ready', () => { - protocol.registerHttpProtocol('atom', '...') -}) -``` - -**注意:** 这个方法只有在 `app` 模块的 `ready` 事件触发之后才可使用。 - -### `protocol.registerServiceWorkerSchemes(schemes)` - -* `schemes` String[] - 将一个自定义的方案注册为处理 service workers。 - -### `protocol.registerFileProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `filePath` String (可选) -* `completion` Function (可选) - * `error` Error - -注册一个协议,用来发送响应文件。当通过这个协议来发起一个请求的时候,将使用 `handler(request,callback)` 来调用 -`handler`。当 `scheme` 被成功注册或者完成(错误)时失败,将使用 `completion(null)` 调用 `completion`。 - -为了处理请求,调用 `callback` 时需要使用文件路径或者一个带 `path` 参数的对象, 例如 `callback(filePath)` 或 -`callback({path: filePath})`。 - -当不使用任何参数调用 `callback` 时,你可以指定一个数字或一个带有 `error` 参数的对象,来标识 `request` 失败。你可以使用的 error number 可以参考 -[net error list][net-error]。 - -默认 `scheme` 会被注册为一个 `http:` 协议,它与遵循 "generic URI syntax" 规则的协议解析不同,例如 `file:`,所以你或许应该调用 `protocol.registerStandardSchemes` 来创建一个标准的 scheme。 - -### `protocol.registerBufferProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `buffer` (Buffer | [MimeTypedBuffer](structures/mime-typed-buffer.md)) (optional) -* `completion` Function (可选) - * `error` Error - -注册一个 `scheme` 协议,用来发送响应 `Buffer`。 - -这个方法的用法类似 `registerFileProtocol`,除非使用一个 `Buffer` 对象,或一个有 `data`、 -`mimeType` 和 `charset` 属性的对象来调用 `callback`。 - -例子: - -```javascript -const {protocol} = require('electron') - -protocol.registerBufferProtocol('atom', (request, callback) => { - callback({mimeType: 'text/html', data: Buffer.from('
Response
')}) -}, (error) => { - if (error) console.error('Failed to register protocol') -}) -``` - -### `protocol.registerStringProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `data` String (可选) -* `completion` Function (可选) - * `error` Error - -注册一个 `scheme` 协议,用来发送响应 `String`。 - -这个方法的用法类似 `registerFileProtocol`,除非使用一个 `String` 对象,或一个有 `data`、 -`mimeType` 和 `charset` 属性的对象来调用 `callback`。 - -### `protocol.registerHttpProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `redirectRequest` Object - * `url` String - * `method` String - * `session` Object (可选) - * `uploadData` Object (可选) - * `contentType` String - MIME type of the content. - * `data` String - Content to be sent. -* `completion` Function (可选) - * `error` Error - -注册一个 `scheme` 协议,用来发送 HTTP 请求作为响应. - -这个方法的用法类似 `registerFileProtocol`,除非使用一个 `redirectRequest` 对象,或一个有 `url`、 `method`、 -`referrer`、 `uploadData` 和 `session` 属性的对象来调用 `callback`。 - -默认这个 HTTP 请求会使用当前 session。如果你想使用不同的session值,你应该设置 `session` 为 `null`。 - -POST 请求应当包含 `uploadData` 对象。 - -### `protocol.unregisterProtocol(scheme[, completion])` - -* `scheme` String -* `completion` Function (可选) - * `error` Error - -注销自定义协议 `scheme`。 - -### `protocol.isProtocolHandled(scheme, callback)` - -* `scheme` String -* `callback` Function - * `error` Error - -将使用一个布尔值来调用 `callback` ,这个布尔值标识了是否已经存在 `scheme` 的句柄了。 - -### `protocol.interceptFileProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `filePath` String -* `completion` Function (可选) - * `error` Error - -拦截 `scheme` 协议并且使用 `handler` 作为协议的新的句柄来发送响应文件。 - -### `protocol.interceptStringProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `data` String (可选) -* `completion` Function (可选) - * `error` Error - -拦截 `scheme` 协议并且使用 `handler` 作为协议的新的句柄来发送响应 `String`。 - -### `protocol.interceptBufferProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `buffer` Buffer (可选) -* `completion` Function (可选) - * `error` Error - -拦截 `scheme` 协议并且使用 `handler` 作为协议的新的句柄来发送响应 `Buffer`。 - -### `protocol.interceptHttpProtocol(scheme, handler[, completion])` - -* `scheme` String -* `handler` Function - * `request` Object - * `url` String - * `referrer` String - * `method` String - * `uploadData` [UploadData[]](structures/upload-data.md) - * `callback` Function - * `redirectRequest` Object - * `url` String - * `method` String - * `session` Object (可选) - * `uploadData` Object (可选) - * `contentType` String - MIME type of the content. - * `data` String - Content to be sent. -* `completion` Function (可选) - * `error` Error - -拦截 `scheme` 协议并且使用 `handler` 作为协议的新的句柄来发送新的响应 HTTP 请求。 - -### `protocol.uninterceptProtocol(scheme[, completion])` - -* `scheme` String -* `completion` Function (可选) - * `error` Error - -取消对 `scheme` 的拦截,使用它的原始句柄进行处理。 - -[net-error]: https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h -[file-system-api]: https://developer.mozilla.org/en-US/docs/Web/API/LocalFileSystem diff --git a/docs-translations/zh-CN/api/remote.md b/docs-translations/zh-CN/api/remote.md deleted file mode 100644 index da96984fcea3..000000000000 --- a/docs-translations/zh-CN/api/remote.md +++ /dev/null @@ -1,137 +0,0 @@ -# remote - -`remote` 模块提供了一种在渲染进程(网页)和主进程之间进行进程间通讯(IPC)的简便途径。 - -Electron中, 与GUI相关的模块(如 `dialog`, `menu` 等)只存在于主进程,而不在渲染进程中 -。为了能从渲染进程中使用它们,需要用`ipc`模块来给主进程发送进程间消息。使用 `remote` -模块,可以调用主进程对象的方法,而无需显式地发送进程间消息,这类似于 Java 的 [RMI][rmi]。 -下面是从渲染进程创建一个浏览器窗口的例子: - -```javascript -const remote = require('electron').remote -const BrowserWindow = remote.BrowserWindow - -var win = new BrowserWindow({ width: 800, height: 600 }) -win.loadURL('https://github.com') -``` - -**注意:** 反向操作(从主进程访问渲染进程),可以使用[webContents.executeJavascript](web-contents.md#webcontentsexecutejavascriptcode-usergesture). - -## 远程对象 - -`remote`模块返回的每个对象(包括函数)都代表了主进程中的一个对象(我们称之为远程对象或者远程函数)。 -当调用远程对象的方法、执行远程函数或者使用远程构造器(函数)创建新对象时,其实就是在发送同步的进程间消息。 - -在上面的例子中, `BrowserWindow` 和 `win` 都是远程对象,然而 -`new BrowserWindow` 并没有在渲染进程中创建 `BrowserWindow` 对象。 -而是在主进程中创建了 `BrowserWindow` 对象,并在渲染进程中返回了对应的远程对象,即 -`win` 对象。 - -请注意只有 [可枚举属性](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Enumerability_and_ownership_of_properties) 才能通过 remote 进行访问. - -## 远程对象的生命周期 - -Electron 确保在渲染进程中的远程对象存在(换句话说,没有被垃圾收集),那主进程中的对应对象也不会被释放。 -当远程对象被垃圾收集之后,主进程中的对应对象才会被取消关联。 - -如果远程对象在渲染进程泄露了(例如,存在某个表中但永远不会释放),那么主进程中的对应对象也一样会泄露, -所以你必须小心不要泄露了远程对象。If the remote object is leaked in the renderer process (e.g. stored in a map but -never freed), the corresponding object in the main process will also be leaked, -so you should be very careful not to leak remote objects. - -不过,主要的值类型如字符串和数字,是传递的副本。 - -## 给主进程传递回调函数 - -在主进程中的代码可以从渲染进程——`remote`模块——中接受回调函数,但是使用这个功能的时候必须非常非常小心。Code in the main process can accept callbacks from the renderer - for instance -the `remote` module - but you should be extremely careful when using this -feature. - -首先,为了避免死锁,传递给主进程的回调函数会进行异步调用。所以不能期望主进程来获得传递过去的回调函数的返回值。First, in order to avoid deadlocks, the callbacks passed to the main process -are called asynchronously. You should not expect the main process to -get the return value of the passed callbacks. - -比如,你不能主进程中给`Array.map`传递来自渲染进程的函数。 - -```javascript -// 主进程 mapNumbers.js -exports.withRendererCallback = function (mapper) { - return [1, 2, 3].map(mapper) -} - -exports.withLocalCallback = function () { - return exports.mapNumbers(function (x) { - return x + 1 - }) -} -``` - -```javascript -// 渲染进程 -var mapNumbers = require('remote').require('./mapNumbers') - -var withRendererCb = mapNumbers.withRendererCallback(function (x) { - return x + 1 -}) - -var withLocalCb = mapNumbers.withLocalCallback() - -console.log(withRendererCb, withLocalCb) // [true, true, true], [2, 3, 4] -``` - -如你所见,渲染器回调函数的同步返回值没有按预期产生,与主进程中的一模一样的回调函数的返回值不同。 - -其次,传递给主进程的函数会持续到主进程对他们进行垃圾回收。 - -例如,下面的代码第一眼看上去毫无问题。给远程对象的`close`事件绑定了一个回调函数: - -```javascript -remote.getCurrentWindow().on('close', function () { - // blabla... -}) -``` - -但记住主进程会一直保持对这个回调函数的引用,除非明确的卸载它。如果不卸载,每次重新载入窗口都会再次绑定,这样每次重启就会泄露一个回调函数。 - -更严重的是,由于前面安装了回调函数的上下文已经被释放,所以当主进程的 `close` 事件触发的时候,会抛出异常。 - -为了避免这个问题,要确保对传递给主进程的渲染器的回调函数进行清理。可以清理事件处理器,或者明确告诉主进程取消来自已经退出的渲染器进程中的回调函数。 - -## 访问主进程中的内置模块 - -在主进程中的内置模块已经被添加为`remote`模块中的属性,所以可以直接像使用`electron`模块一样直接使用它们。 - -```javascript -const app = remote.app -``` - -## 方法 - -`remote` 模块有以下方法: - -### `remote.require(module)` - -* `module` String - -返回在主进程中执行 `require(module)` 所返回的对象。 - -### `remote.getCurrentWindow()` - -返回该网页所属的 [`BrowserWindow`](browser-window.md) 对象。 - -### `remote.getCurrentWebContents()` - -返回该网页的 [`WebContents`](web-contents.md) 对象 - -### `remote.getGlobal(name)` - -* `name` String - -返回在主进程中名为 `name` 的全局变量(即 `global[name]`) 。 - -### `remote.process` - -返回主进程中的 `process` 对象。等同于 -`remote.getGlobal('process')` 但是有缓存。 - -[rmi]: http://en.wikipedia.org/wiki/Java_remote_method_invocation diff --git a/docs-translations/zh-CN/api/screen.md b/docs-translations/zh-CN/api/screen.md deleted file mode 100644 index f1cd9f0ed7d5..000000000000 --- a/docs-translations/zh-CN/api/screen.md +++ /dev/null @@ -1,135 +0,0 @@ -# screen - -`screen` 模块检索屏幕的 size,显示,鼠标位置等的信息.在 `app` 模块的`ready` 事件触发之前不可使用这个模块. - -`screen` 是一个 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter). - -**注意:** 在渲染进程 / 开发者工具栏, `window.screen` 是一个预设值的 DOM -属性, 所以这样写 `var screen = require('electron').screen` 将不会工作. -在我们下面的例子, 我们取代使用可变名字的 `electronScreen`. -一个例子,创建一个充满整个屏幕的窗口 : - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow - -var mainWindow - -app.on('ready', function () { - var electronScreen = electron.screen - var size = electronScreen.getPrimaryDisplay().workAreaSize - mainWindow = new BrowserWindow({ width: size.width, height: size.height }) -}) -``` - -另一个例子,在此页外创建一个窗口: - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow - -var mainWindow - -app.on('ready', function () { - var electronScreen = electron.screen - var displays = electronScreen.getAllDisplays() - var externalDisplay = null - for (var i in displays) { - if (displays[i].bounds.x !== 0 || displays[i].bounds.y !== 0) { - externalDisplay = displays[i] - break - } - } - - if (externalDisplay) { - mainWindow = new BrowserWindow({ - x: externalDisplay.bounds.x + 50, - y: externalDisplay.bounds.y + 50 - }) - } -}) -``` - -## `Display` 对象 - -`Display` 对象表示一个连接到系统的物理显示. 一个虚设的 `Display` 或许存在于一个无头系统(headless system)中,或者一个 `Display` 对应一个远程的、虚拟的display. - -* `display` object - * `id` Integer - 与display 相关的唯一性标志. - * `rotation` Integer - 可以是 0, 1, 2, 3, 每个代表了屏幕旋转的度数 0, 90, 180, 270. - * `scaleFactor` Number - Output device's pixel scale factor. - * `touchSupport` String - 可以是 `available`, `unavailable`, `unknown`. - * `bounds` Object - * `size` Object - * `workArea` Object - * `workAreaSize` Object - -## 事件 - -`screen` 模块有如下事件: - -### Event: 'display-added' - -返回: - -* `event` Event -* `newDisplay` Object - -当添加了 `newDisplay` 时发出事件 - -### Event: 'display-removed' - -返回: - -* `event` Event -* `oldDisplay` Object - -当移出了 `oldDisplay` 时发出事件 - -### Event: 'display-metrics-changed' - -返回: - -* `event` Event -* `display` Object -* `changedMetrics` Array - -当一个 `display` 中的一个或更多的 metrics 改变时发出事件. -`changedMetrics` 是一个用来描述这个改变的数组.可能的变化为 `bounds`, -`workArea`, `scaleFactor` 和 `rotation`. - -## 方法 - -`screen` 模块有如下方法: - -### `screen.getCursorScreenPoint()` - -返回当前鼠标的绝对路径 . - -### `screen.getPrimaryDisplay()` - -返回最主要的 display. - -### `screen.getAllDisplays()` - -返回一个当前可用的 display 数组. - -### `screen.getDisplayNearestPoint(point)` - -* `point` Object - * `x` Integer - * `y` Integer - -返回离指定点最近的 display. - -### `screen.getDisplayMatching(rect)` - -* `rect` Object - * `x` Integer - * `y` Integer - * `width` Integer - * `height` Integer - -返回与提供的边界范围最密切相关的 display. diff --git a/docs-translations/zh-CN/api/session.md b/docs-translations/zh-CN/api/session.md deleted file mode 100644 index be02c26bc2cd..000000000000 --- a/docs-translations/zh-CN/api/session.md +++ /dev/null @@ -1,498 +0,0 @@ -# session - -> 管理浏览器会话,Cookie,缓存,代理设置等。 - -进程: [Main](../glossary.md#main-process) - -`session` 模块可以用来创建一个新的 `Session` 对象。 - -你也可以通过使用 [`webContents`](web-contents.md) 的属性 `session` 来使用一个已有页面的 `session` ,`webContents` 是[`BrowserWindow`](browser-window.md) 的属性。 - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('http://github.com') - -const ses = win.webContents.session -console.log(ses.getUserAgent()) -``` - -## 方法 - -`session` 模块有如下方法: - -### `session.fromPartition(partition[, options])` - -* `partition` String -* `options` Object - * `cache` Boolean - 是否启用缓存。 - -从字符串 `partition` 返回一个新的 `Session` 实例。 - -返回 `Session` - 一个来自 `partition` 字符串的会话实例。当存在时 -`Session` 与同一个 `partition`,它会被返回;否则一个新 -`Session` 实例将使用 `options` 创建。 - -如果 `partition` 以 `persist:` 开头,那么这个 page 将使用一个持久的 session,这个 session 将对应用的所有 page 可用。如果没前缀,这个 page 将使用一个历史 session。如果 `partition` 为空,那么将返回应用的默认 session。 - -要用 `options` 创建一个 `Session`,你必须确保 `Session` 与 -`partition` 从来没有被使用过。没有办法改变现有 `Session` 对象的 `options'。 - -## 属性 - -`session` 模块有如下属性: - -### session.defaultSession - -返回应用的默认 `Session` 对象。 - -## Class: Session - -> 获取和设置会话的属性。 - -进程: [Main](../glossary.md#main-process) - -可以在 `session` 模块中创建一个 `Session` 对象: - -```javascript -const {session} = require('electron') -const ses = session.fromPartition('persist:name') -console.log(ses.getUserAgent()) -``` - -### 实例事件 - -实例 `Session` 有以下事件: - -#### Event: 'will-download' - -* `event` Event -* `item` [DownloadItem](download-item.md) -* `webContents` [WebContents](web-contents.md) - -当 Electron 将要从 `webContents` 下载 `item` 时触发. - -调用 `event.preventDefault()` 可以取消下载,并且在进程的下个 tick 中,这个 `item` 也不可用。 - -```javascript -const {session} = require('electron') -session.defaultSession.on('will-download', (event, item, webContents) => { - event.preventDefault() - require('request')(item.getURL(), (data) => { - require('fs').writeFileSync('/somewhere', data) - }) -}) -``` - -### 实例方法 - -实例 `Session` 有以下方法: - -#### `ses.cookies` - -`cookies` 赋予你全力来查询和修改 cookies. 例如: - -```javascript -// 查询所有 cookies. -session.defaultSession.cookies.get({}, function (error, cookies) { - if (error) console.error(error) - console.log(cookies) -}) - -// 查询与指定 url 相关的所有 cookies. -session.defaultSession.cookies.get({ url: 'http://www.github.com' }, function (error, cookies) { - if (error) console.error(error) - console.log(cookies) -}) - -// 设置 cookie; -// may overwrite equivalent cookies if they exist. -var cookie = { url: 'http://www.github.com', name: 'dummy_name', value: 'dummy' } -session.defaultSession.cookies.set(cookie, function (error) { - if (error) console.error(error) -}) -``` - -#### `ses.cookies.get(filter, callback)` - -* `filter` Object - * `url` String (可选) - 与获取 cookies 相关的 - `url`.不设置的话就是从所有 url 获取 cookies . - * `name` String (可选) - 通过 name 过滤 cookies. - * `domain` String (可选) - 获取对应域名或子域名的 cookies . - * `path` String (可选) - 获取对应路径的 cookies . - * `secure` Boolean (可选) - 通过安全性过滤 cookies. - * `session` Boolean (可选) - 过滤掉 session 或 持久的 cookies. -* `callback` Function - -发送一个请求,希望获得所有匹配 `details` 的 cookies, -在完成的时候,将通过 `callback(error, cookies)` 调用 `callback`. - -`cookies`是一个 `cookie` 对象. - -* `cookie` Object - * `name` String - cookie 名. - * `value` String - cookie值. - * `domain` String - cookie域名. - * `hostOnly` String - 是否 cookie 是一个 host-only cookie. - * `path` String - cookie路径. - * `secure` Boolean - 是否是安全 cookie. - * `httpOnly` Boolean - 是否只是 HTTP cookie. - * `session` Boolean - cookie 是否是一个 session cookie 或一个带截至日期的持久 - cookie . - * `expirationDate` Double (可选) - cookie的截至日期,数值为UNIX纪元以来的秒数. 对session cookies 不提供. - -#### `ses.cookies.set(details, callback)` - -* `details` Object - * `url` String - 与获取 cookies 相关的 - `url`. - * `name` String - cookie 名. 忽略默认为空. - * `value` String - cookie 值. 忽略默认为空. - * `domain` String - cookie的域名. 忽略默认为空. - * `path` String - cookie 的路径. 忽略默认为空. - * `secure` Boolean - 是否已经进行了安全性标识. 默认为 - false. - * `session` Boolean - 是否已经 HttpOnly 标识. 默认为 false. - * `expirationDate` Double - cookie的截至日期,数值为UNIX纪元以来的秒数. 如果忽略, cookie 变为 session cookie. -* `callback` Function - -使用 `details` 设置 cookie, 完成时使用 `callback(error)` 掉哟个 `callback` . - -#### `ses.cookies.remove(url, name, callback)` - -* `url` String - 与 cookies 相关的 - `url`. -* `name` String - 需要删除的 cookie 名. -* `callback` Function - -删除匹配 `url` 和 `name` 的 cookie, 完成时使用 `callback()`调用`callback`. - -#### `ses.getCacheSize(callback)` - -* `callback` Function - * `size` Integer - 单位 bytes 的缓存 size. - -返回 session 的当前缓存 size . - -#### `ses.clearCache(callback)` - -* `callback` Function - 操作完成时调用 - -清空 session 的 HTTP 缓存. - -#### `ses.clearStorageData([options, ]callback)` - -* `options` Object (可选) - * `origin` String - 应当遵循 `window.location.origin` 的格式 - `scheme://host:port`. - * `storages` Array - 需要清理的 storages 类型, 可以包含 : - `appcache`, `cookies`, `filesystem`, `indexdb`, `local storage`, - `shadercache`, `websql`, `serviceworkers` - * `quotas` Array - 需要清理的类型指标, 可以包含: - `temporary`, `persistent`, `syncable`. -* `callback` Function - 操作完成时调用. - -清除 web storages 的数据. - -#### `ses.flushStorageData()` - -将没有写入的 DOMStorage 写入磁盘. - -#### `ses.setProxy(config, callback)` - -* `config` Object - * `pacScript` String - 与 PAC 文件相关的 URL. - * `proxyRules` String - 代理使用规则. -* `callback` Function - 操作完成时调用. - -设置 proxy settings. - -当 `pacScript` 和 `proxyRules` 一同提供时,将忽略 `proxyRules`,并且使用 `pacScript` 配置 . - -`proxyRules` 需要遵循下面的规则: - -``` -proxyRules = schemeProxies[";"] -schemeProxies = ["="] -urlScheme = "http" | "https" | "ftp" | "socks" -proxyURIList = [","] -proxyURL = ["://"][":"] -``` - -例子: - -* `http=foopy:80;ftp=foopy2` - 为 `http://` URL 使用 HTTP 代理 `foopy:80` , 和为 `ftp://` URL - HTTP 代理 `foopy2:80` . -* `foopy:80` - 为所有 URL 使用 HTTP 代理 `foopy:80` . -* `foopy:80,bar,direct://` - 为所有 URL 使用 HTTP 代理 `foopy:80` , 如果 `foopy:80` 不可用,则切换使用 `bar`, 再往后就不使用代理了. -* `socks4://foopy` - 为所有 URL 使用 SOCKS v4 代理 `foopy:1080`. -* `http=foopy,socks5://bar.com` - 为所有 URL 使用 HTTP 代理 `foopy`, 如果 `foopy`不可用,则切换到 SOCKS5 代理 `bar.com`. -* `http=foopy,direct://` - 为所有http url 使用 HTTP 代理,如果 `foopy`不可用,则不使用代理. -* `http=foopy;socks=foopy2` - 为所有http url 使用 `foopy` 代理,为所有其他 url 使用 `socks4://foopy2` 代理. - -### `ses.resolveProxy(url, callback)` - -* `url` URL -* `callback` Function - -解析 `url` 的代理信息.当请求完成的时候使用 `callback(proxy)` 调用 `callback`. - -#### `ses.setDownloadPath(path)` - -* `path` String - 下载地址 - -设置下载保存地址,默认保存地址为各自 app 应用的 `Downloads`目录. - -#### `ses.enableNetworkEmulation(options)` - -* `options` Object - * `offline` Boolean - 是否模拟网络故障. - * `latency` Double - 每毫秒的 RTT - * `downloadThroughput` Double - 每 Bps 的下载速率. - * `uploadThroughput` Double - 每 Bps 的上载速率. - -通过给定配置的 `session` 来模拟网络. - -```javascript -// 模拟 GPRS 连接,使用的 50kbps 流量,500 毫秒的 rtt. -window.webContents.session.enableNetworkEmulation({ - latency: 500, - downloadThroughput: 6400, - uploadThroughput: 6400 -}) - -// 模拟网络故障. -window.webContents.session.enableNetworkEmulation({offline: true}) -``` - -#### `ses.disableNetworkEmulation()` - -停止所有已经使用 `session` 的活跃模拟网络. -重置为原始网络类型. - -#### `ses.setCertificateVerifyProc(proc)` - -* `proc` Function - -为 `session` 设置证书验证过程,当请求一个服务器的证书验证时,使用 `proc(hostname, certificate, callback)` 调用 `proc`.调用 `callback(true)` 来接收证书,调用 `callback(false)` 来拒绝验证证书. - -调用了 `setCertificateVerifyProc(null)` ,则将会回复到默认证书验证过程. - -```javascript -myWindow.webContents.session.setCertificateVerifyProc(function (hostname, cert, callback) { - callback(hostname === 'github.com') -}) -``` - -#### `ses.setPermissionRequestHandler(handler)` - -* `handler` Function - * `webContents` Object - [WebContents](web-contents.md) 请求许可. - * `permission` String - 枚举了 'media', 'geolocation', 'notifications', 'midiSysex', 'pointerLock', 'fullscreen'. - * `callback` Function - 允许或禁止许可. - -为对应 `session` 许可请求设置响应句柄.调用 `callback(true)` 接收许可,调用 `callback(false)` 禁止许可. - -```javascript -session.fromPartition(partition).setPermissionRequestHandler(function (webContents, permission, callback) { - if (webContents.getURL() === host) { - if (permission === 'notifications') { - callback(false) // denied. - return - } - } - - callback(true) -}) -``` - -#### `ses.clearHostResolverCache([callback])` - -* `callback` Function (可选) - 操作结束调用. - -清除主机解析缓存. - -#### `ses.webRequest` - -在其生命周期的不同阶段,`webRequest` API 设置允许拦截并修改请求内容. - -每个 API 接收一可选的 `filter` 和 `listener`,当 API 事件发生的时候使用 `listener(details)` 调用 `listener`,`details` 是一个用来描述请求的对象.为 `listener` 使用 `null` 则会退定事件. - -`filter` 是一个拥有 `urls` 属性的对象,这是一个 url 模式数组,这用来过滤掉不匹配指定 url 模式的请求.如果忽略 `filter` ,那么所有请求都将可以成功匹配. - -所有事件的 `listener` 都有一个回调事件,当 `listener` 完成它的工作的时候,它将使用一个 `response` 对象来调用. - -```javascript -// 将所有请求的代理都修改为下列 url. -var filter = { - urls: ['https://*.github.com/*', '*://electron.github.io'] -} - -session.defaultSession.webRequest.onBeforeSendHeaders(filter, function (details, callback) { - details.requestHeaders['User-Agent'] = 'MyAgent' - callback({cancel: false, requestHeaders: details.requestHeaders}) -}) -``` - -#### `ses.webRequest.onBeforeRequest([filter, ]listener)` - -* `filter` Object -* `listener` Function - -当一个请求即将开始的时候,使用 `listener(details, callback)` 调用 `listener`. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `uploadData` Array (可选) -* `callback` Function - -`uploadData` 是一个 `data` 数组对象: - -* `data` Object - * `bytes` Buffer - 被发送的内容. - * `file` String - 上载文件路径. - -`callback` 必须使用一个 `response` 对象来调用: - -* `response` Object - * `cancel` Boolean (可选) - * `redirectURL` String (可选) - 原始请求阻止发送或完成,而不是重定向. - -#### `ses.webRequest.onBeforeSendHeaders([filter, ]listener)` - -* `filter` Object -* `listener` Function - -一旦请求报文头可用了,在发送 HTTP 请求的之前,使用 `listener(details, callback)` 调用 `listener`.这也许会在服务器发起一个tcp 连接,但是在发送任何 http 数据之前发生. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `requestHeaders` Object -* `callback` Function - -必须使用一个 `response` 对象来调用 `callback` : - -* `response` Object - * `cancel` Boolean (可选) - * `requestHeaders` Object (可选) - 如果提供了,将使用这些 headers 来创建请求. - -#### `ses.webRequest.onSendHeaders([filter, ]listener)` - -* `filter` Object -* `listener` Function - -在一个请求正在发送到服务器的时候,使用 `listener(details)` 来调用 `listener` ,之前 `onBeforeSendHeaders` 修改部分响应可用,同时取消监听. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `requestHeaders` Object - -#### `ses.webRequest.onHeadersReceived([filter,] listener)` - -* `filter` Object -* `listener` Function - -当 HTTP 请求报文头已经到达的时候,使用 `listener(details, callback)` 调用 `listener` . - -* `details` Object - * `id` String - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `statusLine` String - * `statusCode` Integer - * `responseHeaders` Object -* `callback` Function - -必须使用一个 `response` 对象来调用 `callback` : - -* `response` Object - * `cancel` Boolean - * `responseHeaders` Object (可选) - 如果提供, 服务器将假定使用这些头来响应. - -#### `ses.webRequest.onResponseStarted([filter, ]listener)` - -* `filter` Object -* `listener` Function - -当响应body的首字节到达的时候,使用 `listener(details)` 调用 `listener`.对 http 请求来说,这意味着状态线和响应头可用了. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `responseHeaders` Object - * `fromCache` Boolean - 标识响应是否来自磁盘 - cache. - * `statusCode` Integer - * `statusLine` String - -#### `ses.webRequest.onBeforeRedirect([filter, ]listener)` - -* `filter` Object -* `listener` Function - -当服务器的重定向初始化正要启动时,使用 `listener(details)` 调用 `listener`. - -* `details` Object - * `id` String - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `redirectURL` String - * `statusCode` Integer - * `ip` String (可选) - 请求的真实服务器ip 地址 - * `fromCache` Boolean - * `responseHeaders` Object - -#### `ses.webRequest.onCompleted([filter, ]listener)` - -* `filter` Object -* `listener` Function - -当请求完成的时候,使用 `listener(details)` 调用 `listener`. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `responseHeaders` Object - * `fromCache` Boolean - * `statusCode` Integer - * `statusLine` String - -#### `ses.webRequest.onErrorOccurred([filter, ]listener)` - -* `filter` Object -* `listener` Function - -当一个错误发生的时候,使用 `listener(details)` 调用 `listener`. - -* `details` Object - * `id` Integer - * `url` String - * `method` String - * `resourceType` String - * `timestamp` Double - * `fromCache` Boolean - * `error` String - 错误描述. diff --git a/docs-translations/zh-CN/api/shell.md b/docs-translations/zh-CN/api/shell.md deleted file mode 100644 index 22fa0d1cd1ff..000000000000 --- a/docs-translations/zh-CN/api/shell.md +++ /dev/null @@ -1,81 +0,0 @@ -# shell -> 使用系统默认应用管理文件和 URL . - -进程: [Main](../glossary.md#main-process), [Renderer](../glossary.md#renderer-process) - -`shell` 模块提供了集成其他桌面客户端的关联功能. - - -在用户默认浏览器中打开URL的示例: - -```javascript -const {shell} = require('electron') - -shell.openExternal('https://github.com') -``` - -## 方法 - -`shell` 模块包含以下函数: - -### `shell.showItemInFolder(fullPath)` - -* `fullPath` String - -Returns `Boolean` - -是否成功打开文件所在文件夹,一般情况下还会选中它. - -### `shell.openItem(fullPath)` - -* `fullPath` String - -Returns `Boolean` - 是否成功的以默认打开方式打开文件. - - -### `shell.openExternal(url)` - -* `url` String -* `options` Object (可选) _macOS_ - * `activate` Boolean - `true` 让打开的应用在前面显示,默认为 `true`. -* `callback` Function (可选) - 如果指定将执行异步打开. _macOS_ - * `error` Error - -Returns `Boolean` - 应用程序是否打开URL.如果指定了 callback 回调方法, 则返回 true. - -以系统默认设置打开外部协议.(例如,mailto: URLs 会打开用户默认的邮件客户端) - - -### `shell.moveItemToTrash(fullPath)` - -* `fullPath` String - -Returns `Boolean` - 文件是否成功移动到垃圾桶 - -删除指定路径文件,并返回此操作的状态值(boolean类型). - -### `shell.beep()` - -播放 beep 声音. - -### `shell.writeShortcutLink(shortcutPath[, operation], options)` _Windows_ - -* `shortcutPath` String -* `operation` String (可选) - 默认为 `create`, 可以为下列的值: - * `create` - 创建一个新的快捷方式,如果存在的话会覆盖. - * `update` - 仅在现有快捷方式上更新指定属性. - * `replace` - 覆盖现有的快捷方式,如果快捷方式不存在则会失败. -* `options` [ShortcutDetails](structures/shortcut-details.md) - -Returns `Boolean` - 快捷方式是否成功创建 - -为 `shortcutPath` 创建或更新快捷链接. - -### `shell.readShortcutLink(shortcutPath)` _Windows_ - -* `shortcutPath` String - -Returns [`ShortcutDetails`](structures/shortcut-details.md) - -读取 `shortcutPath` 的快捷连接的信息. - -发生错误时,会抛出异常信息. diff --git a/docs-translations/zh-CN/api/structures/bluetooth-device.md b/docs-translations/zh-CN/api/structures/bluetooth-device.md deleted file mode 100644 index 2fa0c799a10e..000000000000 --- a/docs-translations/zh-CN/api/structures/bluetooth-device.md +++ /dev/null @@ -1,4 +0,0 @@ -# 蓝牙设备 Object - -* `deviceName` String -* `deviceId` String diff --git a/docs-translations/zh-CN/api/structures/certificate-principal.md b/docs-translations/zh-CN/api/structures/certificate-principal.md deleted file mode 100644 index f4184e8faf94..000000000000 --- a/docs-translations/zh-CN/api/structures/certificate-principal.md +++ /dev/null @@ -1,8 +0,0 @@ -# CertificatePrincipal Object - -* `commonName` String - 通用名 -* `organizations` String[] - 组织名 -* `organizationUnits` String[] - 组织单位名称 -* `locality` String - 地区 -* `state` String - 州或省 -* `country` String - 国家或地区 diff --git a/docs-translations/zh-CN/api/structures/certificate.md b/docs-translations/zh-CN/api/structures/certificate.md deleted file mode 100644 index 546cefb42da8..000000000000 --- a/docs-translations/zh-CN/api/structures/certificate.md +++ /dev/null @@ -1,12 +0,0 @@ -# Certificate Object 证书对象 - -* `data` String - PEM encoded data -* `issuer` [CertificatePrincipal](certificate-principal.md) - Issuer principal -* `issuerName` String - Issuer's Common Name -* `issuerCert` Certificate - Issuer certificate (if not self-signed) -* `subject` [CertificatePrincipal](certificate-principal.md) - Subject principal -* `subjectName` String - Subject's Common Name -* `serialNumber` String - Hex value represented string -* `validStart` Number - Start date of the certificate being valid in seconds -* `validExpiry` Number - End date of the certificate being valid in seconds -* `fingerprint` String - Fingerprint of the certificate diff --git a/docs-translations/zh-CN/api/structures/cookie.md b/docs-translations/zh-CN/api/structures/cookie.md deleted file mode 100644 index 79f21e1080ac..000000000000 --- a/docs-translations/zh-CN/api/structures/cookie.md +++ /dev/null @@ -1,12 +0,0 @@ -# Cookie Object - -* `name` String - cookie 的名称. -* `value` String - cookie 的值. -* `domain` String (optional) - cookie 的域名. -* `hostOnly` Boolean (optional) - cookie 的类型是否为 host-only. -* `path` String (optional) - cookie 的路径. -* `secure` Boolean (optional) - cookie 是否标记为安全. -* `httpOnly` Boolean (optional) - cookie 是否只标记为 HTTP. -* `session` Boolean (optional) - cookie 是否是一个 session cookie, 还是一个带有过期时间的持续 cookie. -* `expirationDate` Double (optional) - cookie 距离 UNIX 时间戳的过期时间,数值为秒。不需要提供给 session - cookies. diff --git a/docs-translations/zh-CN/api/structures/crash-report.md b/docs-translations/zh-CN/api/structures/crash-report.md deleted file mode 100644 index f16b5acdb6d5..000000000000 --- a/docs-translations/zh-CN/api/structures/crash-report.md +++ /dev/null @@ -1,4 +0,0 @@ -# 崩溃报告的对象 - -* `date` String -* `ID` Integer diff --git a/docs-translations/zh-CN/api/structures/desktop-capturer-source.md b/docs-translations/zh-CN/api/structures/desktop-capturer-source.md deleted file mode 100644 index 1ab3db17414e..000000000000 --- a/docs-translations/zh-CN/api/structures/desktop-capturer-source.md +++ /dev/null @@ -1,7 +0,0 @@ -# DesktopCapturerSource Object - -* `id` String - 窗口或者屏幕的标识符,当调用 [`navigator.webkitGetUserMedia`] 时可以被当成 `chromeMediaSourceId` 使用。 -标识符的格式为`window:XX` 或 `screen:XX`,`XX` 是一个随机生成的数字. -* `name` String - 窗口的来源将被命名为 `Entire Screen` 或 `Screen `,而窗口来源的名字将会和窗口的标题匹配. -* `thumbnail` [NativeImage](../native-image.md) - 缩略图. **注:** 通过 `desktopCapturer.getSources` 方法, -不能保证缩略图的大小与 `options` 中指定的 `thumbnailSize` 相同。实际大小取决于窗口或者屏幕的比例。 diff --git a/docs-translations/zh-CN/api/structures/display.md b/docs-translations/zh-CN/api/structures/display.md deleted file mode 100644 index f5f5b9866ba1..000000000000 --- a/docs-translations/zh-CN/api/structures/display.md +++ /dev/null @@ -1,15 +0,0 @@ -# Display Object - -* `id` Number - Unique identifier associated with the display. -* `rotation` Number - Can be 0, 90, 180, 270, represents screen rotation in - clock-wise degrees. -* `scaleFactor` Number - Output device's pixel scale factor. -* `touchSupport` String - Can be `available`, `unavailable`, `unknown`. -* `bounds` [Rectangle](rectangle.md) -* `size` [Size](size.md) -* `workArea` [Rectangle](rectangle.md) -* `workAreaSize` [Size](size.md) - -The `Display` object represents a physical display connected to the system. A -fake `Display` may exist on a headless system, or a `Display` may correspond to -a remote, virtual display. diff --git a/docs-translations/zh-CN/api/structures/file-filter.md b/docs-translations/zh-CN/api/structures/file-filter.md deleted file mode 100644 index 014350a60f86..000000000000 --- a/docs-translations/zh-CN/api/structures/file-filter.md +++ /dev/null @@ -1,4 +0,0 @@ -# FileFilter Object - -* `name` String -* `extensions` String[] diff --git a/docs-translations/zh-CN/api/structures/jump-list-category.md b/docs-translations/zh-CN/api/structures/jump-list-category.md deleted file mode 100644 index 07627e78c98e..000000000000 --- a/docs-translations/zh-CN/api/structures/jump-list-category.md +++ /dev/null @@ -1,21 +0,0 @@ -# JumpListCategory Object - -* `type` String (optional) - One of the following: - * `tasks` - Items in this category will be placed into the standard `Tasks` - category. There can be only one such category, and it will always be - displayed at the bottom of the Jump List. - * `frequent` - Displays a list of files frequently opened by the app, the - name of the category and its items are set by Windows. - * `recent` - Displays a list of files recently opened by the app, the name - of the category and its items are set by Windows. Items may be added to - this category indirectly using `app.addRecentDocument(path)`. - * `custom` - Displays tasks or file links, `name` must be set by the app. -* `name` String (optional) - Must be set if `type` is `custom`, otherwise it should be - omitted. -* `items` JumpListItem[] (optional) - Array of [`JumpListItem`](jump-list-item.md) objects if `type` is `tasks` or - `custom`, otherwise it should be omitted. - -**Note:** If a `JumpListCategory` object has neither the `type` nor the `name` -property set then its `type` is assumed to be `tasks`. If the `name` property -is set but the `type` property is omitted then the `type` is assumed to be -`custom`. diff --git a/docs-translations/zh-CN/api/structures/jump-list-item.md b/docs-translations/zh-CN/api/structures/jump-list-item.md deleted file mode 100644 index f17d72e0a41b..000000000000 --- a/docs-translations/zh-CN/api/structures/jump-list-item.md +++ /dev/null @@ -1,28 +0,0 @@ -# JumpListItem Object - -* `type` String (optional) - One of the following: - * `task` - A task will launch an app with specific arguments. - * `separator` - Can be used to separate items in the standard `Tasks` - category. - * `file` - A file link will open a file using the app that created the - Jump List, for this to work the app must be registered as a handler for - the file type (though it doesn't have to be the default handler). -* `path` String (optional) - Path of the file to open, should only be set if `type` is - `file`. -* `program` String (optional) - Path of the program to execute, usually you should - specify `process.execPath` which opens the current program. Should only be - set if `type` is `task`. -* `args` String (optional) - The command line arguments when `program` is executed. Should - only be set if `type` is `task`. -* `title` String (optional) - The text to be displayed for the item in the Jump List. - Should only be set if `type` is `task`. -* `description` String (optional) - Description of the task (displayed in a tooltip). - Should only be set if `type` is `task`. -* `iconPath` String (optional) - The absolute path to an icon to be displayed in a - Jump List, which can be an arbitrary resource file that contains an icon - (e.g. `.ico`, `.exe`, `.dll`). You can usually specify `process.execPath` to - show the program icon. -* `iconIndex` Number (optional) - The index of the icon in the resource file. If a - resource file contains multiple icons this value can be used to specify the - zero-based index of the icon that should be displayed for this task. If a - resource file contains only one icon, this property should be set to zero. diff --git a/docs-translations/zh-CN/api/structures/memory-usage-details.md b/docs-translations/zh-CN/api/structures/memory-usage-details.md deleted file mode 100644 index d77e07dedfc2..000000000000 --- a/docs-translations/zh-CN/api/structures/memory-usage-details.md +++ /dev/null @@ -1,5 +0,0 @@ -# MemoryUsageDetails Object - -* `count` Number -* `size` Number -* `liveSize` Number diff --git a/docs-translations/zh-CN/api/structures/mime-typed-buffer.md b/docs-translations/zh-CN/api/structures/mime-typed-buffer.md deleted file mode 100644 index 08e5cd47a4a9..000000000000 --- a/docs-translations/zh-CN/api/structures/mime-typed-buffer.md +++ /dev/null @@ -1,4 +0,0 @@ -# MimeTypedBuffer Object - -* `mimeType` String - The mimeType of the Buffer that you are sending -* `data` Buffer - The actual Buffer content diff --git a/docs-translations/zh-CN/api/structures/notification-action.md b/docs-translations/zh-CN/api/structures/notification-action.md deleted file mode 100644 index 1ceb880acced..000000000000 --- a/docs-translations/zh-CN/api/structures/notification-action.md +++ /dev/null @@ -1,19 +0,0 @@ -# NotificationAction 对象 - -* `type` 字符串 - 动作的类型, 可以是 `button`. -* `text` 字符串 - (可选) 指定动作的标签. - -## 平台 / 动作 支持 - -| 动作类型 | 平台支持 | `text`用法 | 默认 `text` | 限制 | -|-------------|------------------|-----------------|----------------|-------------| -| `button` | macOS | 用作按钮的标签 | "Show" | 最多只有一个按钮,如果仅提供多个,则仅使用最后一个按钮。 此操作也与 `hasReply` 不兼容,如果 `hasReply` 为 `true` ,将被忽略。 | - -### macOS 上的按钮支持 - -为了让额外的通知按钮在 MacOS 上工作,您的应用程序必须符合以下条件。 - -* 应用程序已签名。 -* 在 `info.plist` 中,将应用程序的 `NSUserNotificationAlertStyle` 设为 `alert` 。 - -如果这些要求中的任何一个都不符合,按钮就不会出现。 diff --git a/docs-translations/zh-CN/api/structures/point.md b/docs-translations/zh-CN/api/structures/point.md deleted file mode 100644 index 69b87cbdf9c4..000000000000 --- a/docs-translations/zh-CN/api/structures/point.md +++ /dev/null @@ -1,4 +0,0 @@ -# Point Object - -* `x` Number -* `y` Number diff --git a/docs-translations/zh-CN/api/structures/rectangle.md b/docs-translations/zh-CN/api/structures/rectangle.md deleted file mode 100644 index 0cd000699ea0..000000000000 --- a/docs-translations/zh-CN/api/structures/rectangle.md +++ /dev/null @@ -1,6 +0,0 @@ -# Rectangle Object - -* `x` Number - The x coordinate of the origin of the rectangle -* `y` Number - The y coordinate of the origin of the rectangle -* `width` Number -* `height` Number diff --git a/docs-translations/zh-CN/api/structures/remove-client-certificate.md b/docs-translations/zh-CN/api/structures/remove-client-certificate.md deleted file mode 100644 index 7ec853f1633b..000000000000 --- a/docs-translations/zh-CN/api/structures/remove-client-certificate.md +++ /dev/null @@ -1,5 +0,0 @@ -# RemoveClientCertificate Object - -* `type` String - `clientCertificate`. -* `origin` String - Origin of the server whose associated client certificate - must be removed from the cache. diff --git a/docs-translations/zh-CN/api/structures/remove-password.md b/docs-translations/zh-CN/api/structures/remove-password.md deleted file mode 100644 index 28a9ed8ae104..000000000000 --- a/docs-translations/zh-CN/api/structures/remove-password.md +++ /dev/null @@ -1,15 +0,0 @@ -# RemovePassword Object - -* `type` String - `password`. -* `origin` String (optional) - When provided, the authentication info - related to the origin will only be removed otherwise the entire cache - will be cleared. -* `scheme` String (optional) - Scheme of the authentication. - Can be `basic`, `digest`, `ntlm`, `negotiate`. Must be provided if - removing by `origin`. -* `realm` String (optional) - Realm of the authentication. Must be provided if - removing by `origin`. -* `username` String (optional) - Credentials of the authentication. Must be - provided if removing by `origin`. -* `password` String (optional) - Credentials of the authentication. Must be - provided if removing by `origin`. diff --git a/docs-translations/zh-CN/api/structures/scrubber-item.md b/docs-translations/zh-CN/api/structures/scrubber-item.md deleted file mode 100644 index 0dd3c4ff0fd4..000000000000 --- a/docs-translations/zh-CN/api/structures/scrubber-item.md +++ /dev/null @@ -1,4 +0,0 @@ -# ScrubberItem Object - -* `label` String - (Optional) The text to appear in this item -* `icon` NativeImage - (Optional) The image to appear in this item diff --git a/docs-translations/zh-CN/api/structures/segmented-control-segment.md b/docs-translations/zh-CN/api/structures/segmented-control-segment.md deleted file mode 100644 index ae01a07f32d2..000000000000 --- a/docs-translations/zh-CN/api/structures/segmented-control-segment.md +++ /dev/null @@ -1,5 +0,0 @@ -# SegmentedControlSegment Object - -* `label` String - (Optional) The text to appear in this segment -* `icon` NativeImage - (Optional) The image to appear in this segment -* `enabled` Boolean - (Optional) Whether this segment is selectable. Default: true diff --git a/docs-translations/zh-CN/api/structures/shortcut-details.md b/docs-translations/zh-CN/api/structures/shortcut-details.md deleted file mode 100644 index e7b272d09994..000000000000 --- a/docs-translations/zh-CN/api/structures/shortcut-details.md +++ /dev/null @@ -1,15 +0,0 @@ -# ShortcutDetails Object - -* `target` String - The target to launch from this shortcut. -* `cwd` String (optional) - The working directory. Default is empty. -* `args` String (optional) - The arguments to be applied to `target` when -launching from this shortcut. Default is empty. -* `description` String (optional) - The description of the shortcut. Default -is empty. -* `icon` String (optional) - The path to the icon, can be a DLL or EXE. `icon` -and `iconIndex` have to be set together. Default is empty, which uses the -target's icon. -* `iconIndex` Number (optional) - The resource ID of icon when `icon` is a -DLL or EXE. Default is 0. -* `appUserModelId` String (optional) - The Application User Model ID. Default -is empty. diff --git a/docs-translations/zh-CN/api/structures/size.md b/docs-translations/zh-CN/api/structures/size.md deleted file mode 100644 index 1d9c8b1f5a12..000000000000 --- a/docs-translations/zh-CN/api/structures/size.md +++ /dev/null @@ -1,4 +0,0 @@ -# Size Object - -* `width` Number -* `height` Number diff --git a/docs-translations/zh-CN/api/structures/task.md b/docs-translations/zh-CN/api/structures/task.md deleted file mode 100644 index 61a28de879e7..000000000000 --- a/docs-translations/zh-CN/api/structures/task.md +++ /dev/null @@ -1,14 +0,0 @@ -# Task Object - -* `program` String - Path of the program to execute, usually you should - specify `process.execPath` which opens the current program. -* `arguments` String - The command line arguments when `program` is - executed. -* `title` String - The string to be displayed in a JumpList. -* `description` String - Description of this task. -* `iconPath` String - The absolute path to an icon to be displayed in a - JumpList, which can be an arbitrary resource file that contains an icon. You - can usually specify `process.execPath` to show the icon of the program. -* `iconIndex` Number - The icon index in the icon file. If an icon file - consists of two or more icons, set this value to identify the icon. If an - icon file consists of one icon, this value is 0. diff --git a/docs-translations/zh-CN/api/structures/thumbar-button.md b/docs-translations/zh-CN/api/structures/thumbar-button.md deleted file mode 100644 index 259195852a4f..000000000000 --- a/docs-translations/zh-CN/api/structures/thumbar-button.md +++ /dev/null @@ -1,21 +0,0 @@ -# ThumbarButton Object - -* `icon` [NativeImage](../native-image.md) - The icon showing in thumbnail - toolbar. -* `click` Function -* `tooltip` String (optional) - The text of the button's tooltip. -* `flags` String[] (optional) - Control specific states and behaviors of the - button. By default, it is `['enabled']`. - -The `flags` is an array that can include following `String`s: - -* `enabled` - The button is active and available to the user. -* `disabled` - The button is disabled. It is present, but has a visual state - indicating it will not respond to user action. -* `dismissonclick` - When the button is clicked, the thumbnail window closes - immediately. -* `nobackground` - Do not draw a button border, use only the image. -* `hidden` - The button is not shown to the user. -* `noninteractive` - The button is enabled but not interactive; no pressed - button state is drawn. This value is intended for instances where the button - is used in a notification. diff --git a/docs-translations/zh-CN/api/structures/upload-blob.md b/docs-translations/zh-CN/api/structures/upload-blob.md deleted file mode 100644 index be93cacb495e..000000000000 --- a/docs-translations/zh-CN/api/structures/upload-blob.md +++ /dev/null @@ -1,4 +0,0 @@ -# UploadBlob Object - -* `type` String - `blob`. -* `blobUUID` String - UUID of blob data to upload. diff --git a/docs-translations/zh-CN/api/structures/upload-data.md b/docs-translations/zh-CN/api/structures/upload-data.md deleted file mode 100644 index 8e5c07725a54..000000000000 --- a/docs-translations/zh-CN/api/structures/upload-data.md +++ /dev/null @@ -1,6 +0,0 @@ -# UploadData Object - -* `bytes` Buffer - Content being sent. -* `file` String - Path of file being uploaded. -* `blobUUID` String - UUID of blob data. Use [ses.getBlobData](../session.md#sesgetblobdataidentifier-callback) method - to retrieve the data. diff --git a/docs-translations/zh-CN/api/structures/upload-file-system.md b/docs-translations/zh-CN/api/structures/upload-file-system.md deleted file mode 100644 index d62b0a8ba788..000000000000 --- a/docs-translations/zh-CN/api/structures/upload-file-system.md +++ /dev/null @@ -1,9 +0,0 @@ -# UploadFileSystem Object - -* `type` String - `fileSystem`. -* `filsSystemURL` String - FileSystem url to read data for upload. -* `offset` Integer - Defaults to `0`. -* `length` Integer - Number of bytes to read from `offset`. - Defaults to `0`. -* `modificationTime` Double - Last Modification time in - number of seconds sine the UNIX epoch. diff --git a/docs-translations/zh-CN/api/structures/upload-file.md b/docs-translations/zh-CN/api/structures/upload-file.md deleted file mode 100644 index 8a2197301444..000000000000 --- a/docs-translations/zh-CN/api/structures/upload-file.md +++ /dev/null @@ -1,9 +0,0 @@ -# UploadFile Object - -* `type` String - `file`. -* `filePath` String - Path of file to be uploaded. -* `offset` Integer - Defaults to `0`. -* `length` Integer - Number of bytes to read from `offset`. - Defaults to `0`. -* `modificationTime` Double - Last Modification time in - number of seconds sine the UNIX epoch. diff --git a/docs-translations/zh-CN/api/structures/upload-raw-data.md b/docs-translations/zh-CN/api/structures/upload-raw-data.md deleted file mode 100644 index 4fe162311fa1..000000000000 --- a/docs-translations/zh-CN/api/structures/upload-raw-data.md +++ /dev/null @@ -1,4 +0,0 @@ -# UploadRawData Object - -* `type` String - `rawData`. -* `bytes` Buffer - Data to be uploaded. diff --git a/docs-translations/zh-CN/api/synopsis.md b/docs-translations/zh-CN/api/synopsis.md deleted file mode 100644 index c6cf07a76cea..000000000000 --- a/docs-translations/zh-CN/api/synopsis.md +++ /dev/null @@ -1,84 +0,0 @@ -# 简介 - -> 如何使用 Node.js 和 Electron APIs。 - -所有的[Node.js's built-in modules](https://nodejs.org/api/)在 Electron 中都可用,并且所有的 node 的第三方组件也可以放心使用(包括[自身的模块](../tutorial/using-native-node-modules.md))。 - -Electron 也提供了一些额外的内置组件来开发传统桌面应用。一些组件只可以在主进程中使用,一些只可以在渲染进程中使用( web 页面),但是也有部分可以在这2种进程中都可使用。 - -基本规则:GUI模块或者系统底层的模块只可以在主进程中使用。要使用这些模块,你应当很熟悉[主进程vs渲染进程](../tutorial/quick-start.md#main-process)脚本的概念。 - -主进程脚本看起来像个普通的 Node.js 脚本: - -```javascript -const {app, BrowserWindow} = require('electron') -let win = null - -app.on('ready', () => { - win = new BrowserWindow({width: 800, height: 600}) - win.loadURL('https://github.com') -}) -``` - -渲染进程和传统的 web 界面一样,除了它具有使用 node 模块的能力: - -```html - - - - - - -``` - -如果想运行应用,参考 [Run your app](../tutorial/quick-start.md#run-your-app)。 - -## 解构任务 - -在 v0.37 版本之后,你可以使用[destructuring assignment][destructuring-assignment] 来更加简单地使用内置模块。 - -```javascript -const {app, BrowserWindow} = require('electron') - -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -如果你需要整个 `electron` 模块,你可以加载并使用 -从 `electron` 解构访问各个模块。 - -```javascript -const electron = require('electron') -const {app, BrowserWindow} = electron - -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -这相当于以下代码: - -```javascript -const electron = require('electron') -const app = electron.app -const BrowserWindow = electron.BrowserWindow -let win - -app.on('ready', () => { - win = new BrowserWindow() - win.loadURL('https://github.com') -}) -``` - -[gui]: https://en.wikipedia.org/wiki/Graphical_user_interface -[destructuring-assignment]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment diff --git a/docs-translations/zh-CN/api/system-preferences.md b/docs-translations/zh-CN/api/system-preferences.md deleted file mode 100644 index 7ac9b5a7c058..000000000000 --- a/docs-translations/zh-CN/api/system-preferences.md +++ /dev/null @@ -1,215 +0,0 @@ -# systemPreferences - -> 获取系统偏好设置。 - -可使用的进程: [主进程](../tutorial/quick-start.md#main-process) - -```javascript -const {systemPreferences} = require('electron') -console.log(systemPreferences.isDarkMode()) -``` - -## 事件 - -`systemPreferences` 对象会触发以下事件: - -### Event: 'accent-color-changed' _Windows_ - -返回: - -* `event` Event -* `newColor` String - 用户给系统颜色设置的新的 RGBA 色值。 - -### Event: 'color-changed' _Windows_ - -返回: - -* `event` Event - -### Event: 'inverted-color-scheme-changed' _Windows_ - -返回: - -* `event` Event -* `invertedColorScheme` Boolean - 如果一个反色的配色方案正在被使用,比如一个高对比度的主题,则返回 `true` ,否则返回 `false` 。 - -## 方法 - -### `systemPreferences.isDarkMode()` _macOS_ - -返回 `Boolean` - 系统是否处于深色模式。 - -### `systemPreferences.isSwipeTrackingFromScrollEventsEnabled()` _macOS_ - -返回 `Boolean` - 是否开启页面间滑动功能。 - -### `systemPreferences.postNotification(event, userInfo)` _macOS_ - -* `event` String -* `userInfo` Object - -在 macOS 上使用原生系统通知来发布 `event` 。`userInfo` 是包含了用户向通知发送的信息字典的一个对象。 - -### `systemPreferences.postLocalNotification(event, userInfo)` _macOS_ - -* `event` String -* `userInfo` Object - -在 macOS 上使用原生系统通知来发布 `event` 。`userInfo` 是包含了用户向通知发送的信息字典的一个对象。 - -### `systemPreferences.subscribeNotification(event, callback)` _macOS_ - -* `event` String -* `callback` Function - * `event` String - * `userInfo` Object - -在 macOS 上订阅一个原生消息。当相关 `event` 发生, `callback` 将会被 `callback(event, userInfo)` 调用。`userInfo` 是包含了用户向通知发送的信息字典的一个对象。 - -订阅者的 `id` 将会被返回,它能够用于取消订阅相关 `event` 。 - -这个API在底层上订阅于 `NSDistributedNotificationCenter`, - `event` 的一些实例值如下: - -* `AppleInterfaceThemeChangedNotification` -* `AppleAquaColorVariantChanged` -* `AppleColorPreferencesChangedNotification` -* `AppleShowScrollBarsSettingChanged` - -### `systemPreferences.unsubscribeNotification(id)` _macOS_ - -* `id` Integer - -移除当前 `id` 下的订阅。 - -### `systemPreferences.subscribeLocalNotification(event, callback)` _macOS_ - -* `event` String -* `callback` Function - * `event` String - * `userInfo` Object - -大体上如同 `subscribeNotification` ,但默认使用本地 `subscribeNotification` 。一些事件必须使用它,比如 `NSUserDefaultsDidChangeNotification` 。 - -### `systemPreferences.unsubscribeLocalNotification(id)` _macOS_ - -* `id` Integer - -大体上如同 `unsubscribeNotification` , 但是是从 `NSNotificationCenter` 中移除订阅者。 - -### `systemPreferences.getUserDefault(key, type)` _macOS_ - -* `key` String -* `type` String - Can be `string`, `boolean`, `integer`, `float`, `double`, - `url`, `array`, `dictionary` - -获取系统偏好中相应的 `key` 的值。 - -这个 API 在 macOS 系统中使用的是 `NSUserDefaults` 。以下是一些热门的 `key` 和 `type`: - -* `AppleInterfaceStyle`: `string` -* `AppleAquaColorVariant`: `integer` -* `AppleHighlightColor`: `string` -* `AppleShowScrollBars`: `string` -* `NSNavRecentPlaces`: `array` -* `NSPreferredWebServices`: `dictionary` -* `NSUserDictionaryReplacementItems`: `array` - -### `systemPreferences.setUserDefault(key, type, value)` _macOS_ - -* `key` String -* `type` String - 详见 [`getUserDefault`][#systempreferencesgetuserdefaultkey-type-macos] -* `value` String - -设置系统偏好中相应的 `key` 的值。 - -需要注意的是 `type` 需要与实际的类型的 `value` 对应。不然会抛出一个异常。 - -这个 API 在 macOS 系统中使用的是 `NSUserDefaults` 。以下是一些热门的 `key` 和 `type`: - -* `ApplePressAndHoldEnabled`: `boolean` - -### `systemPreferences.isAeroGlassEnabled()` _Windows_ - -如果 [DWM composition][dwm-composition] (毛玻璃效果)开启则会返回 `true` 否则返回 `false` 。 - -以下是一个实例去使用它来确定是否应该创建一个透明的窗口(透明的窗口在 DWM composition 禁止的情况下无法正确运行): - -```javascript -const {BrowserWindow, systemPreferences} = require('electron') -let browserOptions = {width: 1000, height: 800} - -// 如果平台支持的话便新建一个透明的窗口。 -if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) { - browserOptions.transparent = true - browserOptions.frame = false -} - -// 创建窗口。 -let win = new BrowserWindow(browserOptions) - -// 区分环境进行加载。 -if (browserOptions.transparent) { - win.loadURL(`file://${__dirname}/index.html`) -} else { - // No transparency, so we load a fallback that uses basic styles. - win.loadURL(`file://${__dirname}/fallback.html`) -} -``` - -[dwm-composition]:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx - -### `systemPreferences.getAccentColor()` _Windows_ - -返回 `String` - 用户当前系统颜色偏好的16进制 RGBA 色值。 - -```js -const color = systemPreferences.getAccentColor() // `"aabbccdd"` -const red = color.substr(0, 2) // "aa" -const green = color.substr(2, 2) // "bb" -const blue = color.substr(4, 2) // "cc" -const alpha = color.substr(6, 2) // "dd" -``` - -### `systemPreferences.getColor(color)` _Windows_ - -* `color` String - 接下来的一个值: - * `3d-dark-shadow` - 3D 元素的暗部的色值。 - * `3d-face` - 3D 肤色,以及对话框背景。 - * `3d-highlight` - 高亮的3D元素。 - * `3d-light` - 3D 元素亮部。 - * `3d-shadow` - 3D 元素的阴影。 - * `active-border` - 活跃窗口边框。 - * `active-caption` - 活跃窗口标题。 具体来说是指开启渐变效果下活跃窗口中左侧色彩梯度。 - * `active-caption-gradient` - 活跃窗口标题栏中右侧颜色梯度。 - * `app-workspace` - 多文档(MDI)应用界面背景颜色。 - * `button-text` - 推送按钮的文本。 - * `caption-text` - 标题栏,尺寸框,滚动条尖头框上的文本。 - * `desktop` - 桌面背景颜色。 - * `disabled-text` - 灰色(禁止的)文本。 - * `highlight` - 元素的元素。 - * `highlight-text` - 选中的文本。 - * `hotlight` - 热链或者超链接的色值。 - * `inactive-border` - 不活跃窗口的边框。 - * `inactive-caption` - 不活跃窗口标题。具体来说是指开启渐变效果下不活跃窗口中左侧色彩梯度。 - * `inactive-caption-gradient` - 不活跃窗口标题栏中右侧色彩梯度。 - * `inactive-caption-text` - 不活跃的标题文本。 - * `info-background` - 工具栏背景。 - * `info-text` - 工具栏文本。 - * `menu` - 菜单背景。 - * `menu-highlight` - 当菜单作为平面菜单时高亮的菜单颜色。 - * `menubar` - 当菜单作为平面菜单时菜单栏背景。 - * `menu-text` - 菜单文本。 - * `scrollbar` - 滚动条灰色区域。 - * `window` - 窗口背景。 - * `window-frame` - 窗口框架。 - * `window-text` - 窗口内文本。 - -返回 `String` - 系统设置色值的16进制形式(`#ABCDEF`)。 -详见 [Windows docs][windows-colors] 获取更多细节。 - -### `systemPreferences.isInvertedColorScheme()` _Windows_ - -返回 `Boolean` - 如果一个反色的配色方案正在被使用,比如一个高对比度的主题,则返回 `true` ,否则返回 `false` 。 - -[windows-colors]:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724371(v=vs.85).aspx diff --git a/docs-translations/zh-CN/api/tray.md b/docs-translations/zh-CN/api/tray.md deleted file mode 100644 index 8ecbcac7b54e..000000000000 --- a/docs-translations/zh-CN/api/tray.md +++ /dev/null @@ -1,231 +0,0 @@ -# Class:Tray - -> 将图标和上下文菜单添加到系统的通知区域。 - -可使用的进程: [主进程](../tutorial/quick-start.md#main-process) - -`Tray` 是一个 [事件发出者][event-emitter]。 - -```javascript -const {app, Menu, Tray} = require('electron') - -let tray = null -app.on('ready', () => { - tray = new Tray('/path/to/my/icon') - const contextMenu = Menu.buildFromTemplate([ - {label: 'Item1', type: 'radio'}, - {label: 'Item2', type: 'radio'}, - {label: 'Item3', type: 'radio', checked: true}, - {label: 'Item4', type: 'radio'} - ]) - tray.setToolTip('This is my application.') - tray.setContextMenu(contextMenu) -}) -``` - -__平台限制:__ - -* 在 Linux, 如果支持应用指示器则使用它,否则使用 `GtkStatusIcon` 代替。 -* 在 Linux ,配置了只有有了应用指示器的支持, 你必须安装 `libappindicator1` 来让 tray icon 执行。 -* 应用指示器只有在它拥有 context menu 时才会显示。 -* 当在linux 上使用了应用指示器,将忽略点击事件。 -* 在 Linux,为了让单独的 `MenuItem` 起效,需要再次调用 `setContextMenu` 。例如: - -```javascript -const {app, Menu, Tray} = require('electron') - -let appIcon = null -app.on('ready', () => { - appIcon = new Tray('/path/to/my/icon') - const contextMenu = Menu.buildFromTemplate([ - {label: 'Item1', type: 'radio'}, - {label: 'Item2', type: 'radio'} - ]) - - // Make a change to the context menu - contextMenu.items[1].checked = false - - // Call this again for Linux because we modified the context menu - appIcon.setContextMenu(contextMenu) -}) -``` - -如果想在所有平台保持完全相同的行为,不应该依赖点击事件,而是一直将一个 context menu 添加到 tray icon。 - -### `new Tray(image)` - -* `image` ([NativeImage](native-image.md) | String) - -创建一个与 `image` 相关的 icon。 - -### Instance Events - -`Tray` 模块可发出下列事件: - -#### Event: 'click' - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` [Rectangle](structures/rectangle.md) - tray icon 的 bounds - -当 tray icon 被点击的时候发出事件。 - -#### Event: 'right-click' _macOS_ _Windows_ - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` [Rectangle](structures/rectangle.md) - tray icon 的 bounds - -当 tray icon 被鼠标右键点击的时候发出事件。 - -#### Event: 'double-click' _macOS_ _Windows_ - -* `event` Event - * `altKey` Boolean - * `shiftKey` Boolean - * `ctrlKey` Boolean - * `metaKey` Boolean -* `bounds` [Rectangle](structures/rectangle.md) - tray icon 的 bounds - -当 tray icon 被双击的时候发出事件。 - -#### Event: 'balloon-show' _Windows_ - -当 tray 气泡显示的时候发出事件。 - -#### Event: 'balloon-click' _Windows_ - -当 tray 气泡被点击的时候发出事件。 - -#### Event: 'balloon-closed' _Windows_ - -当 tray 气泡关闭的时候发出事件,因为超时或人为关闭。 - -#### Event: 'drop' _macOS_ - -当 tray icon 上的任何可拖动项被删除的时候发出事件。 - -#### Event: 'drop-files' _macOS_ - -* `event` -* `files` Array - 已删除文件的路径. - -当 tray icon 上的可拖动文件被删除的时候发出事件。 - -#### Event: 'drag-enter' _macOS_ - -当一个拖动操作进入 tray icon 的时候发出事件。 - -#### Event: 'drag-leave' _macOS_ - -当一个拖动操作离开 tray icon 的时候发出事件。 - -#### Event: 'drag-end' _macOS_ - -当一个拖动操作在 tray icon 上或其它地方停止拖动的时候发出事件。 - -### 方法 - -`Tray` 模块有以下方法: - -#### `tray.destroy()` - -立刻删除 tray icon。 - -#### `tray.setImage(image)` - -* `image` ([NativeImage](native-image.md) | String) - -让 `image` 与 tray icon 关联起来。 - -#### `tray.setPressedImage(image)` _macOS_ - -* `image` [NativeImage](native-image.md) - -当在 macOS 上按压 tray icon 的时候,让 `image` 与 tray icon 关联起来。 - -#### `tray.setToolTip(toolTip)` - -* `toolTip` String - -为 tray icon 设置 hover text。 - -#### `tray.setTitle(title)` _macOS_ - -* `title` String - -在状态栏沿着 tray icon 设置标题。 - -#### `tray.setHighlightMode(mode)` _macOS_ - -* `mode` String - Highlight mode with one of the following values: - * `selection` - Highlight the tray icon when it is clicked and also when - its context menu is open. This is the default. - * `always` - Always highlight the tray icon. - * `never` - Never highlight the tray icon. - -设置 tray icon 的背景色变为高亮(blue)。 - -**注意:** 你可以使用 `highlightMode` 和一个 [`BrowserWindow`](browser-window.md) -通过在窗口可见性时切换 `'never'` 和 `'always'` 模式变化。 - -```javascript -const {BrowserWindow, Tray} = require('electron') - -const win = new BrowserWindow({width: 800, height: 600}) -const tray = new Tray('/path/to/my/icon') - -tray.on('click', () => { - win.isVisible() ? win.hide() : win.show() -}) -win.on('show', () => { - tray.setHighlightMode('always') -}) -win.on('hide', () => { - tray.setHighlightMode('never') -}) -``` - -#### `tray.displayBalloon(options)` _Windows_ - -* `options` Object - * `icon` ([NativeImage](native-image.md) | String) - (可选) - * `title` String - (可选) - * `content` String - (可选) - -展示一个 tray balloon。 - -#### `tray.popUpContextMenu([menu, position])` _macOS_ _Windows_ - -* `menu` Menu (optional) -* `position` Object (可选) - 上托位置. - * `x` Integer - * `y` Integer - -从 tray icon 上托出 context menu。当划过 `menu` 的时候, `menu` 显示,代替 tray 的 context menu。 - -`position` 只在 windows 上可用,默认为 (0, 0)。 - -#### `tray.setContextMenu(menu)` - -* `menu` Menu - -为这个 icon 设置 context menu。 - -#### `tray.getBounds()` _macOS_ _Windows_ - -返回 [`Rectangle`](structures/rectangle.md) - -这个 tray icon 的 `bounds` 对象。 - -#### `tray.isDestroyed()` - -返回 `Boolean` - tray icon 是否销毁。 - -[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter diff --git a/docs-translations/zh-CN/api/web-contents.md b/docs-translations/zh-CN/api/web-contents.md deleted file mode 100644 index dd5c926126c2..000000000000 --- a/docs-translations/zh-CN/api/web-contents.md +++ /dev/null @@ -1,1210 +0,0 @@ -# webContents - -> 渲染和控制网页。 - -可使用的进程: [主进程](../tutorial/quick-start.md#main-process) - -`webContents` 是一个 -[事件发出者](http://nodejs.org/api/events.html#events_class_events_eventemitter). -它负责渲染并控制网页,也是 [`BrowserWindow`](browser-window.md) 对象的属性.一个使用 `webContents` 的例子: - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({width: 800, height: 1500}) -win.loadURL('http://github.com') - -let contents = win.webContents -console.log(contents) -``` - -## 方法 - -这些方法可以从 `webContents` 模块访问: - -```javascript -const {webContents} = require('electron') -console.log(webContents) -``` - -### `webContents.getAllWebContents()` - -返回 `WebContents[]` - 所有 `WebContents` 实例的数组。这将包含Web内容 -适用于所有 windows,webviews,打开的 devtools 和 devtools 扩展背景页面。 - -### `webContents.getFocusedWebContents()` - -返回 `WebContents` - 在此应用程序中焦点的 Web 内容,否则返回`null`。 - -### `webContents.fromId(id)` - -* `id` Integer - -返回 `WebContents` - 一个给定 ID 的 WebContents 实例。 - -## Class: WebContents - -> 渲染和控制浏览器窗口实例的内容。 - -可使用的进程: [主进程](../tutorial/quick-start.md#main-process) - -### 实例事件 - - -#### Event: 'did-finish-load' - -当导航完成时,发出 `onload` 事件。 - -#### Event: 'did-fail-load' - -返回: - -* `event` Event -* `errorCode` Integer -* `errorDescription` String -* `validatedURL` String -* `isMainFrame` Boolean - -这个事件类似 `did-finish-load` ,但是是在加载失败或取消加载时发出, 例如, `window.stop()` 被调用时。错误代码的完整列表和它们的含义都可以在 [这里](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h) 找到。 - -#### Event: 'did-frame-finish-load' - -返回: - -* `event` Event -* `isMainFrame` Boolean - -当一个 frame 导航完成的时候发出事件。 - -#### Event: 'did-start-loading' - -当 tab 的spinner 开始 spinning的时候。 - -#### Event: 'did-stop-loading' - -当 tab 的spinner 结束 spinning的时候。 - -#### Event: 'did-get-response-details' - -返回: - -* `event` Event -* `status` Boolean -* `newURL` String -* `originalURL` String -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object -* `resourceType` String - -当有关请求资源的详细信息可用的时候发出事件。 -`status` 标识了 socket 链接来下载资源。 - -#### Event: 'did-get-redirect-request' - -返回: - -* `event` Event -* `oldURL` String -* `newURL` String -* `isMainFrame` Boolean -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object - -当在请求资源时收到重定向的时候发出事件。 - -#### Event: 'dom-ready' - -返回: - -* `event` Event - -当指定 frame 中的 文档加载完成的时候发出事件。 - -#### Event: 'page-favicon-updated' - -返回: - -* `event` Event -* `favicons` Array - Array of URLs - -当 page 收到图标 url 的时候发出事件。 - -#### Event: 'new-window' - -返回: - -* `event` Event -* `url` String -* `frameName` String -* `disposition` String - 可为 `default`, `foreground-tab`, `background-tab`, - `new-window`, `save-to-disk` 和 `other` -* `options` Object - 创建新的 `BrowserWindow`时使用的参数。 -* `additionalFeatures` String[] - 非标准功能(功能未处理 -   由 Chromium 或 Electron )赋予 `window.open()`。 - -当 page 请求打开指定 url 窗口的时候发出事件.这可以是通过 `window.open` 或一个外部连接如 `` 发出的请求。 - -默认指定 `url` 的 `BrowserWindow` 会被创建。 - -调用 `event.preventDefault()` 可以用来阻止打开窗口。 - -调用 `event.preventDefault()` 将阻止 Electron 自动创建 -新 `BrowserWindow`。 如果调用 `event.preventDefault()` 并手动创建一个新的 -`BrowserWindow`,那么你必须设置 `event.newGuest` 来引用新的 `BrowserWindow` -实例,如果不这样做可能会导致意外的行为。例如: - -```javascript -myBrowserWindow.webContents.on('new-window', (event, url) => { - event.preventDefault() - const win = new BrowserWindow({show: false}) - win.once('ready-to-show', () => win.show()) - win.loadURL(url) - event.newGuest = win -}) -``` - -#### Event: 'will-navigate' - -返回: - -* `event` Event -* `url` String - -当用户或 page 想要开始导航的时候发出事件。它可在当 `window.location` 对象改变或用户点击 page 中的链接的时候发生。 - -当使用 api(如 `webContents.loadURL` 和 `webContents.back`) 以编程方式来启动导航的时候,这个事件将不会发出。 - -它也不会在页内跳转发生,例如点击锚链接或更新 `window.location.hash`。使用 `did-navigate-in-page` 事件可以达到目的。 - -调用 `event.preventDefault()` 可以阻止导航。 - -#### Event: 'did-navigate' - -返回: - -* `event` Event -* `url` String - -当一个导航结束时候发出事件。 - -页内跳转时不会发出这个事件,例如点击锚链接或更新 `window.location.hash`。使用 `did-navigate-in-page` 事件可以达到目的。 - -#### Event: 'did-navigate-in-page' - -返回: - -* `event` Event -* `url` String -* `isMainFrame ` Boolean - -当页内导航发生的时候发出事件。 - -当页内导航发生的时候,page 的url 改变,但是不会跳出界面。例如当点击锚链接时或者 DOM 的 `hashchange` 事件发生。 - -#### Event: 'crashed' - -返回: - -* `event` Event -* `killed` Boolean - -当渲染进程崩溃的时候发出事件。 - -#### Event: 'plugin-crashed' - -返回: - -* `event` Event -* `name` String -* `version` String - -当插件进程崩溃时候发出事件。 - -#### Event: 'destroyed' - -当 `webContents` 被删除的时候发出事件。 - -#### Event: 'before-input-event' - -返回: - -* `event` Event -* `input` Object - 属性 - * `type` String - `keyUp` 或者 `keyDown` - * `key` String - [KeyboardEvent.key][keyboardevent] - * `code` String - [KeyboardEvent.code][keyboardevent] - * `isAutoRepeat` Boolean - [KeyboardEvent.repeat][keyboardevent] - * `shift` Boolean - [KeyboardEvent.shiftKey][keyboardevent] - * `control` Boolean - [KeyboardEvent.controlKey][keyboardevent] - * `alt` Boolean - [KeyboardEvent.altKey][keyboardevent] - * `meta` Boolean - [KeyboardEvent.metaKey][keyboardevent] - -在 `keydown` 和 `keyup` 事件触发前发送。调用 `event.preventDefault` 方法可以阻止页面的 `keydown/keyup` 事件。 - -#### Event: 'devtools-opened' - -当开发者工具栏打开的时候发出事件。 - -#### Event: 'devtools-closed' - -当开发者工具栏关闭时候发出事件。 - -#### Event: 'devtools-focused' - -当开发者工具栏获得焦点或打开的时候发出事件。 - -#### Event: 'certificate-error' - -返回: - -* `event` Event -* `url` URL -* `error` String - The error code -* `certificate` [Certificate](structures/certificate.md) -* `callback` Function - * `isTrusted ` Boolean - 表明证书是否可以被认为是可信的 - -当验证 `certificate` 或 `url` 失败的时候发出事件。 - -使用方法类似 [`app` 的 `certificate-error` 事件](app.md#event-certificate-error)。 - - -#### Event: 'select-client-certificate' - -返回: - -* `event` Event -* `url` URL -* `certificateList` [Certificate[]](structures/certificate.md) -* `callback` Function - * `certificate` [Certificate](structures/certificate.md) - 证书必须来自于指定的列表 - -当请求客户端证书的时候发出事件。 - -使用方法类似 [`app` 的 `select-client-certificate` 事件](app.md#event-select-client-certificate)。 - -#### Event: 'login' - -返回: - -* `event` Event -* `request` Object - * `method` String - * `url` URL - * `referrer` URL -* `authInfo` Object - * `isProxy` Boolean - * `scheme` String - * `host` String - * `port` Integer - * `realm` String -* `callback` Function - * `username` String - * `password` String - -当 `webContents` 想做基本验证的时候发出事件. - -使用方法类似 [the `login` event of `app`](app.md#event-login)。 - -#### Event: 'found-in-page' - -返回: - -* `event` Event -* `result` Object - * `requestId` Integer - * `activeMatchOrdinal` Integer - 活动匹配位置。 - * `matches` Integer - 匹配数量。 - * `selectionArea` Object - 协调首个匹配位置。 - * `finalUpdate` Boolean - - -当使用 [`webContents.findInPage`] 进行页内查找并且找到可用值得时候发出事件。 - -#### Event: 'media-started-playing' - -当媒体开始播放的时候发出事件。 - -#### Event: 'media-paused' - -当媒体停止播放的时候发出事件。 - -#### Event: 'did-change-theme-color' - -当page 的主题色时候发出事件。这通常由于引入了一个 meta 标签: - -```html - -``` - -#### Event: 'update-target-url' - -返回: - -* `event` Event -* `url` String - -当鼠标移到一个链接上或键盘焦点移动到一个链接上时发送。 - -#### Event: 'cursor-changed' - -返回: - -* `event` Event -* `type` String -* `image` NativeImage (可选) -* `scale` Float (可选) 自定义光标的比例 -* `size` Object (可选) - `image`的大小 - * `width` Integer - * `height` Integer -* `hotspot` Object (可选) - 自定义光标热点的坐标 - * `x` Integer - x 坐标 - * `y` Integer - y 坐标 - -当鼠标的类型发生改变的时候发出事件. `type` 的参数可以是 `default`, -`crosshair`, `pointer`, `text`, `wait`, `help`, `e-resize`, `n-resize`, -`ne-resize`, `nw-resize`, `s-resize`, `se-resize`, `sw-resize`, `w-resize`, -`ns-resize`, `ew-resize`, `nesw-resize`, `nwse-resize`, `col-resize`, -`row-resize`, `m-panning`, `e-panning`, `n-panning`, `ne-panning`, `nw-panning`, -`s-panning`, `se-panning`, `sw-panning`, `w-panning`, `move`, `vertical-text`, -`cell`, `context-menu`, `alias`, `progress`, `nodrop`, `copy`, `none`, -`not-allowed`, `zoom-in`, `zoom-out`, `grab`, `grabbing`, `custom`. - -如果 `type` 参数值为 `custom`、 `image` 参数会在一个`NativeImage` 中控制自定义鼠标图片,并且 `scale` 、`size` 和 `hotspot`会控制自定义光标的属性。 - -#### Event: 'context-menu' - -Returns: - -* `event` Event -* `params` Object - * `x` Integer - x 坐标 - * `y` Integer - y 坐标 - * `linkURL` String - 菜单中调用的节点的 URL 链接. - * `linkText` String - 链接的文本。当链接是一个图像时文本可以为空. - * `pageURL` String - 菜单被调用时顶级页面的 URL 链接. - * `frameURL` String - 菜单被调用时子级页面的 URL 链接. - * `srcURL` String - 菜单被调用时元素的原始链接。带有链接的元素可以为图像、音频和视频。 - * `mediaType` String - 菜单被调用时的节点类型。可以为 `none`, `image`, `audio`, `video`, `canvas`, `file` or `plugin`. - * `hasImageContents` Boolean - 菜单中是否含有图像. - * `isEditable` Boolean - 菜单是否可以被编辑. - * `selectionText` String - Text of the selection that the context menu was - invoked on. - * `titleText` String - Title or alt text of the selection that the context - was invoked on. - * `misspelledWord` String - The misspelled word under the cursor, if any. - * `frameCharset` String - The character encoding of the frame on which the - menu was invoked. - * `inputFieldType` String - If the context menu was invoked on an input - field, the type of that field. Possible values are `none`, `plainText`, - `password`, `other`. - * `menuSourceType` String - Input source that invoked the context menu. - Can be `none`, `mouse`, `keyboard`, `touch`, `touchMenu`. - * `mediaFlags` Object - The flags for the media element the context menu was - invoked on. - * `inError` Boolean - Whether the media element has crashed. - * `isPaused` Boolean - Whether the media element is paused. - * `isMuted` Boolean - Whether the media element is muted. - * `hasAudio` Boolean - Whether the media element has audio. - * `isLooping` Boolean - Whether the media element is looping. - * `isControlsVisible` Boolean - Whether the media element's controls are - visible. - * `canToggleControls` Boolean - Whether the media element's controls are - toggleable. - * `canRotate` Boolean - Whether the media element can be rotated. - * `editFlags` Object - These flags indicate whether the renderer believes it - is able to perform the corresponding action. - * `canUndo` Boolean - Whether the renderer believes it can undo. - * `canRedo` Boolean - Whether the renderer believes it can redo. - * `canCut` Boolean - Whether the renderer believes it can cut. - * `canCopy` Boolean - Whether the renderer believes it can copy - * `canPaste` Boolean - Whether the renderer believes it can paste. - * `canDelete` Boolean - Whether the renderer believes it can delete. - * `canSelectAll` Boolean - Whether the renderer believes it can select all. - -Emitted when there is a new context menu that needs to be handled. - -#### Event: 'select-bluetooth-device' - -Returns: - -* `event` Event -* `devices` [BluetoothDevice[]](structures/bluetooth-device.md) -* `callback` Function - * `deviceId` String - -Emitted when bluetooth device needs to be selected on call to -`navigator.bluetooth.requestDevice`. To use `navigator.bluetooth` api -`webBluetooth` should be enabled. If `event.preventDefault` is not called, -first available device will be selected. `callback` should be called with -`deviceId` to be selected, passing empty string to `callback` will -cancel the request. - -```javascript -const {app, webContents} = require('electron') -app.commandLine.appendSwitch('enable-web-bluetooth') - -app.on('ready', () => { - webContents.on('select-bluetooth-device', (event, deviceList, callback) => { - event.preventDefault() - let result = deviceList.find((device) => { - return device.deviceName === 'test' - }) - if (!result) { - callback('') - } else { - callback(result.deviceId) - } - }) -}) -``` - -#### Event: 'paint' - -Returns: - -* `event` Event -* `dirtyRect` [Rectangle](structures/rectangle.md) -* `image` [NativeImage](native-image.md) - The image data of the whole frame. - -Emitted when a new frame is generated. Only the dirty area is passed in the -buffer. - -```javascript -const {BrowserWindow} = require('electron') - -let win = new BrowserWindow({webPreferences: {offscreen: true}}) -win.webContents.on('paint', (event, dirty, image) => { - // updateBitmap(dirty, image.getBitmap()) -}) -win.loadURL('http://github.com') -``` - -#### Event: 'devtools-reload-page' -当 devtools 调试工具页面重新加载时发送 - -#### Event: 'will-attach-webview' - -Returns: - -* `event` Event -* `webPreferences` Object - The web preferences that will be used by the guest - page. This object can be modified to adjust the preferences for the guest - page. -* `params` Object - The other `` parameters such as the `src` URL. - This object can be modified to adjust the parameters of the guest page. - -Emitted when a ``'s web contents is being attached to this web -contents. Calling `event.preventDefault()` will destroy the guest page. - -This event can be used to configure `webPreferences` for the `webContents` -of a `` before it's loaded, and provides the ability to set settings -that can't be set via `` attributes. -### 实例方法 - - -#### `contents.loadURL(url[, options])` - -* `url` URL -* `options` Object (可选) - * `httpReferrer` String - HTTP 的 url 链接. - * `userAgent` String - 产生请求的用户代理 - * `extraHeaders` String - 以 "\n" 分隔的额外头 - * `postData` ([UploadRawData](structures/upload-raw-data.md) | [UploadFile](structures/upload-file.md) | [UploadFileSystem](structures/upload-file-system.md) | [UploadBlob](structures/upload-blob.md))[] - (optional) - * `baseURLForDataURL` String (optional) - 由数据URL加载的文件的基本URL(带尾随路径分隔符)。只有当指定的URL是一个数据URL并且需要加载其他文件时才需要设置。 - -在窗口中加载 `url`。 `url` 必须包含协议前缀, -比如 `http://` 或 `file://`。如果加载想要忽略 http 缓存,可以使用 `pragma` 头来达到目的。 - -```javascript -const {webContents} = require('electron') -const options = {extraHeaders: 'pragma: no-cache\n'} -webContents.loadURL('https://github.com', options) -``` - -#### `contents.downloadURL(url)` - -* `url` URL - -初始化一个指定 `url` 的资源下载,不导航跳转。 `session` 的 `will-download` 事件会触发。 - -#### `contents.getURL()` - -Returns `String` - 当前页面的 URL. - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('http://github.com') - -let currentURL = win.webContents.getURL() -console.log(currentURL) -``` - -#### `contents.getTitle()` - -Returns `String` - 当前页面的标题. - -#### `contents.isDestroyed()` - -Returns `Boolean` - 当前的页面是否被销毁了 - -#### `contents.isFocused()` - -Returns `Boolean` - 焦点是否在当前页面上. - -#### `contents.isLoading()` - -Returns `Boolean` - 当前页是否正在加载资源。 - -#### `contents.isLoadingMainFrame()` - -Returns `Boolean` - 是否主框架(而不仅是 iframe 或者在帧内)仍在加载中。 - -#### `contents.isWaitingForResponse()` - -Returns `Boolean` - 当前页是否正在等待主要资源的第一次响应。 - -#### `contents.stop()` - -停止还为开始的导航。 - -#### `contents.reload()` - -重载当前页。 - -#### `contents.reloadIgnoringCache()` - -重载当前页,忽略缓存。 - -#### `contents.canGoBack()` - -Returns `Boolean` - 浏览器是否能回到前一个页面。 - -#### `contents.canGoForward()` - -Returns `Boolean` - 浏览器是否能前往下一个页面。 - -#### `contents.canGoToOffset(offset)` - -* `offset` Integer - -Returns `Boolean` - 页面是否能前往 `offset`。 - -#### `contents.clearHistory()` - -清除导航历史。 - -#### `contents.goBack()` - -让浏览器回退到前一个页面。 - -#### `contents.goForward()` - -让浏览器回前往下一个页面。 - -#### `contents.goToIndex(index)` - -* `index` Integer - -让浏览器回前往指定 `index` 的页面。 - -#### `contents.goToOffset(offset)` - -* `offset` Integer - -导航到相对于当前页的偏移位置页。 - -#### `contents.isCrashed()` - -Returns `Boolean` - 渲染进程是否崩溃。 - -#### `contents.setUserAgent(userAgent)` - -* `userAgent` String - -重写本页用户代理。 - -#### `contents.getUserAgent()` - -Returns `String` - 页面的用户代理信息。 - -#### `contents.insertCSS(css)` - -* `css` String - -为当前页插入css。 - -#### `contents.executeJavaScript(code[, userGesture, callback])` - -* `code` String -* `userGesture` Boolean (可选) - 默认值为 `false` -* `callback` Function (可选) - 脚本执行完成后调用的回调函数. - * `result` Any - -Returns `Promise` - 成功了返回 resolves,失败了返回 rejected - -评估页面的 `code` 代码。 - -浏览器窗口中的一些 HTML API ,例如 `requestFullScreen`,只能被用户手势请求。设置 `userGesture` 为 `true` 可以取消这个限制。 - -如果执行的代码的结果是一个 promise,回调方法将为 promise 的 resolved 的值。我们建议您使用返回的 Promise 来处理导致结果的代码。 - -```js -contents.executeJavaScript('fetch("https://jsonplaceholder.typicode.com/users/1").then(resp => resp.json())', true) - .then((result) => { - console.log(result) // Will be the JSON object from the fetch call - }) -``` -#### `contents.setAudioMuted(muted)` - -* `muted` Boolean - -设置当前页为静音。 - -#### `contents.isAudioMuted()` - -Returns `Boolean` - 当前页是否为静音状态 - -#### `contents.setZoomFactor(factor)` - -* `factor` Number - 缩放系数 - -改变缩放系数为指定的数值。缩放系数是缩放的百分比除以100,比如 300% = 3.0 - -#### `contents.getZoomFactor(callback)` - -* `callback` Function - * `zoomFactor` Number - -发送一个请求来获取当前的缩放系数,`callback` 回调方法会在 `callback(zoomFactor)` 中调用. - -#### `contents.setZoomLevel(level)` - -* `level` Number - 缩放等级 - -改变缩放等级为指定的等级。原始大小为0,每升高或降低一次,代表 20% 的大小缩放。限制为原始大小的 300% 到 50%。 - -#### `contents.getZoomLevel(callback)` - -* `callback` Function - * `zoomLevel` Number - -发送一个请求来获取当前的缩放等级,`callback` 回调方法会在 `callback(zoomLevel)` 中调用. -#### `contents.setZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -**废弃:** 使用 `setVisualZoomLevelLimits` 来代替. 这个方法将在 Electron 2.0 中移除. - -#### `contents.setVisualZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -设置最大和最小的手势缩放等级。 - -#### `contents.setLayoutZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -设置最大和最小的 layout-based (i.e. non-visual) zoom level. - -#### `contents.undo()` - -在网页中执行编辑命令 `undo`。 - -#### `contents.redo()` - -在网页中执行编辑命令 `redo`。 - -#### `contents.cut()` - -在网页中执行编辑命令 `cut`。 - -#### `contents.copy()` - -在网页中执行编辑命令 `copy`。 - -#### `contents.copyImageAt(x, y)` - -* `x` Integer -* `y` Integer - -拷贝剪贴板中指定位置的图像. - -#### `contents.paste()` - -在网页中执行编辑命令 `paste`。 - -#### `contents.pasteAndMatchStyle()` - -在网页中执行编辑命令 `pasteAndMatchStyle`。 - -#### `contents.delete()` - -在网页中执行编辑命令 `delete`。 - -#### `contents.selectAll()` - -在网页中执行编辑命令 `selectAll`。 - -#### `contents.unselect()` - -在网页中执行编辑命令 `unselect`。 - -#### `contents.replace(text)` - -* `text` String - -在网页中执行编辑命令 `replace`。 - -#### `contents.replaceMisspelling(text)` - -* `text` String - -在网页中执行编辑命令 `replaceMisspelling`。 - -#### `contents.insertText(text)` - -* `text` String - -插入 `text` 到获得了焦点的元素。 - -#### `contents.findInPage(text[, options])` - -* `text` String - 查找内容,不能为空。 -* `options` Object (可选) - * `forward` Boolean - (可选) 是否向前或向后查找,默认为 `true`。 - * `findNext` Boolean - (可选) 当前操作是否是第一次查找或下一次查找, - 默认为 `false`。 - * `matchCase` Boolean - (可选) 查找是否区分大小写, - 默认为 `false`。 - * `wordStart` Boolean - (可选) 是否仅以首字母查找, - 默认为 `false`。 - * `medialCapitalAsWordStart` Boolean - (可选) 是否结合 `wordStart`,如果匹配是大写字母开头,后面接小写字母或无字母,那么就接受这个词中匹配。接受几个其它的合成词匹配,默认为 `false`。 - -发起请求,在网页中查找所有与 `text` 相匹配的项,并且返回一个 `Integer` 来表示这个请求用的请求 Id。这个请求结果可以通过订阅 - [`found-in-page`](web-contents.md#event-found-in-page) 事件来取得。 - -#### `contents.stopFindInPage(action)` - -* `action` String - 指定一个行为来接替停止 - [`webContents.findInPage`] 请求。 - * `clearSelection` - 转变为一个普通的 selection。 - * `keepSelection` - 清除 selection。 - * `activateSelection` - 获取焦点并点击 selection node。 - -使用给定的 `action` 来为 `webContents` 停止任何 `findInPage` 请求。 - -```javascript -const {webContents} = require('electron') -webContents.on('found-in-page', (event, result) => { - if (result.finalUpdate) webContents.stopFindInPage('clearSelection') -}) - -const requestId = webContents.findInPage('api') -console.log(requestId) -``` - -#### `contents.capturePage([rect, ]callback)` - -* `rect` [Rectangle](structures/rectangle.md) (optional) - 页面被捕捉的区域 -* `callback` Function - * `image` [NativeImage](native-image.md) - -捕捉页面 `rect` 区域的快照。在完成后 `callback` 方法会通过 `callback(image)` 调用 。`image` 是 [NativeImage](native-image.md) 的实例。省略 `rect` 参数会捕捉整个页面的可视区域。 - -#### `contents.hasServiceWorker(callback)` - -* `callback` Function - * `hasWorker` Boolean - -检查是否有任何 ServiceWorker 注册了,并且返回一个布尔值,来作为 `callback`响应的标识。 - -#### `contents.unregisterServiceWorker(callback)` - -* `callback` Function - * `success` Boolean - -如果存在任何 ServiceWorker,则全部注销,并且当JS承诺执行行或JS拒绝执行而失败的时候,返回一个布尔值,它标识了相应的 `callback`。 - -#### `contents.print([options])` - -* `options` Object (可选) - * `silent` Boolean - 不需要请求用户的打印设置. 默认为 `false`。 - * `printBackground` Boolean - 打印背景和网页图片. 默认为 `false`。 - -打印窗口的网页。当设置 `silent` 为 `true` 的时候,Electron 将使用系统默认的打印机和打印方式来打印。 - -在网页中调用 `window.print()` 和 调用 `webContents.print({silent: false, printBackground: false})`具有相同的作用。 - -使用 `page-break-before: always; ` CSS 的样式将强制打印到一个新的页面. - -#### `contents.printToPDF(options, callback)` - -* `options` Object - * `marginsType` Integer - 指定使用的 margin type。默认 margin 使用 0,无 margin 使用 1,最小化 margin 使用 2。 - * `pageSize` String - 指定生成的PDF文件的page size. 可以是 `A3`、 - `A4`、 `A5`、 `Legal`、`Letter` 和 `Tabloid`。或者是一个包含 `height` - 和 `width` 的对象,单位是微米。 - * `printBackground` Boolean - 是否打印 css 背景。 - * `printSelectionOnly` Boolean - 是否只打印选中的部分。 - * `landscape` Boolean - landscape 为 `true`, portrait 为 `false`。 -* `callback` Function - * `error` Error - * `data` Buffer - -打印窗口的网页为 pdf,使用 Chromium 预览打印的自定义设置。 - -完成时使用 `callback(error, data)` 调用 `callback` 。 `data` 是一个 `Buffer` ,包含了生成的 pdf 数据、 - -默认,空的 `options` 被视为: - -```javascript -{ - marginsType: 0, - printBackground: false, - printSelectionOnly: false, - landscape: false -} -``` - -使用 `page-break-before: always; ` CSS 的样式将强制打印到一个新的页面. - -一个 `webContents.printToPDF` 的示例: - -```javascript -const {BrowserWindow} = require('electron') -const fs = require('fs') - -let win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('http://github.com') - -win.webContents.on('did-finish-load', () => { - // Use default printing options - win.webContents.printToPDF({}, (error, data) => { - if (error) throw error - fs.writeFile('/tmp/print.pdf', data, (error) => { - if (error) throw error - console.log('Write PDF successfully.') - }) - }) -}) -``` - -#### `contents.addWorkSpace(path)` - -* `path` String - -添加指定的路径给开发者工具栏的 workspace。必须在 DevTools 创建之后使用它: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.webContents.on('devtools-opened', () => { - win.webContents.addWorkSpace(__dirname) -}) -``` - -#### `contents.removeWorkSpace(path)` - -* `path` String - -从开发者工具栏的 workspace 删除指定的路径。 - -#### `contents.openDevTools([options])` - -* `options` Object (可选) - * `mode` String - 打开开发者工具的状态属性。可以为 `right`, `bottom`, `undocked`, `detach`。默认值为上一次使用时的状态。在`undocked`模式可以把工具栏放回来,`detach`模式不可以。 - -打开开发者工具栏。 - -#### `contents.closeDevTools()` - -关闭开发者工具栏。 - -#### `contents.isDevToolsOpened()` - -Returns `Boolean` - 开发者工具栏是否打开。 - -#### `contents.isDevToolsFocused()` - -Returns `Boolean` - 开发者工具栏视图是否获得焦点。 - -#### `contents.toggleDevTools()` - -Toggles 开发者工具。 - -#### `contents.inspectElement(x, y)` - -* `x` Integer -* `y` Integer - -在 (`x`, `y`) 开始检测元素。 - -#### `contents.inspectServiceWorker()` - -为 service worker 上下文打开开发者工具栏。 - -#### `contents.send(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (可选) - -通过 `channel` 发送异步消息给渲染进程,你也可发送任意的参数。参数应该在 JSON 内部序列化,并且此后没有函数或原形链被包括了。 - -渲染进程可以通过使用 `ipcRenderer` 监听 `channel` 来处理消息。 - -从主进程向渲染进程发送消息的示例: - -```javascript -// 主进程. -const {app, BrowserWindow} = require('electron') -let win = null - -app.on('ready', () => { - win = new BrowserWindow({width: 800, height: 600}) - win.loadURL(`file://${__dirname}/index.html`) - win.webContents.on('did-finish-load', () => { - win.webContents.send('ping', 'whoooooooh!') - }) -}) -``` - -```html - - - - - - -``` - -#### `contents.enableDeviceEmulation(parameters)` - -`parameters` Object, 属性为: - -* `screenPosition` String - 指定需要模拟的屏幕 - (默认 : `desktop`) - * `desktop` - 桌面屏幕模式 - * `mobile` - 手机屏幕模式 -* `screenSize` Object - 设置模拟屏幕的尺寸 (screenPosition == mobile) - * `width` Integer - 设置模拟屏幕 width - * `height` Integer - 设置模拟屏幕 height -* `viewPosition` Object - 屏幕中可视区域的位置 - (screenPosition == mobile) (默认: `{x: 0, y: 0}`) - * `x` Integer - 设置偏移左上角的x轴 - * `y` Integer - 设置偏移左上角的y轴 -* `deviceScaleFactor` Integer - 设置设备缩放比例系数 (如果为0,默认为原始屏幕比例) (默认: `0`) -* `viewSize` Object - 设置模拟视图的尺寸 (空表示不覆盖) - * `width` Integer - 设置模拟视图 width - * `height` Integer - 设置模拟视图 height -* `fitToView` Boolean - 如果有必要的话,是否把模拟视图按比例缩放来适应可用空间 (默认: `false`) -* `offset` Object - 可用空间内的模拟视图偏移 (不在适应模式) (默认: `{x: 0, y: 0}`) - * `x` Float - 设置相对左上角的x轴偏移值 - * `y` Float - 设置相对左上角的y轴偏移值 -* `scale` Float - 可用空间内的模拟视图偏移 (不在适应视图模式) (默认: `1`) - -使用给定的参数来开启设备模拟。 - -#### `contents.disableDeviceEmulation()` - -关闭模拟器,使用 `webContents.enableDeviceEmulation` 来启用。 - -#### `contents.sendInputEvent(event)` - -* `event` Object - * `type` String (**必需**) - 事件类型,可以是 `mouseDown`, - `mouseUp`, `mouseEnter`, `mouseLeave`, `contextMenu`, `mouseWheel`, - `mouseMove`, `keyDown`, `keyUp`, `char`. - * `modifiers` String[] - 事件的 modifiers 数组, 可以包含 `shift`, `control`, `alt`, `meta`, `isKeypad`, `isAutoRepeat`, - `leftButtonDown`, `middleButtonDown`, `rightButtonDown`, `capsLock`, - `numLock`, `left`, `right`. - -向页面发送一个输入 `event`。 - -对键盘事件来说,`event` 对象还有如下属性: - -* `keyCode` String (**必需**) - 将字符串作为键盘事件发送。可用的 key codes [Accelerator](accelerator.md)。 - -对鼠标事件来说,`event` 对象还有如下属性: - -* `x` Integer (**必需**) -* `y` Integer (**必需**) -* `button` String - button 按下, 可以是 `left`, `middle`, `right` -* `globalX` Integer -* `globalY` Integer -* `movementX` Integer -* `movementY` Integer -* `clickCount` Integer - -对鼠标滚轮事件来说,`event` 对象还有如下属性: - -* `deltaX` Integer -* `deltaY` Integer -* `wheelTicksX` Integer -* `wheelTicksY` Integer -* `accelerationRatioX` Integer -* `accelerationRatioY` Integer -* `hasPreciseScrollingDeltas` Boolean -* `canScroll` Boolean - -#### `contents.beginFrameSubscription(callback)` -* `onlyDirty` Boolean (可选) - 默认值为 `false` -* `callback` Function - * `frameBuffer` Buffer - * `dirtyRect` [Rectangle](structures/rectangle.md) - -开始订阅 提交 事件和捕获数据帧,当有提交事件时,使用 `callback(frameBuffer)` 调用 `callback`。 - -`frameBuffer` 是一个包含原始像素数据的 `Buffer`,像素数据是按照 32bit BGRA 格式有效存储的,但是实际情况是取决于处理器的字节顺序的(大多数的处理器是存放小端序的,如果是在大端序的处理器上,数据是 32bit ARGB 格式)。 - -`dirtyRect` 脏区域是一个包含 `x, y, width, height` 属性的对象,它们描述了一个页面中的重绘区域。如果 `onlyDirty` 被设置为`true`, `frameBuffer` 将只包含重绘区域。`onlyDirty` 的默认值为 `false`. - -#### `contents.endFrameSubscription()` - -停止订阅帧提交事件。 - -#### `contents.startDrag(item)` - -* `item` Object - * `file` String 或 `files` Array - 要拖拽的文件(可以为多个)的路径。 - * `icon` [NativeImage](native-image.md) - 在 macOS 中图标不能为空. - -设置 `item` 作为当前拖拽操作的对象。`file` 是作为拖拽文件的绝对路径。`icon` 是拖拽时光标下面显示的图像。 - -#### `contents.savePage(fullPath, saveType, callback)` - -* `fullPath` String - 文件的完整路径. -* `saveType` String - 指定保存类型. - * `HTMLOnly` - 只保存html. - * `HTMLComplete` - 保存整个 page 内容. - * `MHTML` - 保存完整的 html 为 MHTML. -* `callback` Function - `(error) => {}`. - * `error` Error - -Returns `Boolean` - 如果保存界面过程初始化成功,返回 true。 - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() - -win.loadURL('https://github.com') - -win.webContents.on('did-finish-load', () => { - win.webContents.savePage('/tmp/test.html', 'HTMLComplete', (error) => { - if (!error) console.log('Save page successfully') - }) -}) -``` - -#### `contents.showDefinitionForSelection()` _macOS_ - -在页面上显示搜索的弹窗。 - -#### `contents.setSize(options)` - -设置页面的大小。This is only supported for `` guest contents. - -* `options` Object - * `normal` Object (可选) - Normal size of the page. This can be used in - combination with the [`disableguestresize`](web-view-tag.md#disableguestresize) - attribute to manually resize the webview guest contents. - * `width` Integer - * `height` Integer - -#### `contents.isOffscreen()` - -Returns `Boolean` - 表明是否设置了 *offscreen rendering*. - -#### `contents.startPainting()` - -如果设置了 *offscreen rendering* 并且没有绘制,开始绘制. - -#### `contents.stopPainting()` - -如果设置了 *offscreen rendering* 并且绘制了,停止绘制. - -#### `contents.isPainting()` - -Returns `Boolean` - 如果设置了 *offscreen rendering* ,返回当前是否正在绘制. - -#### `contents.setFrameRate(fps)` - -* `fps` Integer - -如果设置了 *offscreen rendering*,设置帧频为制定数值。有效范围为1-60. - -#### `contents.getFrameRate()` - -Returns `Integer` - 如果设置了 *offscreen rendering*,返回当前的帧频 - -#### `contents.invalidate()` - -全部重新绘制整个页面的内容。 - -如果设置了*offscreen rendering* ,让页面失效并且生成一个新的`'paint'`事件 - -#### `contents.getWebRTCIPHandlingPolicy()` - -Returns `String` - Returns the WebRTC IP Handling Policy. - -#### `contents.setWebRTCIPHandlingPolicy(policy)` - -* `policy` String - Specify the WebRTC IP Handling Policy. - * `default` - Exposes user's public and local IPs. This is the default - behavior. When this policy is used, WebRTC has the right to enumerate all - interfaces and bind them to discover public interfaces. - * `default_public_interface_only` - Exposes user's public IP, but does not - expose user's local IP. When this policy is used, WebRTC should only use the - default route used by http. This doesn't expose any local addresses. - * `default_public_and_private_interfaces` - Exposes user's public and local - IPs. When this policy is used, WebRTC should only use the default route used - by http. This also exposes the associated default private address. Default - route is the route chosen by the OS on a multi-homed endpoint. - * `disable_non_proxied_udp` - Does not expose public or local IPs. When this - policy is used, WebRTC should only use TCP to contact peers or servers unless - the proxy server supports UDP. - -Setting the WebRTC IP handling policy allows you to control which IPs are -exposed via WebRTC. See [BrowserLeaks](https://browserleaks.com/webrtc) for -more details. - -### 实例属性 - -`WebContents` 对象也有下列属性: - -#### `contents.id` - -表明 WebContents 唯一标示的整数 - -#### `contents.session` - -返回这个 `webContents` 使用的 [session](session.md) 对象。 - -#### `contents.hostWebContents` - -返回这个 `webContents` 的父 [`WebContents`](web-contents.md)。 - -#### `contents.devToolsWebContents` - -获取这个 `WebContents` 的开发者工具栏的 `WebContents`。 - -**注意:** 用户不可保存这个对象,因为当开发者工具栏关闭的时候它的值为 `null`。 - -#### `contents.debugger` - -webContents 的 [Debugger](debugger.md) 实例. - -[keyboardevent]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent diff --git a/docs-translations/zh-CN/api/web-frame.md b/docs-translations/zh-CN/api/web-frame.md deleted file mode 100644 index 6ebb9a908b7a..000000000000 --- a/docs-translations/zh-CN/api/web-frame.md +++ /dev/null @@ -1,101 +0,0 @@ -# webFrame - -`web-frame` 模块允许你自定义如何渲染当前网页 . - -例子,放大当前页到 200%. - -```javascript -var webFrame = require('electron').webFrame - -webFrame.setZoomFactor(2) -``` - -## 方法 - -`web-frame` 模块有如下方法: - -### `webFrame.setZoomFactor(factor)` - -* `factor` Number - 缩放参数. - -将缩放参数修改为指定的参数值.缩放参数是百分制的,所以 300% = 3.0. - -### `webFrame.getZoomFactor()` - -返回当前缩放参数值. - -### `webFrame.setZoomLevel(level)` - -* `level` Number - 缩放水平 - -将缩放水平修改为指定的水平值. 原始 size 为 0 ,并且每次增长都表示放大 20% 或缩小 20%,默认限制为原始 size 的 300% 到 50% 之间 . - -### `webFrame.getZoomLevel()` - -返回当前缩放水平值. - -### `webFrame.setZoomLevelLimits(minimumLevel, maximumLevel)` - -* `minimumLevel` Number -* `maximumLevel` Number - -设置缩放水平的最大值和最小值. - -### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)` - -* `language` String -* `autoCorrectWord` Boolean -* `provider` Object - -为输入框或文本域设置一个拼写检查 provider . - -`provider` 必须是一个对象,它有一个 `spellCheck` 方法,这个方法返回扫过的单词是否拼写正确 . - -例子,使用 [node-spellchecker][spellchecker] 作为一个 provider: - -```javascript -webFrame.setSpellCheckProvider('en-US', true, { - spellCheck: function (text) { - return !(require('spellchecker').isMisspelled(text)) - } -}) -``` - -### `webFrame.registerURLSchemeAsSecure(scheme)` - -* `scheme` String - -注册 `scheme` 为一个安全的 scheme. - - -安全的 schemes 不会引发混合内容 warnings.例如, `https` 和 -`data` 是安全的 schemes ,因为它们不能被活跃网络攻击而失效. - -### `webFrame.registerURLSchemeAsBypassingCSP(scheme)` - -* `scheme` String - -忽略当前网页内容的安全策略,直接从 `scheme` 加载. - -### `webFrame.registerURLSchemeAsPrivileged(scheme)` - -* `scheme` String - -通过资源的内容安全策略,注册 `scheme` 为安全的 scheme,允许注册 ServiceWorker并且支持 fetch API. - -### `webFrame.insertText(text)` - -* `text` String - -向获得焦点的原色插入内容 . - -### `webFrame.executeJavaScript(code[, userGesture])` - -* `code` String -* `userGesture` Boolean (可选) - 默认为 `false`. - -评估页面代码 . - -在浏览器窗口中,一些 HTML APIs ,例如 `requestFullScreen`,只可以通过用户手势来使用.设置`userGesture` 为 `true` 可以突破这个限制 . - -[spellchecker]: https://github.com/atom/node-spellchecker \ No newline at end of file diff --git a/docs-translations/zh-CN/api/webview-tag.md b/docs-translations/zh-CN/api/webview-tag.md deleted file mode 100644 index db5b809ab8c9..000000000000 --- a/docs-translations/zh-CN/api/webview-tag.md +++ /dev/null @@ -1,838 +0,0 @@ -# `` 标签 - -> 在隔离的 frame 和进程中显示外部 Web 内容。 - -使用 `webview` 标签来把 'guest' 内容(例如 web pages )嵌入到你的 Electron app 中。guest内容包含在 `webview` 容器中。一个嵌入你应用的 page 控制着 guest 内容如何布局摆放和表达含义。 - -与 `iframe` 不同,`webview` 和你的应用运行的是不同的进程。它不拥有渲染进程的权限,并且应用和嵌入内容之间的交互全部都是异步的。因为这能保证应用的安全性不受嵌入内容的影响。 - -## 例子 - -把一个 web page 嵌入到你的 app,首先添加 `webview` 标签到你的 app 待嵌入 page (展示 guest content)。在一个最简单的 `webview` 中,它包含了 web page 的文件路径和一个控制 `webview` 容器展示效果的 css 样式: - -```html - -``` - -如果想随时控制 guest 内容,可以添加 JavaScript 脚本来监听 `webview` 事件,使用 `webview` 方法来做出响应。这里是2个事件监听的例子:一个监听 web page 准备加载,另一个监听 web page 停止加载,并且在加载的时候显示一条 "loading..." 信息: - -```html - -``` - -## CSS样式说明 - -请注意,`webview` 标签的样式在内部使用 `display:flex;` -确保子对象 `object` 元素填充其 `webview` 的完整高度和宽度 -容器,当使用传统和 flexbox 布局(从v0.36.11)。请 -不要覆盖默认的 `display:flex;` CSS属性,除非指定 -`display:inline-flex;` 用于内联布局。 - -`webview` 有使用 `hidden` 属性或使用 `display:none;` 隐藏的问题。 -它可以导致在 `browserplugin` 子对象中异常的呈现行为 -并且重新加载网页,当 `webview` 是未隐藏的,而不是只是 -变得可见。 推荐隐藏 `webview` 的方法是使用 -CSS通过 `flex` 布局设置 `width` 和 `height`,并允许元素缩小到0px -尺寸。 - -```html - -``` - -## 标签属性 - -`webview` 标签有下面一些属性: - -### `src` - -```html - -``` - -将一个可用的 url 做为这个属性的初始值添加到顶部导航。 - -如果把当前页的 src 添加进去将加载当前 page。 - -`src` 同样可以填 data urls,例如 -`data:text/plain,Hello, world!`。 - -### `autosize` - -```html - -``` - -如果这个属性的值为 "on" , `webview` 容器将会根据属性 `minwidth`, `minheight`, `maxwidth`, 和 -`maxheight` 的值在它们之间自适应。只有在 `autosize` 开启的时候这个约束才会有效。当 `autosize` 开启的时候, `webview` 容器的 size 只能在上面那四个属性值之间。 - -### `nodeintegration` - -```html - -``` - -如果这个属性的值为 "on", `webview` 中的 guest page 将整合node,并且拥有可以使用系统底层的资源,例如 `require` 和 `process`。 - -### `plugins` - -```html - -``` - -如果这个属性的值为 "on", `webview` 中的 guest page 就可以使用浏览器插件。 - -### `preload` - -```html - -``` - -在 guest page 中的其他脚本执行之前预加载一个指定的脚本。规定预加载脚本的 url 须如 `file:` 或者 `asar:`,因为它在是 guest page 中通过通过 `require` 命令加载的。 - -如果 guest page 没有整合 node,这个脚本将试图使用真个 Node APIs,但是在这个脚本执行完毕时,之前由 node 插入的全局对象会被删除。 - - -### `httpreferrer` - -```html - -``` - -为 guest page 设置 referrer URL。 - -### `useragent` - -```html - -``` - -在 guest page 加载之前为其设置用户代理。如果页面已经加载了,可以使用 `setUserAgent` 方法来改变用户代理。 - -### `disablewebsecurity` - -```html - -``` - -如果这个属性的值为 "on", guest page会禁用web安全控制。 - -### partition - -```html - - -``` - -为 page 设置 session。如果初始值为 `partition` ,这个 page 将会为app中的所有 page 应用同一个持续有效的 session。如果没有 `persist:` 前缀, 这个 page 将会使用一个历史 session。通过分配使用相同的 `partition`, 所有的 page 都可以分享相同的session。如果 `partition` 没有设置,那 app 将使用默认的 session。 - -这个值只能在在第一个渲染进程之前设置修改,之后修改的话会无效并且抛出一个 DOM 异常。 - -### `allowpopups` - -```html - -``` - -如果这个属性的值为 "on",将允许 guest page 打开一个新窗口。 - -### `webpreferences` - -```html - -``` - -指定要在 webview 上设置的 web 首选项的字符串列表,用 `,` 分隔。 -支持的首选项字符串的完整列表 -[BrowserWindow](browser-window.md#new-browserwindowoptions)。 - -该字符串遵循与 `window.open` 中的 features 字符串相同的格式。 -一个名称本身赋予一个 `true` 布尔值。 -可以通过包含一个 `=`,然后是值来将首选项设置为另一个值。 -特殊值 `yes` 和 `1` 被解释为 `true`,而 `no` 和 `0` 被解释为 `false`。 - -### `blinkfeatures` - -```html - -``` - -这个属性的值为一个用逗号分隔的列表,它的值指定特性被启用。你可以从[setFeatureEnabledFromString][blink-feature-string]函数找到完整的支持特性。 - -### `disableblinkfeatures` - -```html - -``` - -指定要禁用的 blink 特征的字符串列表,用 `,` 分隔。 -支持的功能字符串的完整列表 -[RuntimeEnabledFeatures.json5][blink-feature-string]。 - -### `guestinstance` - -```html - -``` - -将 webview 链接到特定 webContents 的值。当一个 webview -首先加载并创建一个新的 webContents 且将此属性设置为其 -实例标识符。新的或现有的 webview 设定这个属性连接, -目前在不同的 webview 中显示到现有的 webcontent。 - -现有的 webview 将看到 `destroy` 事件,然后在加载新网址时,将创建一个新的 webContents。 - -### `disableguestresize` - -```html - -``` - -当 webview 元素本身为时,阻止 webview 内容调整大小。 - -这可以结合使用 -[`webContents.setSize`](web-contents.md#contentssetsizeoptions) 手动 -响应于窗口大小改变来调整 webview 内容的大小。这可以 -与依赖于 webview 元素的 bounds 相比,更快地 -自动调整内容大小。 - -```javascript -const {webContents} = require('electron') - -// We assume that `win` points to a `BrowserWindow` instance containing a -// `` with `disableguestresize`. - -win.on('resize', () => { - const [width, height] = win.getContentSize() - for (let wc of webContents.getAllWebContents()) { - // Check if `wc` belongs to a webview in the `win` window. - if (wc.hostWebContents && - wc.hostWebContents.id === win.webContents.id) { - wc.setSize({ - normal: { - width: width, - height: height - } - }) - } - } -}) -``` - -## 方法 - - `webview` 的方法集合: - -**注意:** webview 元素必须在使用这些方法之前加载完毕。 - -**例如** - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('dom-ready', () => { - webview.openDevTools() -}) -``` - -### `.loadURL(url[, options])` - -* `url` URL -* `options` Object (可选) - * `httpReferrer` String - 一个http类型的url。 - * `userAgent` String -用于发起请求的用户代理。 - * `extraHeaders` String - 额外的headers,用 "\n"分隔。 - * `postData` ([UploadRawData](structures/upload-raw-data.md) | [UploadFile](structures/upload-file.md) | [UploadFileSystem](structures/upload-file-system.md) | [UploadBlob](structures/upload-blob.md))[] - (optional) - -加载 webview 中的 `url`,`url` 必须包含协议前缀,例如 `http://` 或 `file://`。 - -### `.getURL()` - -从 guest page 中返回 url。 - -### `.getTitle()` - -从 guest page 中返回 title。 - -### `.isLoading()` - -返回一个 guest page 是否仍在加载资源的布尔值。 - -### `.isWaitingForResponse()` - -返回一个 guest page 是否正在等待page的主要资源做出回应的布尔值。 - -### `.stop()` - -停止渲染。 - -### `.reload()` - -重新加载 guest page。 - -### `.reloadIgnoringCache()` - -忽视缓存,重新加载 guest page。 - -### `.canGoBack()` - -返回一个 guest page 是否能够回退的布尔值。 - -### `.canGoForward()` - -返回一个 guest page 是否能够前进的布尔值。 - -### `.canGoToOffset(offset)` - -* `offset` Integer - -返回一个 guest page 是否能够前进到 `offset` 的布尔值。 - -### `.clearHistory()` - -清除导航历史。 - -### `.goBack()` - -guest page 回退。 - -### `.goForward()` - -guest page 前进。 - -### `.goToIndex(index)` - -* `index` Integer - -guest page 导航到指定的绝对位置。 - -### `.goToOffset(offset)` - -* `offset` Integer - -guest page 导航到指定的相对位置。 - -### `.isCrashed()` - -返回一个 渲染进程是否崩溃 的布尔值。 - -### `.setUserAgent(userAgent)` - -* `userAgent` String - -重新设置用户代理。 - -### `.getUserAgent()` - -返回用户代理名字,返回类型:`String`。 - -### `.insertCSS(css)` - -* `css` String - -插入css。 - -### `.executeJavaScript(code, userGesture, callback)` - -* `code` String -* `userGesture` Boolean - 默认 `false`。 -* `callback` Function (可选) - 回调函数。 - * `result` - -评估 `code` ,如果 `userGesture` 值为 true,它将在这个page里面创建用户手势. HTML APIs,如 `requestFullScreen`,它需要用户响应,那么将自动通过这个参数优化。 - -### `.openDevTools()` - -为 guest page 打开开发工具调试窗口。 - -### `.closeDevTools()` - -为 guest page 关闭开发工具调试窗口。 - -### `.isDevToolsOpened()` - -返回一个 guest page 是否打开了开发工具调试窗口的布尔值。 - -### `.isDevToolsFocused()` - -返回一个 guest page 是否聚焦了开发工具调试窗口的布尔值。 - -### `.inspectElement(x, y)` - -* `x` Integer -* `y` Integer - -开始检查 guest page 在 (`x`, `y`) 位置的元素。 - -### `.inspectServiceWorker()` - -在 guest page 中为服务人员打开开发工具。 - -### `.setAudioMuted(muted)` - -* `muted` Boolean -设置 guest page 流畅(muted)。 - -### `.isAudioMuted()` - -返回一个 guest page 是否流畅的布尔值。 - -### `.undo()` - -在page中编辑执行 `undo` 命令。 - -### `.redo()` - -在page中编辑执行 `redo` 命令。 - -### `.cut()` - -在page中编辑执行 `cut` 命令。 - -### `.copy()` - -在page中编辑执行 `copy` 命令。 - -### `.paste()` - -在page中编辑执行 `paste` 命令。 - -### `.pasteAndMatchStyle()` - -在page中编辑执行 `pasteAndMatchStyle` 命令。 - -### `.delete()` - -在page中编辑执行 `delete` 命令。 - -### `.selectAll()` - -在page中编辑执行 `selectAll` 命令。 - -### `.unselect()` - -在page中编辑执行 `unselect` 命令。 - -### `.replace(text)` - -* `text` String - -在page中编辑执行 `replace` 命令。 - -### `.replaceMisspelling(text)` - -* `text` String - -在page中编辑执行 `replaceMisspelling` 命令。 - -### `.insertText(text)` - -* `text` String - -插入文本。 - -### `.findInPage(text[, options])` - -* `text` String - 搜索内容,不能为空。 -* `options` Object (可选) - * `forward` Boolean - 向前或向后, 默认为 `true`。 - * `findNext` Boolean - 是否查找的第一个结果, - 默认为 `false`。 - * `matchCase` Boolean - 是否区分大小写, - 默认为 `false`。 - * `wordStart` Boolean - 是否只查找首字母, - 默认为 `false`。 - * `medialCapitalAsWordStart` Boolean - 当配合 `wordStart`的时候,接受一个文字中的匹配项,要求匹配项是以大写字母开头后面跟小写字母或者没有字母。可以接受一些其他单词内部匹配, 默认为 `false`。 - -发起一个请求来寻找页面中的所有匹配 `text` 的地方并且返回一个 `Integer` 来表示这个请求用的请求Id。这个请求结果可以通过订阅 [`found-in-page`](webview-tag.md#event-found-in-page) 事件来取得。 - -### `.stopFindInPage(action)` - -* `action` String - 指定一个行为来接替停止 - [`.findInPage`](webview-tag.md#webviewtagfindinpage) 请求。 - * `clearSelection` - 转变为一个普通的 selection。 - * `keepSelection` - 清除 selection。 - * `activateSelection` - 聚焦并点击 selection node。 - -使用 `action` 停止 `findInPage` 请求。 - -### `.print([options])` - -打印输出 `webview` 的 web page. 类似 `webContents.print([options])`。 - -### `.printToPDF(options, callback)` - -以pdf格式打印输出 `webview` 的 web page. 类似 `webContents.printToPDF(options, callback)`。 - -### `.send(channel[, arg1][, arg2][, ...])` - -* `channel` String -* `arg` (可选) - -通过 `channel` 向渲染进程发出异步消息,你也可以发送任意的参数。 -渲染进程通过`ipcRenderer` 模块监听 `channel` 事件来控制消息。 - -例子 -[webContents.send](web-contents.md#webcontentssendchannel-args)。 - -### `.sendInputEvent(event)` - -* `event` Object - -向 page 发送输入事件。 - -查看 [webContents.sendInputEvent](web-contents.md##webcontentssendinputeventevent) -关于 `event` 对象的相信介绍。 - -### `.setZoomFactor(factor)` - -* `factor` Number - 缩放系数。 - -将缩放系数更改为指定的系数。 缩放系数为 -缩放百分比除以100,因此300% = 3.0。 - -### `.setZoomLevel(level)` - -* `level` Number - 缩放级别。 - -将缩放级别更改为指定级别。 原始大小为0,每个 -增量高于或低于表示缩放大于或小于20%。默认值 -限制分别为原始尺寸的300%和50%。 - -### `.showDefinitionForSelection()` _macOS_ - -显示在页面上搜索所选字词的弹出字典。 - -### `.getWebContents()` - -返回和这个 `webview` 相关的 [WebContents](web-contents.md)。 - -## DOM 事件 - -`webview` 可用下面的 DOM 事件: - -### Event: 'load-commit' - -返回: - -* `url` String -* `isMainFrame` Boolean - -加载完成触发. 这个包含当前文档的导航和副框架的文档加载,但是不包含异步资源加载。 - -### Event: 'did-finish-load' - -在导航加载完成时触发,也就是 tab 的 spinner 停止 spinning,并且加载事件处理。 - -### Event: 'did-fail-load' - -Returns: - -* `errorCode` Integer -* `errorDescription` String -* `validatedURL` String -* `isMainFrame` Boolean - -类似 `did-finish-load` ,在加载失败或取消是触发,例如提出 `window.stop()`。 - -### Event: 'did-frame-finish-load' - -返回: - -* `isMainFrame` Boolean - -当一个 frame 完成加载时触发。 - -### Event: 'did-start-loading' - -开始加载时触发。 - -### Event: 'did-stop-loading' - -停止家在时触发。 - -### Event: 'did-get-response-details' - -返回: - -* `status` Boolean -* `newURL` String -* `originalURL` String -* `httpResponseCode` Integer -* `requestMethod` String -* `referrer` String -* `headers` Object -* `resourceType` String - -当获得返回详情的时候触发。 - -`status` 指示 socket 连接来下载资源。 - -### Event: 'did-get-redirect-request' - -返回: - -* `oldURL` String -* `newURL` String -* `isMainFrame` Boolean - -当重定向请求资源被接收的时候触发。 - -### Event: 'dom-ready' - -当指定的frame文档加载完毕时触发。 - -### Event: 'page-title-updated' - -返回: - -* `title` String -* `explicitSet` Boolean - -当导航中的页面 title 被设置时触发。 -在 title 通过文档路径异步加载时 `explicitSet` 为 false。 - -### Event: 'page-favicon-updated' - -返回: - -* `favicons` Array - Array of URLs。 - -当page收到了图标url时触发。 - -### Event: 'enter-html-full-screen' - -当通过 HTML API 使界面进入全屏时触发。 - -### Event: 'leave-html-full-screen' - -当通过 HTML API 使界面退出全屏时触发。 - -### Event: 'console-message' - -返回: - -* `level` Integer -* `message` String -* `line` Integer -* `sourceId` String - -当客户端输出控制台信息的时候触发。 - -下面示例代码将所有信息输出到内置控制台,没有考虑到输出等级和其他属性。 - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('console-message', (e) => { - console.log('Guest page logged a message:', e.message) -}) -``` - -### Event: 'found-in-page' - -返回: - -* `result` Object - * `requestId` Integer - * `activeMatchOrdinal` Integer (可选) - 活动匹配位置。 - * `matches` Integer (optional) - 匹配数量。 - * `selectionArea` Object (optional) - 整合第一个匹配域。 - -在请求 [`webview.findInPage`](webview-tag.md#webviewtagfindinpage) 结果有效时触发。 - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('found-in-page', (e) => { - webview.stopFindInPage('keepSelection') -}) - -const requestId = webview.findInPage('test') -console.log(requestId) -``` - -### Event: 'new-window' - -返回: - -* `url` String -* `frameName` String -* `disposition` String - 可以为 `default`, `foreground-tab`, `background-tab`,`new-window` 和 `other`。 -* `options` Object - 参数应该被用作创建新的 `BrowserWindow`。 - -在 guest page 试图打开一个新的浏览器窗口时触发。 - -下面示例代码在系统默认浏览器中打开了一个新的 url。 - -```javascript -const {shell} = require('electron') -const webview = document.getElementById('foo') - -webview.addEventListener('new-window', (e) => { - const protocol = require('url').parse(e.url).protocol - if (protocol === 'http:' || protocol === 'https:') { - shell.openExternal(e.url) - } -}) -``` - -### Event: 'will-navigate' - -返回: - -* `url` String - -当用户或page尝试开始导航时触发。 -它能在 `window.location` 变化或者用户点击连接的时候触发。 - -这个事件在以 APIS 编程方式开始导航时不会触发,例如 `.loadURL` 和 `.back`。 - -在页面内部导航跳转也将不回触发这个事件,例如点击锚链接或更新 `window.location.hash`。使用 `did-navigate-in-page` 来实现页内跳转事件。 - -使用 `event.preventDefault()` 并不会起什么用。 - -### Event: 'did-navigate' - -返回: - -* `url` String - -当导航结束时触发。 - -在页面内部导航跳转也将不回触发这个事件,例如点击锚链接或更新 `window.location.hash`。使用 `did-navigate-in-page` 来实现页内跳转事件。 - -### Event: 'did-navigate-in-page' - -返回: - -* `isMainFrame` Boolean -* `url` String - -当页内导航发生时触发。 -当业内导航发生时,page url 改变了,但是不会跳出 page。例如在锚链接被点击或 DOM `hashchange` 事件发生时触发。 - -### Event: 'close' - -在 guest page 试图关闭自己的时候触发。 - -下面的示例代码指示了在客户端试图关闭自己的时候将改变导航连接为 `about:blank`。 - -```javascript -const webview = document.getElementById('foo') -webview.addEventListener('close', () => { - webview.src = 'about:blank' -}) -``` - -### Event: 'ipc-message' - -返回: - -* `channel` String -* `args` Array - -在 guest page 向嵌入页发送一个异步消息的时候触发。 - -你可以很简单的使用 `sendToHost` 方法和 `ipc-message` 事件在 guest page 和嵌入页(embedder page)之间通信: - -```javascript -// In embedder page. -const webview = document.getElementById('foo') -webview.addEventListener('ipc-message', (event) => { - console.log(event.channel) - // Prints "pong" -}) -webview.send('ping') -``` - -```javascript -// In guest page. -const {ipcRenderer} = require('electron') -ipcRenderer.on('ping', () => { - ipcRenderer.sendToHost('pong') -}) -``` - -### Event: 'crashed' - -在渲染进程崩溃的时候触发。 - -### Event: 'gpu-crashed' - -在GPU进程崩溃的时候触发。 - -### Event: 'plugin-crashed' - -返回: - -* `name` String -* `version` String - -在插件进程崩溃的时候触发。 - -### Event: 'destroyed' - -在界面内容销毁的时候触发。 - -### Event: 'media-started-playing' - -在媒体准备播放的时候触发。 - -### Event: 'media-paused' - -在媒体暂停播放或播放放毕的时候触发。 - -### Event: 'did-change-theme-color' - -在页面的主体色改变的时候触发。 -在使用 meta 标签的时候这就很常见了: - -```html - -``` - -### Event: 'update-target-url' - -返回: - -* `url` String - -当鼠标移动到链接上或键盘将焦点移动到链接时触发。 - -### Event: 'devtools-opened' - -在开发者工具打开的时候触发。 - -### Event: 'devtools-closed' - -在开发者工具关闭的时候触发。 - -### Event: 'devtools-focused' - -在开发者工具获取焦点的时候触发。 - -[blink-feature-string]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5?l=62 diff --git a/docs-translations/zh-CN/api/window-open.md b/docs-translations/zh-CN/api/window-open.md deleted file mode 100644 index 3ef1b59f1a3f..000000000000 --- a/docs-translations/zh-CN/api/window-open.md +++ /dev/null @@ -1,33 +0,0 @@ -# `window.open` 函数 - -> 通过链接打开一个新窗口。 - -当在界面中使用 `window.open` 来创建一个新的窗口时候,将会创建一个 `BrowserWindow` 的实例,并且将返回一个标识,这个界面通过标识来对这个新的窗口进行有限的控制。 - -这个标识对传统的web界面来说,通过它能对子窗口进行有限的功能性兼容控制。 -想要完全的控制这个窗口,可以直接创建一个 `BrowserWindow`。 - -新创建的 `BrowserWindow` 默认为继承父窗口的属性参数,想重写属性的话可以在 `features` 中设置他们。 - -### `window.open(url[, frameName][, features])` - -* `url` String -* `frameName` String (可选) -* `features` String (可选) - -创建一个新的 window 并且返回一个 [`BrowserWindowProxy`](browser-window-proxy.md) 类的实例。 - - `features` 遵循标准浏览器的格式,但是每个 feature 应该作为 `BrowserWindow` 参数的一个字段。 - -**注意:** -* 如果在父窗口禁用 Node integration,那么在新打开的 `window` 中将始终禁用。 -* 非标准功能(不由 Chromium 或 Electron 处理)的 -   `features` 将被传递给任何注册的 `webContent` 的 `new-window` 事件 -   在 `additionalFeatures` 参数的处理程序。 - -### `window.opener.postMessage(message, targetOrigin)` - -* `message` String -* `targetOrigin` String - -通过指定位置或用 `*` 来代替没有明确位置来向父窗口发送信息。 diff --git a/docs-translations/zh-CN/development/atom-shell-vs-node-webkit.md b/docs-translations/zh-CN/development/atom-shell-vs-node-webkit.md deleted file mode 100644 index c97fbae768d4..000000000000 --- a/docs-translations/zh-CN/development/atom-shell-vs-node-webkit.md +++ /dev/null @@ -1,31 +0,0 @@ -# Electron 和 NW.js (原名 node-webkit) 在技术上的差异 - -__备注:Electron 的原名是 Atom Shell。__ - -与 NW.js 相似,Electron 提供了一个能通过 JavaScript 和 HTML 创建桌面应用的平台,同时集成 Node 来授予网页访问底层系统的权限。 - -但是这两个项目也有本质上的区别,使得 Electron 和 NW.js 成为两个相互独立的产品。 - -__1. 应用的入口__ - -在 NW.js 中,一个应用的主入口是一个页面。你在 `package.json` 中指定一个主页面,它会作为应用的主窗口被打开。 - -在 Electron 中,入口是一个 JavaScript 脚本。不同于直接提供一个URL,你需要手动创建一个浏览器窗口,然后通过 API 加载 HTML 文件。你还可以监听窗口事件,决定何时让应用退出。 - -Electron 的工作方式更像 Node.js 运行时。 Electron 的 APIs 更加底层,因此你可以用它替代 [PhantomJS](http://phantomjs.org/) 做浏览器测试。 - -__2. 构建系统__ - -为了避免构建整个 Chromium 带来的复杂度,Electron 通过 [`libchromiumcontent`](https://github.com/electron/libchromiumcontent) 来访问 Chromium 的 Content API。`libchromiumcontent` 是一个独立的、引入了 Chromium Content 模块及其所有依赖的共享库。用户不需要一个强劲的机器来构建 Electron。 - -__3. Node 集成__ - -在 NW.js,网页中的 Node 集成需要通过给 Chromium 打补丁来实现。但在 Electron 中,我们选择了另一种方式:通过各个平台的消息循环与 libuv 的循环集成,避免了直接在 Chromium 上做改动。你可以看 [`node_bindings`][node-bindings] 来了解这是如何完成的。 - -__4. 多上下文__ - -如果你是有经验的 NW.js 用户,你应该会熟悉 Node 上下文和 web 上下文的概念。这些概念的产生源于 NW.js 的实现方式。 - -通过使用 Node 的[多上下文](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/)特性,Electron不需要在网页中引入新的 JavaScript 上下文。 - -[node-bindings]: https://github.com/electron/electron/tree/master/atom/common diff --git a/docs-translations/zh-CN/development/build-instructions-linux.md b/docs-translations/zh-CN/development/build-instructions-linux.md deleted file mode 100644 index 37a12e9e2240..000000000000 --- a/docs-translations/zh-CN/development/build-instructions-linux.md +++ /dev/null @@ -1,199 +0,0 @@ -# Build Instructions (Linux) - -遵循下面的引导,在 Linux 上构建 Electron . - -## Prerequisites - -* Python 2.7.x. 一些发行版如 CentOS 6.x 仍然使用 Python 2.6.x ,所以或许需要 check 你的 Python 版本,使用 `python -V`. -* Node.js v0.12.x. 有很多方法来安装 Node. 可以从 [Node.js](http://nodejs.org)下载原文件并且编译它 .也可以作为一个标准的用户在 home 目录下安装 node .或者尝试使用仓库 [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories). -* Clang 3.4 或更新的版本. -* GTK+开发头文件和libnotify. - -在 Ubuntu, 安装下面的库 : - -```bash -$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ - libnotify-dev libgnome-keyring-dev libgconf2-dev \ - libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib -``` - -On RHEL / CentOS, 安装下面的库 : - -```bash -$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -在 Fedora, 安装下面的库 : - -```bash -$ sudo dnf install clang dbus-devel gtk2-devel libnotify-devel \ - libgnome-keyring-devel xorg-x11-server-utils libcap-devel \ - cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \ - GConf2-devel nss-devel -``` - -其它版本的也许提供了相似的包来安装,通过包管理器,例如 pacman. -或一个可以编译源文件的. - -## 使用虚拟机 - -如果在虚拟机上构建 Electron,你需要一个固定大小的设备,至少需要 25 gigabytes . - -## 获取代码 - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## Bootstrapping - -bootstrap 脚本也是必要下载的构建依赖,来创建项目文件.需要使用 Python 2.7.x 来让脚本成功执行.正确下载文件会花费较长的时间. -注意我们使用的是 `ninja` 来构建 Electron,所以没有生成 `Makefile` 项目. - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -### 交叉编译 - -如果想创建一个 `arm` target ,应当还要下载下面的依赖 : - -```bash -$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \ - g++-arm-linux-gnueabihf -``` - -为了编译 `arm` 或 `ia32` targets, 你应当为 `bootstrap.py` 脚本使用 -`--target_arch` 参数: - -```bash -$ ./script/bootstrap.py -v --target_arch=arm -``` - -## 构建 - -创建 `Release` 、 `Debug` target: - -```bash -$ ./script/build.py -``` - -这个脚本也许会在目录 `out/R` 下创建一个巨大的可执行的 Electron . 文件大小或许会超过 1.3 gigabytes. 原因是 Release target 二进制文件包含了 调试符号 .运行 `create-dist.py` 脚本来减小文件的 size : - -```bash -$ ./script/create-dist.py -``` -这会在 `dist` 目录下创建一个有大量小文件的工作空间. 运行 create-dist.py 脚本之后, 或许你想删除仍然在 `out/R` 下的 1.3+ gigabyte 二进制文件. - -可以只创建 `Debug` target: - -```bash -$ ./script/build.py -c D -``` - -创建完毕, 可以在 `out/D`下面找到 `electron`. - -## Cleaning - -删除构建文件 : - -```bash -$ ./script/clean.py -``` - -## 解决问题 - -确保你已经安装了所有的依赖 . - -### Error While Loading Shared Libraries: libtinfo.so.5 - -预构建的 `clang` 会尝试链接到 `libtinfo.so.5`. 取决于 host 架构, 适当的使用 `libncurses`: - -```bash -$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5 -``` - -## Tests - -测试你的修改是否符合项目代码风格,使用: - -```bash -$ ./script/cpplint.py -``` - -测试有效性使用: - -```bash -$ ./script/test.py -``` - -## Advanced topics - -默认编译配置是针对主流 Linux 桌面发行版而言, 对于其他特定发行版或平台, 以下信息可能会帮到你. - -### 本地编译 `libchromiumcontent` - -可以添加参数 `--build_libchromiumcontent` 给 `bootstrap.py` 脚本以避免使用预编译的 -`libchromiumcontent` 二进制文件: - -```bash -$ ./script/bootstrap.py -v --build_libchromiumcontent -``` - -默认情况下不会以 `shared_library` 方式编译, 所以你如果使用以下模式的话, 只能编译 Electron -的 `Release` 版本: - -```bash -$ ./script/build.py -c R -``` - -### 使用系统提供的 `clang` - -默认情况下 Electron 使用 Chromium 项目提供的预编译的 `clang` 进行编译. 如果基于某些原因 -你想要使用已经安装到系统的 `clang` 进行编译, 可以添加 `--clang_dir=` 参数给 -`bootstrap.py` 以指定 `clang` 安装路径. 上面参数告诉编译脚本, 在目录 `/bin/` 下有 - `clang` 程序. - -假设你的 `clang` 安装路径为 `/user/local/bin/clang`: - -```bash -$ ./script/bootstrap.py -v --build_libchromiumcontent --clang_dir /usr/local -$ ./script/build.py -c R -``` - -### 使用 `clang` 之外的编译器 - -要使用其他编译器 (如: `g++`) 编译 Electron, 首先需要使用参数 `--disable_clang` 禁用 `clang`, -然后设置 `CC` 及 `CXX` 环境变量. - -假设使用 GCC 工具链: - -```bash -$ env CC=gcc CXX=g++ ./script/bootstrap.py -v --build_libchromiumcontent --disable_clang -$ ./script/build.py -c R -``` - -### 环境变量 - -除了 `CC` 及 `CXX`, 你还可以设置以下环境变量来自定义编译配置: - -* `CPPFLAGS` -* `CPPFLAGS_host` -* `CFLAGS` -* `CFLAGS_host` -* `CXXFLAGS` -* `CXXFLAGS_host` -* `AR` -* `AR_host` -* `CC` -* `CC_host` -* `CXX` -* `CXX_host` -* `LDFLAGS` - -以上环境变量需要在执行 `bootstrap.py` 前设置, 在执行 `build.py` 的时候再设置将无效. diff --git a/docs-translations/zh-CN/development/build-instructions-osx.md b/docs-translations/zh-CN/development/build-instructions-osx.md deleted file mode 100644 index f9992c929958..000000000000 --- a/docs-translations/zh-CN/development/build-instructions-osx.md +++ /dev/null @@ -1,62 +0,0 @@ -# Build Instructions (macOS) - -遵循下面的引导,在 macOS 上构建 Electron . - -## 前提 - -* macOS >= 10.8 -* [Xcode](https://developer.apple.com/technologies/tools/) >= 5.1 -* [node.js](http://nodejs.org) (外部) - -如果你目前使用的Python是通过 Homebrew 安装的,则你还需要安装如下Python模块: - -* pyobjc - -## 获取代码 - -```bash -$ git clone https://github.com/electron/electron.git -``` - -## Bootstrapping - -bootstrap 脚本也是必要下载的构建依赖,来创建项目文件.注意我们使用的是 [ninja](https://ninja-build.org/) 来构建 Electron,所以没有生成 Xcode 项目. - -```bash -$ cd electron -$ ./script/bootstrap.py -v -``` - -## 构建 - -创建 `Release` 、 `Debug` target: - -```bash -$ ./script/build.py -``` - -可以只创建 `Debug` target: - -```bash -$ ./script/build.py -c D -``` - -创建完毕, 可以在 `out/D` 下面找到 `Electron.app`. - -## 32位支持 - -在 macOS 上,构建 Electron 只支持 64位的,不支持 32位的 . - -## 测试 - -测试你的修改是否符合项目代码风格,使用: - -```bash -$ ./script/cpplint.py -``` - -测试有效性使用: - -```bash -$ ./script/test.py -``` diff --git a/docs-translations/zh-CN/development/build-instructions-windows.md b/docs-translations/zh-CN/development/build-instructions-windows.md deleted file mode 100644 index 4333620a560b..000000000000 --- a/docs-translations/zh-CN/development/build-instructions-windows.md +++ /dev/null @@ -1,136 +0,0 @@ -# Build Instructions (Windows) - -遵循下面的引导,在 Windows 上构建 Electron . - -## 前提 - -* Windows 7 / Server 2008 R2 or higher -* Visual Studio 2015 - [download VS 2015 Community Edition for - free](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) -* [Python 2.7](http://www.python.org/download/releases/2.7/) -* [Node.js](http://nodejs.org/download/) -* [Git](http://git-scm.com) - -如果你现在还没有安装 Windows , [modern.ie](https://www.modern.ie/en-us/virtualization-tools#downloads) 有一个 timebombed 版本的 Windows ,你可以用它来构建 Electron. - -构建 Electron 完全的依赖于命令行,并且不可通过 Visual Studio. -可以使用任何的编辑器来开发 Electron ,未来会支持 Visual Studio. - -**注意:** 虽然 Visual Studio 不是用来构建的,但是它仍然 -**必须的** ,因为我们需要它提供的构建工具栏. - -**注意:** Visual Studio 2013 不可用. 请确定使用 MSVS -**2015**. - -## 获取代码 - -```powershell -$ git clone https://github.com/electron/electron.git -``` - -## Bootstrapping - -bootstrap 脚本也是必要下载的构建依赖,来创建项目文件.注意我们使用的是 `ninja` 来构建 Electron,所以没有生成 Visual Studio 项目. - -```powershell -$ cd electron -$ python script\bootstrap.py -v -``` - -## 构建 - -创建 `Release` 、 `Debug` target: - -```powershell -$ python script\build.py -``` - -可以只创建 `Debug` target: - -```powershell -$ python script\build.py -c D -``` - -创建完毕, 可以在 `out/D`(debug target) 或 `out\R` (release target) 下面找到 `electron.exe`. - -## 64bit Build - -为了构建64位的 target,在运行 bootstrap 脚本的时候需要使用 `--target_arch=x64` : - -```powershell -$ python script\bootstrap.py -v --target_arch=x64 -``` - -其他构建步骤完全相同. - -## Tests - -测试你的修改是否符合项目代码风格,使用: - -```powershell -$ python script\cpplint.py -``` - -测试有效性使用: - -```powershell -$ python script\test.py -``` -在构建 debug 时为 Tests包含原生模块 (例如 `runas`) 将不会执行(详情 [#2558](https://github.com/electron/electron/issues/2558)), 但是它们在构建 release 会起效. - -运行 release 构建使用 : - -```powershell -$ python script\test.py -R -``` - -## 解决问题 - -### Command xxxx not found - -如果你遇到了一个错误,类似 `Command xxxx not found`, 可以尝试使用 `VS2012 Command Prompt` 控制台来执行构建脚本 . - -### Fatal internal compiler error: C1001 - -确保你已经安装了 Visual Studio 的最新安装包 . - -### Assertion failed: ((handle))->activecnt >= 0 - -如果在 Cygwin 下构建的,你可能会看到 `bootstrap.py` 失败并且附带下面错误 : - -``` -Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430 - -Traceback (most recent call last): - File "script/bootstrap.py", line 87, in - sys.exit(main()) - File "script/bootstrap.py", line 22, in main - update_node_modules('.') - File "script/bootstrap.py", line 56, in update_node_modules - execute([NPM, 'install']) - File "/home/zcbenz/codes/raven/script/lib/util.py", line 118, in execute - raise e -subprocess.CalledProcessError: Command '['npm.cmd', 'install']' returned non-zero exit status 3 -``` - -这是由同时使用 Cygwin Python 和 Win32 Node 造成的 bug.解决办法就是使用 Win32 Python 执行 bootstrap 脚本 (假定你已经在目录 `C:\Python27` 下安装了 Python): - -```powershell -$ /cygdrive/c/Python27/python.exe script/bootstrap.py -``` - -### LNK1181: cannot open input file 'kernel32.lib' - -重新安装 32位的 Node.js. - -### Error: ENOENT, stat 'C:\Users\USERNAME\AppData\Roaming\npm' - -简单创建目录 [应该可以解决问题](http://stackoverflow.com/a/25095327/102704): - -```powershell -$ mkdir ~\AppData\Roaming\npm -``` - -### node-gyp is not recognized as an internal or external command - -如果你使用 Git Bash 来构建,或许会遇到这个错误,可以使用 PowerShell 或 VS2015 Command Prompt 来代替 . \ No newline at end of file diff --git a/docs-translations/zh-CN/development/build-system-overview.md b/docs-translations/zh-CN/development/build-system-overview.md deleted file mode 100644 index 329dc74bd1fc..000000000000 --- a/docs-translations/zh-CN/development/build-system-overview.md +++ /dev/null @@ -1,42 +0,0 @@ -# Build System Overview - -Electron 使用 [gyp](https://gyp.gsrc.io/) 来生成项目 ,使用 [ninja](https://ninja-build.org/) 来构建项目. 项目配置可以在 `.gyp` 和 `.gypi` 文件中找到. - -## Gyp 文件 - -下面的 `gyp` 文件包含了构建 Electron 的主要规则 : - -* `atom.gyp` 定义了 Electron 它自己是怎样被构建的. -* `common.gypi` 调整 node 的构建配置,来让它结合 Chromium 一起构建. -* `brightray/brightray.gyp` 定义了 `brightray` 是如何被构建的,并且包含了默认配置来连接到 Chromium. -* `brightray/brightray.gypi` 包含了常用的创建配置. - -## 创建组件 - -在 Chromium 还是一个相当大的项目的时候,最后链接阶段会花了好几分钟,这让开发变得很困难. 为了解决这个困难,Chromium 引入了 "component build" ,这让每个创建的组建都是分隔开的共享库,让链接更快,但是这浪费了文件大小和性能. - -在 Electron 中,我们采用了一个非常相似的方法 : 在创建 `Debug` , 二进制文件会被链接进入一个 Chromium 组件的共享版本库来达到快速链接; 在创建 `Release`, 二进制文件会被链接进入一个静态版本库, 所以我们可以有最小的二进制文件size和最佳的体验. - -## Minimal Bootstrapping - -在运行 bootstrap 脚本的时候,所有的 Chromium 预编译二进制文件会被下载.默认静态库和共享库会被下载,并且项目的最后大小会在 800MB 到 2GB 之间,这取决于平台类型. - -默认,`libchromiumcontent` 是从 Amazon Web Services 上下载下来的.如果设置了 `LIBCHROMIUMCONTENT_MIRROR` 环境变量,bootstrap脚本会从这里下载下来. [`libchromiumcontent-qiniu-mirror`](https://github.com/hokein/libchromiumcontent-qiniu-mirror) 是 `libchromiumcontent` 的映射.如果你不能连接 AWS,你可以切换下载路径:`export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/` -如果只是想快速搭建一个 Electron 的测试或开发环境,可以通过 `--dev` 参数只下载共享版本库: - -```bash -$ ./script/bootstrap.py --dev -$ ./script/build.py -c D -``` - -## Two-Phase Project Generation - -在 `Release` 和 `Debug` 构建的时候后,Electron 链接了不同配置的库 .然而 `gyp`不支持为不同的配置文件进行不同的链接设置. - -为了规避这个问题,Electron 在运行 `gyp` 的时候,使用了一个 `gyp` 的变量 `libchromiumcontent_component`来控制应该使用哪个链接设置,并且只生成一个目标. - -## Target Names - -与大多数的项目不同,它们使用 `Release` 和 `Debug` 作为目标名字,而 Electron 使用使用的是 `R` 和 `D`.这是因为如果只定义了一个 `Release` 或 `Debug` 构建配置,`gyp` 会随机崩溃,并且在同一时候,Electron 只生成一个目标,如上所述. - -这只对开发者可用,如果想重新构建 Electron ,将不会成功. \ No newline at end of file diff --git a/docs-translations/zh-CN/development/clang-format.md b/docs-translations/zh-CN/development/clang-format.md deleted file mode 100644 index 46e4bf97ecdf..000000000000 --- a/docs-translations/zh-CN/development/clang-format.md +++ /dev/null @@ -1,27 +0,0 @@ -# 在 C++ 代码中使用 clang-format 工具 - -[`clang-format`](http://clang.llvm.org/docs/ClangFormat.html) 是一个自动格式化 C/C++/Objective-C 代码的工具, 可以让开发人员不需要担心代码审查期间的样式问题. - -强烈建议在发起请求之前格式化已更改的 C++ 代码,这将节省您和审阅者的时间. - -你可以通过 `npm install -g clang-format` 安装 `clang-format` 和 `git-clang-format`. - -根据 Electron C++ 代码样式自动格式化文件, 只要运行 `clang-format -i path/to/electron/file.cc` 即可. 它应该能够在 macOS/Linux/Windows 上运行. - -格式化已更改代码的工作流: - -1. 在 Electron 存储库中更改代码. -2. 运行 `git add your_changed_file.cc`. -3. 运行 `git-clang-format`, 然后你将可能会看到修改后的 `your_changed_file.cc`, 这些修改是从 `clang-format` 生成的. -4. 运行 `git add your_changed_file.cc`, 并提交你的修改. -5. 现在准备好的分支推送请求已经被打开. - -如果你想在你最新的 git commit(HEAD)中格式化更改的代码, 你可以运行 `git-clang-format HEAD~1`. 通过 `git-clang-format -h` 可以获得更多详情. - -## 编辑器集成 - -您还可以将 `clang-format` 直接集成到您喜欢的编辑器中, -有关设置编辑器集成的更多指导,请参阅这些页面: - - * [Atom](https://atom.io/packages/clang-format) - * [Vim & Emacs](http://clang.llvm.org/docs/ClangFormat.html#vim-integration) diff --git a/docs-translations/zh-CN/development/coding-style.md b/docs-translations/zh-CN/development/coding-style.md deleted file mode 100644 index f293ece40de7..000000000000 --- a/docs-translations/zh-CN/development/coding-style.md +++ /dev/null @@ -1,23 +0,0 @@ -# 编码规范 - -以下是 Electron 项目的编码规范。 - -## C++ 和 Python - -对于 C++ 和 Python,我们遵循 Chromium 的[编码规范](http://www.chromium.org/developers/coding-style)。你可以使用 `script/cpplint.py` 来检验文件是否符合要求。 - -我们目前使用的 Python 版本是 Python 2.7。 - -C++ 代码中用到了许多 Chromium 中的接口和数据类型,所以希望你能熟悉它们。Chromium 中的[重要接口和数据结构](https://www.chromium.org/developers/coding-style/important-abstractions-and-data-structures)就是一篇不错的入门文档,里面提到了一些特殊类型、域内类型(退出作用域时自动释放内存)、日志机制,等等。 - -## CoffeeScript - -对于 CoffeeScript,我们遵循 GitHub 的[编码规范](https://github.com/styleguide/javascript) 及以下规则: - -* 文件**不要**以换行符结尾,我们要遵循 Google 的编码规范。 -* 文件名使用 `-` 而不是 `_` 来连接单词,比如 `file-name.coffee` 而不是 `file_name.coffee`,这是沿用 [github/atom](https://github.com/github/atom) 模块的命名方式(`module-name`)。这条规则仅适用于 `.coffee` 文件。 - -## API 命名 - -当新建一个 API 时,我们倾向于使用 getters 和 setters 而不是 jQuery 单函数的命名方式,比如 `.getText()` 和 `.setText(text)` - 而不是 `.text([text])`。这里有关于该规则的[讨论记录](https://github.com/electron/electron/issues/46)。 diff --git a/docs-translations/zh-CN/development/debug-instructions-windows.md b/docs-translations/zh-CN/development/debug-instructions-windows.md deleted file mode 100644 index fd9f6069134b..000000000000 --- a/docs-translations/zh-CN/development/debug-instructions-windows.md +++ /dev/null @@ -1,46 +0,0 @@ -# 在 Windows 中调试 - -如果你在 Electron 中遇到问题或者引起崩溃,你认为它不是由你的JavaScript应用程序引起的,而是由 Electron 本身引起的。调试可能有点棘手,特别是对于不习惯 native/C++ 调试的开发人员。 然而,使用 Visual Studio,GitHub托管的 Electron Symbol Server 和Electron 源代码,在 Electron 的源代码中启用断点调试是相当容易的。 - -## 要求 - -* **Electron 的调试版本**: 最简单的方法是自己构建它,使用 [Windows 的构建说明](build-instructions-windows.md) 中列出的工具和先决条件要求。虽然你可以轻松地附加和调试 Electron,因为你可以直接下载它,你会发现,由于大量的优化,使调试实质上更加困难:调试器将无法向您显示所有变量的内容,并且执行路径可能看起来很奇怪,这是因为内联,尾部调用和其他编译器优化。 - -* **Visual Studio 与 C++ 工具**: Visual Studio 2013 和 Visual Studio 2015 的免费社区版本都可以使用。 安装之后, [配置 Visual Studio 使用 GitHub 的 Electron Symbol 服务器](setting-up-symbol-server.md). 它将使 Visual Studio 能够更好地理解 Electron 中发生的事情,从而更容易以人类可读的格式呈现变量。 - -* **ProcMon**: [免费的 SysInternals 工具][sys-internals] 允许您检查进程参数,文件句柄和注册表操作。 - -## 附加并调试 Electron - -要启动调试会话,请打开 PowerShell/CMD 并执行 Electron 的调试版本,使用应用程序作为参数打开。 - -```powershell -$ ./out/D/electron.exe ~/my-electron-app/ -``` - -### 设置断点 - -然后,打开 Visual Studio。 Electron 不是使用 Visual Studio 构建的,因此不包含项目文件 - 但是您可以打开源代码文件 "As File",这意味着 Visual Studio 将自己打开它们。 您仍然可以设置断点 - Visual Studio 将自动确定源代码与附加过程中运行的代码相匹配,并相应地中断。 - -相关的代码文件可以在 `./atom/` 以及 Brightray 中找到, 找到 `./brightray/browser` 和 `./brightray/common`. 如果是内核,你也可以直接调试 Chromium,这显然在 `chromium_src` 中。 - -### 附加 - -您可以将 Visual Studio 调试器附加到本地或远程计算机上正在运行的进程。 进程运行后,单击 调试 / 附加 到进程(或按下 `CTRL+ALT+P`)打开“附加到进程”对话框。 您可以使用此功能调试在本地或远程计算机上运行的应用程序,同时调试多个进程。 - -如果Electron在不同的用户帐户下运行,请选中“显示所有用户的进程”复选框。 请注意,根据您的应用程序打开的浏览器窗口数量,您将看到多个进程。 典型的单窗口应用程序将导致 Visual Studio 向您提供两个 `Electron.exe` 条目 - 一个用于主进程,一个用于渲染器进程。 因为列表只给你的名字,目前没有可靠的方法来弄清楚哪个是。 - -### 我应该附加哪个进程? - -在主进程内部执行的代码(即在主 JavaScript 文件中找到或最终运行的代码)以及使用远程代码调用的代码(`require('electron').remote`)将在主进程内运行,而其他代码将在其相应的渲染器进程内执行。 - -您可以在调试时附加到多个程序,但在任何时候只有一个程序在调试器中处于活动状态。 您可以在 `调试位置` 工具栏或 `进程窗口` 中设置活动程序。 - -## 使用 ProcMon 观察进程 - -虽然 Visual Studio 非常适合检查特定的代码路径,但 ProcMon 的优势在于它可以监视应用程序对操作系统的所有操作 - 捕获进程的文件,注册表,网络,进程和分析详细信息。 它试图记录发生的 **所有** 事件,并且可能是相当压倒性的,而且果你想了解你的应用程序对操作系统做什么和如何做,它则是一个很有价值的资源。 - -有关 ProcMon 的基本和高级调试功能的介绍,请查看Microsoft提供的[视频教程][procmon-instructions]。 - -[sys-internals]: https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx -[procmon-instructions]: https://channel9.msdn.com/shows/defrag-tools/defrag-tools-4-process-monitor diff --git a/docs-translations/zh-CN/development/debugging-instructions-macos.md b/docs-translations/zh-CN/development/debugging-instructions-macos.md deleted file mode 100644 index bad622438ffd..000000000000 --- a/docs-translations/zh-CN/development/debugging-instructions-macos.md +++ /dev/null @@ -1,97 +0,0 @@ -# 在 macOS 中调试 - -如果你在 Electron 中遇到问题或者引起崩溃,你认为它不是由你的JavaScript应用程序引起的,而是由 Electron 本身引起的。调试可能有点棘手,特别是对于不习惯 native/C++ 调试的开发人员。 然而,使用 lldb 和 Electron 源代码,可以在 Electron 的源代码中使用断点启用逐步调试,这是相当容易的。 - -## 要求 - -* **Electron 的调试版本**: 最简单的方法是自己构建它,使用 [macOS 的构建说明](build-instructions-osx.md) 中列出的工具和先决条件要求。 虽然你可以轻松地附加和调试 Electron,因为你可以直接下载它,你会发现,由于大量的优化,使调试实质上更加困难:调试器将无法向您显示所有变量的内容,并且执行路径可能看起来很奇怪,这是因为内联,尾部调用和其他编译器优化。 - -* **Xcode**: 除了 Xcode,还安装 Xcode 命令行工具。它们包括 LLDB,在 Mac OS X 的 Xcode 中的默认调试器。它支持在桌面和iOS设备和模拟器上调试 C,Objective-C 和 C++。 - -## 附加并调试 Electron - -要启动调试会话,打开命令行并启动 `lldb` ,并传递一个调试版本的 Electron 作为参数。 - -```bash -$ lldb ./out/D/Electron.app -(lldb) target create "./out/D/Electron.app" -Current executable set to './out/D/Electron.app' (x86_64). -``` - -### 设置断点 - -LLDB是一个强大的工具,支持进行多种策略的代码检查。 在这做一个基本的介绍,让我们假设你从 JavaScript 调用一个不正常的命令 - 所以你想打断该命令的 C++ 对应的 Electron 源。 - -相关的代码文件可以在 `./atom/` 以及 Brightray 中找到, 找到 `./brightray/browser` 和 `./brightray/common`. 如果是内核,你也可以直接调试 Chromium,这显然在 `chromium_src` 中。 - -让我们假设你想调试 `app.setName()`, 在 `browser.cc` 中定义为 `Browser::SetName()`. 使用 `breakpoint` 命令进行断点,指定文件和断点位置:: - -```bash -(lldb) breakpoint set --file browser.cc --line 117 -Breakpoint 1: where = Electron Framework`atom::Browser::SetName(std::__1::basic_string, std::__1::allocator > const&) + 20 at browser.cc:118, address = 0x000000000015fdb4 -``` - -然后, 启动 Electron: - -```bash -(lldb) run -``` - -应用程式会立即暂停,因为 Electron 会在启动时设定应用程序名称: - -```bash -(lldb) run -Process 25244 launched: '/Users/fr/Code/electron/out/D/Electron.app/Contents/MacOS/Electron' (x86_64) -Process 25244 stopped -* thread #1: tid = 0x839a4c, 0x0000000100162db4 Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 20 at browser.cc:118, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 - frame #0: 0x0000000100162db4 Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 20 at browser.cc:118 - 115 } - 116 - 117 void Browser::SetName(const std::string& name) { --> 118 name_override_ = name; - 119 } - 120 - 121 int Browser::GetBadgeCount() { -(lldb) -``` - -显示当前帧的参数和局部变量, 运行 `frame variable` (或 `fr v`), 这将显示你的应用程序当前设置名称为 “Electron”. - - -```bash -(lldb) frame variable -(atom::Browser *) this = 0x0000000108b14f20 -(const string &) name = "Electron": { - [...] -} -``` - -在当前选择的线程中执行源级单步执行, 执行 `step` (或 `s`). 这将带你进入 `name_override_.empty()`。 继续前进,步过,运行 `next` (或 `n`). - -```bash -(lldb) step -Process 25244 stopped -* thread #1: tid = 0x839a4c, 0x0000000100162dcc Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 44 at browser.cc:119, queue = 'com.apple.main-thread', stop reason = step in - frame #0: 0x0000000100162dcc Electron Framework`atom::Browser::SetName(this=0x0000000108b14f20, name="Electron") + 44 at browser.cc:119 - 116 - 117 void Browser::SetName(const std::string& name) { - 118 name_override_ = name; --> 119 } - 120 - 121 int Browser::GetBadgeCount() { - 122 return badge_count_; -``` - -要完成此时的调试,运行 `process continue`。 你也可以继续,直到这个线程中的某一行被命中(`线程直到100`)。 此命令将在当前帧中运行线程,直到它到达此帧中的行100,或者如果它离开当前帧,则停止。 - -现在,如果你打开 Electron 的开发工具并调用 `setName`,你将再次命中断点。 - -### 进一步阅读 -LLDB是一个强大的工具,有一个庞大的文档。 要了解更多信息,请参考 Apple 的调试文档, 例如 [LLDB Command Structure Reference][lldb-command-structure] -或 [Using LLDB as a Standalone Debugger][lldb-standalone]. - -你也可以查看LLDB的 [manual and tutorial][lldb-tutorial], 这将解释更复杂的调试场景. - -[lldb-command-structure]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-basics.html#//apple_ref/doc/uid/TP40012917-CH2-SW2 -[lldb-standalone]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-terminal-workflow-tutorial.html -[lldb-tutorial]: http://lldb.llvm.org/tutorial.html diff --git a/docs-translations/zh-CN/development/setting-up-symbol-server.md b/docs-translations/zh-CN/development/setting-up-symbol-server.md deleted file mode 100644 index d82234197896..000000000000 --- a/docs-translations/zh-CN/development/setting-up-symbol-server.md +++ /dev/null @@ -1,38 +0,0 @@ -# Setting Up Symbol Server in Debugger - -调试 symbols 让你有更好的调试 sessions. 它们有可执行的动态库的函数信息,并且提供信息来获得洁净的呼叫栈. 一个 Symbol 服务器允许调试器自动加载正确的 symbols, 二进制文件 和 资源文件,不用再去强制用户下载巨大的调试文件. 服务器函数类似 -[Microsoft's symbol server](http://support.microsoft.com/kb/311503) ,所以这里的记录可用. - -注意,因为公众版本的 Electron 构建是最优化的,调试不一定一直简单.调试器将不会给显示出所有变量内容,并且因为内联,尾调用,和其它编译器优化,执行路径会看起来很怪异 . 唯一的解决办法是搭建一个不优化的本地构建. - -Electron 使用的官方 symbol 服务器地址为 -`https://electron-symbols.githubapp.com` . -你不能直接访问这个路径,必须将其添加到你的调试工具的 symbol 路径上.在下面的例子中,使用了一个本地缓存目录来避免重复从服务器获取 PDB. 在你的电脑上使用一个恰当的缓存目录来代替 `c:\code\symbols` . - -## Using the Symbol Server in Windbg - -Windbg symbol 路径被配制为一个限制带星号字符的字符串. 要只使用 Electron 的 symbol 服务器, 将下列记录添加到你的 symbol 路径 (__注意:__ 如果你愿意使用一个不同的地点来下载 symbols,你可以在你的电脑中使用任何可写的目录来代替 `c:\code\symbols`): - -``` -SRV*c:\code\symbols\*https://electron-symbols.githubapp.com -``` - -使用 Windbg 菜单或通过输入 `.sympath` 命令,在环境中设置一个 `_NT_SYMBOL_PATH` 字符串.如果你也想从微软的 symbol 服务器获得 symbols ,你应当首先将它们先列出来 : - -``` -SRV*c:\code\symbols\*http://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols\*https://electron-symbols.githubapp.com -``` - -## 在 Visual Studio 中使用 symbol 服务器 - - - - -## Troubleshooting: Symbols will not load - -在 Windbg 中输入下列命令,打印出为什么 symbols 没有加载 : - -``` -> !sym noisy -> .reload /f chromiumcontent.dll -``` diff --git a/docs-translations/zh-CN/development/source-code-directory-structure.md b/docs-translations/zh-CN/development/source-code-directory-structure.md deleted file mode 100644 index fd3676c2e988..000000000000 --- a/docs-translations/zh-CN/development/source-code-directory-structure.md +++ /dev/null @@ -1,53 +0,0 @@ -# 源码目录结构 - -Electron 的源代码主要依据 Chromium 的拆分约定被拆成了许多部分。 - -为了更好地理解源代码,您可能需要了解一下 -[Chromium 的多进程架构](http://dev.chromium.org/developers/design-documents/multi-process-architecture)。 - -## 源代码的结构 - -``` -Electron -├──atom - Electron 的源代码 -| ├── app - 系统入口代码 -| ├── browser - 包含了主窗口、UI 和其他所有与主进程有关的东西,它会告诉渲染进程如何管理页面 -| |   ├── lib - 主进程初始化代码中 JavaScript 部分的代码 -| | ├── ui - 不同平台上 UI 部分的实现 -| | | ├── cocoa - Cocoa 部分的源代码 -| | | ├── gtk - GTK+ 部分的源代码 -| | | └── win - Windows GUI 部分的源代码 -| | ├── default_app - 在没有指定 app 的情况下 Electron 启动时默认显示的页面 -| | ├── api - 主进程 API 的实现 -| | | └── lib - API 实现中 Javascript 部分的代码 -| | ├── net - 网络相关的代码 -| | ├── mac - 与 Mac 有关的 Objective-C 代码 -| | └── resources - 图标,平台相关的文件等 -| ├── renderer - 运行在渲染进程中的代码 -| | ├── lib - 渲染进程初始化代码中 JavaScript 部分的代码 -| | └── api - 渲染进程 API 的实现 -| | └── lib - API 实现中 Javascript 部分的代码 -| └── common - 同时被主进程和渲染进程用到的代码,包括了一些用来将 node 的事件循环 -| | 整合到 Chromium 的事件循环中时用到的工具函数和代码 -| ├── lib - 同时被主进程和渲染进程使用到的 Javascript 初始化代码 -| └── api - 同时被主进程和渲染进程使用到的 API 的实现以及 Electron 内置模块的基础设施 -| └── lib - API 实现中 Javascript 部分的代码 -├── chromium_src - 从 Chromium 项目中拷贝来的代码 -├── docs - 英语版本的文档 -├── docs-translations - 各种语言版本的文档翻译 -├── spec - 自动化测试 -├── atom.gyp - Electron 的构建规则 -└── common.gypi - 为诸如 `node` 和 `breakpad` 等其他组件准备的编译设置和构建规则 -``` - -## 其他目录的结构 - -* **script** - 用于诸如构建、打包、测试等开发用途的脚本 -* **tools** - 在 gyp 文件中用到的工具脚本,但与 `script` 目录不同, - 该目录中的脚本不应该被用户直接调用 -* **vendor** - 第三方依赖项的源代码,为了防止人们将它与 Chromium 源码中的同名目录相混淆, - 在这里我们不使用 `third_party` 作为目录名 -* **node_modules** - 在构建中用到的第三方 node 模块 -* **out** - `ninja` 的临时输出目录 -* **dist** - 由脚本 `script/create-dist.py` 创建的临时发布目录 -* **external_binaries** - 下载的不支持通过 `gyp` 构建的预编译第三方框架 diff --git a/docs-translations/zh-CN/faq/electron-faq.md b/docs-translations/zh-CN/faq/electron-faq.md deleted file mode 100644 index 092bc1d8ac12..000000000000 --- a/docs-translations/zh-CN/faq/electron-faq.md +++ /dev/null @@ -1,143 +0,0 @@ -# Electron 常见问题 - -## Electron 会在什么时候升级到最新版本的 Chrome? - -通常来说,在稳定版的 Chrome 发布后两周内,我们会更新 Electron 内的 Chrome 版本。 - -我们只会使用 stable 版本的 Chrome。但如果在 beta 或 dev 版本中有一个重要的更新,我们会把补丁应用到现版本的 Chrome 上。 - -## Electron 会在什么时候升级到最新版本的 Node.js? - -我们通常会在最新版的 Node.js 发布后一个月左右将 Electron 更新到这个版本的 Node.js。我们通过这种方式来避免新版本的 Node.js -带来的 bug(这种 bug 太常见了)。 - -Node.js 的新特性通常是由新版本的 V8 带来的。由于 Electron 使用的是 Chrome 浏览器中附带的 V8 引擎,所以 Electron 内往往已经 -有了部分新版本 Node.js 才有的崭新特性。 - -## 如何在两个网页间共享数据? - -在两个网页(渲染进程)间共享数据最简单的方法是使用浏览器中已经实现的 HTML5 API,其中比较好的方案是用 [Storage API][storage], -[`localStorage`][local-storage],[`sessionStorage`][session-storage] 或者 [IndexedDB][indexed-db]。 - -你还可以用 Electron 内的 IPC 机制实现。将数据存在主进程的某个全局变量中,然后在多个渲染进程中使用 `remote` 模块来访问它。 - -```javascript -// 在主进程中 -global.sharedObject = { - someProperty: 'default value' -} -``` - -```javascript -// 在第一个页面中 -require('electron').remote.getGlobal('sharedObject').someProperty = 'new value' -``` - -```javascript -// 在第二个页面中 -console.log(require('electron').remote.getGlobal('sharedObject').someProperty) -``` - -## 为什么应用的窗口、托盘在一段时间后不见了? - -这通常是因为用来存放窗口、托盘的变量被垃圾收集了。 - -你可以参考以下两篇文章来了解为什么会遇到这个问题。 - -* [内存管理][memory-management] -* [变量作用域][variable-scope] - -如果你只是要一个快速的修复方案,你可以用下面的方式改变变量的作用域,防止这个变量被垃圾收集。 - -从 - -```javascript -const {app, Tray} = require('electron') -app.on('ready', () => { - const tray = new Tray('/path/to/icon.png') - tray.setTitle('hello world') -}) -``` - -改为 - -```javascript -const {app, Tray} = require('electron') -let tray = null -app.on('ready', () => { - tray = new Tray('/path/to/icon.png') - tray.setTitle('hello world') -}) -``` - -## 在 Electron 中,我为什么不能用 jQuery、RequireJS、Meteor、AngularJS? - -因为 Electron 在运行环境中引入了 Node.js,所以在 DOM 中有一些额外的变量,比如 `module`、`exports` 和 `require`。这导致 -了许多库不能正常运行,因为它们也需要将同名的变量加入运行环境中。 - -我们可以通过禁用 Node.js 来解决这个问题,用如下的方式: - -```javascript -// 在主进程中 -var mainWindow = new BrowserWindow({ - webPreferences: { - nodeIntegration: false - } -}) -``` - -假如你依然需要使用 Node.js 和 Electron 提供的 API,你需要在引入那些库之前将这些变量重命名,比如: - -```html - - - - -``` - -## 为什么 `require('electron').xxx` 的结果是 undefined? - -在使用 Electron 的提供的模块时,你可能会遇到和以下类似的错误: - -``` -> require('electron').webFrame.setZoomFactor(1.0); -Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined -``` - -这是因为你在项目中或者在全局中安装了[npm 上获取的 `electron` 模块][electron-module],它把 Electron 的内置模块覆写了。 - -你可以通过以下方式输出 `electron` 模块的路径来确认你是否使用了正确的模块。 - -```javascript -console.log(require.resolve('electron')) -``` - -确认一下它是不是像下面这样的: - -``` -"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" -``` - -假如输出的路径类似于 `node_modules/electron/index.js`,那么你需要移除或者重命名 npm 上的 `electron` 模块。 - -```bash -npm uninstall electron -npm uninstall -g electron -``` - -如果你依然遇到了这个问题,你可能需要检查一下拼写或者是否在错误的进程中调用了这个模块。比如, -`require('electron').app` 只能在主进程中使用, 然而 `require('electron').webFrame` 只能在渲染进程中使用。 - -[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management -[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx -[electron-module]: https://www.npmjs.com/package/electron -[storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage -[local-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage -[session-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage -[indexed-db]: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API diff --git a/docs-translations/zh-CN/glossary.md b/docs-translations/zh-CN/glossary.md deleted file mode 100644 index 69465b537dc0..000000000000 --- a/docs-translations/zh-CN/glossary.md +++ /dev/null @@ -1,98 +0,0 @@ -# 术语表 - -这篇文档说明了一些经常在 Electron 开发中使用的专业术语。 - -### ASAR - -ASAR 代表了 Atom Shell Archive Format。一个 [asar][asar] 压缩包就是一个简单的 `tar` 文件-就像将那些有联系的文件格式化至一个单独的文件中。Electron 能够任意读取其中的文件并且不需要解压缩整个文件。 - -ASAR 格式主要是为了提升 Windows 平台上的性能。TODO - -### Brightray - -[Brightray][brightray] 是能够简单的将 [libchromiumcontent] 应用到应用中的一个静态库。它是专门开发给 Electron 使用,但是也能够使用在那些没有基于 Electron 的原生应用来启用 Chromium 的渲染引擎。 - -Brightray 是 Electron 中的一个低级别的依赖,大部分的 Electron 用户不用关心它。 - -### DMG - -是指在 macOS 上使用的苹果系统的磁盘镜像打包格式。DMG 文件通常被用来分发应用的 "installers"(安装包)。[electron-builder] 支持使用 `dmg` 来作为编译目标。 - -### IPC - -IPC 代表 Inter-Process Communication。Electron 使用 IPC 来在 [主进程] 和 [渲染进程] 之间传递 JSON 信息。 - -### libchromiumcontent - -一个单独的开源库,包含了 Chromium 的模块以及全部依赖(比如 Blink, [V8] 等)。 - -### main process - -主进程,通常是值 `main.js` 文件,是每个 Electron 应用的入口文件。它控制着整个 APP 的生命周期,从打开到关闭。它也管理着原生元素比如菜单,菜单栏,Dock 栏,托盘等。主进程负责创建 APP 的每个渲染进程。而且整个 Node API 都集成在里面。 - -每个 app 的主进程文件都定义在 `package.json` 中的 `main` 属性当中,这也是为什么 `electron .` 能够知道应该使用哪个文件来启动。 - -参见: [process](#process), [renderer process](#renderer-process) - -### MAS - -是指苹果系统上的 Mac App Store 的缩略词。有关于如何提交你的 app 至 MAS ,详见 [Mac App Store Submission Guide] 。 - -### native modules - -原生模块 (在 Node.js 里也叫 [addons]),是一些使用 C or C++ 编写的能够在 Node.js 中加载或者在 Electron 中使用 require() 方法来加载的模块,它使用起来就如同 Node.js 的模块。它主要用于桥接在 JavaScript 上运行 Node.js 和 C/C++ 的库。 - -Electron 支持了原生的 Node 模块,但是 Electron 非常可能安装一个不一样的 V8 引擎通过 Node 二进制编码,所以在打包原生模块的时候你需要在 指定具体的 Electron 本地头文件。 - -参见: [Using Native Node Modules]. - -## NSIS - -Nullsoft Scriptable Install System 是一个微软 Windows 平台上的脚本驱动的安装制作工具。它发布在免费软件许可证书下,是一个被广泛使用的替代商业专利产品类似于 InstallShield。[electron-builder] 支持使用 NSIS 作为编译目标。 - -### process - -一个进程是计算机程序执行中的一个实例。Electron 应用同时使用了 [main] (主进程) 和一个或者多个 [renderer] (渲染进程)来运行多个程序。 - -在 Node.js 和 Electron 里面,每个运行的进程包含一个 `process` 对象。这个对象作为一个全局的提供当前进程的相关信息,操作方法。作为一个全局变量,它在应用内能够不用 require() 来随时取到。 - -参见: [main process](#main-process), [renderer process](#renderer-process) - -### renderer process - -渲染进程是你的应用内的一个浏览器窗口。与主进程不同的是,它能够同时存在多个而且运行在不一样的进程。而且它们也能够被隐藏。 - -在通常的浏览器内,网页通常运行在一个沙盒的环境挡住并且不能够使用原生的资源。然而 Electron 的用户在 Node.js 的 API 支持下可以在页面中和操作系统进行一些低级别的交互。 - -参见: [process](#process), [main process](#main-process) - -### Squirrel - -Squirrel 是一个开源的框架来让 Electron 的应用能够自动的更新到发布的新的版本。详见 [autoUpdater] API 了解如何开始使用 Squirrel。 - -### userland - -"userland" 或者 "userspace" 术语起源于 Unix 社区,当程序运行在操作系统内核之外。最近这个术语被推广在 Node 和 npm 社区用于区分 "Node core" 与发布的包的功能,对于在 npm 上注册的广大 "user(用户)" 们。 - -就像 Node ,Electron 致力于使用一些少量的设置和 API 来提供所有的必须的支持给开发中的跨平台应用。这个设计理念让 Electron 能够保持灵活而不被过多的规定有关于如何应该被使用。Userland 让用户能够创造和分享一些工具来提额外的功能在这个能够使用的 "core(核心)"之上。 - -### V8 - -V8 是谷歌公司的开源的 JavaScript 引擎。它使用 C++ 编写并使用在谷歌公司开源的的浏览器 Google Chrome 上。V8 能够单独运行或者集成在任何一个 C++ 应用内。 - -### webview - -`webview` 标签用于集成 'guest(访客)' 内容(比如外部的网页)在你的 Electron 应用内。它们类似于 `iframe`,但是不同的是每个 webview 运行在独立的进程中。 作为页面它拥有不一样的权限并且所有的嵌入的内容和你应用之间的交互都将是异步的。这将保证你的应用对于嵌入的内容的安全性。 - -[addons]: https://nodejs.org/api/addons.html -[asar]: https://github.com/electron/asar -[autoUpdater]: api/auto-updater.md -[brightray]: https://github.com/electron/brightray -[electron-builder]: https://github.com/electron-userland/electron-builder -[libchromiumcontent]: #libchromiumcontent -[Mac App Store Submission Guide]: tutorials/mac-app-store-submission-guide.md -[main]: #main-process -[renderer]: #renderer-process -[Using Native Node Modules]: tutorial/using-native-node-modules.md -[userland]: #userland -[V8]: #v8 diff --git a/docs-translations/zh-CN/project/CONTRIBUTING.md b/docs-translations/zh-CN/project/CONTRIBUTING.md deleted file mode 100644 index 59a7dc904a7f..000000000000 --- a/docs-translations/zh-CN/project/CONTRIBUTING.md +++ /dev/null @@ -1,74 +0,0 @@ -# Electron约定 - -:+1::tada: 首先,感谢抽出时间做出贡献的每一个人。 :tada::+1: - -这个项目将坚持贡献者盟约 [code of conduct](CODE_OF_CONDUCT.md). -我们希望贡献者能遵守贡献者盟约,如果有任何不能接受的行为被发现,请报告至electron@github.com(PS:请用英语) - -下面是一组用于改进Electron的指南。 -这些只是指导方针,而不是规则,做你认为对的事,并随时 -在提出一个pull请求更改该文档。 - -## 提交 Issues - -* 你可以在这里创建一个 issue [here](https://github.com/electron/electron/issues/new), -但在这样做之前请阅读以下注意事项,其中应包含尽可能多的细节。 -如果可以能,请尽量包括: - * Electron版本 - * 使用程序所使用的系统及系统版本 - * 如果适用,请包含:你做什么时发生了所提交的问题,以及你所期待的结果。 -* 其他有助于解决你的 issue 的选项: - * 截图或GIF动画 - * 终端中的错误堆栈 - * 执行 [cursory search](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+) - 查看是否已经存在类似问题。 - -## 提交 Pull Requests - -* 包括在你拉的请求截图和动画GIF只要有可能。 -* 遵循的JavaScript,C ++和Python [coding style defined in docs](/docs/development/coding-style.md). -* 书写对应文档 [Markdown](https://daringfireball.net/projects/markdown). - 请参考 [Documentation Styleguide](/docs/styleguide.md). -* 使用简短明了的提交信息,请参考 [Commit Message Styleguide](#git-commit-messages). - -## 文档样式 - -### 通用代码 - -* 以一个空行作为文件结尾。 -* 请按以下顺序加载模块: - * 内置 Node 模块 (参考 `path`) - * 内置 Electron 模块 (参考 `ipc`, `app`) - * 本地模块 (使用相对路径) -* 请按以下顺序排列类的属性与方法: - * 类的方法和属性 (方法以 `@` 开始) - * 实例的方法和属性 -* 避免和平台相关的代码: - * 使用 `path.join()` 来链接文件名 - * 当需要使用临时目录的时候使用 `os.tmpdir()` 而不是 `/tmp` 。 -* 使用 `return` 进行明确返回时 - * 不使用 `return null`, `return undefined`, `null`, 或 `undefined` - -### Git 提交信息(鉴于进行Git提交时需要英文书写,此处暂不翻译) - -* Use the present tense ("Add feature" not "Added feature") -* Use the imperative mood ("Move cursor to..." not "Moves cursor to...") -* Limit the first line to 72 characters or less -* Reference issues and pull requests liberally -* When only changing documentation, include `[ci skip]` in the commit description -* Consider starting the commit message with an applicable emoji: - * :art: `:art:` when improving the format/structure of the code - * :racehorse: `:racehorse:` when improving performance - * :non-potable_water: `:non-potable_water:` when plugging memory leaks - * :memo: `:memo:` when writing docs - * :penguin: `:penguin:` when fixing something on Linux - * :apple: `:apple:` when fixing something on macOS - * :checkered_flag: `:checkered_flag:` when fixing something on Windows - * :bug: `:bug:` when fixing a bug - * :fire: `:fire:` when removing code or files - * :green_heart: `:green_heart:` when fixing the CI build - * :white_check_mark: `:white_check_mark:` when adding tests - * :lock: `:lock:` when dealing with security - * :arrow_up: `:arrow_up:` when upgrading dependencies - * :arrow_down: `:arrow_down:` when downgrading dependencies - * :shirt: `:shirt:` when removing linter warnings diff --git a/docs-translations/zh-CN/project/README.md b/docs-translations/zh-CN/project/README.md deleted file mode 100644 index bdd5d06dd84a..000000000000 --- a/docs-translations/zh-CN/project/README.md +++ /dev/null @@ -1,84 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron#info=devDependencies) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -Electron框架,让您可使用JavaScript, HTML 及 CSS 编写桌面程序。 -它是基于[Node.js](https://nodejs.org/)和[Chromium](http://www.chromium.org)开发的, -[Atom editor](https://github.com/atom/atom)以及很多其他的[apps](https://electron.atom.io/apps)就是使用Electron编写的。 - -请关注Twitter [@ElectronJS](https://twitter.com/electronjs) 以获得重要通告。 - -这个项目将坚持贡献者盟约 [code of conduct](CODE_OF_CONDUCT.md). -我们希望贡献者能遵守贡献者盟约,如果发现有任何不能接受的行为,请报告至electron@github.com(PS:请用英语) - -## 下载 - -可以使用[`npm`](https://docs.npmjs.com/)来安装Electron的预编译二进制版本: -```sh -# 开发依赖安装 -npm install electron --save-dev - -# 全局安装 -npm install electron -g -``` -可以在[releases](https://github.com/electron/electron/releases)找到预编译的二进制版本及symbols调试版本, -其中包括Linux,Windows和macOS版本。 - -### 其他源 - -- [中国](https://npm.taobao.org/mirrors/electron) - -```sh -# PS:大陆到Electron源的下载速度极不稳定,无法下载成功时可用 -# 淘宝源开发依赖安装 -ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ npm install electron --save-dev - -# 淘宝源全局安装 -ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ npm install electron -g -``` - -## 文档 - -开发指南及API文档位于 -[docs](https://github.com/electron/electron/tree/master/docs) -它也包括如何编译和改进Electron - -## 翻译版文档 - -- [葡萄牙语-巴西](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [韩语](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [日语](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [西班牙语](https://github.com/electron/electron/tree/master/docs-translations/es) -- [简体中文](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [繁体中文](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [土耳其](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [乌克兰](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [俄语](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [法语](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) - -## 快速开始 - -克隆并运行这个 [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -库来体验一个最小的 Electron 程序是怎么样的。 - -## 社区 - -你可以在以下社区提出问题以及相互交流: -- [`electron`](http://discuss.atom.io/c/electron) Atom论坛上的一类。 -- `#atom-shell` Freenode上的聊天频道 -- [`Atom`](http://atom-slack.herokuapp.com/) Slack上的频道 -- [`electron-br`](https://electron-br.slack.com) *(葡萄牙语-巴西)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(韩语)* -- [`electron-jp`](https://electron-jp-slackin.herokuapp.com/) *(日语)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(土耳其)* -- [`electron-id`](https://electron-id.slack.com) *(印度尼西亚)* - -查看 [awesome-electron](https://github.com/sindresorhus/awesome-electron) -来获得由社区维护的示例程序,工具和资源列表。 - -## 执照 - -MIT © 2016 Github diff --git a/docs-translations/zh-CN/styleguide.md b/docs-translations/zh-CN/styleguide.md deleted file mode 100644 index 660776d505f4..000000000000 --- a/docs-translations/zh-CN/styleguide.md +++ /dev/null @@ -1,224 +0,0 @@ -# Electron 文档风格指南 - -这里是一些编写 Electron 文档的指南. - -## 标题 - -* 每个页面顶部必须有一个单独的 `#` 级标题。 -* 同一页面中的章节必须有 `##` 级标题。 -* 子章节需要根据它们的嵌套深度增加标题中的 `#` 数量。 -* 页面标题中的所有单词首字母都必须大写,除了 “of” 和 “and” 之类的连接词。 -* 只有章节标题的第一个单词首字母必须大写. - -举一个 `Quick Start` 的例子: - -```markdown -# Quick Start - -... - -## Main process - -... - -## Renderer process - -... - -## Run your app - -... - -### Run as a distribution - -... - -### Manually downloaded Electron binary - -... -``` - -对于 API 参考, 可以例外于这些规则. - -## Markdown 规则 - -* 在代码块中使用 `bash` 而不是 `cmd`(由于语法高亮问题). -* 行长度应该控制在80列内. -* 列表嵌套不超出2级 (由于 Markdown 渲染问题). -* 所有的 `js` 和 `javascript` 代码块均被标记为 -[standard-markdown](http://npm.im/standard-markdown). - -## 用词选择 - -* 在描述结果时,使用 “will” 而不是 “would”。 -* 首选 "in the ___ process" 而不是 "on". - -## API 参考 - -以下规则仅适用于 API 的文档。 - -### 页面标题 - -每个页面必须使用由 `require('electron')` 返回的实际对象名称作为标题,例如 `BrowserWindow`,`autoUpdater` 和 `session`。 - -在页面标题下必须是以 `>` 开头的单行描述。 - -举一个 `session` 的例子: - -```markdown -# session - -> Manage browser sessions, cookies, cache, proxy settings, etc. -``` - -### 模块方法和事件 - -对于非类的模块,它们的方法和事件必须在 `## Methods` 和 `## Events` 章节中列出。 - -举一个 `autoUpdater` 的例子: - -```markdown -# autoUpdater - -## Events - -### Event: 'error' - -## Methods - -### `autoUpdater.setFeedURL(url[, requestHeaders])` -``` - -### 类 - -* API 类或作为模块一部分的类必须在 `## Class: TheClassName` 章节中列出. -* 一个页面可以有多个类. -* 构造函数必须用 `###` 级标题列出. -* [静态方法](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static) 必须在 `### Static Methods` 章节中列出. -* [实例方法](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Prototype_methods) 必须在 `### Instance Methods` 章节中列出. -* 所有具有返回值的方法必须用 "Returns `[TYPE]` - Return description" 的形式描述. - * 如果该方法返回一个 `Object`,则可以使用冒号后跟换行符,然后使用与函数参数相同样式的属性的无序列表来指定其结构. -* 实例事件必须在 `### Instance Events` 章节中列出. -* 实例属性必须在 `### Instance Properties` 章节中列出. - * 实例属性必须以 "A [Property Type] ..." 开始描述. - -这里用 `Session` 和 `Cookies` 类作为例子: - -```markdown -# session - -## Methods - -### session.fromPartition(partition) - -## Properties - -### session.defaultSession - -## Class: Session - -### Instance Events - -#### Event: 'will-download' - -### Instance Methods - -#### `ses.getCacheSize(callback)` - -### Instance Properties - -#### `ses.cookies` - -## Class: Cookies - -### Instance Methods - -#### `cookies.get(filter, callback)` -``` - -### 方法 - -方法章节必须采用以下形式: - -```markdown -### `objectName.methodName(required[, optional]))` - -* `required` String - A parameter description. -* `optional` Integer (optional) - Another parameter description. - -... -``` - -标题可以是 `###` 级别或 `####` 级别,具体取决于它是模块还是类的方法。 - -对于模块,`objectName` 是模块的名称。 对于类,它必须是类的实例的名称,并且不能与模块的名称相同。 - -例如,`session` 模块下的 `Session` 类的方法必须使用 `ses` 作为 `objectName` 。 - -可选参数由围绕可选参数的方括号 `[]` 表示,并且如果此可选参数跟随另一个参数,则需要逗号: - -``` -required[, optional] -``` - -下面的方法是每个参数更加详细的信息。 参数的类型由常见类型表示: - -* [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) -* [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) -* [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) -* [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) -* [`Boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) -* 或自定义类型,就像 Electron 的 [`WebContent`](api/web-contents.md) - -如果参数或方法对某些平台是唯一的,那么这些平台将使用数据类型后面的空格分隔的斜体列表来表示。 值可以是 `macOS`,`Windows` 或 `Linux` - -```markdown -* `animate` Boolean (optional) _macOS_ _Windows_ - 进行动画处理的事情. -``` - -`Array` 类型的参数, 必须在指定数组下面的描述中描述可能包含的元素. - -`Function` 类型参数的描述应该清楚描述它是如何被调用的,并列出将被传递给它的参数的类型. - -### 事件 - -事件章节必须采用以下形式: - -```markdown -### Event: 'wake-up' - -Returns: - -* `time` String - -... -``` - -标题可以是 `###` 级别或 `####` 级别,具体取决于它是模块还是类的事件。 - -事件的参数遵循与方法相同的规则. - -### 属性 - -属性章节必须采用以下形式: - -```markdown -### session.defaultSession - -... -``` - -标题可以是 `###` 级别或 `####` 级别,具体取决于它是模块还是类的属性。 - -## 文档翻译 - -Electron 文档的翻译文件位于 `docs-translations` 目录中. - -如要添加另一个设定集(或部分设定集): - -* 创建以语言缩写命名的子目录。 -* 翻译文件。 -* 更新您的语言目录中的 `README.md` 文件以链接到已翻译的文件。 -* 在 Electron 的主 [README](https://github.com/electron/electron#documentation-translations) 上添加到翻译目录的链接。 - -请注意,`docs-translations` 下的文件只能包含已被翻译的文件,不应将原始英语文件复制到那里。 diff --git a/docs-translations/zh-CN/tutorial/application-distribution.md b/docs-translations/zh-CN/tutorial/application-distribution.md deleted file mode 100644 index baeba7886608..000000000000 --- a/docs-translations/zh-CN/tutorial/application-distribution.md +++ /dev/null @@ -1,166 +0,0 @@ -# 应用部署 - -为了使用 Electron 部署你的应用程序,你需要下载 Electron 的[prebuilt -binaries](https://github.com/electron/electron/releases)。 -接下来,你存放应用程序的文件夹需要叫做 `app` 并且需要放在 Electron 的 -资源文件夹下(在 macOS 中是指 `Electron.app/Contents/Resources/`,在 Linux 和 Windows 中是指 `resources/`) -就像这样: - -在 macOS 中: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -在 Windows 和 Linux 中: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -然后运行 `Electron.app` (或者 Linux 中的 `electron`,Windows 中的 `electron.exe`), -接着 Electron 就会以你的应用程序的方式启动。`electron` 文件夹将被部署并可以分发给最终的使用者。 - -## 将你的应用程序打包成一个文件 - -除了通过拷贝所有的资源文件来分发你的应用程序之外,你可以通过打包你的应用程序为一个 [asar](https://github.com/electron/asar) 库文件以避免暴露你的源代码。 - -为了使用一个 `asar` 库文件代替 `app` 文件夹,你需要修改这个库文件的名字为 `app.asar` , -然后将其放到 Electron 的资源文件夹下,然后 Electron 就会试图读取这个库文件并从中启动。 -如下所示: - -在 macOS 中: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -在 Windows 和 Linux 中: - -```text -electron/resources/ -└── app.asar -``` - -更多的细节请见 [Application packaging](application-packaging.md). - -## 更换名称与下载二进制文件 - -在使用 Electron 打包你的应用程序之后,你可能需要在分发给用户之前修改打包的名字。 - -### Windows - -你可以将 `electron.exe` 改成任意你喜欢的名字,然后可以使用像 -[rcedit](https://github.com/atom/rcedit) -编辑它的 icon 和其他信息。 - -### macOS - -你可以将 `Electron.app` 改成任意你喜欢的名字,然后你也需要修改这些文件中的 -`CFBundleDisplayName`, `CFBundleIdentifier` 以及 `CFBundleName` 字段。 -这些文件如下: - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -你也可以重命名帮助应用程序以避免在应用程序监视器中显示 `Electron Helper`, -但是请确保你已经修改了帮助应用的可执行文件的名字。 - -一个改过名字的应用程序的构造可能是这样的: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -你可以将 `electron` 改成任意你喜欢的名字。 - -## 打包工具 - -除了手动打包应用程序,你还可以选择使用第三方打包工具来做这项工作: - -* [electron-builder](https://github.com/electron-userland/electron-builder) -* [electron-packager](https://github.com/electron-userland/electron-packager) - -## 通过重编译源代码来更换名称 - -通过修改产品名称并重编译源代码来更换 Electron 的名称也是可行的。 -你需要修改 `atom.gyp` 文件并彻底重编译一次。 - -### grunt打包脚本 - -手动检查 Electron 代码并重编译是很复杂晦涩的,因此有一个Grunt任务可以自动的处理 -这些内容 [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -这个任务会自动的处理编辑 `.gyp` 文件,从源代码进行编译,然后重编译你的应用程序的本地 Node 模块以匹配这个新的可执行文件的名称。 - -### 创建一个自定义 Electron 分支 - -如果只是为了构建你的 app,你不需要创建一个自定义的 Electron 分支, -即使是“生产级”的应用程序。 -可以使用工具,如 `electron-packager` 或 `electron-builder` 来 -“重塑” 你的 Electron app。 - -当你想直接进入 Electron 来修改 C++ 代码,你需要 fork Electron -,不能使用 upstreamed 或者 rejected 官方版本。 -作为 Electron 的维护者,我们非常希望 -你的方案能够工作,并尽最大的努力让你的修改 -进入 Electron 的官方版本,创建自定义分支对你来说更简单,最后, -我们感谢你的帮助。 - -#### 通过 surf-build 创建一个自定义版本 - -1. 通过 npm 下载 [Surf](https://github.com/surf-build/surf): - `npm install -g surf-build@latest` - -2. 创建一个新的 S3 bucket 并按照以下结构创建文件夹: - - ``` - - atom-shell/ - - symbols/ - - dist/ - ``` - -3. 设置以下环境变量: - - * `ELECTRON_GITHUB_TOKEN` - 一个在 GitHub 创建版本的 token - * `ELECTRON_S3_ACCESS_KEY`, `ELECTRON_S3_BUCKET`, `ELECTRON_S3_SECRET_KEY` - - 你将上传 Node.js 的 headers 以及符号的位置 - * `ELECTRON_RELEASE` - 设置为 `true`,上传部分将运行,不设置 -     和 `surf-build` 只是做 CI-type 的检查,适合每一个运行 -     拉取请求。 - * `CI` - 设置为 `true` ,否则无效 - * `GITHUB_TOKEN` - 设置为与 `ELECTRON_GITHUB_TOKEN` 相同 - * `SURF_TEMP` - 在 Windows 下设置为 `C:\Temp` 来防止路径太长的问题 - * `TARGET_ARCH` - 设置为 `ia32` 或 `x64` - -4. 在 `script/upload.py`,你_必须_为你的分支(`MYORG/electron`)设置 `ELECTRON_REPO`, - 尤其如果你本身是一个 Electron 贡献者。 - -5. `surf-build -r https://github.com/MYORG/electron -s YOUR_COMMIT -n 'surf-PLATFORM-ARCH'` - -6. 需要很长的时间来等待构建完成 diff --git a/docs-translations/zh-CN/tutorial/application-packaging.md b/docs-translations/zh-CN/tutorial/application-packaging.md deleted file mode 100644 index 9c94fcd45099..000000000000 --- a/docs-translations/zh-CN/tutorial/application-packaging.md +++ /dev/null @@ -1,155 +0,0 @@ -# 应用打包 - -为舒缓 Windows 下路径名过长的问题[issues](https://github.com/joyent/node/issues/6960), -也略对 `require` 加速以及简单隐匿你的源代码,你可以通过极小的源代码改动将你的应用打包成 [asar][asar]。 - -## 生成 `asar` 包 - -[asar][asar] 是一种将多个文件合并成一个文件的类 tar 风格的归档格式。 -Electron 可以无需解压,即从其中读取任意文件内容。 - -参照如下步骤将你的应用打包成 `asar`: - -### 1. 安装 asar - -```bash -$ npm install -g asar -``` - -### 2. 用 `asar pack` 打包 - -```bash -$ asar pack your-app app.asar -``` - -## 使用 `asar` 包 - -在 Electron 中有两类 APIs:Node.js 提供的 Node API 和 Chromium 提供的 Web API。 -这两种 API 都支持从 `asar` 包中读取文件。 - -### Node API - -由于 Electron 中打了特别补丁, Node API 中如 `fs.readFile` 或者 `require` 之类 -的方法可以将 `asar` 视之为虚拟文件夹,读取 `asar` 里面的文件就和从真实的文件系统中读取一样。 - -例如,假设我们在 `/path/to` 文件夹下有个 `example.asar` 包: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -从 `asar` 包读取一个文件: - -```javascript -const fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -列出 `asar` 包中根目录下的所有文件: - -```javascript -const fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -使用 `asar` 包中的一个模块: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -你也可以使用 `BrowserWindow` 来显示一个 `asar` 包里的 web 页面: - -```javascript -const BrowserWindow = require('electron').BrowserWindow -var win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### Web API - -在 Web 页面里,用 `file:` 协议可以获取 `asar` 包中文件。和 Node API 一样,视 `asar` 包如虚拟文件夹。 - -例如,用 `$.get` 获取文件: - -```html - -``` - -### 像“文件”那样处理 `asar` 包 - -有些场景,如:核查 `asar` 包的校验和,我们需要像读取“文件”那样读取 `asar` 包的内容(而不是当成虚拟文件夹)。 -你可以使用内置的 `original-fs` (提供和 `fs` 一样的 API)模块来读取 `asar` 包的真实信息。 - -```javascript -var originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -## Node API 缺陷 - -尽管我们已经尽了最大努力使得 `asar` 包在 Node API 下的应用尽可能的趋向于真实的目录结构,但仍有一些底层 Node API 我们无法保证其正常工作。 - -### `asar` 包是只读的 - -`asar` 包中的内容不可更改,所以 Node APIs 里那些可以用来修改文件的方法在对待 `asar` 包时都无法正常工作。 - -### Working Directory 在 `asar` 包中无效 - -尽管 `asar` 包是虚拟文件夹,但其实并没有真实的目录架构对应在文件系统里,所以你不可能将 working Directory -设置成 `asar` 包里的一个文件夹。将 `asar` 中的文件夹以 `cwd` 形式作为参数传入一些 API 中也会报错。 - -### API 中的额外“开箱” - -大部分 `fs` API 可以无需解压即从 `asar` 包中读取文件或者文件的信息,但是在处理一些依赖真实文件路径的底层 -系统方法时,Electron 会将所需文件解压到临时目录下,然后将临时目录下的真实文件路径传给底层系统方法使其正 -常工作。 对于这类API,耗费会略多一些。 - -以下是一些需要额外解压的 API: - -* `child_process.execFile` -* `child_process.execFileSync` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - `require`native模块时用到 - -### `fs.stat` 获取的 stat 信息不可靠 - -对 `asar` 包中的文件取 `fs.stat`,返回的 `Stats` 对象不是精确值,因为这些文件不是真实存在于文件系 -统里。所以除了文件大小和文件类型以外,你不应该依赖 `Stats` 对象的值。 - -### 执行 `asar` 包中的程序 - -Node 中有一些可以执行程序的 API,如 `child_process.exec`,`child_process.spawn` 和 `child_process.execFile` 等, -但只有 `execFile` 可以执行 `asar` 包中的程序。 - -因为 `exec` 和 `spawn` 允许 `command` 替代 `file` 作为输入,而 `command` 是需要在 shell 下执行的,目前没有 -可靠的方法来判断 `command` 中是否在操作一个 `asar` 包中的文件,而且即便可以判断,我们依旧无法保证可以在无任何 -副作用的情况下替换 `command` 中的文件路径。 - -## 打包时排除文件 - -如上所述,一些 Node API 会在调用时将文件解压到文件系统中,除了效率问题外,也有可能引起杀毒软件的注意! - -为解决这个问题,你可以在生成 `asar` 包时使用 `--unpack` 选项来排除一些文件,使其不打包到 `asar` 包中, -下面是如何排除一些用作共享用途的 native 模块的方法: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -经过上述命令后,除了生成的 `app.asar` 包以外,还有一个包含了排除文件的 `app.asar.unpacked` 文件夹, -你需要将这个文件夹一起拷贝,提供给用户。 - -[asar]: https://github.com/atom/asar diff --git a/docs-translations/zh-CN/tutorial/debugging-main-process-node-inspector.md b/docs-translations/zh-CN/tutorial/debugging-main-process-node-inspector.md deleted file mode 100644 index 4443a6aaabd5..000000000000 --- a/docs-translations/zh-CN/tutorial/debugging-main-process-node-inspector.md +++ /dev/null @@ -1,123 +0,0 @@ -# 使用 node-inspector 进行主进程调试 - -[`node-inspector`][node-inspector] 提供了一个熟悉的 DevTools GUI 即可 -在 Chrome 中来调试 Electron 的主进程,但是,因为根据你希望调试的 Electron 版本, -`node-inspector` 依赖于一些必须重新编译的原生 Node 模块 -。你可以重新编译 `node-inspector` 依赖自己,或者让 -[`electron-inspector`][electron-inspector] 为你做,两种方法都 -涵盖在本文档中。 - -**备注**: 在编写的 `node-inspector` 最新版本 -(0.12.8)无法重新编译目标版本为 Electron 1.3.0 或者以上,没有修补 -它的一个依赖关系。在使用 `electron-inspector`时,需要注意这些。 - -## 使用 `electron-inspector` 来调试 - -### 1. 安装 [node-gyp required tools][node-gyp-required-tools] - -### 2. 安装 [`electron-rebuild`][electron-rebuild],如果你还没有这样做。 - -```shell -npm install electron-rebuild --save-dev -``` - -### 3. 安装 [`electron-inspector`][electron-inspector] - -```shell -npm install electron-inspector --save-dev -``` - -### 4. 启动 Electron - -用 `--debug` 参数来运行 Electron: - -```shell -electron --debug=5858 your/app -``` - -或者,在第一行暂停你的脚本: - -```shell -electron --debug-brk=5858 your/app -``` - -### 5. 启动 electron-inspector - -在 macOS / Linux: - -```shell -node_modules/.bin/electron-inspector -``` - -在 Windows: - -```shell -node_modules\\.bin\\electron-inspector -``` -`electron-inspector` 在首次运行时,或者更改了 Electron 的版本时 -需要重新编译 `node-inspector` 的依赖关系, -重新编译的过程可能需要互联网连接,并花费一些时间才能下载 Node headers 和lib。 - -### 6. 加载 debugger UI - -在 Chrome 浏览器中打开 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 。 -如果以 `--debug-brk` 开始强制UI更新,你可能需要点击 pause。 - -## 使用 `node-inspector` 来调试 - -### 1. 安装 [node-gyp required tools][node-gyp-required-tools] - -### 2. 安装 [`node-inspector`][node-inspector] - -```bash -$ npm install node-inspector -``` - -### 3. 安装 [`node-pre-gyp`][node-pre-gyp] - -```bash -$ npm install node-pre-gyp -``` - -### 4. 为 Electron 重新编译 `node-inspector` `v8` 模块 - -**注意:** 将 target 参数修改为你的 Electron 的版本号 - -```bash -$ node_modules/.bin/node-pre-gyp --target=1.2.5 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/atom-shell reinstall -$ node_modules/.bin/node-pre-gyp --target=1.2.5 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/atom-shell reinstall -``` - -详见 [如何下载原生模块][how-to-install-native-modules]。 - -### 5. 打开 Electron 的调试模式 - -你也可以用调试参数来运行 Electron : - -```bash -$ electron --debug=5858 your/app -``` - -或者,在第一行暂停你的脚本: - -```bash -$ electron --debug-brk=5858 your/app -``` - -### 6. 使用 Electron 开启 [`node-inspector`][node-inspector] 服务 - -```bash -$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js -``` - -### 7. 加载调试器界面 - -在 Chrome 浏览器中打开 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 。 -如果以 `--debug-brk` 开始看到输入行,你可能需要点击 pause。 - -[electron-inspector]: https://github.com/enlight/electron-inspector -[electron-rebuild]: https://github.com/electron/electron-rebuild -[node-inspector]: https://github.com/node-inspector/node-inspector -[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp -[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation -[how-to-install-native-modules]: using-native-node-modules.md#how-to-install-native-modules diff --git a/docs-translations/zh-CN/tutorial/debugging-main-process-vscode.md b/docs-translations/zh-CN/tutorial/debugging-main-process-vscode.md deleted file mode 100644 index be4c2766230e..000000000000 --- a/docs-translations/zh-CN/tutorial/debugging-main-process-vscode.md +++ /dev/null @@ -1,35 +0,0 @@ -# 使用 VSCode 进行主进程调试 - -### 1. 在 VSCode 中打开一个 Electron 工程。 - -```bash -$ git clone git@github.com:electron/electron-quick-start.git -$ code electron-quick-start -``` - -### 2. 添加一个文件 `.vscode/launch.json` 并使用一下配置: - -```json -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Debug Main Process", - "type": "node", - "request": "launch", - "cwd": "${workspaceRoot}", - "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron", - "program": "${workspaceRoot}/main.js" - } - ] -} -``` - -**注意:** 在 Windows 中,`runtimeExecutable` 的参数是 `"${workspaceRoot}/node_modules/.bin/electron.cmd"`。 - -### 3. 调试 - -在 `main.js` 设置断点, 并在 [Debug View](https://code.visualstudio.com/docs/editor/debugging) 中启动调试。你应该能够捕获断点信息。 - - -这是一个预配置的项目,你可以下载并直接在 VSCode 调试: https://github.com/octref/vscode-electron-debug/tree/master/electron-quick-start diff --git a/docs-translations/zh-CN/tutorial/debugging-main-process.md b/docs-translations/zh-CN/tutorial/debugging-main-process.md deleted file mode 100644 index 6ae519f49613..000000000000 --- a/docs-translations/zh-CN/tutorial/debugging-main-process.md +++ /dev/null @@ -1,25 +0,0 @@ -# 主进程调试 - -浏览器窗口的开发工具仅能调试渲染器的进程脚本(比如 web 页面)。为了提供一个可以调试主进程 -的方法,Electron 提供了 `--debug` 和 `--debug-brk` 开关。 - -## 命令行开关 - -使用如下的命令行开关来调试 Electron 的主进程: - -### `--debug=[port]` - -当这个开关用于 Electron 时,它将会监听 V8 引擎中有关 `port` 的调试器协议信息。 -默认的 `port` 是 `5858`。 - -### `--debug-brk=[port]` - -就像 `--debug` 一样,但是会在第一行暂停脚本运行。 - -## 外部调试器 - -你将需要使用一个支持 V8 调试器的调试协议, -下面的指南将会帮助你开始: - -- [使用 VSCode 进行主进程调试](debugging-main-process-vscode.md) -- [使用 node-inspector 进行主进程调试](debugging-main-process-node-inspector.md) diff --git a/docs-translations/zh-CN/tutorial/desktop-environment-integration.md b/docs-translations/zh-CN/tutorial/desktop-environment-integration.md deleted file mode 100644 index 89f5026c4b22..000000000000 --- a/docs-translations/zh-CN/tutorial/desktop-environment-integration.md +++ /dev/null @@ -1,346 +0,0 @@ -# 桌面环境集成 -不同的操作系统在各自的桌面应用上提供了不同的特性。例如,在 windows 上应用曾经打开的文件会出现在任务栏的跳转列表,在 Mac 上,应用可以把自定义菜单放在鱼眼菜单上。 - -本章将会说明怎样使用 Electron APIs 把你的应用和桌面环境集成到一块。 - -## Notifications (Windows, Linux, macOS) - -这三个操作系统都为用户提供了发送通知的方法。Electron 让开发人员通过 -[HTML5 Notification API](https://notifications.spec.whatwg.org/) -便利的去发送通知,用操作系统自带的通知 APIs 去显示。 - -**Note:** 因为这是一个 HTML5 API,所以只在渲染进程中起作用. - -```javascript -let myNotification = new Notification('Title', { - body: 'Lorem Ipsum Dolor Sit Amet' -}) - -myNotification.onclick = () => { - console.log('Notification clicked') -} -``` - -尽管代码和用户体验在不同的操作系统中基本相同,但还是有一些差异。 - -### Windows - -* 在 Windows 10 上, 通知"可以工作"。 -* 在 Windows 8.1 和 Windows 8 系统下,你需要将你的应用通过一个[Application User -Model ID][app-user-model-id]安装到开始屏幕上。需要注意的是,这不是将你的应用固定到开始屏幕。 -* 在 Windows 7 以及更低的版本中,通知不被支持。不过你可以使用 [Tray API][tray-balloon] 发送一个"气泡通知"。 - -此外,通知支持的最大字符长度为250。Windows 团队建议通知应该保持在200个字符以下。 - -### Linux - -通知使用 `libnotify` 发送,它能在任何支持[Desktop Notifications -Specification][notification-spec]的桌面环境中显示,包括 Cinnamon, Enlightenment, Unity, -GNOME, KDE。 - -### macOS - -在 macOS 系统中,通知是直接转发的,你应该了解 [Apple's Human Interface guidelines regarding notifications](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html)。 - -注意通知被限制在256个字节以内,如果超出,则会被截断。 - -## 最近文档 (Windows & macOS) - -Windows 和 macOS 提供获取最近文档列表的便捷方式,那就是打开跳转列表或者鱼眼菜单。 - -__跳转列表:__ - -![JumpList Recent Files](http://i.msdn.microsoft.com/dynimg/IC420538.png) - -__鱼眼菜单:__ - - - -为了增加一个文件到最近文件列表,你可以使用 [app.addRecentDocument][3] API: - -```javascript -const {app} = require('electron') -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -``` - -或者你也可以使用 [app.clearRecentDocuments][4] API 来清空最近文件列表。 - -```javascript -const {app} = require('electron') -app.clearRecentDocuments() -``` - -## Windows 需注意 -为了这个特性在 Windows 上表现正常,你的应用需要被注册成为一种文件类型的句柄,否则,在你注册之前,文件不会出现在跳转列表。你可以在 [Application Registration][app-registration] 里找到任何关于注册事宜的说明。 - -当用户点击从“跳转列表”点击一个文件,你的应用程序的新实例 -将以添加为命令行参数的文件的路径启动。 - -## macOS 需注意 - -当一个文件被最近文件列表请求时,`app` 模块里的 `open-file` 事件将会被发出。 - -## 自定义的鱼眼菜单(macOS) - -macOS 可以让开发者定制自己的菜单,通常会包含一些常用特性的快捷方式。 - -### 菜单中的终端 - -__Dock menu of Terminal.app:__ - - - -使用 `app.dock.setMenu` API 来设置你的菜单,这仅在 macOS 上可行: - -```javascript -const {app, Menu} = require('electron') - -const dockMenu = Menu.buildFromTemplate([ - {label: 'New Window', click () { console.log('New Window') }}, - {label: 'New Window with Settings', - submenu: [ - {label: 'Basic'}, - {label: 'Pro'} - ] - }, - {label: 'New Command...'} -]) -app.dock.setMenu(dockMenu) -``` - -## 用户任务(Windows) - -在 Windows,你可以特别定义跳转列表的 `Tasks` 目录的行为,引用 MSDN 的文档: - -> Applications define tasks based on both the program's features and the key things a user is expected to do with them. Tasks should be context-free, in that the application does not need to be running for them to work. They should also be the statistically most common actions that a normal user would perform in an application, such as compose an email message or open the calendar in a mail program, create a new document in a word processor, launch an application in a certain mode, or launch one of its subcommands. An application should not clutter the menu with advanced features that standard users won't need or one-time actions such as registration. Do not use tasks for promotional items such as upgrades or special offers. - -> It is strongly recommended that the task list be static. It should remain the same regardless of the state or status of the application. While it is possible to vary the list dynamically, you should consider that this could confuse the user who does not expect that portion of the destination list to change. - -### IE 的任务 - -![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png) - -不同于 macOS 的鱼眼菜单,Windows 上的用户任务表现得更像一个快捷方式,比如当用户点击一个任务,一个程序将会被传入特定的参数并且运行。 - -你可以使用 [app.setUserTasks][setusertaskstasks] API 来设置你的应用中的用户任务: - -```javascript -const {app} = require('electron') -app.setUserTasks([ - { - program: process.execPath, - arguments: '--new-window', - iconPath: process.execPath, - iconIndex: 0, - title: 'New Window', - description: 'Create a new window' - } -]) -``` - -调用 `app.setUserTasks` 并传入空数组就可以清除你的任务列表: - -```javascript -const {app} = require('electron') -app.setUserTasks([]) -``` - -当你的应用关闭时,用户任务会仍然会出现,在你的应用被卸载前,任务指定的图标和程序的路径必须是存在的。 - -### 缩略图工具栏 - -在 Windows,你可以在任务栏上添加一个按钮来当作应用的缩略图工具栏。它将提供用户一种用户访问常用窗口的方式,并且不需要恢复或者激活窗口。 - -在 MSDN,它被如是说: -> This toolbar is simply the familiar standard toolbar common control. It has a maximum of seven buttons. Each button's ID, image, tooltip, and state are defined in a structure, which is then passed to the taskbar. The application can show, enable, disable, or hide buttons from the thumbnail toolbar as required by its current state. - -> For example, Windows Media Player might offer standard media transport controls such as play, pause, mute, and stop. - -### Windows Media Player 的缩略图工具栏 - -![Thumbnail toolbar of Windows Media Player](https://i-msdn.sec.s-msft.com/dynimg/IC420540.png) - -你可以使用 [BrowserWindow.setThumbarButtons][setthumbarbuttons] 来设置你的应用的缩略图工具栏。 - -```javascript -const {BrowserWindow} = require('electron') -const path = require('path') - -let win = new BrowserWindow({ - width: 800, - height: 600 -}) - -win.setThumbarButtons([ - { - tooltip: 'button1', - icon: path.join(__dirname, 'button1.png'), - click () { console.log('button1 clicked') } - }, - { - tooltip: 'button2', - icon: path.join(__dirname, 'button2.png'), - flags: ['enabled', 'dismissonclick'], - click () { console.log('button2 clicked.') } - } -]) -``` - -调用 `BrowserWindow.setThumbarButtons` 并传入空数组即可清空缩略图工具栏: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setThumbarButtons([]) -``` - -## Unity launcher 快捷方式(Linux) - -在 Unity,你可以通过改变 `.desktop` 文件来增加自定义运行器的快捷方式,详情看 [Adding Shortcuts to a Launcher][unity-launcher]。 - -__Launcher shortcuts of Audacious:__ - -![audacious](https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles?action=AttachFile&do=get&target=shortcuts.png) - -### Audacious 运行器的快捷方式: - -![Launcher shortcuts of Audacious][12] - -## 任务栏的进度条(Windows, macOS, Unity) - -在 Windows,进度条可以出现在一个任务栏按钮之上。这可以提供进度信息给用户而不需要用户切换应用窗口。 - -在 macOS,进度条将显示为 dock 图标的一部分。 - -Unity DE 也具有同样的特性,在运行器上显示进度条。 - -__Progress bar in taskbar button:__ - -![Taskbar Progress Bar](https://cloud.githubusercontent.com/assets/639601/5081682/16691fda-6f0e-11e4-9676-49b6418f1264.png) - -给一个窗口设置进度条,你可以调用 [BrowserWindow.setProgressBar][setprogressbar] API: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setProgressBar(0.5) -``` - - -## 任务栏中的叠加层图标 (Windows) - -在 Windows,任务栏按钮可以使用小型叠加层显示应用程序 -状态,引用 MSDN 的文档: - -> Icon overlays serve as a contextual notification of status, and are intended -> to negate the need for a separate notification area status icon to communicate -> that information to the user. For instance, the new mail status in Microsoft -> Outlook, currently shown in the notification area, can now be indicated -> through an overlay on the taskbar button. Again, you must decide during your -> development cycle which method is best for your application. Overlay icons are -> intended to supply important, long-standing status or notifications such as -> network status, messenger status, or new mail. The user should not be -> presented with constantly changing overlays or animations. - -__Overlay on taskbar button:__ - -![Overlay on taskbar button](https://i-msdn.sec.s-msft.com/dynimg/IC420441.png) - -要设置窗口的叠加层图标,可以使用 -[BrowserWindow.setOverlayIcon][setoverlayicon] API: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setOverlayIcon('path/to/overlay.png', 'Description for overlay') -``` - -## 突出显示框架 (Windows) - -在 Windows,你可以突出显示任务栏按钮,以获得用户的关注。 -这类似于在 macOS 上弹出 dock 图标。 -在 MSDN,它如是说: - -> Typically, a window is flashed to inform the user that the window requires -> attention but that it does not currently have the keyboard focus. - -要在 BrowserWindow 的任务栏按钮突出显示,可以使用 -[BrowserWindow.flashFrame][flashframe] API: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.once('focus', () => win.flashFrame(false)) -win.flashFrame(true) -``` - -不要忘记在调用 `flashFrame` 方法后,设置 `false` 来关闭突出显示。 在 -上面的例子,它是在窗口进入焦点时调用的,但你可能会 -使用超时或某些其他事件来禁用它。 - -## 展示文件窗口 (macOS) - -在 macOS,一个窗口可以设置它展示的文件,文件的图标可以出现在标题栏,当用户 Command-Click 或者 Control-Click 标题栏,文件路径弹窗将会出现。 - -您还可以设置窗口的编辑状态,以便文件图标可以指示 -该窗口中的文档是否已修改。 - -__Represented file popup menu:__ - - - -要设置展示文件窗口,可以使用 -[BrowserWindow.setRepresentedFilename][setrepresentedfilename] 和 -[BrowserWindow.setDocumentEdited][setdocumentedited] APIs: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setRepresentedFilename('/etc/passwd') -win.setDocumentEdited(true) -``` - -## 将文件拖出窗口 - -对于某些操作文件的应用程序, -将文件从 Electron 拖动到其他应用程序是很重要的能力。要在 app 的实现此功能 -,你需要在 `ondragstart` 事件上调用 `webContents.startDrag(item)` API。 - -在网页端: - -```html -item - -``` - -在主进程: - -```javascript -const {ipcMain} = require('electron') -ipcMain.on('ondragstart', (event, filePath) => { - event.sender.startDrag({ - file: filePath, - icon: '/path/to/icon.png' - }) -}) -``` - -[addrecentdocument]: ../api/app.md#appaddrecentdocumentpath-os-x-windows -[clearrecentdocuments]: ../api/app.md#appclearrecentdocuments-os-x-windows -[setusertaskstasks]: ../api/app.md#appsetusertaskstasks-windows -[setprogressbar]: ../api/browser-window.md#winsetprogressbarprogress -[setoverlayicon]: ../api/browser-window.md#winsetoverlayiconoverlay-description-windows-7 -[setrepresentedfilename]: ../api/browser-window.md#winsetrepresentedfilenamefilename-os-x -[setdocumentedited]: ../api/browser-window.md#winsetdocumenteditededited-os-x -[app-registration]: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx -[unity-launcher]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher -[setthumbarbuttons]: ../api/browser-window.md#winsetthumbarbuttonsbuttons-windows-7 -[tray-balloon]: ../api/tray.md#traydisplayballoonoptions-windows -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[notification-spec]: https://developer.gnome.org/notification-spec/ -[flashframe]: ../api/browser-window.md#winflashframeflag diff --git a/docs-translations/zh-CN/tutorial/devtools-extension.md b/docs-translations/zh-CN/tutorial/devtools-extension.md deleted file mode 100644 index 77d5ae2d0438..000000000000 --- a/docs-translations/zh-CN/tutorial/devtools-extension.md +++ /dev/null @@ -1,48 +0,0 @@ -# DevTools扩展 - -为了使调试更容易,Electron 原生支持 [Chrome DevTools Extension][devtools-extension]。 - -## 如何加载 DevTools 扩展 - -对于大多数DevTools的扩展,你可以直接下载源码,然后通过 `BrowserWindow.addDevToolsExtension` API 加载它们。Electron会记住已经加载了哪些扩展,所以你不需要每次创建一个新window时都调用 `BrowserWindow.addDevToolsExtension` API。 - -** 注:React DevTools目前不能直接工作,详情留意 [https://github.com/electron/electron/issues/915](https://github.com/electron/electron/issues/915) ** - -例如,要用[React DevTools Extension](https://github.com/facebook/react-devtools),你得先下载他的源码: - -```bash -$ cd /some-directory -$ git clone --recursive https://github.com/facebook/react-devtools.git -``` - -参考 [`react-devtools/shells/chrome/Readme.md`](https://github.com/facebook/react-devtools/blob/master/shells/chrome/Readme.md) 来编译这个扩展源码。 - -然后你就可以在任意页面的 DevTools 里加载 React DevTools 了,通过控制台输入如下命令加载扩展: - -```javascript -const BrowserWindow = require('electron').remote.BrowserWindow -BrowserWindow.addDevToolsExtension('/some-directory/react-devtools/shells/chrome') -``` - -要卸载扩展,可以调用 `BrowserWindow.removeDevToolsExtension` API (扩展名作为参数传入),该扩展在下次打开DevTools时就不会加载了: - -```javascript -BrowserWindow.removeDevToolsExtension('React Developer Tools') -``` - -## DevTools 扩展的格式 - -理论上,Electron 可以加载所有为 chrome 浏览器编写的 DevTools 扩展,但它们必须存放在文件夹里。那些以 `crx` 形式发布的扩展是不能被加载的,除非你把它们解压到一个文件夹里。 - -## 后台运行(background pages) - -Electron 目前并不支持 chrome 扩展里的后台运行(background pages)功能,所以那些依赖此特性的 DevTools 扩展在 Electron 里可能无法正常工作。 - -## `chrome.*` APIs - -有些 chrome 扩展使用了 `chrome.*`APIs,而且这些扩展在 Electron 中需要额外实现一些代码才能使用,所以并不是所有的这类扩展都已经在 Electron 中实现完毕了。 - -考虑到并非所有的 `chrome.*`APIs 都实现完毕,如果 DevTools 正在使用除了 `chrome.devtools.*` 之外的其它 APIs,这个扩展很可能无法正常工作。你可以通过报告这个扩展的异常信息,这样做方便我们对该扩展的支持。 - -[devtools-extension]: https://developer.chrome.com/extensions/devtools -[react-devtools]: https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi diff --git a/docs-translations/zh-CN/tutorial/electron-versioning.md b/docs-translations/zh-CN/tutorial/electron-versioning.md deleted file mode 100644 index 7027347b3927..000000000000 --- a/docs-translations/zh-CN/tutorial/electron-versioning.md +++ /dev/null @@ -1,11 +0,0 @@ -# Electron 版本管理 - -如果你是一个经验丰富的Node开发人员,你肯定知道`semver` - 然而这里给你的依赖管理系统可能只有粗略的指导建议而不是固定的版本号。由于对 Node 和 Chromium 的硬性依赖,Electron 处于一个稍微复杂的境地,而且不遵循semver。因此,您应该始终引用特定版本的Electron。 - -版本号使用参照以下规则: - -* 主要版本: 适用于 Electron API 的突破性变更 - 如果您从 `0.37.0` 升级到 `1.0.0`, 您将需要升级您的应用程序。 -* 次要版本: 适用于 Chrome 主要版本 和 Node 次要版本升级; 或重大的 Electron 变动 - 如果您从 `1.0.0` 升级到 `1.1.0`, 您的应用程序仍然可以正常运行, 但你可能需要解决一些小幅的变动。 -* 补丁版本: 适用于新功能的添加和 bug 修复 - 如果您从 `1.0.0` 升级到 `1.0.1`, 你的应用程序仍然像之前一样正常运行。 - -如果你使用 `electron` 或 `electron-prebuilt`,我们建议您设置固定的版本号(如 1.1.0 而不是 ^1.1.0),以确保Electron的所有升级都是由您(开发人员)进行的手动操作。 diff --git a/docs-translations/zh-CN/tutorial/keyboard-shortcuts b/docs-translations/zh-CN/tutorial/keyboard-shortcuts deleted file mode 100644 index bea680400172..000000000000 --- a/docs-translations/zh-CN/tutorial/keyboard-shortcuts +++ /dev/null @@ -1,82 +0,0 @@ -# 键盘快捷键 - -> 配置本地和全局键盘快捷键 - -## 本地快捷键 - -您可以使用 [Menu] 模块来配置快捷键,只有在 app 处于焦点状态时才可以触发快捷键。为此,在创建 [MenuItem] 时必须指定一个 [`accelerator`] 属性。 - -```js -const {Menu, MenuItem} = require('electron') -const menu = new Menu() - -menu.append(new MenuItem({ - label: 'Print', - accelerator: 'CmdOrCtrl+P', - click: () => { console.log('打印时间') } -})) -``` - -还可以很容易的根据用户的操作系统配置不同的组合键。 - -```js -{ - accelerator: process.platform === 'darwin' ? 'Alt+Cmd+I' : 'Ctrl+Shift+I' -} -``` - -## 全局快捷键 -当应用程式不处于焦点状态时,你可以使用 [globalShortcut] 模块来检测键盘事件, - -```js -const {app, globalShortcut} = require('electron') - -app.on('ready', () => { - globalShortcut.register('CommandOrControl+X', () => { - console.log('CommandOrControl+X is pressed') - }) -}) -``` - -## BrowserWindow 中的快捷键 -如果你想处理 [BrowserWindow] 中的键盘快捷键,你可以监听渲染进程中 window 对象的 `keyup` 和 `keydown` 事件。 - -```js -window.addEventListener('keyup', doSomething, true) -``` -注意第三个参数 `true`,这意味着监听器总是在其他监听器之前接收按键,所以它们不能对它们调用 `stopPropagation()`。 - -如果您不想手动进行快捷键解析,可以使用一些库来进行高级的按键检测。例如 [mousetrap]. - -```js -Mousetrap.bind('4', () => { console.log('4') }) -Mousetrap.bind('?', () => { console.log('show shortcuts!') }) -Mousetrap.bind('esc', () => { console.log('escape') }, 'keyup') - -// 组合 -Mousetrap.bind('command+shift+k', () => { console.log('command shift k') }) - -// 将多个组合映射到相同的回调 -Mousetrap.bind(['command+k', 'ctrl+k'], () => { - console.log('command k or control k') - - // 返回 false 以防止默认行为,并阻止事件冒泡 - return false -}) - -// gmail 风格序列 -Mousetrap.bind('g i', () => { console.log('go to inbox') }) -Mousetrap.bind('* a', () => { console.log('select all') }) - -// konami 代码 -Mousetrap.bind('up up down down left right left right b a enter', () => { - console.log('konami code') -}) -``` - -[Menu]: ../api/menu.md -[MenuItem]: ../api/menu-item.md -[globalShortcut]: ../api/global-shortcut.md -[`accelerator`]: ../api/accelerator.md -[BrowserWindow]: ../api/browser-window.md -[mousetrap]: https://github.com/ccampbell/mousetrap diff --git a/docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md b/docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md deleted file mode 100644 index 3263d7781622..000000000000 --- a/docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md +++ /dev/null @@ -1,243 +0,0 @@ -# Mac App Store 应用提交向导 - -自从 v0.34.0,Electron 就允许提交应用包到 Mac App Store -(MAS)。这个向导提供的信息有: 如何提交应用和 MAS 构建的限制。 - -__注意:__ 提交应用到 Mac App Store 需要参加 [Apple Developer -Program][developer-program],这需要额外花费。 - -## 如何提交 - -下面步骤介绍了一个简单的提交应用到商店方法。然而,这些步骤不能保证你的应用被 Apple 接受;你仍然需要阅读 Apple 的 [Submitting Your App][submitting-your-app] 关于如何满足 Mac App Store 要求的向导。 - -### 获得证书 - -为了提交应用到商店,首先需要从 Apple 获得一个证书。可以遵循 [现有向导][nwjs-guide]。 - -### 获得 Team ID - -在软件签名之前,你需要知道开发者账户的 Team ID。 -查看 Team ID,登录 [Apple Developer Center](https://developer.apple.com/account/) 并点击侧边栏的 Membership。 -你可以在团队名称下面的 Membership Information 部分查看到 Team ID。 - -### 软件签名 - -获得证书之后,你可以使用 [应用部署](application-distribution.md) 打包你的应用,之后进行提交。 - -首先,你需要在软件包内的 `Info.plist` 中增添一项 `ElectronTeamID`: - -```xml - - - ... - ElectronTeamID - TEAM_ID - - -``` - -之后,你需要准备2个授权文件。 - -`child.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.inherit - - - -``` - -`parent.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.application-groups - TEAM_ID.your.bundle.id - - -``` - -请注意上述 `TEAM_ID` 对应开发者账户的 Team ID,`your.bundle.id` 对应软件打包时使用的 Bundle ID。 - -然后使用下面的脚本签名你的应用: - -```bash -#!/bin/bash - -# 应用名称 -APP="YourApp" -# 应用路径 -APP_PATH="/path/to/YourApp.app" -# 生成安装包路径 -RESULT_PATH="~/Desktop/$APP.pkg" -# 开发者应用签名证书 -APP_KEY="3rd Party Mac Developer Application: Company Name (APPIDENTITY)" -INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)" -# 授权文件路径 -CHILD_PLIST="/path/to/child.plist" -PARENT_PLIST="/path/to/parent.plist" - -FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" - -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper EH.app/Contents/MacOS/$APP Helper EH" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper EH.app/" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper NP.app/Contents/MacOS/$APP Helper NP" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper NP.app/" -codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/MacOS/$APP" -codesign -s "$APP_KEY" -f --entitlements "$PARENT_PLIST" "$APP_PATH" - -productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" -``` - -如果你是 macOS 下的应用沙箱使用新手,应当仔细阅读 Apple 的 [Enabling App Sandbox][enable-app-sandbox] 了解一些基础,然后在授权文件 (entitlements files) 内添加你的应用需要的许可。 - -除了手动签名你的应用,你也可以选择使用 -[electron-osx-sign][electron-osx-sign] 模块来做这项工作。 - -#### 原生模块签名 - -应用程序中的原生模块也需要签署。如果使用 -electron-osx-sign,确保已生成二进制文件的路径包含在 -参数列表: - -```bash -electron-osx-sign YourApp.app YourApp.app/Contents/Resources/app/node_modules/nativemodule/build/release/nativemodule -``` - -还要注意,原生模块可能产生的中间文件 -不包括在内(因为它们也需要签署)。如果你使用 -[electron-packager][electron-packager] 8.1.0 之前的版本,在构建步骤中添加 - `--ignore=.+\.o$` 以忽略这些文件。8.1.0及 -以后的版本默认情况下会忽略这些文件。 - -### 上传你的应用 - -在签名应用之后,你可以使用 Application Loader 上传软件到 iTunes Connect 进行处理。请确保在上传之前你已经 [创建应用记录][create-record]。 - -### 检查并提交你的应用 - -最后, 你可以 [检查并提交你的应用][submit-for-review]。 - -## MAS 构建限制 - -为了让你的应用满足沙箱的所有条件,在 MAS 构建的时候,下面的模块已被禁用: - -* `crashReporter` -* `autoUpdater` - -并且下面的行为也改变了: - -* 一些视频采集功能无效。 -* 某些辅助功能无法访问。 -* 应用无法检测 DNS 变化。 -* 在登录时启动应用程序的 API 被禁用。详见 -https://github.com/electron/electron/issues/7312#issuecomment-249479237 - -也由于应用沙箱的使用方法,应用可以访问的资源被严格限制了;阅读更多信息 [App Sandboxing][app-sandboxing]。 - -### 附加授权 - -根据应用使用的 Electron API,你可能需要添加附加授权 -在 `parent.plist` 文件,在 Mac App Store 发布应用程序的时候能够使用这些API。 - -#### 网络访问 - -启用传出的网络连接,允许你的应用程序连接到服务器: - -```xml -com.apple.security.network.client - -``` - -启用传入的网络连接,让你的应用程序打开网络 socket 监听: - - -```xml -com.apple.security.network.server - -``` - -详情查看 [Enabling Network Access documentation][network-access] - -#### dialog.showOpenDialog - -```xml -com.apple.security.files.user-selected.read-only - -``` - -详情查看 [Enabling User-Selected File Access documentation][user-selected] - -#### dialog.showSaveDialog - -```xml -com.apple.security.files.user-selected.read-write - -``` - -详情查看 [Enabling User-Selected File Access documentation][user-selected] - -## Electron 使用的加密算法 - -取决于你所在地方的国家和地区,Mac App Store 或许需要记录你应用的加密算法,甚至要求你提交一个 U.S. 加密注册 (ERN) 许可的复印件。 - -Electron 使用下列加密算法: - -* AES - [NIST SP 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf), [NIST SP 800-38D](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf), [RFC 3394](http://www.ietf.org/rfc/rfc3394.txt) -* HMAC - [FIPS 198-1](http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf) -* ECDSA - ANS X9.62–2005 -* ECDH - ANS X9.63–2001 -* HKDF - [NIST SP 800-56C](http://csrc.nist.gov/publications/nistpubs/800-56C/SP-800-56C.pdf) -* PBKDF2 - [RFC 2898](https://tools.ietf.org/html/rfc2898) -* RSA - [RFC 3447](http://www.ietf.org/rfc/rfc3447) -* SHA - [FIPS 180-4](http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf) -* Blowfish - https://www.schneier.com/cryptography/blowfish/ -* CAST - [RFC 2144](https://tools.ietf.org/html/rfc2144), [RFC 2612](https://tools.ietf.org/html/rfc2612) -* DES - [FIPS 46-3](http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf) -* DH - [RFC 2631](https://tools.ietf.org/html/rfc2631) -* DSA - [ANSI X9.30](http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.30-1%3A1997) -* EC - [SEC 1](http://www.secg.org/sec1-v2.pdf) -* IDEA - "On the Design and Security of Block Ciphers" book by X. Lai -* MD2 - [RFC 1319](http://tools.ietf.org/html/rfc1319) -* MD4 - [RFC 6150](https://tools.ietf.org/html/rfc6150) -* MD5 - [RFC 1321](https://tools.ietf.org/html/rfc1321) -* MDC2 - [ISO/IEC 10118-2](https://www.openssl.org/docs/manmaster/crypto/mdc2.html) -* RC2 - [RFC 2268](https://tools.ietf.org/html/rfc2268) -* RC4 - [RFC 4345](https://tools.ietf.org/html/rfc4345) -* RC5 - http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf -* RIPEMD - [ISO/IEC 10118-3](http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%2010118-3:2004) - -如何获取 ERN 许可, 可看这篇文章:[How to legally -submit an app to Apple’s App Store when it uses encryption (or how to obtain an -ERN)][ern-tutorial]。 - -[developer-program]: https://developer.apple.com/support/compare-memberships/ -[submitting-your-app]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppDistributionGuide/SubmittingYourApp/SubmittingYourApp.html -[nwjs-guide]: https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline#first-steps -[enable-app-sandbox]: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html -[create-record]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.html -[electron-osx-sign]: https://github.com/electron-userland/electron-osx-sign -[electron-packager]: https://github.com/electron-userland/electron-packager -[submit-for-review]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html -[app-sandboxing]: https://developer.apple.com/app-sandboxing/ -[ern-tutorial]: https://carouselapps.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/ -[temporary-exception]: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html -[user-selected]: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW6 -[network-access]: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW9 diff --git a/docs-translations/zh-CN/tutorial/notifications.md b/docs-translations/zh-CN/tutorial/notifications.md deleted file mode 100644 index 41ed77820bcb..000000000000 --- a/docs-translations/zh-CN/tutorial/notifications.md +++ /dev/null @@ -1,57 +0,0 @@ -# 通知 (Windows, Linux, macOS) - -所有三个操作系统都提供了应用程序向用户发送通知的手段。Electron允许开发者使用 [HTML5 Notification API](https://notifications.spec.whatwg.org/) 发送通知,并使用当前运行的操作系统的本地通知 API 来显示它。 - -**注意:** 由于这是一个 HTML5 API,它只能在渲染器进程中使用。 如果你想在主进程中显示通知,请查看 [Notification](../api/notification.md) 模块. - -```javascript -let myNotification = new Notification('标题', { - body: '通知正文内容' -}) - -myNotification.onclick = () => { - console.log('通知被点击') -} -``` - -虽然操作系统的代码和用户体验相似,但依然存在微妙的差异。 - -## Windows - -* 在 Windows 10 上, 通知 "仅能运行". -* 在 Windows 8.1 和 Windows 8 上, 你的应用程序的快捷方式,[Application User Model ID][app-user-model-id],必须安装到 “开始” 屏幕。但是请注意,它不需要被固定到开始屏幕。 -* 在 Windows 7 上, 通知通过视觉上类似于较新系统原生的一个自定义的实现来工作。 - -此外,在Windows 8中,通知正文的最大长度为250个字符,Windows团队建议将通知保留为200个字符。 然而,Windows 10中已经删除了这个限制,但是Windows团队要求开发人员合理使用。 尝试将大量文本发送到API(数千个字符)可能会导致不稳定。 - -### 高级通知 - -Windows 的更高版本允许高级通知,自定义模板,图像和其他灵活元素。 要发送这些通知(来自主进程或渲染器进程),请使用用户区模块 [electron-windows-notifications](https://github.com/felixrieseberg/electron-windows-notifications) 来用原生节点附件发送 `ToastNotification` 和 `TileNotification` 对象。 - -虽然包含按钮的通知只能使用 `electron-windows-notifications`,但处理回复则需要使用[`electron-windows-interactive-notifications`](https://github.com/felixrieseberg/electron-windows-interactive-notifications),这有助于注册所需的COM组件,并使用输入的用户数据调用Electron应用程序。 - -### 免打扰模式 / 演示模式 - -要检测是否允许发送通知,请使用用户区模块 [electron-notification-state](https://github.com/felixrieseberg/electron-notification-state)。 - -这样,您可以提前确定 Windows 是否会将通知忽略。 - -## macOS - -macOS上的通知是最直接的,但你应该注意 [苹果关于通知的人机接口指南](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html). - -请注意,通知的大小限制为256个字节,如果超过该限制,则会被截断。 - -### 高级通知 - -后来的 macOS 版本允许有一个输入字段的通知,允许用户快速回复通知。为了通过输入字段发送通知,请使用用户区模块 [node-mac-notifier](https://github.com/CharlieHess/node-mac-notifier)。 - -### 勿扰 / 会话状态 - -要检测是否允许发送通知,请使用用户区模块 [electron-notification-state](https://github.com/felixrieseberg/electron-notification-state). - -这样可以提前检测是否显示通知。 - -## Linux - -通知使用 `libnotify` 发送,可以在 [Desktop Notifications Specification] [notification-spec] 之后的任何桌面环境中显示通知,包括 Cinnamon, Enlightenment, Unity, GNOME, KDE. diff --git a/docs-translations/zh-CN/tutorial/offscreen-rendering.md b/docs-translations/zh-CN/tutorial/offscreen-rendering.md deleted file mode 100644 index bff3f939fb37..000000000000 --- a/docs-translations/zh-CN/tutorial/offscreen-rendering.md +++ /dev/null @@ -1,44 +0,0 @@ -# 离屏渲染 - -离线渲染允许您在位图中获取浏览器窗口的内容,因此可以在任何地方渲染,例如在3D场景中的纹理。Electron中的离屏渲染使用与 [Chromium -Embedded Framework](https://bitbucket.org/chromiumembedded/cef) 项目类似的方法。 - -可以使用两种渲染模式,并且只有脏区通过 `'paint'` 事件才能更高效。渲染可以停止、继续,并且可以设置帧速率。 指定的帧速率是上限值,当网页上没有发生任何事件时,不会生成任何帧。 最大帧速率是60,因为再高没有好处,而且损失性能。 - -**注意:** 屏幕窗口始终创建为 [Frameless Window](../api/frameless-window.md). - -## 两种渲染模式 - -### GPU加速 - -GPU加速渲染意味着使用GPU用于合成。因为帧必须从需要更多性能的GPU中复制,因此这种模式比另一个模式慢得多。这种模式的优点是支持WebGL和3D CSS动画。 - -### 软件输出设备 - -此模式使用软件输出设备在CPU中渲染,因此帧生成速度更快,因此此模式优先于GPU加速模式。 - -要启用此模式,必须通过调用 [`app.disableHardwareAcceleration()`][disablehardwareacceleration] API 来禁用GPU加速。 - -## 使用 - -``` javascript -const {app, BrowserWindow} = require('electron') - -app.disableHardwareAcceleration() - -let win -app.once('ready', () => { - win = new BrowserWindow({ - webPreferences: { - offscreen: true - } - }) - win.loadURL('http://github.com') - win.webContents.on('paint', (event, dirty, image) => { - // updateBitmap(dirty, image.getBitmap()) - }) - win.webContents.setFrameRate(30) -}) -``` - -[disablehardwareacceleration]: ../api/app.md#appdisablehardwareacceleration diff --git a/docs-translations/zh-CN/tutorial/online-offline-events.md b/docs-translations/zh-CN/tutorial/online-offline-events.md deleted file mode 100644 index a5d66909a062..000000000000 --- a/docs-translations/zh-CN/tutorial/online-offline-events.md +++ /dev/null @@ -1,85 +0,0 @@ -# 在线/离线事件探测 - -使用标准 HTML5 APIs 可以实现在线和离线事件的探测,就像以下例子: - -_main.js_ - -```javascript -const {app, BrowserWindow} = require('electron') - -let onlineStatusWindow - -app.on('ready', () => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -也会有人想要在主进程也有回应这些事件的实例。然后主进程没有 `navigator` 对象因此不能直接探测在线还是离线。使用 Electron 的进程间通讯工具,事件就可以在主进程被使用,就像下面的例子: - -*main.js* - -```javascript -const {app, BrowserWindow, ipcMain} = require('electron') -let onlineStatusWindow - -app.on('ready', () => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) - -ipcMain.on('online-status-changed', (event, status) => { - console.log(status) -}) -``` - -*online-status.html* - -```html - - - - - - -``` - -**注意:** 如果 Electron 无法连接到局域网(LAN)或 -一个路由器,它被认为是离线的; 所有其他条件返回 `true`。 -所以,虽然你可以假设 Electron 是离线的,当 `navigator.onLine` -返回一个 `false' 值,你不能假设一个 'true' 值必然 -意味着 Electron 可以访问互联网。你可能会获得虚假 -连接,例如在计算机运行虚拟化软件的情况下, -具有始终“连接”的虚拟以太网适配器。 -因此,如果您真的想确定 Electron 的互联网访问状态, -你应该开发额外的检查手段。 diff --git a/docs-translations/zh-CN/tutorial/quick-start.md b/docs-translations/zh-CN/tutorial/quick-start.md deleted file mode 100644 index 92c2fdbddd6d..000000000000 --- a/docs-translations/zh-CN/tutorial/quick-start.md +++ /dev/null @@ -1,200 +0,0 @@ -# 快速入门 - -Electron 可以让你使用纯 JavaScript 调用丰富的原生 APIs 来创造桌面应用。你可以把它看作一个专注于桌面应用的 Node.js 的变体,而不是 Web 服务器。 - -这不意味着 Electron 是绑定了 GUI 库的 JavaScript。相反,Electron 使用 web 页面作为它的 GUI,所以你能把它看作成一个被 JavaScript 控制的,精简版的 Chromium 浏览器。 - -## 主进程 - -在 Electron 里,运行 `package.json` 里 `main` 脚本的进程被称为**主进程**。在主进程运行的脚本可以以创建 web 页面的形式展示 GUI。 - -## 渲染进程 - -由于 Electron 使用 Chromium 来展示页面,所以 Chromium 的多进程结构也被充分利用。每个 Electron 的页面都在运行着自己的进程,这样的进程我们称之为**渲染进程**。 - -在一般浏览器中,网页通常会在沙盒环境下运行,并且不允许访问原生资源。然而,Electron 用户拥有在网页中调用 Node.js 的 APIs 的能力,可以与底层操作系统直接交互。 - -## 主进程与渲染进程的区别 - -主进程使用 `BrowserWindow` 实例创建页面。每个 `BrowserWindow` 实例都在自己的渲染进程里运行页面。当一个 `BrowserWindow` 实例被销毁后,相应的渲染进程也会被终止。 - -主进程管理所有页面和与之对应的渲染进程。每个渲染进程都是相互独立的,并且只关心他们自己的页面。 - -由于在页面里管理原生 GUI 资源是非常危险而且容易造成资源泄露,所以在页面调用 GUI 相关的 APIs 是不被允许的。如果你想在网页里使用 GUI 操作,其对应的渲染进程必须与主进程进行通讯,请求主进程进行相关的 GUI 操作。 - -在 Electron,我们提供几种方法用于主进程和渲染进程之间的通讯。像 [`ipcRenderer`](../api/ipc-renderer.md) 和 [`ipcMain`](../api/ipc-main.md) 模块用于发送消息, [remote](../api/remote.md) 模块用于 RPC 方式通讯。这些内容都可以在一个 FAQ 中查看 [how to share data between web pages][share-data]。 - -# 打造你第一个 Electron 应用 - -大体上,一个 Electron 应用的目录结构如下: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -`package.json` 的格式和 Node 的完全一致,并且那个被 `main` 字段声明的脚本文件是你的应用的启动脚本,它运行在主进程上。你应用里的 `package.json` 看起来应该像: - -```json -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -**注意**:如果 `main` 字段没有在 `package.json` 声明,Electron会优先加载 `index.js`。 - -`main.js` 应该用于创建窗口和处理系统事件,一个典型的例子如下: - -```javascript -const {app, BrowserWindow} = require('electron') -const path = require('path') -const url = require('url') - -// 保持一个对于 window 对象的全局引用,如果你不这样做, -// 当 JavaScript 对象被垃圾回收, window 会被自动地关闭 -let win - -function createWindow () { - // 创建浏览器窗口。 - win = new BrowserWindow({width: 800, height: 600}) - - // 加载应用的 index.html。 - win.loadURL(url.format({ - pathname: path.join(__dirname, 'index.html'), - protocol: 'file:', - slashes: true - })) - - // 打开开发者工具。 - win.webContents.openDevTools() - - // 当 window 被关闭,这个事件会被触发。 - win.on('closed', () => { - // 取消引用 window 对象,如果你的应用支持多窗口的话, - // 通常会把多个 window 对象存放在一个数组里面, - // 与此同时,你应该删除相应的元素。 - win = null - }) -} - -// Electron 会在初始化后并准备 -// 创建浏览器窗口时,调用这个函数。 -// 部分 API 在 ready 事件触发后才能使用。 -app.on('ready', createWindow) - -// 当全部窗口关闭时退出。 -app.on('window-all-closed', () => { - // 在 macOS 上,除非用户用 Cmd + Q 确定地退出, - // 否则绝大部分应用及其菜单栏会保持激活。 - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // 在这文件,你可以续写应用剩下主进程代码。 - // 也可以拆分成几个文件,然后用 require 导入。 - if (win === null) { - createWindow() - } -}) - -// 在这文件,你可以续写应用剩下主进程代码。 -// 也可以拆分成几个文件,然后用 require 导入。 -``` - -最后,你想展示的 `index.html`: - -```html - - - - - Hello World! - - -

Hello World!

- We are using node , - Chrome , - and Electron . - - -``` - -# 运行你的应用 - -一旦你创建了最初的 `main.js`, `index.html` 和 `package.json` 这几个文件,你可能会想尝试在本地运行并测试,看看是不是和期望的那样正常运行。 - -## electron-prebuilt - -[`electron`](https://github.com/electron-userland/electron-prebuilt) 是一个 `npm` 模块,包含所使用的 Electron 预编译版本。 -如果你已经用 `npm` 全局安装了它,你只需要按照如下方式直接运行你的应用: - -```bash -electron . -``` - -如果你是局部安装,那运行: - -#### macOS / Linux - -```bash -$ ./node_modules/.bin/electron . -``` - -#### Windows - -```bash -$ .\node_modules\.bin\electron . -``` - -## 手工下载 Electron 二进制文件 - -如果你手工下载了 Electron 的二进制文件,你也可以直接使用其中的二进制文件直接运行你的应用。 - -### Windows - -```bash -$ .\electron\electron.exe your-app\ -``` - -### Linux - -```bash -$ ./electron/electron your-app/ -``` - -### macOS - -```bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` 里面是 Electron 发布包,你可以在 [这里](https://github.com/electron/electron/releases) 下载到。 - -# 以发行版本运行 - -在你完成了你的应用后,你可以按照 [应用部署](./application-distribution.md) 指导发布一个版本,并且以已经打包好的形式运行应用。 - -# 参照下面例子 - -复制并且运行这个库 [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start)。 - -**注意:**运行时需要你的系统已经安装了 [Git](https://git-scm.com) 和 [Node.js](https://nodejs.org/en/download/)(包含 [npm](https://npmjs.org))。 - -```bash -# 克隆这仓库 -$ git clone https://github.com/electron/electron-quick-start -# 进入仓库 -$ cd electron-quick-start -# 安装依赖库并运行应用 -$ npm install && npm start -``` - -更多 apps 例子,查看 electron 社区创建的 [list of boilerplates](https://electron.atom.io/community/#boilerplates)。 - -[share-data]: ../faq.md#how-to-share-data-between-web-pages diff --git a/docs-translations/zh-CN/tutorial/repl.md b/docs-translations/zh-CN/tutorial/repl.md deleted file mode 100644 index c23a4fc951ef..000000000000 --- a/docs-translations/zh-CN/tutorial/repl.md +++ /dev/null @@ -1,22 +0,0 @@ -# 交互式解释器 (REPL) - -读取(Read)-运算(Eval)-输出(Print)-循环(Loop) (REPL) 是很简单的, 交互式的计算机编程环境,它采用单个用户输入,运算并返回结果给用户。 - -在这里 `repl` 模块提供了一个 REPL 的实现, 可以这样使用: - -* 如果你的 `electron` 或 `electron-prebuilt` 已经安装为本地项目依赖项: - - ```sh - ./node_modules/.bin/electron --interactive - ``` -* 如果你的 `electron` 或 `electron-prebuilt` 已经为全局方式安装: - - ```sh - electron --interactive - ``` - -这里只会为主进程创建一个REPL。 您可以使用 Dev Tools 的“控制台”选项卡来为渲染器进程获取一个REPL。 - -**注意:** `electron --interactive` 在 Windows 上不可用. - -更多的内容可以在这里找到 [Node.js REPL docs](https://nodejs.org/dist/latest/docs/api/repl.html). diff --git a/docs-translations/zh-CN/tutorial/security.md b/docs-translations/zh-CN/tutorial/security.md deleted file mode 100644 index b546f5c5aef3..000000000000 --- a/docs-translations/zh-CN/tutorial/security.md +++ /dev/null @@ -1,46 +0,0 @@ -# 安全,本地功能和你的责任 - -作为 web 开发人员,我们通常喜欢网络安全性更强大的浏览器 - 与我们编写的代码相关的风险相对较小。我们的网站在沙箱中获得有限的权限,我们相信我们的用户可以享受由大量工程师团队构建的浏览器,能够快速响应新发现的安全威胁。 - -当使用 Electron 时,要知道 Electron 不是一个 Web 浏览器很重要。它允许您使用熟悉的 Web 技术构建功能丰富的桌面应用程序,但是您的代码具有更强大的功能。 JavaScript 可以访问文件系统,用户 shell 等。这允许您构建更高质量的本机应用程序,但是内在的安全风险会随着授予您的代码的额外权力而增加。 - -考虑到这一点,请注意,在 Electron 不任何处理的情况下显示来自不受信任的来源的任何内容将带来了严重的安全风险。事实上,最流行的 Electron 应用程序(Atom,Slack,Visual Studio Code 等)主要显示本地内容(或没有 Node 集成的可信安全远程内容) - 如果您的应用程序从在线源执行代码,那么您有责任确保代码不是恶意的。 - -## 报告安全问题 - -有关如何正确上报 Electron 漏洞的信息,参阅 [SECURITY.md](https://github.com/electron/electron/tree/master/SECURITY.md) - -## Chromium 安全问题和升级 - -尽管 Electron 努力尽快支持新版本的 Chromium,但开发人员应该意识到,升级是一项严肃的工作 - 涉及手动编辑几十个甚至几百个文件。 考虑到当前的资源和贡献,Electron 通常不会是最新版本的 Chromium,总是落后于一两天或几周。 - -我们认为,我们当前的更新 Chromium 组件的系统在我们可用的资源和构建在框架之上的大多数应用程序的需求之间取得了适当的平衡。 我们绝对有兴趣听听更多关于在 Electron 上构建事物的人的具体用例。 非常欢迎提出请求并且捐助支持我们的努力。 - -## 除了以上建议 - -每当您从远程目标收到代码并在本地执行它时,就会存在安全问题。 举个例子,比如在浏览器窗口内显示的远程网站。 如果攻击者以某种方式设法改变所述内容(通过直接攻击源或者通过在应用和实际目的地之间进行攻击),他们将能够在用户的机器上执行本地代码。 - -> :警告: 在任何情况下都不应该在启用了 Node 集成时加载并执行远程代码. 反而应该只使用本地文件(与应用程序一起打包)来执行 Node 代码。要显示远程内容, 应使用 `webview` 标签并确保禁用了 `nodeIntegration`. - -#### 检查列表 - -这并不是万无一失的,但至少,你应该尝试以下内容: - -* 只显示安全的内容(https) -* 在显示远程内容的所有渲染器中禁用 Node 集成 (在 `webPreferences` 中设置 `nodeIntegration` 为 `false`) -* 在显示远程内容的所有渲染器中启用上下文隔离 (在 `webPreferences` 中设置 `contextIsolation` 为 `true`) -* 在所有加载远程内容的会话中使用 `ses.setPermissionRequestHandler()` . -* 不要禁用 `webSecurity`. 禁用它将禁用同源策略. -* 定义一个 [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/) -, 并使用限制规则 (即: `script-src 'self'`) -* 覆盖并禁用 [`eval`](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6-L8) -, 它允许字符串作为代码执行. -* 不要设置 `allowRunningInsecureContent` 为 `true`. -* 不要启用 `experimentalFeatures` 或 `experimentalCanvasFeatures` 除非你知道你在做什么. -* 不要使用 `blinkFeatures` 除非你知道你在做什么. -* WebViews: 不要填加 `nodeintegration` 属性. -* WebViews: 不要使用 `disablewebsecurity` -* WebViews: 不要使用 `allowpopups` -* WebViews: 不要使用 `insertCSS` 或 `executeJavaScript` 操作远程 CSS/JS. - -强调一下,这份列表只是将风险降到最低,并不会完全屏蔽风险。 如果您的目的是展示一个网站,浏览器将是一个更安全的选择。 \ No newline at end of file diff --git a/docs-translations/zh-CN/tutorial/supported-platforms.md b/docs-translations/zh-CN/tutorial/supported-platforms.md deleted file mode 100644 index 27e8976aa091..000000000000 --- a/docs-translations/zh-CN/tutorial/supported-platforms.md +++ /dev/null @@ -1,24 +0,0 @@ -# 支持的平台 - -目前 Electron 支持以下平台: - -### macOS - -对于 macOS 仅提供64位版本,并且只支持 macOS 10.9 或更高版本。 - -### Windows - -仅支持 Windows 7 或更高版本。 - -对于 Windows 提供 `ia32` (x86) 和 `amd64` (x64) 版本。需要注意的是 `ARM` 版本的 Windows 目前尚不支持。 - -### Linux - -Electron 的 `ia32` (`i686`) 和 `x64` (`amd64`) 预编译版本均是在Ubuntu 12.04 下编译的,`arm` 版的二进制文件是在 ARM v7(硬浮点 ABI 与 -Debian Wheezy 版本的 NEON)下完成的。 - -预编译版本是否能够正常运行,取决于其中是否包含了编译平台的链接库。所以只有 Ubuntu 12.04 是可以保证能正常运行的,并且以下平台也被证实可以正常运行 Electron 的预编译版本: - -* Ubuntu 12.04 或更高版本 -* Fedora 21 -* Debian 8 diff --git a/docs-translations/zh-CN/tutorial/testing-on-headless-ci.md b/docs-translations/zh-CN/tutorial/testing-on-headless-ci.md deleted file mode 100644 index 10cfaae4d231..000000000000 --- a/docs-translations/zh-CN/tutorial/testing-on-headless-ci.md +++ /dev/null @@ -1,51 +0,0 @@ -# Headless CI Systems 测试 (Travis CI, Jenkins) - -Electron 基于 Chromium,所以需要一个显示驱动使其运转。如果 Chromium 无法找到一个显示驱动, -ELectron 会启动失败,因此无论你如何去运行它,Electron 不会执行你的任何测试。在 Travis,Circle, -Jenkins 或者类似的系统上测试基于Electron的应用时,需要进行一些配置。本质上,我们需要使用一个 -虚拟的显示驱动。 - -## 配置虚拟显示服务器 - -首先安装 [Xvfb](https://en.wikipedia.org/wiki/Xvfb)。 -这是一个虚拟的帧缓冲,实现了X11显示服务协议,所有的图形操作都在内存中表现,而不需要显示在 -任何屏幕输出设备上。这正是我们所需要的。 - -然后创建一个虚拟的xvfb屏幕并且导出一个指向他的名为 `DISPLAY` 的环境变量。Electron 中的 Chromium -会自动的去寻找 `$DISPLAY`,所以你的应用不需要再去进行配置。这一步可以通过 Paul Betts 的 -[xvfb-maybe](https://github.com/paulcbetts/xvfb-maybe) 实现自动化:如果系统需要,在`xvfb-maybe`前加上你的测试命令 -然后这个小工具会自动的设置 xvfb。在 Windows 或者 macOS 系统下,它不会执行任何东西。 - -``` -## 在 Windows 或者 macOS,这只是调用 electron-mocha -## 在 Linux, 如果我们在 headless 环境,这将是等同于 -## xvfb-run electron-mocha ./test/*.js -xvfb-maybe electron-mocha ./test/*.js -``` - -### Travis CI - -在 Travis 上, 你的 `.travis.yml` 应该和下面的代码相似: - -``` -addons: - apt: - packages: - - xvfb - -install: - - export DISPLAY=':99.0' - - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & -``` - -### Jenkins - -Jenkins下, 有一个可用的 [Xvfb插件](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin)。 - -### Circle CI - -Circle CI 是非常棒的而且有xvfb,`$DISPLAY` 也 [已经搭建,所以不需要再进行设置](https://circleci.com/docs/environment#browsers)。 - -### AppVeyor - -AppVeyor 运行于 Windows 上,支持 Selenium,Chromium,Electron 以及一些类似的工具,开箱即用,无需配置。 diff --git a/docs-translations/zh-CN/tutorial/using-native-node-modules.md b/docs-translations/zh-CN/tutorial/using-native-node-modules.md deleted file mode 100644 index b6b71910f2bd..000000000000 --- a/docs-translations/zh-CN/tutorial/using-native-node-modules.md +++ /dev/null @@ -1,93 +0,0 @@ -# 使用原生模块 - -Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译原生模块,则需要手动设置 Electron 的 headers 的位置。 - -## 如何安装原生模块 - -如下三种方法教你安装原生模块: - -### 通过 npm 安装 - -只要设置一些系统环境变量,你就可以通过 `npm` 直接安装原生模块。 - -为 Electron 安装所有依赖项的一个例子: - -```bash -# Electron 的版本。 -export npm_config_target=1.2.3 -# Electron 的系统架构, 值为 ia32 或者 x64。 -export npm_config_arch=x64 -export npm_config_target_arch=x64 -# 下载 Electron 的 headers。 -export npm_config_disturl=https://atom.io/download/electron -# 告诉 node-pre-gyp 是为 Electron 构建。 -export npm_config_runtime=electron -# 告诉 node-pre-gyp 从源代码构建模块。 -export npm_config_build_from_source=true -# 下载所有依赖,并缓存到 ~/.electron-gyp。 -HOME=~/.electron-gyp npm install -``` -### 下载并重新编译模块 - -你可以选择安装其他 Node 项目的模块,通过 [`electron-rebuild`][electron-rebuild] 包 -重新编译原生模块,它可以识别当前 Electron 版本,帮你自动完成了下载 headers、编译原生模块等步骤。 - -一个下载 `electron-rebuild` 并重新编译的例子: - -```bash -npm install --save-dev electron-rebuild - -# 每次运行"npm install"时,也运行这条命令 -./node_modules/.bin/electron-rebuild - -# 在windows下如果上述命令遇到了问题,尝试这个: -.\node_modules\.bin\electron-rebuild.cmd -``` - -### 手动编译 - -如果你是一个原生模块的开发人员,想在 Electron 中进行测试, -你可能要手动编译 Electron 模块。你可以 -使用 `node-gyp` 直接编译: - -```bash -cd /path-to-module/ -HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://atom.io/download/electron -``` -`HOME=~/.electron-gyp` 设置去哪找开发时的 headers。 -`--target=0.29.1` 设置了 Electron 的版本。 -`--dist-url=...` 设置了 Electron 的 headers 的下载地址。 -`--arch=x64` 设置了该模块为适配64位操作系统而编译。 - -## 故障排除 - -如果你安装了一个原生模块并发现它不能工作,你需要检查 -以下事项: - -* 模块的对应的操作系统和 Electron 对应的操作系统是否匹配(ia32 或 x64)。 -* 如果升级了 Electron,你通常需要重新编译这些模块。 -* 当有疑问时,请先执行 `electron-rebuild`。 - -## `prebuild` 依赖模块 - -[`prebuild`](https://github.com/mafintosh/prebuild) 为多个版本的 Node 和 Electron 提供了一种简单发布预编译二进制原生模块的方法。 - -如果为 Electron 提供二进制原生模块,请确保删除 -`--build-from-source` 和 `npm_config_build_from_source` 环境变量 -来充分利用预编译的二进制文件。 - -## `node-pre-gyp` 依赖模块 - -[`node-pre-gyp` 工具][node-pre-gyp] 提供一种部署原生 Node 预编译二进制模块的方法, -许多流行的模块都是使用它。 - -通常这些模块在 Electron 中工作良好,但有时当 Electron 使用 -比 Node 新的 V8 版本时,会有 ABI 改变,可能 -发生错误。因此,一般来说,建议始终从源代码编译原生模块。 - -如果你通过 `npm` 的方式安装模块,默认情况下这就完成了, -如果没有,你需要传入 `--build-from-source` 给 `npm`, 或者设置 -`npm_config_build_from_source` 环境变量。 - -[electron-rebuild]: https://github.com/paulcbetts/electron-rebuild -[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp diff --git a/docs-translations/zh-CN/tutorial/using-pepper-flash-plugin.md b/docs-translations/zh-CN/tutorial/using-pepper-flash-plugin.md deleted file mode 100644 index 6a73ccf5c7dd..000000000000 --- a/docs-translations/zh-CN/tutorial/using-pepper-flash-plugin.md +++ /dev/null @@ -1,78 +0,0 @@ -# 使用 Pepper Flash 插件 - -Electron 现在支持 Pepper Flash 插件。要在 Electron 里面使用 Pepper Flash 插件,你需 -要手动设置 Pepper Flash 的路径和在你的应用里启用 Pepper Flash。 - -## 保留一份 Flash 插件的副本 - -在 macOS 和 Linux 上,你可以在 Chrome 浏览器的 `chrome://plugins` 页面上找到 Pepper -Flash 的插件信息。插件的路径和版本会对 Election 对其的支持有帮助。你也可以把插件 -复制到另一个路径以保留一份副本。 - -## 添加插件在 Electron 里的开关 - -你可以直接在命令行中用 `--ppapi-flash-path` 和 `--ppapi-flash-version` 或者 -在 app 的准备事件前调用 `app.commandLine.appendSwitch` 这个 method。同时, -添加 `BrowserWindow` 的插件开关。 -例如: - -```javascript -const {app, BrowserWindow} = require('electron') -const path = require('path') - -// 指定 flash 路径,假定它与 main.js 放在同一目录中。 -let pluginName -switch (process.platform) { - case 'win32': - pluginName = 'pepflashplayer.dll' - break - case 'darwin': - pluginName = 'PepperFlashPlayer.plugin' - break - case 'linux': - pluginName = 'libpepflashplayer.so' - break -} -app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName)) - -// 可选:指定 flash 的版本,例如 v17.0.0.169 -app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169') - -app.on('ready', () => { - let win = new BrowserWindow({ - width: 800, - height: 600, - webPreferences: { - plugins: true - } - }) - win.loadURL(`file://${__dirname}/index.html`) - // 还有别的 -}) -``` - -您也可以尝试加载系统安装的 Pepper Flash 插件,而不是装运 -插件,其路径可以通过调用 -`app.getPath('pepperFlashSystemPlugin')` 获取。 - -## 使用 `` 标签启用插件 - -在 `` 标签里添加 `plugins` 属性。 - -```html - -``` - -## 错误解决 - -您可以通过在控制台打印 `navigator.plugins` 来检查 Pepper Flash 插件是否加载 - (虽然你不知道插件的路径是正确的)。 - -Pepper Flash 插件的操作系统必须和 Electron 的操作系统匹配。在 Windows 中, -一个常见的错误是对64位版本的 Electron 使用 32bit 版本的 Flash 插件。 - -在 Windows 中,传递给 `--ppapi-flash-path` 的路径必须使用 `\` 作为路径 -分隔符,使用 POSIX-style 的路径将无法工作。 - -对于一些操作,例如使用 RTMP 的流媒体,有必要向播放器的 `.swf` 文件授予更多的权限。 -实现这一点的一种方式是使用 [nw-flash-trust](https://github.com/szwacz/nw-flash-trust)。 diff --git a/docs-translations/zh-CN/tutorial/using-selenium-and-webdriver.md b/docs-translations/zh-CN/tutorial/using-selenium-and-webdriver.md deleted file mode 100644 index b5123443126b..000000000000 --- a/docs-translations/zh-CN/tutorial/using-selenium-and-webdriver.md +++ /dev/null @@ -1,158 +0,0 @@ -# 使用 Selenium 和 WebDriver - -引自[ChromeDriver - WebDriver for Chrome][chrome-driver]: - -> WebDriver 是一款开源的支持多浏览器的自动化测试工具。它提供了操作网页、用户输入、JavaScript 执行等能力。ChromeDriver 是一个实现了 WebDriver 与 Chromium 联接协议的独立服务。它也是由开发了 Chromium 和 WebDriver 的团队开发的。 - -## 通过 Spectron 配置 - -[Spectron][spectron] 是 Electron 官方支持的 ChromeDriver 测试框架。 -它是建立在 [WebdriverIO](http://webdriver.io/) 的顶层,并且 -帮助你在测试中访问 Electron API 和绑定 ChromeDriver。 - -```bash -$ npm install --save-dev spectron -``` - -```javascript -// 一个简单的测试验证一个带标题的可见的窗口 -var Application = require('spectron').Application -var assert = require('assert') - -var app = new Application({ - path: '/Applications/MyApp.app/Contents/MacOS/MyApp' -}) - -app.start().then(function () { - // 检查浏览器窗口是否可见 - return app.browserWindow.isVisible() -}).then(function (isVisible) { - // 验证浏览器窗口是否可见 - assert.equal(isVisible, true) -}).then(function () { - // 获得浏览器窗口的标题 - return app.client.getTitle() -}).then(function (title) { - // 验证浏览器窗口的标题 - assert.equal(title, 'My App') -}).catch(function (error) { - // 记录任何错误 - console.error('Test failed', error.message) -}).then(function () { - // 停止应用程序 - return app.stop() -}) -``` - -## 通过 WebDriverJs 配置 - -[WebDriverJs](https://code.google.com/p/selenium/wiki/WebDriverJs) 是一个可以配合 WebDriver 做测试的 node 模块,我们会用它来做个演示。 - -### 1. 启动 ChromeDriver - -首先,你要下载 `chromedriver`,然后运行以下命令: - -```bash -$ ./chromedriver -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -记住 `9515` 这个端口号,我们后面会用到 - -### 2. 安装 WebDriverJS - -```bash -$ npm install selenium-webdriver -``` - -### 3. 联接到 ChromeDriver - -在 Electron 下使用 `selenium-webdriver` 和其平时的用法并没有大的差异,只是你需要手动设置连接 ChromeDriver,以及 Electron 的路径: - -```javascript -const webdriver = require('selenium-webdriver') - -var driver = new webdriver.Builder() - // "9515" 是ChromeDriver使用的端口 - .usingServer('http://localhost:9515') - .withCapabilities({ - chromeOptions: { - // 这里设置Electron的路径 - binary: '/Path-to-Your-App.app/Contents/MacOS/Atom' - } - }) - .forBrowser('electron') - .build() - -driver.get('http://www.google.com') -driver.findElement(webdriver.By.name('q')).sendKeys('webdriver') -driver.findElement(webdriver.By.name('btnG')).click() -driver.wait(function () { - return driver.getTitle().then(function (title) { - return title === 'webdriver - Google Search' - }) -}, 1000) - -driver.quit() -``` - -## 通过 WebdriverIO 配置 - -[WebdriverIO](http://webdriver.io/) 也是一个配合 WebDriver 用来测试的 node 模块 - -### 1. 启动 ChromeDriver - -首先,下载 `chromedriver`,然后运行以下命令: - -```bash -$ chromedriver --url-base=wd/hub --port=9515 -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -记住 `9515` 端口,后面会用到 - -### 2. 安装 WebdriverIO - -```bash -$ npm install webdriverio -``` - -### 3. 连接到 ChromeDriver - -```javascript -const webdriverio = require('webdriverio') -const options = { - host: 'localhost', // 使用localhost作为ChromeDriver服务器 - port: 9515, // "9515"是ChromeDriver使用的端口 - desiredCapabilities: { - browserName: 'chrome', - chromeOptions: { - binary: '/Path-to-Your-App/electron', // Electron的路径 - args: [/* cli arguments */] // 可选参数,类似:'app=' + /path/to/your/app/ - } - } -} - -let client = webdriverio.remote(options) - -client - .init() - .url('http://google.com') - .setValue('#q', 'webdriverio') - .click('#btnG') - .getTitle().then(function (title) { - console.log('Title was: ' + title) - }) - .end() -``` - -## 工作流程 - -无需重新编译 Electron,只要把 app 的源码放到 [Electron的资源目录](https://github.com/electron/electron/blob/master/docs/tutorial/application-distribution.md) 里就可直接开始测试了。 - -当然,你也可以在运行 Electron 时传入参数指定你 app 的所在文件夹。这步可以免去你拷贝-粘贴你的 app 到 Electron 的资源目录。 - -[chrome-driver]: https://sites.google.com/a/chromium.org/chromedriver/ -[spectron]: https://electron.atom.io/spectron diff --git a/docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md b/docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md deleted file mode 100644 index 0c1f24676362..000000000000 --- a/docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md +++ /dev/null @@ -1,70 +0,0 @@ -# 使用 Widevine CDM 插件 - -在 Electron,你可以使用 Widevine CDM 插件装载 Chrome 浏览器。 - -## 获取插件 - -Electron 没有为 Widevine CDM 插件配置许可 reasons,为了获得它,首先需要安装官方的 Chrome 浏览器,这匹配了体系架构和 Electron 构建使用的 Chrome 版本。 - -__注意:__ Chrome 浏览器的主要版本必须和 Electron 使用的版本一样,否则插件不会有效,虽然 `navigator.plugins` 会显示你已经安装了它。 - -### Windows & macOS - -在 Chrome 浏览器中打开 `chrome://components/` ,找到 `WidevineCdm` 并且确定它更新到最新版本,然后你可以从 `APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/` 路径找到所有的插件二进制文件。 - -`APP_DATA` 是系统存放数据的地方,在 Windows 上它是 -`%LOCALAPPDATA%`,在 macOS 上它是 `~/Library/Application Support`. `VERSION` 是 -Widevine CDM 插件的版本字符串,类似 `1.4.8.866`. `PLATFORM` 是 `mac` 或 -`win`. `ARCH` 是 `x86` 或 `x64`。 - -在 Windows,必要的二进制文件是 `widevinecdm.dll` and -`widevinecdmadapter.dll`,在 macOS,它们是 `libwidevinecdm.dylib` 和 -`widevinecdmadapter.plugin`。你可以将它们复制到任何你喜欢的地方,但是它们必须要放在一起。 - -### Linux - -在 Linux,Chrome 浏览器将插件的二进制文件装载在一起,你可以在 `/opt/google/chrome` 下找到,文件名是 `libwidevinecdm.so` 和 -`libwidevinecdmadapter.so`。 - -## 使用插件 - -在获得了插件文件后,你可以使用 `--widevine-cdm-path` 命令行开关来将 `widevinecdmadapter` 的路径传递给 Electron ,插件版本使用 `--widevine-cdm-version` 开关. - -__注意:__ 虽然只有 `widevinecdmadapter` 的二进制文件传递给了 Electron,`widevinecdm` 二进制文件应当放在它的旁边。 - -必须在 `app` 模块的 `ready` 事件触发之前使用命令行开关,并且 page 使用的插件必须激活。 - -示例代码: - -```javascript -const {app, BrowserWindow} = require('electron') - -// 你必须通过 `widevinecdmadapter` 文件名,它是 -// * `widevinecdmadapter.plugin` on macOS, -// * `libwidevinecdmadapter.so` on Linux, -// * `widevinecdmadapter.dll` on Windows。 -app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin') -// 插件版本可以从 Chrome 浏览器的 `chrome://plugins` 页面获得。 -app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866') - -let win = null -app.on('ready', () => { - win = new BrowserWindow({ - webPreferences: { - // 这个 `plugins` 必须启用。 - plugins: true - } - }) - win.show() -}) -``` - -## 验证插件 - -为了验证插件是否工作,你可以使用下面的方法: - -* 打开开发者工具查看 `navigator.plugins` 是否包含了 Widevine -CDM 插件。 -* 打开 `https://shaka-player-demo.appspot.com/` 加载一个使用 -`Widevine` 的 manifest。 -* 打开 http://www.dash-player.com/demo/drm-test-area/,检查是否界面输出 `bitdash uses Widevine in your browser`,然后播放 video。 diff --git a/docs-translations/zh-CN/tutorial/windows-store-guide.md b/docs-translations/zh-CN/tutorial/windows-store-guide.md deleted file mode 100644 index 1c1efe1b8b6a..000000000000 --- a/docs-translations/zh-CN/tutorial/windows-store-guide.md +++ /dev/null @@ -1,113 +0,0 @@ -# Windows商店指南 - -在 Windows 10 中, 一些不错的旧 win32 程序迎来了一个新朋友: 通用Windows平台(UWP)。 新的 `.appx` 格式不仅启用了许多新的强大的 API,如 Cortana 或推送通知,而且通过Windows 应用商店,也同时简化了安装和更新。 - -Microsoft 开发了一个工具,将 Electron 应用程序[编译为 `.appx` 软件包][electron-windows-store],使开发人员能够使用新应用程序模型中的一些好东西。 本指南解释了如何使用它 - 以及 Electron AppX 包的功能和限制。 - -## 背景和要求 - -Windows 10 的 "周年更新" 能够运行 win32 `.exe` 程序并且它们的虚拟化文件系统和注册表跟随一起启动。 两者都是通过在 Windows 容器中运行应用程序和安装器编译后创建的,允许 Windows 在安装过程中正确识别操作系统进行了哪些修改。 将可执行文件和虚拟文件系统与虚拟注册表配对, 允许 Windows 启用一键安装和卸载。 - -此外,exe 在 appx 模型内启动 - 这意味着它可以使用通用 Windows 平台可用的许多 API。 为了获得更多的功能,Electron 应用程序可以与一个看不见的 UWP 后台任务配合使用,它与 `exe` 一起启动,作为后台运行任务的接收器,接收推送通知或与其他 UWP 应用程序通信 。 - -要编译任何现有的 Electron 应用程序,请确保满足以下要求: - -* Windows 10及周年更新 (2016年8月2日发布的) -* Windows 10 SDK, [这里下载][windows-sdk] -* 最新的 Node 4 (运行 `node -v` 来确认) - -然后, 安装 `electron-windows-store` CLI: - -``` -npm install -g electron-windows-store -``` - -## 步骤 1: 打包你的 Electron 应用程序 - -打包应用程序使用 [electron-packager][electron-packager] (或类似工具). 确保在最终的应用程序中删除不需要的 `node_modules`, 因为这些你不需要模块只会额外增加你的应用程序的大小. - -结构输出应该看起来大致像这样: - -``` -├── Ghost.exe -├── LICENSE -├── content_resources_200_percent.pak -├── content_shell.pak -├── d3dcompiler_47.dll -├── ffmpeg.dll -├── icudtl.dat -├── libEGL.dll -├── libGLESv2.dll -├── locales -│   ├── am.pak -│   ├── ar.pak -│   ├── [...] -├── natives_blob.bin -├── node.dll -├── resources -│   ├── app -│   └── atom.asar -├── snapshot_blob.bin -├── squirrel.exe -└── ui_resources_200_percent.pak -``` - -## 步骤 2: 运行 electron-windows-store - -从提权的 PowerShell(用管理员身份运行它)中,以所需的参数运行 `electron-windows-store`,传递输入和输出目录,应用程序的名称和版本,以及确认`node_modules`应该是扁平的。 - - -``` -electron-windows-store ` - --input-directory C:\myelectronapp ` - --output-directory C:\output\myelectronapp ` - --flatten true ` - --package-version 1.0.0.0 ` - --package-name myelectronapp -``` - -一旦执行,工具就开始工作:它接受您的 Electron 应用程序作为输入,展平 `node_modules`。 然后,它将应用程序归档为 `app.zip`。 使用安装程序和 Windows 容器,该工具创建一个“扩展的” AppX 包 - 包括 Windows 应用程序清单 (`AppXManifest.xml`)以及虚拟文件系统和输出文件夹中的虚拟注册表。 - -当创建扩展的 AppX 文件后,该工具使用 Windows App Packager(`MakeAppx.exe`)将磁盘上的这些文件创建为单文件 AppX 包。 最后,该工具可用于在计算机上创建可信证书,以签署新的 AppX 包。 使用签名的 AppX 软件包,CLI也可以自动在您的计算机上安装软件包。 - - -## 步骤 3: 使用 AppX 包 - -为了运行您的软件包,您的用户将需要将 Windows 10 安装“周年纪念更新” - 有关如何更新Windows的详细信息可以在[这里][how-to-update]找到 - -与传统的UWP应用程序不同,打包应用程序目前需要进行手动验证过程,您可以在[这里][centennial-campaigns]申请. -在此期间,所有用户都能够通过双击安装包来安装您的程序,所以如果您只是寻找一个更简单的安装方法,可能不需要提交到商店。 - -在受管理的环境中(通常是企业), `Add-AppxPackage` PowerShell Cmdlet 可用于以[自动方式安装][add-appxpackage]它。 - -另一个重要的限制是编译的 AppX 包仍然包含一个 win32 可执行文件,因此不会在 Xbox,HoloLens 或 Phones 中运行。 - -## 可选: 使用 BackgroundTask 添加 UWP 功能 - -您可以将 Electron 应用程序与不可见的 UWP 后台任务配对,以充分利用 Windows 10 功能,如推送通知,Cortana 集成或活动磁贴。 - -如何使用 Electron 应用程序通过后台任务发送 Toast 通知和活动磁贴,请查看[微软提供的案例][background-task]. - - -## 可选: 使用容器虚拟化进行转换 - -要生成 AppX 包,`electron-windows-store` CLI 使用的模板应该适用于大多数 Electron 应用程序。 但是,如果您使用自定义安装程序,或者您遇到生成的包的任何问题,您可以尝试使用 Windows 容器编译创建包 - 在该模式下,CLI 将在空 Windows 容器中安装和运行应用程序,以确定应用程序正在对操作系统进行哪些修改。 - -在运行 CLI 之前,您必须设置 “Windows Desktop App Converter” 。 这将需要几分钟,但不要担心 - 你只需要这样做一次。 从这里下载 [Desktop App Converter][app-converter] - -您将得到两个文件: `DesktopAppConverter.zip` 和 `BaseImage-14316.wim`. - -1. 解压 `DesktopAppConverter.zip`. 打开提权的 PowerShell (用"以管理员权限运行"打开, 确保您的系统执行策略允许我们通过调用 `Set-ExecutionPolicy bypass` 来运行我们想要运行的一切). -2. 然后, 通过调用 `.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim`, 运行 Desktop App Converter 安装,并传递 Windows 基本映像的位置 (下载的 `BaseImage-14316.wim`). -3. 如果运行以上命令提示您重新启动,请重新启动计算机,并在成功重新启动后再次运行上述命令。 - -当安装成功后,您可以继续编译你的 Electron 应用程序。 - -[windows-sdk]: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk -[app-converter]: https://www.microsoft.com/en-us/download/details.aspx?id=51691 -[add-appxpackage]: https://technet.microsoft.com/en-us/library/hh856048.aspx -[electron-packager]: https://github.com/electron-userland/electron-packager -[electron-windows-store]: https://github.com/catalystcode/electron-windows-store -[background-task]: https://github.com/felixrieseberg/electron-uwp-background -[centennial-campaigns]: https://developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge -[how-to-update]: https://blogs.windows.com/windowsexperience/2016/08/02/how-to-get-the-windows-10-anniversary-update diff --git a/docs-translations/zh-TW/README.md b/docs-translations/zh-TW/README.md deleted file mode 100644 index 210ca4905eed..000000000000 --- a/docs-translations/zh-TW/README.md +++ /dev/null @@ -1,72 +0,0 @@ -## 導引 - -* [支援平台](tutorial/supported-platforms.md) -* [應用程式發布](tutorial/application-distribution.md) -* [應用程式打包](tutorial/application-packaging.md) -* [Mac App Store 上架指引](tutorial/mac-app-store-submission-guide.md) -* [使用原生 node 模組](tutorial/using-native-node-modules.md) -* [主行程 Debug](tutorial/debugging-main-process.md) -* [使用 Selenium 和 WebDriver](tutorial/using-selenium-and-webdriver.md) -* [DevTools 擴充](tutorial/devtools-extension.md) -* [使用 Pepper Flash 外掛](tutorial/using-pepper-flash-plugin.md) - -## 教學 - -* [快速入門](tutorial/quick-start.md) -* [桌面環境整合](tutorial/desktop-environment-integration.md) -* [在線/離線事件偵測](tutorial/online-offline-events.md) - -## API 參考 - -* [提要](api/synopsis.md) -* [行程物件](api/process.md) -* [支援的 Chrome 命令行開關](api/chrome-command-line-switches.md) - -客製的 DOM 元素: - -* [`File`物件](api/file-object.md) -* [``物件](api/webview-tag.md) -* [`window.open`函數](api/window-open.md) - -主行程可用的模組: - -* [app](api/app.md) -* [auto-updater](api/auto-updater.md) -* [browser-window](api/browser-window.md) -* [content-tracing](api/content-tracing.md) -* [dialog](api/dialog.md) -* [global-shortcut](api/global-shortcut.md) -* [ipc (main process)](api/ipc-main-process.md) -* [menu](api/menu.md) -* [menu-item](api/menu-item.md) -* [power-monitor](api/power-monitor.md) -* [power-save-blocker](api/power-save-blocker.md) -* [protocol](api/protocol.md) -* [session](api/session.md) -* [webContents](api/web-contents.md) -* [tray](api/tray.md) - -渲染行程可用的模組 (網頁): - -* [ipc (renderer)](api/ipc-renderer.md) -* [remote](api/remote.md) -* [web-frame](api/web-frame.md) - -兩種行程都可用的模組: - -* [clipboard](api/clipboard.md) -* [crash-reporter](api/crash-reporter.md) -* [native-image](api/native-image.md) -* [screen](api/screen.md) -* [shell](api/shell.md) - -## 開發 - -* [Coding style](development/coding-style.md) -* [源碼目錄結構](development/source-code-directory-structure.md) -* [與 NW.js (原名node-webkit) 在技術上的差異](development/atom-shell-vs-node-webkit.md) -* [構建系統概況](development/build-system-overview.md) -* [構建步驟 (macOS)](development/build-instructions-osx.md) -* [構建步驟 (Windows)](development/build-instructions-windows.md) -* [構建步驟 (Linux)](development/build-instructions-linux.md) -* [在 debugger 中使用 symbol server](development/setting-up-symbol-server.md) diff --git a/docs-translations/zh-TW/api/file-object.md b/docs-translations/zh-TW/api/file-object.md deleted file mode 100644 index 4f523c489516..000000000000 --- a/docs-translations/zh-TW/api/file-object.md +++ /dev/null @@ -1,28 +0,0 @@ -# `File` object - -DOM's File 介面提供一個將本地文件抽象化,並可以讓使用者對本地文件直接使用 HTML5 檔案 API -Electron 可以添加一個 `path` 屬性至 `File` 接口進而顯示檔案在檔案系統內的真實路徑。 - -範例,獲得一個檔案之真實路徑,將檔案拖拉至應用程式 (dragged-onto-the-app): - -```html -
- Drag your file here -
- - -``` diff --git a/docs-translations/zh-TW/api/ipc-main-process.md b/docs-translations/zh-TW/api/ipc-main-process.md deleted file mode 100644 index e408ebff9eb3..000000000000 --- a/docs-translations/zh-TW/api/ipc-main-process.md +++ /dev/null @@ -1,69 +0,0 @@ -# ipc (主行程) - -當在主行程裡使用 `ipc` 模組,這個模組負責處理來自渲染行程(網頁)的非同步與同步訊息。 -來自渲染器的訊息將會被注入到這個模組裡。 - -## 傳送訊息 - -同樣的也可以透過主行程來傳送訊息到渲染行程,更多資訊請參考 [WebContents.send](browser-window.md#webcontentssendchannel-args) - -- 當傳送一個訊息, 事件名稱為 `channel` -- 回覆同步訊息,你需要設定 `event.returnValue` -- 送出一個非同步訊息回給發送端,你可以使用 `event.sender.send(...)` - -這裏是一個傳送和處理訊息的範例,在渲染行程與主行程之間: - -```javascript -// 在主行程裡 -var ipc = require('ipc') -ipc.on('asynchronous-message', function (event, arg) { - console.log(arg) // 輸出 "ping" - event.sender.send('asynchronous-reply', 'pong') -}) - -ipc.on('synchronous-message', function (event, arg) { - console.log(arg) // 輸出 "ping" - event.returnValue = 'pong' -}) -``` - -```javascript -// 在渲染行程裡 (網頁). -var ipc = require('ipc') -console.log(ipc.sendSync('synchronous-message', 'ping')) // 輸出 "pong" - -ipc.on('asynchronous-reply', function (arg) { - console.log(arg) // 輸出 "pong" -}) -ipc.send('asynchronous-message', 'ping') -``` - -## 聆聽訊息 - -`ipc` 模組擁有下列幾個方法去聆聽事件: - -### `ipc.on(channel, callback)` - -* `channel` String - 事件名稱 -* `callback` Function - -當一個事件發生 `callback` 會帶著 `event` 物件和一個訊息 `arg` - -## IPC 事件 - -`event` 物件被傳入 `callback` 具有以下幾個方法: - -### `Event.returnValue` - -設定這個值可以回傳一個同步訊息 - -### `Event.sender` - -回傳 `WebContents` 可以送出訊息 - -### `Event.sender.send(channel[, arg1][, arg2][, ...])` - -* `channel` String - 事件名稱 -* `arg` (選用) - -此傳送訊息是非同步的訊息,至渲染行程,可以是一個一系列的參數 `arg` 可以是任何型態。 diff --git a/docs-translations/zh-TW/api/power-monitor.md b/docs-translations/zh-TW/api/power-monitor.md deleted file mode 100644 index 7ddf75ada8c1..000000000000 --- a/docs-translations/zh-TW/api/power-monitor.md +++ /dev/null @@ -1,36 +0,0 @@ -# power-monitor - -`power-monitor` 模組用來監看電源狀態的改變。你只能在主行程 (main process) 裡面使用。 -你應該要等到 `ready` 在 `app` 模組裡的事件被觸發 (emit),再使用這個模組。 - -舉例來說: - -```javascript -var app = require('app') - -app.on('ready', function () { - require('power-monitor').on('suspend', function () { - console.log('The system is going to sleep') - }) -}) -``` - -## 事件 (Events) - -`power-monitor` 模組會觸發 (emits) 以下幾個事件: - -### 事件: 'suspend' - -當系統進入 睡眠 (suspend) 時觸發。 - -### 事件: 'resume' - -當系統 resume 時觸發。 - -### 事件: 'on-ac' - -當系統改變使用交流電源 (AC) 時觸發。 - -### 事件: 'on-battery' - -當系統改變使用電池店員時觸發。 diff --git a/docs-translations/zh-TW/api/power-save-blocker.md b/docs-translations/zh-TW/api/power-save-blocker.md deleted file mode 100644 index ea9fde11fc4c..000000000000 --- a/docs-translations/zh-TW/api/power-save-blocker.md +++ /dev/null @@ -1,47 +0,0 @@ -# powerSaveBlocker - -`power-save-blocker` 模組是用來防止系統進入省電模式 low-power (sleep) mode -因此讓應用程式可以保持系統和螢幕的活躍 (active)。 - -舉例來說: - -```javascript -var powerSaveBlocker = require('power-save-blocker') - -var id = powerSaveBlocker.start('prevent-display-sleep') -console.log(powerSaveBlocker.isStarted(id)) - -powerSaveBlocker.stop(id) -``` - -## 方法 (Methods) - -`power-save-blocker` 模組有以下幾個方法: - -### `powerSaveBlocker.start(type)` - -* `type` String - Power save blocker type. - * `prevent-app-suspension` - 防止一個應用程式進入睡眠 (suspended)。 將保持系統活躍, - 但允許螢幕被關閉。 使用案例:下載一個檔案或是播放音樂。 - * `prevent-display-sleep`- 防止螢幕進入睡眠。將保持系統和螢幕的活躍。 - 使用案例:播放影片 - -當防止系統進入省電模式 low-power (sleep) mode 。 會回傳一個識別的整數來代表 power save blocker - -**注意:** `prevent-display-sleep` 比 `prevent-app-suspension` 擁有較高的優先權。 -只有高的優先全力才會有效,換句話說 `prevent-display-sleep` 總是會優先於 `prevent-app-suspension` - -例如,一個 API 呼叫 A 請求去做 `prevent-app-suspension`,而另外一個 B 請求去做 `prevent-display-sleep` - `prevent-display-sleep` 將會被使用,直到 B 停止他的請求,`prevent-app-suspension` 才會被使用。 - -### `powerSaveBlocker.stop(id)` - -* `id` Integer - power save blocker 會回傳 id 透過 `powerSaveBlocker.start`. - -將指定的 id 停止 power save blocker - -### `powerSaveBlocker.isStarted(id)` - -* `id` Integer - power save blocker 會回傳 id 透過 `powerSaveBlocker.start`. - -不管對應的 `powerSaveBlocker` 是否已經啟動,將會回傳一個布林值 (boolean) diff --git a/docs-translations/zh-TW/api/process.md b/docs-translations/zh-TW/api/process.md deleted file mode 100644 index bb83f42b1545..000000000000 --- a/docs-translations/zh-TW/api/process.md +++ /dev/null @@ -1,23 +0,0 @@ -# process - -在 Electron 裡的 `process` 物件具有以下幾個與 upstream node 的不同點: - -* `process.type` String - Process 的型態,可以是 `browser` (i.e. 主行程) 或 `renderer`. -* `process.versions.electron` String - Electron 的版本 -* `process.versions.chrome` String - Chromium 的版本 -* `process.resourcesPath` String - JavaScript 源碼的路徑 - -# 方法 (Methods) - -`process` 物件具有以下的方法: - -### `process.hang` - -會導致目前行程的主執行緒停住 - -## process.setFdLimit(maxDescriptors) _macOS_ _Linux_ - -* `maxDescriptors` Integer - -設置文件描述符 (file descriptor) soft limit `maxDescriptors` 或 OS hard -limit ,以較低者為準當目前的行程。 diff --git a/docs-translations/zh-TW/api/shell.md b/docs-translations/zh-TW/api/shell.md deleted file mode 100644 index dbf6fa539426..000000000000 --- a/docs-translations/zh-TW/api/shell.md +++ /dev/null @@ -1,46 +0,0 @@ -# shell - -`shell` 模組提供一些整合桌面應用的功能。 - - -一個範例示範如何利用使用者的預設瀏覽器開啟 URL: - -```javascript -var shell = require('shell') - -shell.openExternal('https://github.com') -``` - -## Methods - -`shell` 模組有以下幾個方法: - -### `shell.showItemInFolder(fullPath)` - -* `fullPath` String - -顯示在檔案管理中指定的檔案,如果可以的話,選擇該檔案。 - -### `shell.openItem(fullPath)` - -* `fullPath` String - -打開指定的檔案,在桌面的預設方式。 -Open the given file in the desktop's default manner. - -### `shell.openExternal(url)` - -* `url` String - -打開一個指定的外部協定 URL 在桌面的預設方式。(舉例來說 mailto: URLs 會打開使用者的預設信箱) - - -### `shell.moveItemToTrash(fullPath)` - -* `fullPath` String - -移動指定檔案至垃圾桶,並會對這個操作回傳一個 boolean 狀態 - -### `shell.beep()` - -播放 beep 聲音。 diff --git a/docs-translations/zh-TW/api/structures/certificate.md b/docs-translations/zh-TW/api/structures/certificate.md deleted file mode 100644 index e1a65e271f11..000000000000 --- a/docs-translations/zh-TW/api/structures/certificate.md +++ /dev/null @@ -1,9 +0,0 @@ -# Certificate 物件 (憑證) - -* `data` 字串 - PEM 加密資料。 -* `issuerName` 字串 - 憑證發行者的名字。 -* `subjectName` 字串 - 憑證使用者的名字。 -* `serialNumber` 字串 - 憑證序號。 -* `validStart` 數字 - 憑證開始日期,值為 UNIX 時間。 -* `validExpiry` 數字 - 憑證結束日期,值為 UNIX 時間。 -* `fingerprint` 字串 - 憑證指紋。 diff --git a/docs-translations/zh-TW/api/structures/cookie.md b/docs-translations/zh-TW/api/structures/cookie.md deleted file mode 100644 index 0358cf1642f6..000000000000 --- a/docs-translations/zh-TW/api/structures/cookie.md +++ /dev/null @@ -1,11 +0,0 @@ -# Cookie 物件 - -* `name` 字串 - cookie 的名字。 -* `value` 字串 - cookie 的值。 -* `domain` 字串 - cookie 的域名。 -* `hostOnly` 字串 - cookie 是否為 Host-Only.。 -* `path` 字串 - cookie 的路徑。 -* `secure` 布林 - cookie 的網域是否安全 (https)。 -* `httpOnly` 布林 - cookie 是否只能運行在 HTTP。 -* `session` 布林 - cookie 為 短期 session 或者 長期 cookie,若是長期 cookie 得包含一個截止日期。 -* `expirationDate` 雙精度浮點數 (可選) - cookie 的截止日期,當 `session` 設定為 時可用,值為 UNIX時間。 diff --git a/docs-translations/zh-TW/api/structures/crash-report.md b/docs-translations/zh-TW/api/structures/crash-report.md deleted file mode 100644 index f139b3e579b4..000000000000 --- a/docs-translations/zh-TW/api/structures/crash-report.md +++ /dev/null @@ -1,4 +0,0 @@ -# CrashReport 物件 - -* `date` 字串 -* `ID` 整數 diff --git a/docs-translations/zh-TW/api/structures/memory-usage-details.md b/docs-translations/zh-TW/api/structures/memory-usage-details.md deleted file mode 100644 index e0deb5a265b4..000000000000 --- a/docs-translations/zh-TW/api/structures/memory-usage-details.md +++ /dev/null @@ -1,5 +0,0 @@ -# MemoryUsageDetails 物件 - -* `count` 數字 -* `size` 數字 -* `liveSize` 數字 diff --git a/docs-translations/zh-TW/api/structures/point.md b/docs-translations/zh-TW/api/structures/point.md deleted file mode 100644 index 074002231ce5..000000000000 --- a/docs-translations/zh-TW/api/structures/point.md +++ /dev/null @@ -1,4 +0,0 @@ -# Point 物件 - -* `x` 數字 -* `y` 數字 diff --git a/docs-translations/zh-TW/api/structures/size.md b/docs-translations/zh-TW/api/structures/size.md deleted file mode 100644 index a22f0b79c3e2..000000000000 --- a/docs-translations/zh-TW/api/structures/size.md +++ /dev/null @@ -1,4 +0,0 @@ -# Size 物件 - -* `width` 數字 -* `height` 數字 diff --git a/docs-translations/zh-TW/api/structures/task.md b/docs-translations/zh-TW/api/structures/task.md deleted file mode 100644 index e9d58e3cf132..000000000000 --- a/docs-translations/zh-TW/api/structures/task.md +++ /dev/null @@ -1,8 +0,0 @@ -# Task 物件 - -* `program` 字串 - 程式執行的路徑,通常你應該指定 `process.execPath`,此值為當前程式執行的路徑。 -* `arguments` 字串 - `program` 在命令列下執行的附加參數。 -* `title` 字串 - JumpList 內顯示的標題。 -* `description` 字串 - 關於此物件的描述。 -* `iconPath` 字串 - 此物件的 icon 路徑,被顯示在 JumpList 中,通常你可以指定 `process.execPath`去顯示當前物件的 icon 。 -* `iconIndex` 數字 - icon 的索引,如果一個檔案包由兩個或以上的的 icon, 設定此值去指定 icon, 如果檔案內只有一個 icon, 此值為 0 。 diff --git a/docs-translations/zh-TW/api/structures/upload-blob.md b/docs-translations/zh-TW/api/structures/upload-blob.md deleted file mode 100644 index 8092ff6baad2..000000000000 --- a/docs-translations/zh-TW/api/structures/upload-blob.md +++ /dev/null @@ -1,4 +0,0 @@ -# UploadBlob 物件 - -* `type` 字串 - 應為 `blob` 。 -* `blobUUID` 字串 - 此上傳資料的 UUID 。 diff --git a/docs-translations/zh-TW/api/synopsis.md b/docs-translations/zh-TW/api/synopsis.md deleted file mode 100644 index 31f4dc77dd51..000000000000 --- a/docs-translations/zh-TW/api/synopsis.md +++ /dev/null @@ -1,41 +0,0 @@ -# Synopsis - -所有的 [Node.js's 內建模組](http://nodejs.org/api/) 都可以在 Electron 使用,而且 -第三方的 node 模組同樣的全部支援(包含[原生模組](../tutorial/using-native-node-modules.md)) - -Electron 也提供一些額外的內建模組用來開發原生桌面應用程式,一些模組只可以使用在主行程上 -(main process) 一些只可以使用在渲染行程 (renderer process) 上 (網頁) ,另外還有一些 -模組在兩邊的行程都可以使用。 - -基本的規則是: 如果一個模組是 [GUI](https://zh.wikipedia.org/wiki/%E5%9B%BE%E5%BD%A2%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2) -或者是 low-level 與系統相關的,那麼它就應該只能在主行程上使用 (main process) 你必須要對熟悉 [main process vs. renderer process](../tutorial/quick-start.md#the-main-process) 的觀念,才能去使用這些模組。 - -主行程 (main process) 腳本是一個像一般 Node.js 的腳本: - -```javascript -var app = require('app') -var BrowserWindow = require('browser-window') - -var window = null - -app.on('ready', function () { - window = new BrowserWindow({width: 800, height: 600}) - window.loadURL('https://github.com') -}) -``` - -渲染行程 (renderer process) 跟一般正常的網頁沒有差別,而且還能有使用 node 模組的能力: - -```html - - - - - - -``` - -執行你的應用程式,請閱讀[Run your app](../tutorial/quick-start.md#run-your-app). diff --git a/docs-translations/zh-TW/development/v8-development.md b/docs-translations/zh-TW/development/v8-development.md deleted file mode 100644 index 721b145723c5..000000000000 --- a/docs-translations/zh-TW/development/v8-development.md +++ /dev/null @@ -1,11 +0,0 @@ -# V8 開發 - -> 一些有關於學習與使用 V8 的收集資源 - -* [V8 追蹤](https://github.com/v8/v8/wiki/Tracing-V8) -* [V8 性能分析](https://github.com/v8/v8/wiki/V8-Profiler) - 介紹一些有用的性能分析參數: `--prof`,`--trace-ic`,`--trace-opt`,`--trace-deopt`,`--print-bytecode`,`--print-opt-code` -* [V8 設計理念](https://docs.google.com/document/d/11T2CRex9hXxoJwbYqVQ32yIPMh0uouUZLdyrtmMoL44/edit?ts=56f27d9d#heading=h.6jz9dj3bnr8t) -* [編譯器最佳化](https://github.com/v8/v8/wiki/TurboFan) -* [V8 GDB 除錯](https://github.com/v8/v8/wiki/GDB-JIT-Interface) - -[Chromium Development](chromium-development.md) 裡有更多資訊。 diff --git a/docs-translations/zh-TW/project/CODE_OF_CONDUCT.md b/docs-translations/zh-TW/project/CODE_OF_CONDUCT.md deleted file mode 100644 index 6eae666ab423..000000000000 --- a/docs-translations/zh-TW/project/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# 貢獻者行為守則契約 - -## 我們的承諾 - -為了營造一個開放和溫馨的環境,我們作為貢獻者和維護者,承諾對每個參與我們的項目和社區的人,提供不受騷擾的環境,無論年齡、身體大小、殘疾、自我認同種族、性別認同和表達、經驗水準、國籍,個人外貌,天生種族,宗教或生理性別和性取向。 - -## 我們的標準 - -有助於創造積極環境的行為包括: - -* 使用歡迎和包容性的語言 -* 尊重不同的觀點和經驗 -* 優雅地接受建設性的批評 -* 專住在為社群最好的事情上 -* 顯示對其他社區成員的同情 - -參與者不被許可的行為例子包括: - -* 使用性別化語言或圖像以及不歡迎的性別關注或其他更進一步的行為 -* 毀謗、侮辱、貶損的評論以及個人或政治攻擊 -* 公共或私人騷擾 -* 未經明確許可,發布他人的個資,如住址或電子信箱 -* 其他可以合理地認為在專業環境中不合適的行為 - -## 我們的責任 - -專案維護者負責澄清可接受的行為標準,並且應該對任何不可接受的行為採取適當且公平的糾正措施。 - -專案維護者有權利和責任刪除、編輯或拒絕與本行為準則不一致的評論、提交、代碼,維基編輯,問題和其他不在此列的貢獻。甚至暫時或永久禁止任何被認為是不當、威脅、攻擊性或有害的參與者。 - -## 範圍 - -當個人代表專案或其社群時,本行為準則適用於專案範圍或公共空間。代表專案或社群的例子包括使用官方電子郵件、透過官方社群帳號發文、或在線上或離線的活動擔任指定代表。專案的表現行為可由專案維護者進一步定義和澄清。 - -## 強制執行 - -濫用、騷擾或其他不可接受行為的實例可向專案團隊 [electron@github.com](mailto:electron@github.com) 報告。所有投訴將被審查和調查,並在被認為必要和適合情況下做出回應。專案團隊有義務對事件提報者保密。具體執行政策的進一步細節可以單獨公佈。 - -未真誠遵守或實施行為準則的專案維護者可能會面臨專案領導層成員所決定的暫時性或永久性影響。 - -## 來源 - -本行為準則改編自 [Contributor Covenant][homepage], 1.4版, 可從 [http://contributor-covenant.org/version/1/4][version] 獲得 - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/docs-translations/zh-TW/project/CONTRIBUTING.md b/docs-translations/zh-TW/project/CONTRIBUTING.md deleted file mode 100644 index 46697812262e..000000000000 --- a/docs-translations/zh-TW/project/CONTRIBUTING.md +++ /dev/null @@ -1,74 +0,0 @@ -# Electron約定 - -:+1::tada: 首先,感謝抽出時間做出貢獻的每一個人! :tada::+1: - -該項目遵守貢獻者約定 [code of conduct](CODE_OF_CONDUCT.md)。 -我們希望貢獻者能遵守此約定。如果有發現任何不被接受的行為,請回報至electron@github.com(PS:請用英語)。 - -下在是一些用於改進Electron的指南。 -這些只是指導方針,而不是規則,做出你認為最適合的判斷,並隨時 -在 pull request 中提出對該文件的更改。 - -## 提交 Issues - -* 你可以在此創建一個 issue [here](https://github.com/electron/electron/issues/new), -但在此之前,請閱讀以下注意事項,其中應包含盡可能多的細節。 -如果可以的話,請包括: - * 你所使用的 Electron 版本 - * 你所使用的系統 - * 如果適用,請包括:你做了什麼時發生了問題,以及你所預期的結果。 -* 其他有助於解決你的 issue 的選項: - * 截圖和動態GIF - * 終端機和開發工具中的錯誤訊息或警告。 - * 執行 [cursory search](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+) - 檢查是否已存在類似問題 - -## 提交 Pull Requests - -* 可以的話,在 pull request 包含截圖和動態GIF。 -* 遵守 JavaScript, C++, and Python [coding style defined in docs](/docs/development/coding-style.md). -* 使用 [Markdown](https://daringfireball.net/projects/markdown) 撰寫文件。 - 請參考 [Documentation Styleguide](/docs/styleguide.md). -* 使用簡單明瞭的提交訊息。請參考 [Commit Message Styleguide](#git-commit-messages). - -## 文件樣式 - -### 通用代碼 - -* 以空行做文件結尾。 -* 按照以下順序載入模組: - * 添加 Node Modules (參考 `path`) - * 添加 Electron Modules (參考 `ipc`, `app`) - * 本地模組(使用相對路徑) -* 按照以下的順序排序類別(class)的屬性: - * 類別的方法和屬性 (方法以 `@` 作為開頭) - * 實體(Instance)的方法和屬性 -* 避免使用平台相依代碼: - * 使用 `path.join()` 來連接檔案名稱。 - * 當需要使用臨時目錄時,使用 `os.tmpdir()` 而不是 `/tmp` 。 -* 在 function 結尾使用明確的 `return` 。 - * 不要使用 `return null`, `return undefined`, `null`, 或 `undefined` - -### Git 提交訊息 (鑑於進行Git提交時需要英文書寫,此處暫不翻譯) - -* Use the present tense ("Add feature" not "Added feature") -* Use the imperative mood ("Move cursor to..." not "Moves cursor to...") -* Limit the first line to 72 characters or less -* Reference issues and pull requests liberally -* When only changing documentation, include `[ci skip]` in the commit description -* Consider starting the commit message with an applicable emoji: - * :art: `:art:` when improving the format/structure of the code - * :racehorse: `:racehorse:` when improving performance - * :non-potable_water: `:non-potable_water:` when plugging memory leaks - * :memo: `:memo:` when writing docs - * :penguin: `:penguin:` when fixing something on Linux - * :apple: `:apple:` when fixing something on macOS - * :checkered_flag: `:checkered_flag:` when fixing something on Windows - * :bug: `:bug:` when fixing a bug - * :fire: `:fire:` when removing code or files - * :green_heart: `:green_heart:` when fixing the CI build - * :white_check_mark: `:white_check_mark:` when adding tests - * :lock: `:lock:` when dealing with security - * :arrow_up: `:arrow_up:` when upgrading dependencies - * :arrow_down: `:arrow_down:` when downgrading dependencies - * :shirt: `:shirt:` when removing linter warnings diff --git a/docs-translations/zh-TW/project/README.md b/docs-translations/zh-TW/project/README.md deleted file mode 100644 index 7225b26c6f91..000000000000 --- a/docs-translations/zh-TW/project/README.md +++ /dev/null @@ -1,77 +0,0 @@ -[![Electron Logo](https://electron.atom.io/images/electron-logo.svg)](https://electron.atom.io/) - -[![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron) -[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev) -[![Join the Electron Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) - -Electron框架讓你可以用JavaScript, HTML 和 CSS 編寫跨平台的應用程式。 -它是基於[Node.js](https://nodejs.org/)和[Chromium](http://www.chromium.org), -並且被[Atom editor](https://github.com/atom/atom)及許多其他的[apps](https://electron.atom.io/apps)所使用。 - -請關注[@ElectronJS](https://twitter.com/electronjs)的Twitter以獲得重要公告。 - -該項目遵守貢獻者約定 [code of conduct](CODE_OF_CONDUCT.md)。 -我們希望貢獻者能遵守此約定。如果有發現任何不被接受的行為,請回報至electron@github.com(PS:請用英語)。 - -## 下載 - -預編譯的二進位檔和debug symbols版可以在[releases](https://github.com/electron/electron/releases)中找到, -其中包含Linux, Windows 和 macOS版的Electron。 - -你也可以用[`npm`](https://docs.npmjs.com/)安裝預編譯的二進位檔: - -```sh -# 在 $PATH 全域安裝 `electron` -npm install electron -g - -# 安裝為開發依賴 -npm install electron --save-dev -``` - -### 鏡像網站 - -- [中國](https://npm.taobao.org/mirrors/electron) - -## 文件 - -開發指南和API文件位於 -[docs](https://github.com/electron/electron/tree/master/docs)。 -它也包括如何編譯看改進Electron。 - -## 翻譯版文件 - -- [葡萄牙語-巴西](https://github.com/electron/electron/tree/master/docs-translations/pt-BR) -- [韓語](https://github.com/electron/electron/tree/master/docs-translations/ko-KR) -- [日語](https://github.com/electron/electron/tree/master/docs-translations/jp) -- [西班牙語](https://github.com/electron/electron/tree/master/docs-translations/es) -- [簡體中文](https://github.com/electron/electron/tree/master/docs-translations/zh-CN) -- [正體中文](https://github.com/electron/electron/tree/master/docs-translations/zh-TW) -- [土耳其](https://github.com/electron/electron/tree/master/docs-translations/tr-TR) -- [烏克蘭](https://github.com/electron/electron/tree/master/docs-translations/uk-UA) -- [俄語](https://github.com/electron/electron/tree/master/docs-translations/ru-RU) -- [法語](https://github.com/electron/electron/tree/master/docs-translations/fr-FR) - -## 快速開始 - -Clone 並使用 [`electron/electron-quick-start`](https://github.com/electron/electron-quick-start) -這個repo,以使用輕量化的Electron。 - -## 社群 - -你可以在以下位置提問並和社群成員互動: -- [`electron`](http://discuss.atom.io/c/electron) Atom論壇上的其中一區 -- `#atom-shell` Freenode的聊天頻道 -- [`Atom`](http://atom-slack.herokuapp.com/) Slack上的頻道 -- [`electron-br`](https://electron-br.slack.com) *(葡萄牙語-巴西)* -- [`electron-kr`](http://www.meetup.com/electron-kr/) *(韓語)* -- [`electron-jp`](https://electron-jp-slackin.herokuapp.com/) *(日語)* -- [`electron-tr`](http://electron-tr.herokuapp.com) *(土耳其)* -- [`electron-id`](https://electron-id.slack.com) *(印度尼西亞)* - -在 [awesome-electron](https://github.com/sindresorhus/awesome-electron) -查看由社群維護的清單,包括實用的應用程式、工具以及資源。 - -## 授權條款 - -MIT © 2016 Github diff --git a/docs-translations/zh-TW/tutorial/about.md b/docs-translations/zh-TW/tutorial/about.md deleted file mode 100644 index 686d1d92a7b1..000000000000 --- a/docs-translations/zh-TW/tutorial/about.md +++ /dev/null @@ -1,57 +0,0 @@ -# 關於 Electron - -[Electron](https://electron.atom.io) 是 GitHub 為了透過 HTML, CSS 和 JavaScript 開發跨平台桌面應用程式, 所使用的一個開放原始碼函式庫。為了達成這個目標,Electron 把 [Chromium](https://www.chromium.org/Home) 和 [Node.js](https://nodejs.org) 整合成單一的執行程式,應用程式可以在 Mac, Windows, 和 Linux 作業系統下執行。 - -Electron 在 2013 年創立,做為 [Atom](https://atom.io) (一款由GitHub 推出,可以快速修改調整的文字編輯器) 的程式框架, 這兩個專案在 2014 年春天開放原始碼。 - -在這之後,Electron 變成一個非成流行的工具,為許多開放原始碼開發者、新創事業,以及已發展的公司所使用(請見[Apps](https://electron.atom.io/apps/))。 - -若要了解更多關於 Electron 開發者或發行版的資訊,或想要開始使用 Electron 開發應用程式,可以參考[快速入門](https://github.com/electron/electron/blob/master/docs-translations/zh-TW/tutorial/quick-start.md) - -## 核心成員及貢獻者 - -Electron 由 GitHub 的專案小組,以及社群中[活躍的貢獻者](https://github.com/electron/electron/graphs/contributors) 共同維護。這些維護者之中有些是個人貢獻,有些是使用 Electron 開發應用程式的大型企業。我們非常樂意將頻繁提出貢獻的貢獻者加入維護者的行列。請參考 [contributing to Electron](https://github.com/electron/electron/blob/master/CONTRIBUTING.md). - -## 發行 - -Electron 對於[發行](https://github.com/electron/electron/releases)這件事是非常頻繁的,每當有重大的錯誤修正,新的API,或是 Chromium、Node.js 有重大更新時我們都會提出新的發行。 - -### 更新相依性 - -Electron 在 Chromium 提出新的穩定版本時會提出更新,時間通常為一至兩周,由我們在更新時的開發成果決定. - -當 Node.js 提出新的發行版時, Electron 為了讓新版本更穩定,通常會等待一個月後才提出 Electron 的新版本。 - -在 Electron 中, Node.js and Chromium 共用一個 V8 實例--通常是 Chromium 所使用的版本。在許多時候這 _可以運作_,但有時候需要更新 Node.js. - - -### 版本控制 - -由於同時高度依賴 Node.js 和 Chromium, Electron 在版本控制上處於一個有點特別的情況,所以不太遵照[ `semver`規範](http://semver.org)。你必須隨時參考一個特定的 Electron 版本。請參考 [Read more about Electron's versioning](https://electron.atom.io/docs/tutorial/electron-versioning/) 或是察看 [versions currently in use](https://electron.atom.io/#electron-versions). - -### 長期支援 - -Electron 目前並未對舊的版本提供長期支援,如果你目前使用的 Electron 版本可以運作, 你可以隨自己的喜好持續使用。如果你想使用新版本所提供的功能,你必須更新到較新的版本。 - -一個主要的更新是在 `v1.0.0` 版本。如果你使用比這個版本更舊的 Electron,你必須參考 [read more about the `v1.0.0` changes](https://electron.atom.io/blog/2016/05/11/electron-1-0). - -## 核心哲學 - -為了讓 Electron (在檔案大小上) 更小,且能永續經營 (擴展相依性 和 APIs),Electron 對核心專案涵蓋的範圍會有所限制。 - -舉例來說, Electron 只使用 Chromium 在圖形渲染上的函式庫,而不使用整個 Chromium,這讓它更容易隨著 Chromium 更新,但也表示有些在 Google Chrome 瀏覽器上擁有的功能,在 Electron中並不存在。 - -會加入 Electron 的新功能,主要是原生的 APIs。如果某個功能被與它相關的 Node.js 模組所擁有,它在 Electron 中也必須存在。請參考[Electron tools built by the community](https://electron.atom.io/community). - -## 歷史 - -這些是在 Electron 歷史中的重大里程碑. - -| :calendar: | :tada: | -| --- | --- | -| **2013年4月**| [Atom Shell 專案開始](https://github.com/electron/electron/commit/6ef8875b1e93787fa9759f602e7880f28e8e6b45).| -| **2014年5月** | [Atom Shell 專案開放原始碼](http://blog.atom.io/2014/05/06/atom-is-now-open-source.html). | -| **2015年4月** | [Atom Shell 專案重新命名為 Electron](https://github.com/electron/electron/pull/1389). | -| **2016年5月** | [Electron 發行 `v1.0.0` 版](https://electron.atom.io/blog/2016/05/11/electron-1-0).| -| **2016年5月** | [Electron 應用程式可以和 Mac App 市集相容](https://electron.atom.io/docs/tutorial/mac-app-store-submission-guide).| -| **2016年8月** | [Windows 市集支援 Electron 應用程式](https://electron.atom.io/docs/tutorial/windows-store-guide).| diff --git a/docs-translations/zh-TW/tutorial/accessibility.md b/docs-translations/zh-TW/tutorial/accessibility.md deleted file mode 100644 index 3ecbea66b60a..000000000000 --- a/docs-translations/zh-TW/tutorial/accessibility.md +++ /dev/null @@ -1,33 +0,0 @@ -# 可存取性 - -產生具可存取性的應用程式是非常重要的,我們非常高興能介紹 [Devtron](https://electron.atom.io/devtron) 和 [Spectron](https://electron.atom.io/spectron) 這兩個新功能,這可以讓開發者更有機會能開發對大家來說更棒的應用程式。 - ---- - -在 Electron 應用程式中,可存取性的議題和在開發網站時非常類似,因為在根本上兩者都使用 HTML。然而對 Electron 應用程式來說,你不能為了增加可存取性而使用線上的程式審計機制,因為你的應用程式並沒有一個 URL 連結能夠引導審計者. - -這些新的功能也為你的 Electron 應用程式帶來新的審計工具,你可以選擇要透過 Spectron 為你的測試增加審計,或是透過 Devtron 在開發者工具中使用。請參考 [accessibility documentation](https://electron.atom.io/docs/tutorial/accessibility) 以獲得更多資訊。 - -### Spectron - -在 Spectron 測試框架中, 你可以對應用程式裡的每個視窗或每個 `` 標籤做審計。例如: - -```javascript -app.client.auditAccessibility().then(function (audit) { - if (audit.failed) { - console.error(audit.message) - } -}) -``` - -要要了解更多有關這個功能的資訊,請參考 [Spectron's documentation](https://github.com/electron/spectron#accessibility-testing). - -### Devtron - -在 Devtron中, 現在有新的 accessibility 分頁讓你可以審計一個應用程式中的頁面,並對結果做過慮和排序。 - -![devtron 截圖](https://cloud.githubusercontent.com/assets/1305617/17156618/9f9bcd72-533f-11e6-880d-389115f40a2a.png) - -這兩個工具都使用 Google 為 Chrome 所建立的 [Accessibility Developer Tools](https://github.com/GoogleChrome/accessibility-developer-tools) 函式庫。你可以在 [repository's wiki](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules) 學到更多在這個函式庫中有關可存取性審計的資訊。 - -如果你知道其他有關 Electron 可存取性來說更好的工具, 請把他們透過 pull request 加入 [accessibility documentation](https://electron.atom.io/docs/tutorial/accessibility) 。 diff --git a/docs-translations/zh-TW/tutorial/application-distribution.md b/docs-translations/zh-TW/tutorial/application-distribution.md deleted file mode 100644 index f26f97bf9091..000000000000 --- a/docs-translations/zh-TW/tutorial/application-distribution.md +++ /dev/null @@ -1,108 +0,0 @@ -# 應用程式部署 - -要部屬你的 Electron 應用程式,你需要把你的應用程式資料夾命名為 `app`,並放置於 Electron 的資源目錄下 (在 macOS 中位在 `Electron.app/Contents/Resources/` 而 Linux 和 Windows 的是在 `resources/`),例如: - -macOS: - -```text -electron/Electron.app/Contents/Resources/app/ -├── package.json -├── main.js -└── index.html -``` - -Windows 和 Linux: - -```text -electron/resources/app -├── package.json -├── main.js -└── index.html -``` - -然後執行 `Electron.app` (或者在 Linux 中是 `electron`, Windows 中是 `electron.exe`),然後 Electron 將會啟動你的應用程式,目錄 `electron` 會接著被部署給最後使用者。 - -## 打包你的應用程式成一個檔案 - -除了透過複製所有原始檔案來發布你的應用程式,你也可以使用 [asar](https://github.com/atom/asar) 來打包你的應用程式為一個壓縮檔,來避免暴露你的原始碼給使用者。 - -要使用 `asar` 壓縮檔來取代 `app` 資料夾,你需要重新命名該壓縮檔為 `app.asar`,然後如下所示把它放到 Electron 的資源目錄中,接著 Electron 就會試著讀取壓縮檔並從它開始執行。 - -macOS: - -```text -electron/Electron.app/Contents/Resources/ -└── app.asar -``` - -Windows 和 Linux: - -```text -electron/resources/ -└── app.asar -``` - -更多詳細的介紹請參閱 [應用程式打包](application-packaging.md). - -## 重新塑造你的下載執行檔品牌形象 - -當你完成 Electron 的應用程式打包後,在發布給使用者前,你會想想要重新塑造你的 Electron。 - -### Windows - -你可以重新命名 `electron.exe` 為任何你喜歡的名稱,然後透過像是 [rcedit](https://github.com/atom/rcedit) -的工具來編輯它的圖示(icon)和其他資訊。 - -### macOS - -你可以重新命名 `Electron.app` 為任何你喜歡的名稱,另外你也需要重新命名下列檔案中的 `CFBundleDisplayName`、`CFBundleIdentifier` 和 `CFBundleName` 欄位: - -* `Electron.app/Contents/Info.plist` -* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist` - -你也可以重新命名 helper 應用程式來避免在活動監視器中秀出 `Electron Helper` -,但請確認你有重新命名 helper 應用程式的可執行檔名稱。 - -重新命名後的應用程式檔案結構可能長得相這樣: - -``` -MyApp.app/Contents -├── Info.plist -├── MacOS/ -│   └── MyApp -└── Frameworks/ - ├── MyApp Helper EH.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper EH - ├── MyApp Helper NP.app - | ├── Info.plist - | └── MacOS/ - |    └── MyApp Helper NP - └── MyApp Helper.app - ├── Info.plist - └── MacOS/ -    └── MyApp Helper -``` - -### Linux - -你可以重新命名 `electron` 可執行檔為任何你想要的名字。 - -## 透過重新建置 Electron 原始碼重塑品牌形象 - -你也可以透過改變產品名稱和重新建置原始碼來重塑 Electron 的品牌形象,要這麼做的話,你需要修改 `atom.gyp` 檔案並在重新建置前清理已建置的所有檔案。 - -### grunt-build-atom-shell - -手動取得 Electron 的原始碼和重新建置可能事件複雜的事,因此有一個建立好的 Grunt 任務(task)可以自動化的處理這些事情: -[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). - -這個任務將會自動的處理編輯 `.gyp` 檔,建置原始碼,然後重新建置你的應用程式原生 Node 模組來符合新的可執行檔名稱。 - -## 打包工具 - -除了手動打包你的應用程式,你也可以選擇使用第三方打包工具來幫助你: - -* [electron-packager](https://github.com/maxogden/electron-packager) -* [electron-builder](https://github.com/loopline-systems/electron-builder) diff --git a/docs-translations/zh-TW/tutorial/application-packaging.md b/docs-translations/zh-TW/tutorial/application-packaging.md deleted file mode 100644 index 60321dbc97e8..000000000000 --- a/docs-translations/zh-TW/tutorial/application-packaging.md +++ /dev/null @@ -1,150 +0,0 @@ -# 應用程式打包 - -為了減少圍繞著 Windows 上長路徑名稱問題的 [issues](https://github.com/joyent/node/issues/6960) ,稍微地加速 `require` 和隱藏你的原始碼避免不小心被看到,你可以選擇把你的應用程式打包成一個 [asar][asar] 壓縮檔,只需要改變一點點你的原始碼就好。 -## 產生 `asar` 壓縮檔 - -一個 [asar][asar] 壓縮檔是一個簡單的類 tar 格式的檔案,它會把幾個檔案串接成一個檔案, Electron 可以不需要解壓縮整個檔案就從中讀取任意檔案。 - -把你的應用程式打包成 `asar` 壓縮檔的步驟: - -### 1. 安裝 asar 工具包 - -```bash -$ npm install -g asar -``` - -### 2. 用 `asar pack` 打包 - -```bash -$ asar pack your-app app.asar -``` - -## 使用 `asar` 壓縮檔 - -在 Electron 中有兩組 API:Node.js 提供的 Node APIs 和 Chromium 提供的 Web -APIs,兩組 API 都支援從 `asar` 壓縮檔中讀取檔案。 - -### Node API - -因為 Electron 中有一些特別的補釘,像是 `fs.readFile` 和 `require` 這樣的 Node API 會將 `asar` 壓縮檔視為許多虛擬目錄,將裡頭的檔案視為在檔案系統上的一般檔案。 - -例如,假設我們有一個 `example.asar` 壓縮檔在 `/path/to` 中: - -```bash -$ asar list /path/to/example.asar -/app.js -/file.txt -/dir/module.js -/static/index.html -/static/main.css -/static/jquery.min.js -``` - -讀取一個在 `asar` 壓縮檔中的檔案: - -```javascript -const fs = require('fs') -fs.readFileSync('/path/to/example.asar/file.txt') -``` - -列出所有在壓縮檔根目錄下的檔案: - -```javascript -const fs = require('fs') -fs.readdirSync('/path/to/example.asar') -``` - -使用一個壓縮檔中的模組: - -```javascript -require('/path/to/example.asar/dir/module.js') -``` - -你也可以利用 `BrowserWindow` 在 `asar` 壓縮檔中呈現一個網頁: - -```javascript -const BrowserWindow = require('electron').BrowserWindow -var win = new BrowserWindow({width: 800, height: 600}) -win.loadURL('file:///path/to/example.asar/static/index.html') -``` - -### Web API - -在一個網頁中,壓縮檔中的檔案都可以透過 `file:` 這個協定被存取,如同 Node API,`asar` 壓縮檔都被視為目錄。 - -例如,要透過 `$.get` 取得一個檔案: - -```html - -``` - -### 把一個 `asar` 壓縮檔視為一般檔案 - -在一些像是驗證 `asar` 壓縮檔檢查碼(checksum)的例子中,我們需要以檔案的方式讀取 `asar` 壓縮檔中的內容,為了達到這個目的,你可以使用內建的 -`original-fs` 模組,它提供了沒有 `asar` 支援的原生 `fs` API: - -```javascript -var originalFs = require('original-fs') -originalFs.readFileSync('/path/to/example.asar') -``` - -你也可以設定 `process.noAsar` 為 `true` 來關掉在 `fs` 模組中的 `asar` 支援: - -```javascript -process.noAsar = true -fs.readFileSync('/path/to/example.asar') -``` - -## Node API 上的限制 - -儘管我們盡可能的努力嘗試著使 Node API 中的 `asar` 壓縮檔像目錄一樣運作,還是有一些基於 Node API 低階本質的限制存在。 - -### 壓縮檔都是唯讀的 - -所有壓縮檔都無法被修改,因此所有可以修改檔案的 Node API 都無法與 `asar ` 壓縮檔一起運作。 - -### 使用中的目錄無法被設為壓縮檔中的目錄 - -儘管 `asar` 壓縮檔被視為目錄,卻並沒有真正的目錄在檔案系統中,所以你永遠無法將使用中的目錄設定成 `asar` 壓縮檔中的目錄,把他們以 `cwd` 選項的方式傳遞,對某些 API 也會造成錯誤。 - -### 更多透過 API 拆封的方法 - -大部分 `fs` API 可以讀取一個檔案,或是不用拆封就從 `asar` 壓縮檔中取得一個檔案的資訊,但對一些需要傳遞真實檔案路徑給現行系統呼叫的 API ,Electron 將會解開需要的檔案到一個暫時的檔案,然後傳遞該暫時檔案的路徑給那些 API 以便使他們可以運作,這會增加這些 API 一點負擔。 - - -需要額外拆封的 API : - -* `child_process.execFile` -* `child_process.execFileSync` -* `fs.open` -* `fs.openSync` -* `process.dlopen` - 在原生模組中被 `require` 使用 - -### `fs.stat` 的不真實的狀態資訊 - -`fs.stat` 回傳的 `Stats` 物件和它在 `asar` 壓縮檔中的檔案朋友都是以猜測的方式產生的,因為那些檔案不存在檔案系統,所以你不應該信任 `Stats` 物件,除了取得檔案大小和確認檔案型態之外。 - -### 執行 `asar` 壓縮檔中的二進位檔 - -有像是 `child_process.exec`、`child_process.spawn` 和 `child_process.execFile` 的 Node APIs 可以執行二進位檔,但只有 `execFile` 是 `asar` 壓縮檔中可以執行二進位檔的。 - -這是因為 `exec` 和 `spawn` 接受的輸入是 `command` 而不是 `file`,而 `command` 們都是在 shell 底下執行,我們找不到可靠的方法來決定是否一個命令使用一個在 `asar` 壓縮檔中的檔案,而儘管我們找得到,我們也無法確定是否我們可以在沒有外部影響(side effect)的情況下替換掉命令中的路徑。 - -## 加入拆封檔案到 `asar` 壓縮檔中 - -如前述,一些 Node API 再被呼叫時會拆封檔案到檔案系統,除了效能議題外,它也會導致掃毒軟體發出 false alerts。 - -要繞過這個問題,你可以透過使用 `--unpack` 選向來拆封一些建立壓縮檔的檔案,以下是一個不包含共享原生模組的函式庫的例子: - -```bash -$ asar pack app app.asar --unpack *.node -``` - -執行這個命令以後,除了 `app.asar` 以外,還有一個帶有拆封檔案的 `app.asar.unpacked` 資料夾被產生出來,當你要發布給使用者時,你應該把它和 `app.asar` 一起複。 - -[asar]: https://github.com/atom/asar diff --git a/docs-translations/zh-TW/tutorial/debugging-main-process-node-inspector.md b/docs-translations/zh-TW/tutorial/debugging-main-process-node-inspector.md deleted file mode 100644 index 44f50d12884f..000000000000 --- a/docs-translations/zh-TW/tutorial/debugging-main-process-node-inspector.md +++ /dev/null @@ -1,116 +0,0 @@ -# 在 node-inspector 裡為主程序除錯 - -[`node-inspector`][node-inspector] 提供一個大家熟悉的圖形介面開發工具,可以在 Chrome 使用這個工具為 Electron 的主程序除錯。然而因為 `node-inspector` 依靠依些原生的 Node 模組,他必須為你想除錯的 Electron 版本重新建制。你可以自己重新建置 `node-inspector` 的相依檔案,或是由 -[`electron-inspector`][electron-inspector] 幫你完成,這兩種方法都包含在這篇文件中。 - -**注意**:在這篇文件撰寫時,最新版的 `node-inspector` -(0.12.8) 不能在沒有更新其中一個相依檔案的情形下,為 Electron 1.3.0 或更新的版本重新建置,你在使用 `electron-inspector` 的時候必須注意這一點。 - - -## 使用 `electron-inspector` 除錯 - -### 1. 安裝 [node-gyp required tools][node-gyp-required-tools] - -### 2. 安裝 [`electron-rebuild`][electron-rebuild] - -```shell -npm install electron-rebuild --save-dev -``` - -### 3. 安裝 [`electron-inspector`][electron-inspector] - -```shell -npm install electron-inspector --save-dev -``` - -### 4. 啟動 Electron - -搭配 `--debug` 參數開啟 Electron - -```shell -electron --debug=5858 your/app -``` - -或者在第1行 JavaScript 暫停執行: - -```shell -electron --debug-brk=5858 your/app -``` - -### 5. 開啟 electron-inspector - -在 macOS / Linux 上: - -```shell -node_modules/.bin/electron-inspector -``` - -在 Windows 上: - -```shell -node_modules\\.bin\\electron-inspector -``` - -`electron-inspector` 在第一次執行,以及你每次更換 Electron 版本時需要重新建置 `node-inspector` 的相依檔案。重新建置的過程可能需要透過網路連線下載 Node 標頭檔和函式庫,且需要一段時間。 - -### 6. 載入除錯工具介面 - -在 Chrome 瀏覽器中打開 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858。如果有使用 `--debug-brk` 選項,你有可能需要按暫停鍵強制更新介面。 - -## 使用 `node-inspector` 除錯 - -### 1. 安裝 [node-gyp required tools][node-gyp-required-tools] - -### 2. 安裝 [`node-inspector`][node-inspector] - -```bash -$ npm install node-inspector -``` - -### 3. 安裝 [`node-pre-gyp`][node-pre-gyp] - -```bash -$ npm install node-pre-gyp -``` - -### 4. 為 Electron 重新編譯 `node-inspector` `v8` 模組 - -**注意:** 請把 `target` 參數改成你的 Electron 版本號碼 - -```bash -$ node_modules/.bin/node-pre-gyp --target=1.2.5 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/atom-shell reinstall -$ node_modules/.bin/node-pre-gyp --target=1.2.5 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/atom-shell reinstall -``` - -請參考 [How to install native modules][how-to-install-native-modules]. - -### 5. 啟用 Electron 除錯模式 - -你可以使用 debug 標籤啟動 Electron: - -```bash -$ electron --debug=5858 your/app -``` - -或是在第1行暫停程式: - -```bash -$ electron --debug-brk=5858 your/app -``` - -### 6. 使用 Electron 開啟 [`node-inspector`][node-inspector] 伺服器 - -```bash -$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js -``` - -### 7. 載入除錯工具介面 - -在 Chrome 瀏覽器打開 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 。如果有使用 `--debug-brk` 啟動 Electron ,你有可能要點擊暫停鍵才能看到進入點。 - -[electron-inspector]: https://github.com/enlight/electron-inspector -[electron-rebuild]: https://github.com/electron/electron-rebuild -[node-inspector]: https://github.com/node-inspector/node-inspector -[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp -[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation -[how-to-install-native-modules]: using-native-node-modules.md#how-to-install-native-modules diff --git a/docs-translations/zh-TW/tutorial/debugging-main-process-vscode.md b/docs-translations/zh-TW/tutorial/debugging-main-process-vscode.md deleted file mode 100644 index f4afd97714d3..000000000000 --- a/docs-translations/zh-TW/tutorial/debugging-main-process-vscode.md +++ /dev/null @@ -1,34 +0,0 @@ -# 在 VSCode 裡為主程序除錯 - -### 1. 用 VSCode 打開 Electron 專案 - -```bash -$ git clone git@github.com:electron/electron-quick-start.git -$ code electron-quick-start -``` - -### 2. 加入 `.vscode/launch.json` 檔案,裏面包含以下設定: - -```json -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Debug Main Process", - "type": "node", - "request": "launch", - "cwd": "${workspaceRoot}", - "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron", - "program": "${workspaceRoot}/main.js" - } - ] -} -``` - -**注意:** 在 Windows 上, 請把 `runtimeExecutable` 換成 `"${workspaceRoot}/node_modules/.bin/electron.cmd"` 。 - -### 3. 除錯 - -在 `main.js` 裡設定一些中斷點, 透過 [Debug View](https://code.visualstudio.com/docs/editor/debugging) 開始除錯,中斷點執行過程中必須可以被運行到。 - -這邊有一些預先設定好的專案,可以讓你下載並直接在 VSCode 除錯: https://github.com/octref/vscode-electron-debug/tree/master/electron-quick-start diff --git a/docs-translations/zh-TW/tutorial/debugging-main-process.md b/docs-translations/zh-TW/tutorial/debugging-main-process.md deleted file mode 100644 index 393ab0a0d6a9..000000000000 --- a/docs-translations/zh-TW/tutorial/debugging-main-process.md +++ /dev/null @@ -1,71 +0,0 @@ -# 主行程 Debug - -瀏覽器視窗開發工具 DevTools 只可以用來幫渲染器的行程腳本(renderer process script,網頁畫面)除錯(debug),為了提供一個方法在主行程中除錯,Electron 有提供 `--debug` 和 `--debug-brk` 開關。 - -## 命令列開關 - -使用以下命令列切換來為 Electron 的主行程除錯: - -### `--debug=[port]` - -當這個開關被使用,Electron 將會透過 `port` 來監聽 V8 的除錯協定訊息,預設的 `port` 是 `5858`。 - -### `--debug-brk=[port]` - -同 `--debug` 但暫停在腳本的第一行。 - -## 使用 node-inspector 來除錯 - -__Note:__ Electron 近期沒有跟 node-inspector 處的很好,而且如果你透過 node-inspector's console 查看 `process` 物件,主行程將會爆掉。 - -### 1. 確保你有安裝 [node-gyp required tools][node-gyp-required-tools] - -### 2. 安裝 [node-inspector][node-inspector] - -```bash -$ npm install node-inspector -``` - -### 3. 安裝一個修補過版本的 `node-pre-gyp` - -```bash -$ npm install git+https://git@github.com/enlight/node-pre-gyp.git#detect-electron-runtime-in-find -``` - -### 4. 除心編譯 `node-inspector` `v8` 模組給 Electron (變更 target 為你的 Electron 編號) - -```bash -$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/electron reinstall -$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/electron reinstall -``` - -參閱 [如何安裝原生模組](how-to-install-native-modules). - -### 5. 給 Electron 啟用除錯模式 - -你可以啟動 Electron 並帶有一個除錯 flag ,例如: - -```bash -$ electron --debug=5858 your/app -``` - -或者,讓你的腳本暫停在第一行: - -```bash -$ electron --debug-brk=5858 your/app -``` - -### 6. 使用啟動 [node-inspector][node-inspector] 伺服器 - -```bash -$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js -``` - -### 7. 載入除錯介面 - -在你的 Chrome 瀏覽器打開 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858,你可能需要點擊暫停假如你是透過使用 debug-brk 啟動並停在進入行(entry line)的話。 - -[node-inspector]: https://github.com/node-inspector/node-inspector -[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation -[how-to-install-native-modules]: using-native-node-modules.md#how-to-install-native-modules - diff --git a/docs-translations/zh-TW/tutorial/desktop-environment-integration.md b/docs-translations/zh-TW/tutorial/desktop-environment-integration.md deleted file mode 100644 index 170e4f440417..000000000000 --- a/docs-translations/zh-TW/tutorial/desktop-environment-integration.md +++ /dev/null @@ -1,349 +0,0 @@ -# 桌面環境整合 - -為了將桌面應用程式整合到桌面環境,不同的作業系統會提供不同的功能。舉例來說:在 Windows 中,應用程式可以在任務欄的彈跳式清單放上捷徑;而在Mac中,應用程式可以在 dock 選單上加入自訂的選單。 - -這份教學將會告訴你如何透過 Electron APIs,將自己的應用程式整合到這些桌面環境。 - -## 通知區域 (Windows, Linux, macOS) - -這3個作業系統都有提供讓應用程式對使用者發送訊息的方法。Electron 讓使用者能透過 [HTML5 Notification API](https://notifications.spec.whatwg.org/), 輕鬆的對使用者發送通知,並透過當前作業系統原生的通知 APIs 顯示。 - -**注意:** 畢竟是 HTML5 API,這只能在渲染程序中使用。 - -```javascript -let myNotification = new Notification('Title', { - body: 'Lorem Ipsum Dolor Sit Amet' -}) - -myNotification.onclick = () => { - console.log('Notification clicked') -} -``` - -雖然跨系統的程式碼和使用者體驗非常類似,但是還是有些明顯的差距。 - -### Windows - -* 在 Windows 10 中, 通知功能可以直接運行. -* 在 Windows 8.1 and Windows 8, 你必須在開始視窗加入一個 [Application User -Model ID][app-user-model-id] 格式的捷徑。但是筆記不需要被釘選在開始視窗中。 -* 在 Windows 7, 通知功能並不被支援,不過你可以用 [Tray API][tray-balloon] 發送"通知氣球"。 - -此外, 通知內容的長度限制是 250 個字元,但是 Windows 開發團隊建議將通知內容控制在 200 個字元以內 - -### Linux - -通知是使用 `libnotify` 發送, 可以在任何依照 [Desktop Notifications -Specification][notification-spec] 格式的桌面環境發送通知內容, 這些桌面環境包含 Cinnamon, Enlightenment, Unity, -GNOME, KDE...等等。 - -### macOS - -通知是直接送到 macOS, 不過你必須留意 -[Apple's Human Interface guidelines regarding notifications](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html). - -要注意通知內容的大小限制是 256 位元,超出限制的內容會被捨棄。 - -## 最近存取文件 (Windows & macOS) - -Windows 和 macOS 提供簡單的方式,可以存取使用者最近透過 Windows 彈跳式清單 ,或是 macOS 的 dock 選單存取過的文件列表。 - -__彈跳式清單:__ - -![JumpList Recent Files](http://i.msdn.microsoft.com/dynimg/IC420538.png) - -__應用程式 dock 選單:__ - - - -若要新增檔案到"最近存取文件",你可以透過 [app.addRecentDocument][addrecentdocument] API: - -```javascript -const {app} = require('electron') -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -``` - -你也可以使用 [app.clearRecentDocuments][clearrecentdocuments] API 來清空"最近存取文件": - -```javascript -const {app} = require('electron') -app.clearRecentDocuments() -``` - -### Windows 上要注意的事項 - -為了使用這些 Windows 上的功能,你的應用程式必須先註冊為那個檔案型別的處理程式,否則就算你之後已經註冊,檔案還是不會出現在彈跳式清單中。你可以參考 [Application Registration][app-registration] ,了解所有關於註冊應用程式的資訊。 - -當使用者在彈跳式清單中點擊檔案時,會開啟一個新的應用程式實例,檔案路徑會加入一個命令列指令。 - -### macOS 上要注意的事項 - -當一個檔案在"最近存取文件"選單中被提出請求,會發出 `app` 模組的 `open-file` 事件。 - -## 自訂 Dock 選單 (macOS) - -macOS 允許使用者為 dock 設定自訂選單, 通常會包含你的應用程式中常用的功能捷徑: - -__Dock menu of Terminal.app:__ - - - -為了設定自訂的 dock 選單, 你可以使用 `app.dock.setMenu` API, 但是也只能在 macOS 上使用: - -```javascript -const {app, Menu} = require('electron') - -const dockMenu = Menu.buildFromTemplate([ - {label: 'New Window', click () { console.log('New Window') }}, - {label: 'New Window with Settings', - submenu: [ - {label: 'Basic'}, - {label: 'Pro'} - ] - }, - {label: 'New Command...'} -]) -app.dock.setMenu(dockMenu) -``` - -## 使用者任務 (Windows) - -在 Windows 上,你可以在彈跳式清單的 `Tasks` 類別中設定自訂的動作。 MSDN 中也有提到: - -> Applications define tasks based on both the program's features and the key -> things a user is expected to do with them. Tasks should be context-free, in -> that the application does not need to be running for them to work. They -> should also be the statistically most common actions that a normal user would -> perform in an application, such as compose an email message or open the -> calendar in a mail program, create a new document in a word processor, launch -> an application in a certain mode, or launch one of its subcommands. An -> application should not clutter the menu with advanced features that standard -> users won't need or one-time actions such as registration. Do not use tasks -> for promotional items such as upgrades or special offers. -> -> It is strongly recommended that the task list be static. It should remain the -> same regardless of the state or status of the application. While it is -> possible to vary the list dynamically, you should consider that this could -> confuse the user who does not expect that portion of the destination list to -> change. - -__Internet Explorer 的使用者任務:__ - -![IE](http://i.msdn.microsoft.com/dynimg/IC420539.png) - -比較不同的是, macOS 中的 dock 選單是真正的選單, Windows 上的使用者任務比較像是應用程式捷徑。像是在使用者點擊一個任務時,程式會以特定的參數執行。 - -要為應用程式設定使用者任務, 你可以使用 [app.setUserTasks][setusertaskstasks] API: - -```javascript -const {app} = require('electron') -app.setUserTasks([ - { - program: process.execPath, - arguments: '--new-window', - iconPath: process.execPath, - iconIndex: 0, - title: 'New Window', - description: 'Create a new window' - } -]) -``` - -若要清空任務清單,只要呼叫 `app.setUserTasks`,伴隨一個空的陣列當作參數: - -```javascript -const {app} = require('electron') -app.setUserTasks([]) -``` - -這個使用者任務在你的應用程式關閉之後依然會顯示,所以在應用程式解除安裝之前,任務的圖示和程式路徑都必須存在。 - -## 縮圖工具列 (Windows) - -在 Windows 上,你可以把包含特定按鈕的縮圖工具列,加到應用程式的任務欄。這可以讓使用者在不用重建或啟動視窗的情況下,使用某個視窗的指令。 - -在 MSDN 裡是這麼描述: - -> This toolbar is simply the familiar standard toolbar common control. It has a -> maximum of seven buttons. Each button's ID, image, tooltip, and state are defined -> in a structure, which is then passed to the taskbar. The application can show, -> enable, disable, or hide buttons from the thumbnail toolbar as required by its -> current state. -> -> For example, Windows Media Player might offer standard media transport controls -> such as play, pause, mute, and stop. - -__Windows Media Player 的縮圖工具列:__ - -![player](https://i-msdn.sec.s-msft.com/dynimg/IC420540.png) - -你可以在應用程式裡使用 [BrowserWindow.setThumbarButtons][setthumbarbuttons] 設定縮圖工具列: - -```javascript -const {BrowserWindow} = require('electron') -const path = require('path') - -let win = new BrowserWindow({ - width: 800, - height: 600 -}) - -win.setThumbarButtons([ - { - tooltip: 'button1', - icon: path.join(__dirname, 'button1.png'), - click () { console.log('button1 clicked') } - }, - { - tooltip: 'button2', - icon: path.join(__dirname, 'button2.png'), - flags: ['enabled', 'dismissonclick'], - click () { console.log('button2 clicked.') } - } -]) -``` - -要清除縮圖工具列的按鈕,只要呼叫 `BrowserWindow.setThumbarButtons`,伴隨一個空的陣列當作參數: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setThumbarButtons([]) -``` - -## Unity 啟動器捷徑 (Linux) - -在 Unity, 你可以透過修改 `.desktop` 檔案,為啟動器增加自訂的項目, 請參考 [Adding Shortcuts to a Launcher][unity-launcher]. - -__Audacious 的啟動器捷徑:__ - -![audacious](https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles?action=AttachFile&do=get&target=shortcuts.png) - -## 任務欄的進度條 (Windows, macOS, Unity) - -在 Windows 上, 任務欄的按鈕可以用來顯示進度調.這讓應用程式可以在不用切換視窗的情形下,顯示進度資訊。 - -在 macOS 上, 進度條是 dock 圖示的一部份. - -Unity 桌面環境也有類似的功能,讓你可以設定啟動器裡的進度條。 - -__任務欄按鈕裡的進度條:__ - -![Taskbar Progress Bar](https://cloud.githubusercontent.com/assets/639601/5081682/16691fda-6f0e-11e4-9676-49b6418f1264.png) - -你可以使用 [BrowserWindow.setProgressBar][setprogressbar] API 設定視窗的進度條: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setProgressBar(0.5) -``` - -## 任務欄圖示上的疊加物 (Windows) - -在 Windows 上,你可以在圖示上放一個小小的疊加物,顯示應用程式狀態。 MSDN 的描述: - -> Icon overlays serve as a contextual notification of status, and are intended -> to negate the need for a separate notification area status icon to communicate -> that information to the user. For instance, the new mail status in Microsoft -> Outlook, currently shown in the notification area, can now be indicated -> through an overlay on the taskbar button. Again, you must decide during your -> development cycle which method is best for your application. Overlay icons are -> intended to supply important, long-standing status or notifications such as -> network status, messenger status, or new mail. The user should not be -> presented with constantly changing overlays or animations. - -__任務欄圖示上的疊加物:__ - -![Overlay on taskbar button](https://i-msdn.sec.s-msft.com/dynimg/IC420441.png) - -你可以使用[BrowserWindow.setOverlayIcon][setoverlayicon] API 設定任務欄圖示上的疊加物: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setOverlayIcon('path/to/overlay.png', 'Description for overlay') -``` - -## 閃爍特效 (Windows) - -在 Windows 上,你可以透過強調任務欄按鈕來吸引使用者注意,這很像是 macOS 裡 dock 圖示的彈跳特效。 -MSDN 的參考文件提及: - -> Typically, a window is flashed to inform the user that the window requires -> attention but that it does not currently have the keyboard focus. - -你可以使用 [BrowserWindow.flashFrame][flashframe] API 控制 BrowserWindow 的任務欄按鈕閃爍特效: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.once('focus', () => win.flashFrame(false)) -win.flashFrame(true) -``` - -別忘了也可以在呼叫 `flashFrame` 時加入 `false` 參數關掉閃爍特效。 在上面的範例, 他會在視窗取得焦點時被呼叫, 但是你有有可能需要使用計時器或其他事件來關掉他。 - -## 視窗的代表檔案 (macOS) - -在 macOS 上,一個視窗可以設定他的代表檔案, 也可以在標題列上顯示檔案的圖示。當使用者按住 Command 或 Control 鍵點擊標題列時, 會跳出顯示路徑的彈跳視窗。 - -你也可以設定編輯狀態,這樣可以在檔案圖示標示視窗內的文件是不是被編輯過。 - -__代表檔案的彈跳視窗:__ - - - -你可以使用 [BrowserWindow.setRepresentedFilename][setrepresentedfilename] 或 [BrowserWindow.setDocumentEdited][setdocumentedited] APIs 設定視窗的代表檔案或編輯狀態: - -```javascript -const {BrowserWindow} = require('electron') -let win = new BrowserWindow() -win.setRepresentedFilename('/etc/passwd') -win.setDocumentEdited(true) -``` - -## 將檔案拖曳出視窗 - -在某些會操作檔案的應用程式中, 能從 Electron 拖曳檔案到其他應用程式是非常重要的。 若要在你的應用程式使用這個功能,你必須在 `ondragstart` 事件中呼叫 `webContents.startDrag(item)` API。 - -在頁面中: - -```html -item - -``` - -在主程序中: - -```javascript -const {ipcMain} = require('electron') -ipcMain.on('ondragstart', (event, filePath) => { - event.sender.startDrag({ - file: filePath, - icon: '/path/to/icon.png' - }) -}) -``` - -其他資料: - -[addrecentdocument]: ../api/app.md#appaddrecentdocumentpath-os-x-windows -[clearrecentdocuments]: ../api/app.md#appclearrecentdocuments-os-x-windows -[setusertaskstasks]: ../api/app.md#appsetusertaskstasks-windows -[setprogressbar]: ../api/browser-window.md#winsetprogressbarprogress -[setoverlayicon]: ../api/browser-window.md#winsetoverlayiconoverlay-description-windows-7 -[setrepresentedfilename]: ../api/browser-window.md#winsetrepresentedfilenamefilename-os-x -[setdocumentedited]: ../api/browser-window.md#winsetdocumenteditededited-os-x -[app-registration]: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx -[unity-launcher]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher -[setthumbarbuttons]: ../api/browser-window.md#winsetthumbarbuttonsbuttons-windows-7 -[tray-balloon]: ../api/tray.md#traydisplayballoonoptions-windows -[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx -[notification-spec]: https://developer.gnome.org/notification-spec/ -[flashframe]: ../api/browser-window.md#winflashframeflag diff --git a/docs-translations/zh-TW/tutorial/devtools-extension.md b/docs-translations/zh-TW/tutorial/devtools-extension.md deleted file mode 100644 index a39d03e505cf..000000000000 --- a/docs-translations/zh-TW/tutorial/devtools-extension.md +++ /dev/null @@ -1,46 +0,0 @@ -# DevTools 擴充套件 - -要使除錯更簡單,Electron 有對 [Chrome DevTools(開發人員工具) Extension][devtools-extension] 基本的支援。 - -多數的 DevTools 擴充可以簡單地透過下載原始碼然後使用 `BrowserWindow.addDevToolsExtension` API 來載入它們,已載入的擴充套件會被記住,如此一來你就不用每次建立一個視窗的時候就要呼叫 API。 - -** 注意: React DevTools 無法使用,參考 [issue](https://github.com/electron/electron/issues/915) ** - -例如使用 [React DevTools Extension](https://github.com/facebook/react-devtools),首先你需要下載它的原始碼: - -```bash -$ cd /some-directory -$ git clone --recursive https://github.com/facebook/react-devtools.git -``` - -照著 [`react-devtools/shells/chrome/Readme.md`](https://github.com/facebook/react-devtools/blob/master/shells/chrome/Readme.md) 的指示來建置擴充套件。 - -接著你就可以在 Electron 中打開任何視窗來載入擴充套件了,然後在 DevTools console 執行以下的程式碼: - -```javascript -const BrowserWindow = require('electron').remote.BrowserWindow -BrowserWindow.addDevToolsExtension('/some-directory/react-devtools/shells/chrome') -``` - -要卸載擴充套件,你可以呼叫 `BrowserWindow.removeDevToolsExtension` -API,並帶入套件的名稱,則套件就不會在下次起打開 DevTools 的時候載入了: - -```javascript -BrowserWindow.removeDevToolsExtension('React Developer Tools') -``` - -## DevTools 擴充套件的格式 - -理想上,所有寫給 Chrome 瀏覽器用的 DevTools 擴充套件都要能夠被 Electron 載入,但它們需要是在一個普通的目錄下,那些以 `crx` 包裝的擴充套件,Electron 沒有辦法載入它們除非你找到一個解壓縮他們到目錄的方法。 - -## Background Pages - -目前 Electron 沒有支援 Chrome 擴充套件的 background pages,所以一些會用到 background pages 的 DevTools 擴充套件可能會無法在 Electron 中運作。 - -## `chrome.*` APIs - -一些 Chrome 擴充套件可能使用到 `chrome.*` API,而儘管在 Electron 中有一些這種 API 的實作,還是沒有所有的部分都被實作到。 - -因為並非所有 `chrome.*` API 都有實作,如果一個 DevTools 擴充套件有使用到而非 `chrome.devtools.*`,這個套件非常有可能無法運作,你可以回報失敗的擴充套件到 issue tracker,那我們就可以把這些 API 加入支援。 - -[devtools-extension]: https://developer.chrome.com/extensions/devtools diff --git a/docs-translations/zh-TW/tutorial/mac-app-store-submission-guide.md b/docs-translations/zh-TW/tutorial/mac-app-store-submission-guide.md deleted file mode 100644 index b33ddeda4052..000000000000 --- a/docs-translations/zh-TW/tutorial/mac-app-store-submission-guide.md +++ /dev/null @@ -1,104 +0,0 @@ -# Mac App Store 提交指引 - -自從版本 v0.34.0 開始,Electron 允許提交打包好的應用程式到 Mac App Store(MAS),這個指引提供了以下資訊:如何提交你的應用程式和 MAS 的建置限制。 - -__Note:__ 提交一個應用程式到 Mac App Store 需要註冊要付費的 [Apple Developer -Program][developer-program]. - -## 如何提交你的應用程式 - -以下步驟介紹了一個簡單的方法提交你的應用程式到 Mac App Store,然而這些步驟不保證你的應用程式會被 Apple 批准,你仍然需要閱讀 Apple 的 [Submitting Your App][submitting-your-app] 指引來達到 Mac App Store 的要求。 - -### 取得認證 - -要提交你的應用程式到 Mac App Store,你首先必須取得 Apple 的認證,你可以遵循這些網路上的 [existing guides][nwjs-guide]。 - -### 簽署你的應用程式 - -取得了 Apple 的認證以後,你可以遵照 [Application Distribution](application-distribution.md) 來打包你的應用程式,然後進行你應用程式的簽署,這個步驟基本上與其他程式相同,但重點在於你要一一為每個 Electron 的相依套件做簽署。 - -首先,你需要準備兩個管理權限用的檔案。 - -`child.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - com.apple.security.inherit - - - -``` - -`parent.plist`: - -```xml - - - - - com.apple.security.app-sandbox - - - -``` - -接著遵照下面的腳本簽署你的應用程式: - -```bash -#!/bin/bash - -# Name of your app. -APP="YourApp" -# The path of you app to sign. -APP_PATH="/path/to/YouApp.app" -# The path to the location you want to put the signed package. -RESULT_PATH="~/Desktop/$APP.pkg" -# The name of certificates you requested. -APP_KEY="3rd Party Mac Developer Application: Company Name (APPIDENTITY)" -INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)" - -FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" - -codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Libraries/libnode.dylib" -codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Electron Framework" -codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/" -codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/" -codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/" -codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/" -codesign -fs "$APP_KEY" --entitlements parent.plist "$APP_PATH" -productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" -``` - -如果你是第一次使用 macOS 下的應用程式沙盒(app sandboxing),你應該也要閱讀 Apple 的 [Enabling App Sandbox][enable-app-sandbox] 以具備基本概念,然後把你的應用程式會用到的 key 的權限都加入管理權現的檔案中。 - -### 上傳你的應用程式和提交檢視 - -當你簽署好你的應用程式後,你可以使用應用程式載入器(Application Loader)把他上傳到 iTunes,處理中請保持連線順暢,在上傳以前請確保你已經 [建立一個紀錄][create-record],機著你就可以提交你的應用程式去檢視了。 - -## MAS 建置的限制 - -為了滿足應用程式沙盒的所有的要求,以下模組需要在 MAS 建置過程中被停用: - -* `crash-reporter` -* `auto-updater` - -然後以下的動作已經被變更: - -* 在某些機器上影像捕捉可能不能運作 -* 特定的存取特性可能無法運作 -* 應用程式將不管 DNS 的改變 - -此外,由於使用了應用程式沙盒,那些可以被應用程式存取的資源會被嚴格限制,你可以閱讀 [App Sandboxing][app-sandboxing] 以取得更多資訊。 - -[developer-program]: https://developer.apple.com/support/compare-memberships/ -[submitting-your-app]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppDistributionGuide/SubmittingYourApp/SubmittingYourApp.html -[nwjs-guide]: https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline#first-steps -[enable-app-sandbox]: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html -[create-record]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.html -[submit-for-review]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html -[app-sandboxing]: https://developer.apple.com/app-sandboxing/ diff --git a/docs-translations/zh-TW/tutorial/online-offline-events.md b/docs-translations/zh-TW/tutorial/online-offline-events.md deleted file mode 100644 index 2848ed089fcf..000000000000 --- a/docs-translations/zh-TW/tutorial/online-offline-events.md +++ /dev/null @@ -1,80 +0,0 @@ -# 在線/離線事件偵測 - -我們可以在渲染引擎 (renderer) 的行程裡用標準的 HTML5 API 來實作在線與離線事件的偵測。 -請參考以下範例: - -_main.js_ - -```javascript -var app = require('app') -var BrowserWindow = require('browser-window') -var onlineStatusWindow - -app.on('ready', function () { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` - -您也許有時候也會有想要在主行程裡回應這些事件的情況。然而,在主行程裡並沒有 `navigator` 這個物件,因此不能直接地偵測這些事件。 -但我們可以使用 Electron 所提供的跨行程 (inter-process) 溝通的工具,事件就可以被傳送到主程序內並做您所需的處理。 -請參考以下範例: - -_main.js_ - -```javascript -var app = require('app') -var ipc = require('ipc') -var BrowserWindow = require('browser-window') -var onlineStatusWindow - -app.on('ready', function () { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) - -ipc.on('online-status-changed', function (event, status) { - console.log(status) -}) -``` - -_online-status.html_ - -```html - - - - - - -``` diff --git a/docs-translations/zh-TW/tutorial/quick-start.md b/docs-translations/zh-TW/tutorial/quick-start.md deleted file mode 100644 index 3fe46f1adabf..000000000000 --- a/docs-translations/zh-TW/tutorial/quick-start.md +++ /dev/null @@ -1,174 +0,0 @@ -# 快速入門 - -## 簡介 - -Electron 可以讓你使用純 JavaScript 提供豐富的原生的 APIs 來創造桌面應用程式。 -你可以把它視為一個 Node.js 的變體,專注於桌面應用程式而不是 web 伺服器。 - -這不表示 Electron 是一個用 JavaScript 去綁定 GUI 函式庫。取而代之的,Electron 是使用網頁介面來作為它的 GUI , -所以你可以把它看作是一個被 JavaScript 所控制且精簡化的 Chromium 瀏覽器。 - -## 主行程 - -在 Electron 裡,有個行程會去運行 `package.json` 裡的 `main` 腳本被稱為 __主行程__ 。 -這個腳本運行在主行程裏可以顯示一個 GUI 就由創建一個 web 頁面。 - -## 渲染行程 - -因為 Electron 使用 Chromium 來顯示網頁,所以 Chromium 的多行程架構也被充分利用。 -每一個網頁在 Electron 裏執行各自的行程,被稱為 __渲染行程__。 - -在一般瀏覽器中,網頁通常會在沙盒環境下運行,並且不允許存取原生資源。然而, -Electron 的用戶擁有在網頁中呼叫 Node.js APIs 的能力,允許低級別操作與作業系統的交互作用。 - -## 主行程與渲染行程的區別 - -主行程創造網頁透過創造 `BrowserWindow` 實例。每一個 `BrowserWindow` 實例都在自己的渲染行程裡運行著一個網頁。 -當一個 `BrowserWindow` 實例被銷毀,對應的渲染行程也會被終止。主行程管理所有網頁和與之對應的渲染行程。 -每一個渲染行程都是相互獨立的,並且只關心他們自己的網頁。 - -在網頁中,是不允許呼叫原生 GUI 相關 APIs 因為管理原生 GUI 資源在網頁上是非常危險而且容易造成資源洩露。 -如果你想要在網頁中呼叫 GUI 相關的 APIs 的操作,網頁的渲染行程必須與主行程進行通訊,請求主行程進行相關的操作。 - -在 Electron,我們提供用於在主行程與渲染行程之間通訊的 [ipc](../api/ipc-renderer.md) 模組。並且也有一個遠端模組使用 RPC 通訊方式 [remote](../api/remote.md)。 - -# 打造你第一個 Electron 應用 - -一般來說,一個 Electron 應用程式的目錄結構像下面這樣: - -```text -your-app/ -├── package.json -├── main.js -└── index.html -``` - -`package.json` 的格式與 Node 的模組完全一樣,並且有個腳本被指定為 `main` 是用來啟動你的應用程式,它運行在主行程上。 -你應用裡的 一個範例在你的 `package.json` 看起來可能像這樣: - -```javascripton -{ - "name" : "your-app", - "version" : "0.1.0", - "main" : "main.js" -} -``` - -__注意__:如果 `main` 沒有在 `package.json` 裏, Electron會嘗試載入 `index.js`。 - -`main.js` 用於創建視窗和處理系統事件,一個典型的例子如下: - -``` javascript -var app = require('app'); // 控制應用程式生命週期的模組。 -var BrowserWindow = require('browser-window'); // 創造原生瀏覽器窗口的模組 - -// 保持一個對於 window 物件的全域的引用,不然,當 JavaScript 被GC, -// window 會被自動地關閉 -var mainWindow = null; - -// 當所有窗口被關閉了,退出。 -app.on('window-all-closed', function() { -  // 在macOS 上,通常使用者在明確地按下 Cmd + Q 之前 -  // 應用會保持活動狀態 -  if (process.platform !== 'darwin') { -    app.quit(); -  } -}); - -// 當Electron 完成了初始化並且準備創建瀏覽器視窗的時候 -// 這個方法就被調用 -app.on('ready', function() { -  // 創建瀏覽器視窗 -  mainWindow = new BrowserWindow({width: 800, height: 600}); - -  // 載入應用程式的 index.html -  mainWindow.loadURL(`file://${__dirname}/index.html`); - -  // 打開開發者工具 -  mainWindow.webContents.openDevTools(); - -  // 當window 被關閉,這個事件會被觸發 -  mainWindow.on('closed', function() { -    // 取消引用 window 物件,如果你的應用程式支援多視窗的話, -    // 通常會把多個 window 物件存放在一個數組裡面, -    // 但這次不是。 -    mainWindow = null; -  }); -}); -``` - -最後,你想顯示的 `index.html` : - -```html - - -   -    Hello World! -   -   -    

Hello World!

- We are using node , - Chrome , - and Electron . -   - -``` - -# 運行你的應用程式 - -一旦你創造了最初的 `main.js` , `index.html` 和 `package.json` 這幾個文件,你可能會想嘗試在本地運行並測試,看看是不是和期望的那樣正常運行。 - -## electron-prebuild -如果你已經使用 `npm` 安裝了全域的 `electron-prebuilt`,那麼你只需要按照如下方式直接運行你的應用程式: - -```bash -electron . -``` - -如果你是局部性地安裝,那運行: - -```bash -./node_modules/.bin/electron . -``` - -## 手動下載 Electron Binary - -如果你手動下載了 Electron ,你可以直接使的 Binary 直接運行你的應用程式。 - -### Windows - -``` bash -$ .\electron\electron.exe your-app\ -``` - -### Linux - -``` bash -$ ./electron/electron your-app/ -``` - -### macOS - -``` bash -$ ./Electron.app/Contents/MacOS/Electron your-app/ -``` - -`Electron.app` 裡面是 Electron 釋出包,你可以在[這裡](https://github.com/electron/electron/releases)下載到。 - -# 作為版本發行 -在你完成了你的應用程式後,你可以依照 [應用部署](https://github.com/electron/electron/blob/master/docs/tutorial/application-distribution.md) 指南發布一個版本,並且運行已經打包好的應用程式。 - -# 試試這個範例 - -Clone 與執行本篇教學的程式碼,它們都放在 [`atom/electron-quick-start`](https://github.com/electron/electron-quick-start) 這個 repository。 - -**Note**: 執行這個範例需要 [Git](https://git-scm.com) 以及 [Node.js](https://nodejs.org/en/download/) (其中包括 [npm](https://npmjs.org)) 在你的作業系統。 - -```bash -# Clone the repository -$ git clone https://github.com/electron/electron-quick-start -# Go into the repository -$ cd electron-quick-start -# Install dependencies and run the app -$ npm install && npm start -``` diff --git a/docs-translations/zh-TW/tutorial/repl.md b/docs-translations/zh-TW/tutorial/repl.md deleted file mode 100644 index fc086f780b6c..000000000000 --- a/docs-translations/zh-TW/tutorial/repl.md +++ /dev/null @@ -1,24 +0,0 @@ -# REPL - -讀取(Read)-求值(Evaluate)-輸出(Print)-循環(Loop)(REPL)是一個簡單、 -互動式的程式語言環境,藉由簡單的使用者輸入(例如:簡單的表達式),計算輸入,然後輸出結果給使用者。 - -`repl` 模組實現了 REPL 功能,可以藉由以下的方式存取: - -* 假設你已在專案內部安裝了 `electron` 或是 `electron-prebuilt`: - - ```sh - ./node_modules/.bin/electron --interactive - ``` -* 假設你已全域地安裝了 `electron` 或是 `electron-prebuilt`: - - ```sh - electron --interactive - ``` - -以上的指令只會為主行程建立 REPL。 -你可以從開發者工具的主控台分頁來為渲染行程取得一個 REPL。 - -**註記:** `electron --interactive` 在 Windows 平台上並不適用。 - -在 [Node.js REPL docs](https://nodejs.org/dist/latest/docs/api/repl.html) 裡可以找到更多資訊。 diff --git a/docs-translations/zh-TW/tutorial/supported-platforms.md b/docs-translations/zh-TW/tutorial/supported-platforms.md deleted file mode 100644 index d17943761d99..000000000000 --- a/docs-translations/zh-TW/tutorial/supported-platforms.md +++ /dev/null @@ -1,26 +0,0 @@ -# 支援的平台 - -Electron 已支援以下平台: - -### macOS - -macOS 系統只有 64 位元的執行檔,且 macOS 的最低版本要求為 macOS 10.8。 - -### Windows - -Windows 7 和更新的版本都有支援,早期的作業系統都不支援(且無法運作)。 - - - -`x86` 和 `amd64` (x64) 的執行檔都有提供,請注意,`ARM` 版本的 Electron 還沒有支援。 - -### Linux - -已經建置好的 `ia32`(`i686`) 和 `x64`(`amd64`) Electron 執行檔都是在 Ubuntu 12.04 的環境下編譯,`arm` 執行檔是在 hard-float ABI 和 -Debian Wheezy 的 NEON 的 ARM v7 下編譯的。 - -已建置好的執行檔是否能夠成功在 Linux 發行版執行,要看該發行版在建置的平台上是否含有 Electron 會連結的函式庫,所以只有 Ubuntu 12.04 是已確定可以運行的,而以下平台也都有驗證過可以運行已建置好的 Electron 執行檔: - -* Ubuntu 12.04 and later -* Fedora 21 -* Debian 8 diff --git a/docs-translations/zh-TW/tutorial/updates.md b/docs-translations/zh-TW/tutorial/updates.md deleted file mode 100644 index c131dfd4edc6..000000000000 --- a/docs-translations/zh-TW/tutorial/updates.md +++ /dev/null @@ -1,82 +0,0 @@ -# 更新應用程式 - -有很多種方式能夠更新 Electron 應用程式,其中最簡單也最正式的一種是使用 [Squirrel](https://github.com/Squirrel) 框架,以及 Electron's [自動更新](../api/auto-updater.md)模組。 - -## 部署更新伺服器 - -首先,您需要部署一個伺服器讓[自動更新](../api/auto-updater.md)模組能夠下載更新檔案。 - -您可以選擇以下幾種服務: - -- [Hazel](https://github.com/zeit/hazel) – Simple update server for open-source -apps. Pulls from -[GitHub Releases](https://help.github.com/articles/creating-releases/) -and can be deployed for free on [Now](https://zeit.co/now). -- [Nuts](https://github.com/GitbookIO/nuts) – Also uses -[GitHub Releases](https://help.github.com/articles/creating-releases/), -but caches app updates on disk and supports private repositories. -- [electron-release-server](https://github.com/ArekSredzki/electron-release-server) – -Provides a dashboard for handling releases - -如果您的應用程式是使用 [electron-builder][electron-builder-lib] 打包,您可以使用 [electron-updater] 模組,它不需要部署伺服器且允許從靜態網址下載,例如 S3 或 GitHub 。 - -## 在您的應用程式中實作更新 - -當您部署好更新伺服器後,在您的程式碼中引用必要的模組,以下的程式碼將以 [Hazel](https://github.com/zeit/hazel) 服務為範例。 - -**重要:** 請確認以下的程式碼只會在您打包後的應用程式內執行,且不在開發環境中,您可以使用 [electron-is-dev](https://github.com/sindresorhus/electron-is-dev) 來確認當前環境。 - -```js -const {app, autoUpdater, dialog} = require('electron') -``` - -接下來,構造更新伺服器網址並傳入 [autoUpdater](../api/auto-updater.md) : - -```js -const server = 'https://your-deployment-url.com' -const feed = `${server}/update/${process.platform}/${app.getVersion()}` - -autoUpdater.setFeedURL(feed) -``` - -最後,檢查更新,以下的範例將會每分鐘檢查一次。 - -```js -setInterval(() => { - autoUpdater.checkForUpdates() -}, 60000) -``` - -當你[打包](../tutorial/application-distribution.md)您的應用程式後,應用程式將會收到每次您在 [GitHub Release](https://help.github.com/articles/creating-releases/) 的更新檔案。 - -## 應用更新 - -現在您已為應用程式部署了一個基礎的更新機制,為了要確保所有的用戶都會收到更新通知,您可以使用 autoUpdater API [events](../api/auto-updater.md#events) 來實作: - -```js -autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => { - const dialogOpts = { - type: 'info', - buttons: ['Restart', 'Later'], - title: 'Application Update', - message: process.platform === 'win32' ? releaseNotes : releaseName, - detail: 'A new version has been downloaded. Restart the application to apply the updates.' - } - - dialog.showMessageBox(dialogOpts, (response) => { - if (response === 0) autoUpdater.quitAndInstall() - }) -}) -``` - -同時確認所有的錯誤都有被[處理](../api/auto-updater.md#event-error),以下將以記錄錯誤至 `stderr` 為範例: - -```js -autoUpdater.on('error', message => { - console.error('There was a problem updating the application') - console.error(message) -}) -``` - -[electron-builder-lib]: https://github.com/electron-userland/electron-builder -[electron-updater]: https://www.electron.build/auto-update diff --git a/docs-translations/zh-TW/tutorial/using-native-node-modules.md b/docs-translations/zh-TW/tutorial/using-native-node-modules.md deleted file mode 100644 index ab1d33664531..000000000000 --- a/docs-translations/zh-TW/tutorial/using-native-node-modules.md +++ /dev/null @@ -1,50 +0,0 @@ -# 使用原生 node 模組 - -原生的 Node 模組 Electron 都有支援,但自從 Electron 使用了與 Node 官方不同的 V8 版本後,當你要建置原生模組的時候,你需要手動指定 Electron 標頭的位置。 - -## 原生 Node 模組的相容性 - -原生模組可能在 Node 開始使用一個新版本的 V8 時毀損,為了確保你想要用的模組能正確與 Electron 一起運行,你應該檢查是否支援 Electron 內部 Node 版本,你可以查看 [releases](https://github.com/electron/electron/releases) 或是使用 `process.version` (範例請見 [Quick Start](https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md)) 來檢查哪個 Node 版本是現在的 Electron 使用的。 - -你可以考慮給你自己的模組使用 [NAN](https://github.com/nodejs/nan/),因為它可以較輕易的支援多種版本的 Node,它對於移植舊的模組到新版本的 Node 以便與 Electron 一起運作也是很有用的。 - -## 如何安裝原生模組 - -三種安裝原生模組的方式: - -### 簡單的方法 - -最直接重新建置原生模組的方法是透過 [`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) 套件,這個套件處理了手動下載標頭和建制原生模組的步驟: - -```sh -npm install --save-dev electron-rebuild - -# 每次你執行 "npm install", 執行這句 -./node_modules/.bin/electron-rebuild - -# 在 Windows 上如果你有狀況,試試看: -.\node_modules\.bin\electron-rebuild.cmd -``` - -### 使用 npm - -你也可以使用 `npm` 安裝模組,步驟與 Node 模組的安裝相同,除了你需要設定一些環境變數: - -```bash -export npm_config_disturl=https://atom.io/download/electron -export npm_config_target=0.33.1 -export npm_config_arch=x64 -export npm_config_runtime=electron -HOME=~/.electron-gyp npm install module-name -``` - -### 使用 node-gyp - -要把 Node 模組與 Eletron 的標頭一起建置,你需要告訴 `node-gyp` 下載標頭到哪裡,以及要使用哪個版本: - -```bash -$ cd /path-to-module/ -$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/electron -``` - -`HOME=~/.electron-gyp` 改變了尋找開發標頭的地方,`--target=0.29.1` 是 Eletron 的版本, `--dist-url=...` 指定了下載標頭到哪, `--arch=x64` 指出模組要建置在 64 位元系統。 diff --git a/docs-translations/zh-TW/tutorial/using-pepper-flash-plugin.md b/docs-translations/zh-TW/tutorial/using-pepper-flash-plugin.md deleted file mode 100644 index d514a7ef1f21..000000000000 --- a/docs-translations/zh-TW/tutorial/using-pepper-flash-plugin.md +++ /dev/null @@ -1,45 +0,0 @@ -# 使用 Pepper Flash 外掛 - -Electron 現在支援 Pepper Flash 外掛,要在 Electron 中使用 Pepper Flash 外掛,你應該手動指定 Pepper Flash 外掛的位置,並在你的應用程式中啟用它。 - -## 準備一份 Flash 外掛 - -在 macOS 和 Linux 上,Pepper Flash 外掛的細節可以透過查看 Chrome 瀏覽器中的 `chrome://plugins` 來得知,它的位置和版本對於 Electron 的 Pepper Flash 支援都有很大的幫助,你可以把它複製一份到別的位置。 - -## 加入 Electron 開關 - -你可以直接加入 `--ppapi-flash-path` 和 `ppapi-flash-version` 到 -Electron 命定列或是在應用程式的 ready 事件之前使用 `app.commandLine.appendSwitch` 方法,並且加入 `browser-window` 的 `plugins` 開關。 - -例如: - -```javascript -// 指定 Flash 路徑 -// Windows 中可能是 /path/to/pepflashplayer.dll -// macOS 中 /path/to/PepperFlashPlayer.plugin -// Linux 中 /path/to/libpepflashplayer.so -app.commandLine.appendSwitch('ppapi-flash-path', '/path/to/libpepflashplayer.so') - -// 指定 Flash 版本, 例如 v17.0.0.169 -app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169') - -app.on('ready', function () { - mainWindow = new BrowserWindow({ - 'width': 800, - 'height': 600, - 'web-preferences': { - 'plugins': true - } - }) - mainWindow.loadURL(`file://${__dirname}/index.html`) - // Something else -}) -``` - -## 在一個 `` Tag 中啟用 Flash 外掛 - -把 `plugins` 屬性加入 `` tag。 - -```html - -``` diff --git a/docs-translations/zh-TW/tutorial/using-selenium-and-webdriver.md b/docs-translations/zh-TW/tutorial/using-selenium-and-webdriver.md deleted file mode 100644 index 7ae388ca3c3e..000000000000 --- a/docs-translations/zh-TW/tutorial/using-selenium-and-webdriver.md +++ /dev/null @@ -1,123 +0,0 @@ -# 使用 Selenium 和 WebDriver - -根據 [ChromeDriver - WebDriver for Chrome][chrome-driver]: - -> WebDriver is an open source tool for automated testing of web apps across many -> browsers. It provides capabilities for navigating to web pages, user input, -> JavaScript execution, and more. ChromeDriver is a standalone server which -> implements WebDriver's wire protocol for Chromium. It is being developed by -> members of the Chromium and WebDriver teams. - -為了與 Electron 一起使用 `chromedriver`,你需要告訴 `chromedriver` 去哪找 Electron 並讓他知道 Electron 是 Chrome 瀏覽器。 - -## 透過 WebDriverJs 設定 - -[WebDriverJs](https://code.google.com/p/selenium/wiki/WebDriverJs) 提供一個 Node 套件來透過 web driver 做測試,我們將使用它作為例子。 - -### 1. 啟動 ChromeDriver - -首先你需要下載 `chromedriver` 執行檔,然後執行它: - -```bash -$ ./chromedriver -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -記住埠號(port number) `9515`,等等會使用到它 - -### 2. 安裝 WebDriverJS - -```bash -$ npm install selenium-webdriver -``` - -### 3. 連接到 ChromeDriver - -與 Electron 一起使用 `selenium-webdriver` 的方法基本上與 upstream 相同,除了你需要手動指定如何連接 chrome driver 和去哪找 Electron 的執行檔: - -```javascript -const webdriver = require('selenium-webdriver') - -var driver = new webdriver.Builder() - // The "9515" is the port opened by chrome driver. - .usingServer('http://localhost:9515') - .withCapabilities({ - chromeOptions: { - // Here is the path to your Electron binary. - binary: '/Path-to-Your-App.app/Contents/MacOS/Atom' - } - }) - .forBrowser('electron') - .build() - -driver.get('http://www.google.com') -driver.findElement(webdriver.By.name('q')).sendKeys('webdriver') -driver.findElement(webdriver.By.name('btnG')).click() -driver.wait(function () { - return driver.getTitle().then(function (title) { - return title === 'webdriver - Google Search' - }) -}, 1000) - -driver.quit() -``` - -## 透過 WebdriverIO 設定 - -[WebdriverIO](http://webdriver.io/) 提供一個 Node 套件來透過 web driver 做測試。 - -### 1. 啟動 ChromeDriver - -首先你需要下載 `chromedriver` 執行檔,然後執行它: - -```bash -$ chromedriver --url-base=wd/hub --port=9515 -Starting ChromeDriver (v2.10.291558) on port 9515 -Only local connections are allowed. -``` - -記住埠號(port number) `9515`,等等會用到它 - -### 2. 安裝 WebdriverIO - -```bash -$ npm install webdriverio -``` - -### 3. 連接到 chrome driver - -```javascript -const webdriverio = require('webdriverio') -var options = { - host: 'localhost', // Use localhost as chrome driver server - port: 9515, // "9515" is the port opened by chrome driver. - desiredCapabilities: { - browserName: 'chrome', - chromeOptions: { - binary: '/Path-to-Your-App/electron', // Path to your Electron binary. - args: [/* cli arguments */] // Optional, perhaps 'app=' + /path/to/your/app/ - } - } -} - -var client = webdriverio.remote(options) - -client - .init() - .url('http://google.com') - .setValue('#q', 'webdriverio') - .click('#btnG') - .getTitle().then(function (title) { - console.log('Title was: ' + title) - }) - .end() -``` - -## 運作流程 - -要在不重新建置 Electron 的情況下測試你的應用程式,只需要 [放置](https://github.com/electron/electron/blob/master/docs/tutorial/application-distribution.md) 你的應用程式到 Electron 的資源目錄中即可。 - -或者,傳遞一個指向你應用程式資料夾的參數來透過你的 Electron 執行檔運行,這會減少複製你應用程式到 Electron 資源資料夾的需求。 - -[chrome-driver]: https://sites.google.com/a/chromium.org/chromedriver/