Revert "Update APIs, check grammars"

This reverts commit d1eb971263f72deae84541d12b3bdd6d5972365a.
This commit is contained in:
Plusb Preco 2015-07-12 12:53:28 +09:00
parent 3b2f3c3152
commit eb81810a52
19 changed files with 232 additions and 235 deletions

View file

@ -67,6 +67,5 @@
* [빌드 설명서 (Linux)](development/build-instructions-linux-ko.md)
* [디버거에서 디버그 심볼 서버 설정](development/setting-up-symbol-server-ko.md)
이 참조문서는 [@preco21](https://github.com/preco21)에 의해 번역되었습니다.
문서내에서 오타나 잘못된 번역을 발견하면 `plusb21@gmail.com` 이메일로 알려주시면 감사하겠습니다.
원본과는 달리 항시 최신버전을 유지할 수 없으므로 원본을 같이 참고하는 것을 권장합니다.
이 문서는 [@preco21](https://github.com/preco21) 에 의해 번역되었습니다.
문서내에서 오타나 잘못된 번역이 발견될 경우 해당 repo를 fork한 후 수정하여 PR을 올리거나 `plusb21@gmail.com` 이메일로 알려주시면 감사하겠습니다.

View file

@ -139,10 +139,6 @@ This method guarantees all `beforeunload` and `unload` handlers are correctly
executed. It is possible that a window cancels the quitting by returning
`false` in `beforeunload` handler.
## app.getAppPath()
Returns the current application directory.
## app.getPath(name)
* `name` String

View file

@ -1,6 +1,6 @@
# auto-updater
**이 모듈은 현재 OS X에서만 사용할 수 있습니다.**
**This module has only been implemented for OS X.**
Check out [atom/grunt-electron-installer](https://github.com/atom/grunt-electron-installer)
for building a Windows installer for your app.

View file

@ -51,8 +51,10 @@ Hostname 맵핑 규칙을 설정합니다. (`,`로 분리)
also force the port of the resulting socket address to be 77.
* `MAP * baz, EXCLUDE www.google.com` Remaps everything to "baz", except for
"www.google.com".
이 맵핑은 네트워크 요청시의 endpoint를 지정합니다. (TCP 연결과 직접 연결의 호스트 resolver, http 프록시 연결의 `CONNECT`, `SOCKS` 프록시 연결의 endpoint 호스트)
These mappings apply to the endpoint host in a net request (the TCP connect
and host resolver in a direct connection, and the `CONNECT` in an http proxy
connection, and the endpoint host in a `SOCKS` proxy connection).
## --host-resolver-rules=`rules`
@ -86,14 +88,16 @@ Net log 이벤트를 지정한 `path`에 로그로 기록합니다.
## --vmodule=`pattern`
`--v` 옵션에 전달된 값을 덮어쓰고 모듈당 최대 V-logging 레벨을 지정합니다.
예를 들어 `my_module=2,foo*=3``my_module.*`, `foo*.*`와 같은 파일 이름 패턴을 가진 모든 소스 코드들의 로깅 레벨을 각각 2와 3으로 설정합니다.
Gives the per-module maximal V-logging levels to override the value given by
`--v`. E.g. `my_module=2,foo*=3` would change the logging level for all code in
source files `my_module.*` and `foo*.*`.
슬래시(`/`), 백슬래시(`\`)를 포함하는 모든 패턴은 모듈뿐만 아니라 모든 경로명에 대해서도 테스트 됩니다.
예를 들어 `*/foo/bar/*=2` 표현식은 `foo/bar` 디렉터리 안의 모든 소스 코드의 로깅 레벨을 2로 지정합니다.
모든 크로미움과 관련된 로그를 비활성화하고 어플리케이션의 로그만 활성화 하려면 다음과 같이 코드를 작성하면 됩니다:
Any pattern containing a forward or backward slash will be tested against the
whole pathname and not just the module. E.g. `*/foo/bar/*=2` would change the
logging level for all code in source files under a `foo/bar` directory.
To disable all chromium related logs and only enable your application logs you
can do:
```javascript
app.commandLine.appendSwitch('v', -1);

View file

@ -86,18 +86,3 @@ console.log(clipboard.has('<p>selection</p>'));
클립보드로부터 `data`를 읽어들입니다.
**알림:** 이 API는 실험적인 기능이며 차후 최신버전에서 제외될 수 있습니다.
## clipboard.write(data[, type])
* `data` Object
* `text` String
* `html` String
* `image` [NativeImage](native-image.md)
* `type` String
```javascript
var clipboard = require('clipboard');
clipboard.write({text: 'test', html: "<b>test</b>"});
```
`data`를 클립보드에 씁니다.

View file

@ -1,7 +1,9 @@
# content-tracing
`content-trace` 모듈은 Chromium 컨텐츠 모듈단에서 생성된 데이터를 수집하고 추적하는데 사용됩니다.
이 모듈은 웹 인터페이스를 포함하고 있지 않으며 크롬 브라우저에서 `chrome://tracing/` 페이지를 열어 생성된 파일을 로드하면 결과를 볼 수 있습니다.
The `content-trace` module is used to collect tracing data generated by the
underlying Chromium content module. This module does not include a web interface
so you need to open `chrome://tracing/` in a Chrome browser and load the generated
file to view the result.
```javascript
var tracing = require('content-tracing');

View file

@ -1,6 +1,6 @@
# crash-reporter
다음 예제는 윈격 서버에 어플리케이션 오류 정보를 자동으로 보고하는 예제입니다:
An example of automatically submitting crash reporters to remote server:
```javascript
crashReporter = require('crash-reporter');
@ -15,46 +15,47 @@ crashReporter.start({
## crashReporter.start(options)
* `options` Object
* `productName` String, 기본값: Electron
* `companyName` String, 기본값: GitHub, Inc
* `submitUrl` String, 기본값: http://54.249.141.255:1127/post
* Crash Reporter는 POST 방식으로 해당 URL에 전송됩니다.
* `autoSubmit` Boolean, 기본값: true
* true로 지정할 경우 유저의 승인 없이 자동으로 오류를 보고합니다.
* `ignoreSystemCrashHandler` Boolean, 기본값: false
* `productName` String, default: Electron
* `companyName` String, default: GitHub, Inc
* `submitUrl` String, default: http://54.249.141.255:1127/post
* URL that crash reports would be sent to as POST
* `autoSubmit` Boolean, default: true
* Send the crash report without user interaction
* `ignoreSystemCrashHandler` Boolean, default: false
* `extra` Object
* 오류보고 시 같이 보낼 추가 정보를 지정하는 객체입니다.
* 문자열로 된 속성만 정상적으로 보내집니다.
* 중첩 객체는 지원되지 않습니다. (Nested objects are not supported)
다른 crashReporter API들을 사용하기 전에 이 함수를 먼저 호출해야 합니다.
* An object you can define which content will be send along with the report.
* Only string properties are send correctly.
* Nested objects are not supported.
Developers are required to call the API before using other crashReporter APIs.
**알림:** OS X에선 Windows와 Linux의 `breakpad`와 달리 새로운 `crashpad` 클라이언트를 사용합니다.
오류 수집 기능을 활성화 시키려면 오류를 수집하고 싶은 메인 프로세스나 랜더러 프로세스에서
`crashReporter.start` 함수를 호출하여 `crashpad`를 초기화 해야합니다.
**Note:** On OS X, electron uses a new `crashpad` client, which is different
with the `breakpad` on Windows and Linux. To enable crash collection feature,
you are required to call `crashReporter.start` API to initiliaze `crashpad` in
main process, even you only collect crash report in renderer process.
## crashReporter.getLastCrashReport()
마지막 오류보고의 날짜와 ID를 반환합니다.
이전 오류보고가 없거나 Crash Reporter가 시작되지 않았을 경우 `null`이 반환됩니다.
Returns the date and ID of last crash report, when there was no crash report
sent or the crash reporter is not started, `null` will be returned.
## crashReporter.getUploadedReports()
모든 업로드된 오류보고를 반환합니다. 각 보고는 날짜와 업로드 ID를 포함하고 있습니다.
Returns all uploaded crash reports, each report contains date and uploaded ID.
# crash-reporter 오류보고 형식
# crash-reporter payload
Crash Reporter는 다음과 같은 데이터를 `submitUrl``POST` 방식으로 전송합니다:
The crash reporter will send the following data to the `submitUrl` as `POST`:
* `rept` String - 예시 'electron-crash-service'
* `ver` String - Electron의 버전
* `platform` String - 예시 'win32'
* `process_type` String - 예시 'renderer'
* `rept` String - e.g. 'electron-crash-service'
* `ver` String - The version of Electron
* `platform` String - e.g. 'win32'
* `process_type` String - e.g. 'renderer'
* `ptime` Number
* `_version` String - `package.json`내의 `version` 필드
* `_productName` String - Crash Reporter의 `options` 객체에서 정의한 제품명.
* `prod` String - 기본 제품의 이름. 이 경우 Electron으로 표시됩니다.
* `_companyName` String - Crash Reporter의 `options` 객체에서 정의한 회사명.
* `upload_file_minidump` File - 오류보고 파일
* Crash Reporter의 `options` 객체에서 정의한 `extra` 객체의 속성들.
* `_version` String - The version in `package.json`
* `_productName` String - The product name in the crashReporter `options` object
* `prod` String - Name of the underlying product. In this case Electron
* `_companyName` String - The company name in the crashReporter `options` object
* `upload_file_minidump` File - The crashreport as file
* All level one properties of the `extra` object in the crashReporter `options` object

View file

@ -1,17 +1,17 @@
# dialog
`dialog` 모듈은 네이티브 시스템의 대화 상자를 조작할 때 사용할 수 있는 API입니다.
웹 어플리케이션에서 일반 네이티브 어플리케이션과 같은 사용자 경험을 제공할 수 있습니다.
The `dialog` module provides APIs to show native system dialogs, so web
applications can deliver the same user experience as native applications.
다음 예제는 파일과 디렉터리를 다중으로 선택하는 대화 상자를 표시하는 예제입니다:
An example of showing a dialog to select multiple files and directories:
```javascript
var win = ...; // 대화 상자를 사용할 창 객체
var win = ...; // window in which to show the dialog
var dialog = require('dialog');
console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', 'multiSelections' ]}));
```
**OS X 주의**: 대화 상자를 시트처럼 보여지게 하려면 `browserWindow` 인자에 `BrowserWindow` 객체의 참조를 제공하면 됩니다.
**Note for OS X**: If you want to present dialogs as sheets, the only thing you have to do is provide a `BrowserWindow` reference in the `browserWindow` parameter.
## dialog.showOpenDialog([browserWindow], [options], [callback])
@ -20,15 +20,16 @@ console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', '
* `title` String
* `defaultPath` String
* `filters` Array
* `properties` Array - 대화 상자가 사용할 기능(모드)이 담긴 배열입니다.
다음을 포함할 수 있습니다: `openFile`, `openDirectory`, `multiSelections`, `createDirectory`
* `properties` Array - Contains which features the dialog should use, can
contain `openFile`, `openDirectory`, `multiSelections` and
`createDirectory`
* `callback` Function
사용할 대화 상자의 기능이 담긴 배열입니다. 다음을 포함할 수 있습니다: `openFile`, `openDirectory`, `multiSelections`, `createDirectory`
On success, returns an array of file paths chosen by the user, otherwise
returns `undefined`.
작업에 성공하면 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외의 경우엔 `undefined`를 반환합니다.
`filters`를 지정하면 유저가 선택 가능한 파일 형식을 지정할 수 있습니다. 예제는 다음과 같습니다:
The `filters` specifies an array of file types that can be displayed or
selected, an example is:
```javascript
{
@ -40,10 +41,12 @@ console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', '
}
```
`callback`이 전달되면 메소드가 비동기로 작동되며 결과는 `callback(filenames)`을 통해 전달됩니다.
If a `callback` is passed, the API call would be asynchronous and the result
would be passed via `callback(filenames)`
Windows와 Linux에선 파일 선택 모드, 디렉터리 선택 모드를 동시에 사용할 수 없습니다.
그래서 이 두 플랫폼에선 `properties``['openFile', 'openDirectory']`로 설정하면 디렉터리 선택 대화 상자가 표시됩니다.
**Note:** On Windows and Linux, an open dialog can not be both a file selector
and a directory selector, so if you set `properties` to
`['openFile', 'openDirectory']` on these platforms, a directory selector will be shown.
## dialog.showSaveDialog([browserWindow], [options], [callback])
@ -54,41 +57,36 @@ Windows와 Linux에선 파일 선택 모드, 디렉터리 선택 모드를 동
* `filters` Array
* `callback` Function
작업에 성공하면
On success, returns the path of the file chosen by the user, otherwise returns
`undefined`.
작업에 성공하면 유저가 선택한 파일의 경로를 포함한 배열을 반환합니다. 그 외의 경우엔 `undefined`를 반환합니다.
The `filters` specifies an array of file types that can be displayed, see
`dialog.showOpenDialog` for an example.
`filters`를 지정하면 유저가 저장 가능한 파일 형식을 지정할 수 있습니다. 사용 방법은 `dialog.showOpenDialog``filters` 속성과 같습니다.
`callback`이 전달되면 메소드가 비동기로 작동되며 결과는 `callback(filename)`을 통해 전달됩니다.
If a `callback` is passed, the API call will be asynchronous and the result
will be passed via `callback(filename)`
## dialog.showMessageBox([browserWindow], options, [callback])
* `browserWindow` BrowserWindow
* `options` Object
** `type` String - `"none"`, `"info"`, `"error"`, `"question"`, `"warning"` 중 하나를 사용할 수 있습니다.
* `buttons` Array - 버튼들의 라벨을 포함한 배열입니다.
* `title` String - 메시지 상자의 제목입니다. 몇몇 플랫폼에선 보이지 않을 수 있습니다.
* `message` String - 메시지 상자의 본문 내용입니다.
* `detail` String - 메시지의 추가 정보입니다.
* `type` String - Can be `"none"`, `"info"` or `"warning"`
* `buttons` Array - Array of texts for buttons
* `title` String - Title of the message box, some platforms will not show it
* `message` String - Content of the message box
* `detail` String - Extra information of the message
* `icon` [NativeImage](native-image-ko.md)
* `cancelId` Integer - 유저가 대화 상자의 버튼을 클릭하지 않고 대화 상자를 취소했을 때 반환되는 버튼의 index입니다.
기본적으로 버튼 리스트가 "cancel" 또는 "no" 라벨을 가지고 있을 때 해당 버튼의 index를 반환합니다. 따로 두 라벨이 지정되지 않은 경우 0을 반환합니다.
OS X와 Windows에선 `cancelId` 지정 여부에 상관없이 "Cancel" 버튼이 언제나 `cancelId`로 지정됩니다.
* `callback` Function
메시지 상자를 표시합니다. `browserWindow`를 지정하면 메시지 상자가 완전히 닫힐 때까지는 창을 사용할 수 없습니다.
완료시 유저가 선택한 버튼의 index를 반환합니다.
Shows a message box, it will block until the message box is closed. It returns
the index of the clicked button.
역주: 부정을 표현하는 "아니오", "취소"와 같은 한글 단어는 지원되지 않습니다.
만약 OS X 또는 Windows에서 "확인", "취소"와 같은 순서로 버튼을 지정하게 될 때 Alt + f4로 해당 대화 상자를 끄게 되면 "확인"을 누른걸로 판단되어 버립니다.
이를 해결하려면 "Cancel"을 대신 사용하거나 BrowserWindow API를 사용하여 메시지 상자를 직접 구현해야합니다.
`callback`이 전달되면 메소드가 비동기로 작동되며 결과는 `callback(response)`을 통해 전달됩니다.
If a `callback` is passed, the API call will be asynchronous and the result
will be passed via `callback(response)`
## dialog.showErrorBox(title, content)
에러 메시지를 보여주는 모달 대화 상자를 표시합니다.
Runs a modal dialog that shows an error message.
이 API는 `app` 모듈의 `ready` 이벤트가 발생하기 전에 사용할 수 있습니다.
이 메소드는 보통 어플리케이션이 시작되기 전에 특정한 에러를 표시하기 위해 사용됩니다.
This API can be called safely before the `ready` event of `app` module emits, it
is usually used to report errors in early stage of startup.

View file

@ -1,19 +1,20 @@
# Frameless 윈도우
# Frameless window
Frameless 윈도우는 테두리가 없는 윈도우 창을 말합니다.
frameless window는 테두리가 없는 윈도우 창을 말합니다.
## Frameless 윈도우 만들기
## Frameless window 만들기
Frameless 윈도우를 만드려면 [BrowserWindow](browser-window-ko.md) 객체의 `options`에서 `frame` 옵션을 `false`로 지정하기만 하면됩니다:
Frameless window를 만드려면 [BrowserWindow](browser-window-ko.md) 객체의 `options`에서 `frame` 옵션을 `false`로 지정하기만 하면됩니다:
```javascript
var BrowserWindow = require('browser-window');
var win = new BrowserWindow({ width: 800, height: 600, frame: false });
```
## 투명한 창 만들기
## 투명한 윈도우
Frameless 윈도우의 창의 배경을 투명하게 만들고 싶다면 `transparent` 옵션을 `true`로 바꿔주기만 하면됩니다:
By setting the `transparent` option to `true`, you can also make the frameless
window transparent:
```javascript
var win = new BrowserWindow({ transparent: true, frame: false });
@ -21,32 +22,39 @@ var win = new BrowserWindow({ transparent: true, frame: false });
### API의 한계
* 투명한 영역을 통과하여 클릭할 수 없습니다. 우리는 이 문제를 해결하기 위해 API를 제공할 예정이지만 현재로써는
[upstream 버그](https://code.google.com/p/chromium/issues/detail?id=387234)로 인해 중단된 상태입니다.
* 투명한 창은 크기를 조절할 수 없습니다. `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를 사용할 수 있도록 해줍니다.
* OS X(Mac)에선 네이티브 윈도우의 그림자가 투명한 창에선 보이지 않습니다.
* You can not click through the transparent area, we are going to introduce an
API to set window shape to solve this, but currently blocked at an
[upstream bug](https://code.google.com/p/chromium/issues/detail?id=387234).
* Transparent window is not resizable, setting `resizable` to `true` may make
transparent window stop working on some platforms.
* The `blur` filter only applies to the web page, so there is no way to apply
blur effect to the content below the window.
* On Windows transparent window will not work when DWM is disabled.
* On Linux users have to put `--enable-transparent-visuals --disable-gpu` in
command line to disable GPU and allow ARGB to make transparent window, this is
caused by an upstream bug that [alpha channel doesn't work on some NVidia
drivers](https://code.google.com/p/chromium/issues/detail?id=369209) on Linux.
* On Mac the native window shadow will not show for transparent window.
## 드래그 가능 위치 지정
기본적으로 Frameless 윈도우는 드래그 할 수 없습니다.
어플리케이션의 CSS에서 특정 범위를 `-webkit-app-region: drag`로 지정하면 OS의 기본 타이틀바 처럼 드래그 되도록 할 수 있습니다.
그리고 `-webkit-app-region: no-drag`를 지정해서 드래그 불가능 영역을 만들 수도 있습니다. 현재 사각형 형태의 범위만 지원합니다.
By default, the frameless window is non-draggable. Apps need to specify
`-webkit-app-region: drag` in CSS to tell Electron which regions are draggable
(like the OS's standard titlebar), and apps can also use
`-webkit-app-region: no-drag` to exclude the non-draggable area from the
draggable region. Note that only rectangular shape is currently supported.
창 전체를 드래그 가능하게 만드려면 `-webkit-app-region: drag``body`의 스타일에 지정하면 됩니다:
To make the whole window draggable, you can add `-webkit-app-region: drag` as
`body`'s style:
```html
<body style="-webkit-app-region: drag">
</body>
```
참고로 창 전체를 드래그 영역으로 지정할 경우 사용자가 버튼을 클릭할 수 없게 되므로 버튼은 드래그 불가능 영역으로 지정해야 합니다:
And note that if you have made the whole window draggable, you must also mark
buttons as non-draggable, otherwise it would be impossible for users to click on
them:
```css
button {
@ -54,13 +62,15 @@ button {
}
```
또한 커스텀 타이틀바를 만들어 사용할 때 타이틀바 내부의 버튼도 드래그 불가능 영역으로 지정해야 합니다.
If you're only using a custom titlebar, you also need to make buttons in
titlebar non-draggable.
## 텍스트 선택
한가지, Frameless 윈도우에서 텍스트가 선택되는 드래그 동작은 혼란을 야기할 수 있습니다.
예를 들어 타이틀바를 드래그 할 때 타이틀바의 텍스트를 실수로 선택할 수 있습니다.
이를 방지하기 위해선 다음과 같이 드래그 영역의 텍스트 선택 동작을 비활성화해야 할 필요가 있습니다:
One thing on frameless window is that the dragging behaviour may conflict with
selecting text, for example, when you drag the titlebar, you may accidentally
select the text on titlebar. To prevent this, you need to disable text
selection on dragging area like this:
```css
.titlebar {
@ -71,5 +81,7 @@ button {
## 컨텍스트 메뉴
몇몇 플랫폼에선 드래그 가능 영역이 non-client 프레임으로 처리됩니다. 그래서 이 영역에서 오른쪽 클릭을 할 경우 시스템 메뉴가 팝업 됩니다.
그래서 컨텍스트 메뉴 지정이 모든 플랫폼에서 정상적으로 작동하게 하려면 커스텀 컨텍스트 메뉴를 드래그 영역 내에 만들어선 안됩니다.
On some platforms, the draggable area would be treated as non-client frame, so
when you right click on it a system menu would be popuped. To make context menu
behave correctly on all platforms, you should never custom context menu on
draggable areas.

View file

@ -1,10 +1,12 @@
# menu
`Menu` 클래스는 어플리케이션 메뉴와 컨텍스트 메뉴를 만들 때 사용할 수 있습니다.
각 메뉴는 여러 개의 메뉴 아이템으로 구성되어 있으며 서브 메뉴를 가질 수도 있습니다.
The `Menu` class is used to create native menus that can be used as
application menus and context menus. Each menu consists of multiple menu
items, and each menu item can have a submenu.
다음 예제는 웹 페이지 내에서 [remote](remote-ko.md) 모듈을 활용하여 동적으로 메뉴를 생성하는 예제입니다.
그리고 이 예제에서 만들어진 메뉴는 유저가 페이지에서 오른쪽 클릭을 할 때 마우스 위치에 팝업으로 표시됩니다:
Below is an example of creating a menu dynamically in a web page by using
the [remote](remote-ko.md) module, and showing it when the user right clicks
the page:
```html
<!-- index.html -->
@ -25,7 +27,7 @@ window.addEventListener('contextmenu', function (e) {
</script>
```
다음 예제는 template API를 활용하여 어플리케이션 메뉴를 만드는 간단한 예제입니다:
Another example of creating the application menu with the simple template API:
```html
<!-- index.html -->
@ -165,30 +167,34 @@ Menu.setApplicationMenu(menu);
### new Menu()
새로운 메뉴를 생성합니다.
Creates a new menu.
### Class Method: Menu.setApplicationMenu(menu)
* `menu` Menu
지정한 `menu`를 이용하여 어플리케이션 메뉴를 만듭니다. OS X에선 상단바에 표시되며 Windows와 Linux에선 각 창의 상단에 표시됩니다.
Sets `menu` as the application menu on OS X. On Windows and Linux, the `menu`
will be set as each window's top menu.
### Class Method: Menu.sendActionToFirstResponder(action)
* `action` String
`action`을 어플리케이션의 first responder에 전달합니다.
이 함수는 Cocoa 메뉴 동작을 에뮬레이트 하는데 사용되며 보통 `MenuItem``selector` 속성에 사용됩니다.
Sends the `action` to the first responder of application, this is used for
emulating default Cocoa menu behaviors, usually you would just use the
`selector` property of `MenuItem`.
**알림:** 이 함수는 OS X에서만 사용할 수 있습니다.
**Note:** This method is OS X only.
### Class Method: Menu.buildFromTemplate(template)
* `template` Array
기본적으로 `template`는 [MenuItem](menu-item-ko.md)을 생성할 때 사용하는 `options`의 배열입니다. 사용법은 위에서 설명한 것과 같습니다.
Generally, the `template` is just an array of `options` for constructing
[MenuItem](menu-item-ko.md), the usage can be referenced above.
또한 `template`에는 다른 속성도 추가할 수 있으며 메뉴가 만들어질 때 해당 메뉴 아이템의 프로퍼티로 변환됩니다.
You can also attach other fields to element of the `template`, and they will
become properties of the constructed menu items.
### Menu.popup(browserWindow, [x, y])
@ -196,70 +202,86 @@ Menu.setApplicationMenu(menu);
* `x` Number
* `y` Number
메뉴를 `browserWindow` 안에서 팝업으로 표시합니다.
옵션으로 메뉴를 표시할 `(x,y)` 좌표를 임의로 지정할 수 있습니다. 따로 지정하지 않은 경우 마우스 커서 위치에 표시됩니다.
Popups this menu as a context menu in the `browserWindow`. You can optionally
provide a `(x,y)` coordinate to place the menu at, otherwise it will be placed
at the current mouse cursor position.
### Menu.append(menuItem)
* `menuItem` MenuItem
메뉴의 리스트 끝에 `menuItem`을 삽입합니다.
Appends the `menuItem` to the menu.
### Menu.insert(pos, menuItem)
* `pos` Integer
* `menuItem` MenuItem
`pos` 위치에 `menuItem`을 삽입합니다.
Inserts the `menuItem` to the `pos` position of the menu.
### Menu.items
메뉴가 가지고 있는 메뉴 아이템들의 배열입니다.
Get the array containing the menu's items.
## OS X 어플리케이션 메뉴에 대해 알아 둬야 할 것들
## Notes on OS X application menu
OS X에선 Windows, Linux와 달리 완전히 다른 어플리케이션 메뉴 스타일을 가지고 있습니다.
어플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해선 다음의 몇 가지 유의 사항을 숙지해야 합니다.
OS X has a completely different style of application menu from Windows and
Linux, and here are some notes on making your app's menu more native-like.
### 기본 메뉴
### Standard menus
OS X엔 `Services``Windows`와 같은 많은 시스템 지정 기본 메뉴가 있습니다.
기본 메뉴를 만들려면 다음 중 하나를 메뉴의 라벨로 지정하기만 하면 됩니다.
그러면 Electron이 자동으로 인식하여 해당 메뉴를 기본 메뉴로 만듭니다:
On OS X there are many system defined standard menus, like the `Services` and
`Windows` menus. To make your menu a standard menu, you can just set your menu's
label to one of followings, and Electron will recognize them and make them
become standard menus:
* `Window`
* `Help`
* `Services`
### 기본 메뉴 아이템 동작
### Standard menu item actions
OS X는 몇몇의 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Others`와 같은 기본 동작을 제공하고 있습니다. (`selector`라고 불립니다)
메뉴 아이템의 기본 동작을 지정하려면 메뉴 아이템의 `selector` 속성을 사용하면 됩니다.
OS X has provided standard actions for some menu items (which are called
`selector`s), like `About xxx`, `Hide xxx`, and `Hide Others`. To set the action
of a menu item to a standard action, you can set the `selector` attribute of the
menu item.
### 메인 메뉴의 이름
### Main menu's name
OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 어플리케이션의 이름이 됩니다.
어플리케이션 이름을 변경하려면 앱 번들내의 `Info.plist` 파일을 수정해야합니다.
자세한 내용은 [About Information Property List Files](https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html)을 참고하세요.
On OS X the label of application menu's first item is always your app's name,
no matter what label you set. To change it you have to change your app's name
by modifying your app bundle's `Info.plist` file. See
[About Information Property List Files](https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html)
for more.
## 메뉴 아이템 위치
`Menu.buildFromTemplate`로 메뉴를 만들 때 `position``id`를 사용해서 아이템의 위치를 지정할 수 있습니다.
## Menu item position
`MenuItem``position` 속성은 `[placement]=[id]`와 같은 형식을 가지며 `placement`
`before`, `after`, `endof` 속성 중 한가지를 사용할 수 있고 `id`는 메뉴 아이템이 가지는 유일 ID 입니다:
You can make use of `position` and `id` to control how the item would be placed
when building a menu with `Menu.buildFromTemplate`.
* `before` - 이 아이템을 지정한 id 이전의 위치에 삽입합니다. 만약 참조된 아이템이 없을 경우 메뉴의 맨 뒤에 삽입됩니다.
* `after` - 이 아이템을 지정한 id 다음의 위치에 삽입합니다. 만약 참조된 아이템이 없을 경우 메뉴의 맨 뒤에 삽입됩니다.
* `endof` - 이 아이템을 id의 논리 그룹에 맞춰서 각 그룹의 항목 뒤에 삽입합니다. (그룹은 분리자 아이템에 의해 만들어집니다)
만약 참조된 아이템의 분리자 그룹이 존재하지 않을 경우 지정된 id로 새로운 분리자 그룹을 만든 후 해당 그룹의 뒤에 삽입됩니다.
The `position` attribute of `MenuItem` has the form `[placement]=[id]` where
placement is one of `before`, `after`, or `endof` and `id` is the unique ID of
an existing item in the menu:
위치를 지정한 아이템의 뒤에 위치가 지정되지 않은 아이템이 있을 경우 해당 아이템의 위치가 지정되기 전까지 이전에 위치가 지정된 아이템의 위치 지정을 따릅니다.
이에 따라 위치를 이동하고 싶은 특정 그룹의 아이템들이 있을 경우 해당 그룹의 맨 첫번째 메뉴 아이템의 위치만을 지정하면 됩니다.
* `before` - Inserts this item before the id referenced item. If the
referenced item doesn't exist the item will be inserted at the end of
the menu.
* `after` - Inserts this item after id referenced item. If the referenced
item doesn't exist the item will be inserted at the end of the menu.
* `endof` - Inserts this item at the end of the logical group containing
the id referenced item. (Groups are created by separator items). If
the referenced item doesn't exist a new separator group is created with
the given id and this item is inserted after that separator.
### 예제
When an item is positioned following unpositioned items are inserted after
it, until a new item is positioned. So if you want to position a group of
menu items in the same location you only need to specify a position for
the first item.
메뉴 템플릿:
### Examples
Template:
```javascript
[
@ -271,7 +293,7 @@ OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번
]
```
메뉴:
Menu:
```
- 1
@ -281,7 +303,7 @@ OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번
- 5
```
메뉴 템플릿:
Template:
```javascript
[
@ -294,7 +316,7 @@ OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번
]
```
메뉴:
Menu:
```
- ---

View file

@ -19,20 +19,18 @@ app.on('ready', function() {
**알림:** 이 모듈은 app의 `ready` 이벤트가 발생한 이후에만 사용할 수 있습니다.
## protocol.registerProtocol(scheme, handler, callback)
## protocol.registerProtocol(scheme, handler)
* `scheme` String
* `handler` Function
* `callback` Function
지정한 `scheme`을 기반으로 커스텀 프로토콜을 등록합니다. `handler`등록한 `scheme` 프로토콜에 요청이 들어올 경우 `request` 인자와 함께 `handler(request)` 형식으로 호출됩니다.
지정한 `scheme`을 기반으로 커스텀 프로토콜을 등록합니다. 등록한 `scheme` 프로토콜에 요청이 들어올 경우 `request` 인자와 함께 `handler` 함수가 호출됩니다.
`handler` 함수에선 요청에 대한 해당 프로토콜의 작업 결과를 응답(반환) 해야 니다.
호출된 `handler` 함수에선 요청에 대한 해당 프로토콜의 작업 결과를 응답(반환) 해야 할 필요가 있습니다.
## protocol.unregisterProtocol(scheme, callback)
## protocol.unregisterProtocol(scheme)
* `scheme` String
* `callback` Function
지정한 `scheme` 프로토콜을 등록 해제합니다.
@ -42,27 +40,23 @@ app.on('ready', function() {
지정한 `value` 배열을 사용하여 미리 지정된 스킴으로 등록합니다.
## protocol.isHandledProtocol(scheme, callback)
## protocol.isHandledProtocol(scheme)
* `scheme` String
* `callback` Function
해당 `scheme`에 처리자(handler)가 등록되었는지 확인합니다.
지정한 `callback`에 결과가 boolean 값으로 반환됩니다.
## protocol.interceptProtocol(scheme, handler, callback)
## protocol.interceptProtocol(scheme, handler)
* `scheme` String
* `handler` Function
* `callback` Function
지정한 `scheme`의 작업을 `handler`로 변경합니다.
`handler`에서 `null` 또는 `undefined`를 반환 할 경우 해당 프로토콜의 기본 동작(응답)으로 대체 됩니다.
## protocol.uninterceptProtocol(scheme, callback)
## protocol.uninterceptProtocol(scheme)
* `scheme` String
* `callback` Function
변경된 프로토콜의 작업을 해제합니다.

View file

@ -1,6 +1,7 @@
# remote
`remote` 모듈은 메인 프로세스와 랜더러 프로세스 사이에 inter-process 통신을 하기 위한 가장 간단한 방법입니다.
The `remote` module provides a simple way to do inter-process communication
between the renderer process and the main process.
In Electron, only GUI-unrelated modules are available in the renderer process.
Without the `remote` module, users who wanted to call a main process API in

View file

@ -1,14 +1,13 @@
# screen
`screen` 모듈은 화면 크기, 디스플레이, 커서 위치 등등의 다양한 정보를 가져옵니다.
이 모듈은 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 없습니다.
Gets various info about screen size, displays, cursor position, etc. You should
not use this module until the `ready` event of `app` module gets emitted.
`screen` [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를 상속 받았습니다.
`screen` is an [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter).
한가지 주의할 점은 랜더러 / DevTools에선 이 모듈의 이름인 `screen`은 이미 DOM 속성에 `window.screen`로 존재 하므로 `screen = require('screen')`
사용할 수 없습니다. 밑의 예제와 같이 `atomScreen`등의 이름으로 변수 이름을 대체하여 사용해야 합니다.
Make sure to note that in the renderer / DevTools, `window.screen` is a reserved DOM property, so writing `screen = require('screen')` won't work. In our examples below, we use `atomScreen` as the variable name instead.
다음 예제는 화면 전체를 채우는 윈도우 창을 생성합니다:
An example of creating a window that fills the whole screen:
```javascript
var app = require('app');
@ -23,7 +22,7 @@ app.on('ready', function() {
});
```
다음 예제는 확장 디스플레이에 윈도우를 생성합니다:
Another example of creating a window in the external display:
```javascript
var app = require('app');
@ -56,14 +55,14 @@ app.on('ready', function() {
* `event` Event
* `newDisplay` Object
새로운 디스플레이가 추가되면 발생합니다.
Emitted when `newDisplay` has been added.
## Event: display-removed
* `event` Event
* `oldDisplay` Object
기존의 디스플레이가 제거되면 발생합니다.
Emitted when `oldDisplay` has been removed.
## Event: display-metrics-changed
@ -71,21 +70,21 @@ app.on('ready', function() {
* `display` Object
* `changedMetrics` Array
`display`의 하나 또는 다수의 매트릭스가 변경될 경우 발생합니다.
`changedMetrics`는 변경에 대한 정보를 담은 문자열의 배열입니다.
`bounds`, `workArea`, `scaleFactor`, `rotation`등이 변경될 수 있습니다.
Emitted when a `display` has one or more metrics changed, `changedMetrics` is
an array of strings that describe the changes. Possible changes are `bounds`,
`workArea`, `scaleFactor` and `rotation`.
## screen.getCursorScreenPoint()
현재 마우스 포인터의 절대 위치를 반환합니다.
Returns the current absolute position of the mouse pointer.
## screen.getPrimaryDisplay()
기본 디스플레이를 반환합니다.
Returns the primary display.
## screen.getAllDisplays()
사용 가능한 모든 디스플레이를 배열로 반환합니다.
Returns an array of displays that are currently available.
## screen.getDisplayNearestPoint(point)
@ -93,7 +92,7 @@ app.on('ready', function() {
* `x` Integer
* `y` Integer
지정한 좌표에 가까운 디스플레이를 반환합니다.
Returns the display nearest the specified point.
## screen.getDisplayMatching(rect)
@ -103,4 +102,4 @@ app.on('ready', function() {
* `width` Integer
* `height` Integer
지정한 범위에 가장 가깝게 교차한 디스플레이를 반환합니다.
Returns the display that most closely intersects the provided bounds.

View file

@ -26,7 +26,7 @@ shell.openExternal('https://github.com');
* `url` String
제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어 mailto: URL은 해당 URL을 기본 메일 에이전트로 엽니다.)
역주: 폴더는 'file:\\\\C:\\'와 같이 지정하여 열 수 있습니다. (`\\`로 경로를 표현한 이유는 Escape 문자열을 참고하세요.)
주: 폴더는 'file:\\\\C:\\'와 같이 지정하여 열 수 있습니다. (`\\`로 경로를 표현한 이유는 Escape 문자열을 참고하세요.)
## shell.moveItemToTrash(fullPath)

View file

@ -89,16 +89,7 @@ $ ./script/clean.py
## 문제 해결
개발 종속성 라이브러리들을 제대로 설치했는지 확인하세요.
## libtinfo.so.5 동적 링크 라이브러리를 로드하는 도중 에러가 발생할 경우
미리 빌드된 `clang``libtinfo.so.5`로 링크를 시도합니다.
플랫폼에 따라 적당한 `libncurses` symlink를 추가하세요.
```bash
$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5
```
개발 종속성 라이브러리들을 제대로 설치했는지 확인하세요.
## 테스트

View file

@ -25,14 +25,9 @@ Electron도 상당히 비슷한 접근을 했습니다:
## 부트스트랩 최소화
Prebuilt된 모든 Chromium 바이너리들은 부트스트랩 스크립트가 실행될 때 다운로드됩니다.
모든 사전 빌드 된 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

View file

@ -99,7 +99,7 @@ MyApp.app/Contents
실행파일 `electron`의 이름을 원하는 대로 바꿀 수 있습니다.
리눅스 어플리케이션의 아이콘은 [.desktop](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en) 파일을 사용하여 지정할 수 있습니다.
### 역주-자동화
### 역주-자동화
배포시에 Electron의 리소스를 일일이 수정하는 것은 매우 귀찮고 복잡합니다.
하지만 이 작업을 자동화 시킬 수 있는 몇가지 방법이 있습니다:

View file

@ -75,8 +75,6 @@ var mainWindow = null;
// 모든 창이 닫히면 어플리케이션 종료.
app.on('window-all-closed', function() {
// OSX의 대부분의 어플리케이션에선 유저가 Cmd + Q 커맨드로 확실하게 종료하기 전까지는
// 어플리케이션이 메뉴바에 남아 계속 실행됩니다.
if (process.platform != 'darwin') {
app.quit();
}
@ -114,16 +112,16 @@ app.on('ready', function() {
</head>
<body>
<h1>헬로 월드!</h1>
이 어플리케이션은 io.js <script>document.write(process.version)</script>
Electron <script>document.write(process.versions['electron'])</script>을 사용합니다.
우리는 io.js <script>document.write(process.version)</script> 버전
Electron <script>document.write(process.versions['electron'])</script> 버전을 사용합니다.
</body>
</html>
```
## 앱 실행하기
앱을 작성한 후 [어플리케이션 배포](./application-distribution-ko.md) 가이드를 따라 앱을 패키징 하고 패키징한 앱을 실행할 수 있습니다.
또는 Electron 실행파일을 다운로드 받아 바로 실행해 볼 수도 있습니다.
앱을 작성한 후 [어플리케이션 배포](./application-distribution-ko.md) 가이드를 따라 앱을 패키징 하고
패키징한 앱을 실행해 볼 수 있습니다. 또한 Electron 실행파일을 다운로드 받아 바로 실행해 볼 수도 있습니다.
Windows의 경우:

View file

@ -1,6 +1,6 @@
# 네이티브 node 모듈 사용하기
__역주: 현재 Electron은 node.js대신 io.js를 사용합니다. 문서에 기재된 버전과 다를 수 있습니다__
__역주: 현재 Electron은 node.js대신 io.js를 사용합니다. 문서에 기재된 버전과 다를 수 있습니다__
Electron에선 node.js 네이티브 모듈이 지원됩니다. 하지만 Electron은 공식 node.js의 V8 엔진과는 달리 다른 V8 버전을 사용합니다.
그런 이유로 네이티브 모듈을 사용하기 위해선 Electron의 V8 버전에 맞춰 네이티브 모듈을 다시 빌드하고 헤더를 변경해야 합니다.
@ -34,11 +34,11 @@ Node 모듈을 `node-gyp`를 사용하여 Electron을 타겟으로 빌드할 땐
```bash
$ cd /path-to-module/
$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell
$ HOME=~/.electron-gyp node-gyp rebuild --target=0.25.0 --arch=ia64 --dist-url=https://atom.io/download/atom-shell
```
`HOME=~/.electron-gyp`은 변경할 헤더의 위치를 찾습니다. `--target=0.29.1`은 Electron의 버전입니다.
`--dist-url=...`은 헤더를 다운로드 하는 주소입니다. `--arch=x64`는 64비트 시스템을 타겟으로 빌드 한다는 것을 `node-gyp`에게 알려줍니다.
`HOME=~/.electron-gyp`은 변경할 헤더의 위치를 찾습니다. `--target=0.25.0`은 Electron의 버전입니다.
`--dist-url=...`은 헤더를 다운로드 하는 주소입니다. `--arch=ia64`는 64비트 시스템을 타겟으로 빌드 한다는 것을 `node-gyp`에게 알려줍니다.
### npm을 이용한 방법
@ -47,7 +47,7 @@ $ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=ht
```bash
export npm_config_disturl=https://atom.io/download/atom-shell
export npm_config_target=0.29.1
export npm_config_target=0.25.0
export npm_config_arch=x64
HOME=~/.electron-gyp npm install module-name
```