Skip to content

Commit a4a8cf0

Browse files
Myunwoo임현우_FO-FE개발 DEV_소프트웍스
andauthored
Add Korean Translation for Handlebars.js Documentation (#145)
* Add Korean translation * Correct spacing errors * Live Demo Button path fix * Live Demo Button line break fix --------- Co-authored-by: 임현우_FO-FE개발 DEV_소프트웍스 <fddsgt1234@softworks.co.kr>
1 parent d433e78 commit a4a8cf0

File tree

86 files changed

+3151
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+3151
-0
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ module.exports = {
3535
files: [
3636
"src/usage-examples/precompilation/precompile-in-nodejs.js",
3737
"src/zh/usage-examples/precompilation/precompile-in-nodejs.js",
38+
"src/ko/usage-examples/precompilation/precompile-in-nodejs.js",
3839
],
3940
env: {
4041
node: true,

src/.vuepress/config-using-babel.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export default {
1717
lang: "zh-CN",
1818
title: "Handlebars",
1919
},
20+
"/ko/": {
21+
lang: "ko-KR",
22+
title: "Handlebars",
23+
},
2024
},
2125
head: [
2226
["link", { rel: "shortcut icon", type: "image/png", href: `/images/favicon.png` }],
@@ -93,6 +97,38 @@ export default {
9397
docsRepo: "handlebars-lang/docs",
9498
docsDir: "src/zh",
9599
},
100+
"/ko/": {
101+
selectText: "Languages",
102+
label: "한국어",
103+
ariaLabel: "Languages",
104+
nav: [
105+
{ text: "언어 가이드", link: "/ko/guide/" },
106+
{ text: "설치", link: "/ko/installation/" },
107+
{ text: "API 참조", link: "/ko/api-reference/" },
108+
{ text: "문서 개선", link: "/ko/contributing/" },
109+
],
110+
sidebar: {
111+
"/ko/installation/": ["", "precompilation.md", "integrations.md", "when-to-use-handlebars.md"],
112+
"/ko/guide/": ["", "expressions.md", "partials.md", "block-helpers.md", "builtin-helpers.md", "hooks.md"],
113+
"/ko/api-reference/": [
114+
"",
115+
"compilation.md",
116+
"runtime-options.md",
117+
"runtime.md",
118+
"utilities.md",
119+
"data-variables.md",
120+
"helpers.md",
121+
],
122+
"/ko/contributing/": ["", "interactive-examples.md", "button-links.md"],
123+
},
124+
displayAllHeaders: false,
125+
repo: "handlebars-lang/handlebars.js",
126+
lastUpdated: "마지막 업데이트",
127+
editLinks: true,
128+
editLinkText: "변경 사항을 제안하세요!",
129+
docsRepo: "handlebars-lang/docs",
130+
docsDir: "src/ko",
131+
},
96132
},
97133
repo: "handlebars-lang/handlebars.js",
98134
docsRepo: "handlebars-lang/docs",
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# (사전) 컴파일
2+
3+
## `Handlebars.compile(template, options)`
4+
5+
템플릿을 컴파일하여 즉시 실행할 수 있게 합니다.
6+
7+
```js
8+
const template = Handlebars.compile("{{foo}}");
9+
template({});
10+
```
11+
12+
템플릿 실행 방식을 변경하는 다양한 옵션을 지원합니다.
13+
14+
::: v-pre
15+
16+
- `data`: `@data` 추적을 비활성화하려면 false로 설정합니다.
17+
- `compat`: 재귀 필드 조회를 활성화하려면 true로 설정합니다.
18+
- `knownHelpers`: 템플릿 실행 시 존재하는 것으로 알려진 헬퍼 목록을 포함하는 해시입니다. 이를 전달하면 컴파일러가 여러
19+
경우를 최적화할 수 있습니다. 내장 헬퍼는 이 목록에 자동으로 포함되며 값을 `false`로 설정하여 생략할 수 있습니다.
20+
- `knownHelpersOnly`: 알려진 헬퍼 목록을 기반으로 추가 최적화를 허용하려면 true로 설정합니다.
21+
- `noEscape`: HTML 이스케이프를 하지 않으려면 true로 설정합니다.
22+
- `strict`: 엄격 모드에서 실행합니다. 이 모드에서는 누락된 필드를 묵인하지 않고 예외를 발생시킵니다. 이로 인해
23+
`{{^foo}}{{/foo}}`와 같은 역 연산이 데이터 소스 객체에 명시적으로 포함되지 않으면 비활성화됩니다.
24+
- `assumeObjects`: 경로를 탐색할 때 객체 존재 여부 확인을 제거합니다. 이는 데이터 입력이 안전하다고 알려진 경우 최적화된
25+
템플릿을 생성하는 엄격 모드의 하위 집합입니다.
26+
- `preventIndent`: 기본적으로 들여쓰기된 부분 템플릿 호출은 전체 부분 템플릿 출력이 동일한 양으로 들여쓰기되게 합니다.
27+
이는 부분 템플릿이 `pre` 태그를 작성할 때 예기치 않은 동작을 초래할 수 있습니다. 이 옵션을 `true`로 설정하면 자동 들여
28+
쓰기 기능이 비활성화됩니다.
29+
- `ignoreStandalone`: 설정 시 독립 태그 제거를 비활성화합니다. 설정하면 블록과 부분 템플릿이 각자 줄에 있을 때 해당 줄의
30+
공백을 제거하지 않습니다.
31+
- `explicitPartialContext`: 부분 템플릿의 암시적 컨텍스트를 비활성화합니다. 활성화되면 컨텍스트 값을 전달받지 않은 부분
32+
템플릿은 빈 객체를 대상으로 실행됩니다.
33+
34+
:::
35+
36+
## `Handlebars.precompile(template, options)`
37+
38+
주어진 템플릿을 사전 컴파일하여 클라이언트로 전송한 후 컴파일 없이 실행할 수 있게 합니다.
39+
40+
```js
41+
var templateSpec = Handlebars.precompile("{{foo}}");
42+
```
43+
44+
`Handlebars.compile` 메서드와 동일한 옵션 매개변수를 지원합니다. 추가적으로 다음을 전달할 수 있습니다:
45+
46+
- `srcName`: 입력 파일의 소스 맵을 생성하기 위해 전달됩니다. 이렇게 실행되면 반환 구조는 `{code, map}`이며, `code`에는
47+
템플릿 정의가 포함되고 `map`에는 소스 맵이 포함됩니다.
48+
- `destName`: 소스 맵을 생성할 때 `srcName`과 함께 사용되는 선택적 매개변수로, 대상 파일 이름을 제공합니다.
49+
50+
## `Handlebars.template(templateSpec)`
51+
52+
`Handlebars.precompile`로 사전 컴파일된 템플릿을 설정합니다.
53+
54+
```js
55+
var template = Handlebars.template(templateSpec);
56+
template({});
57+
```
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# `@data` 변수
2+
3+
다음 `@data` 변수들은 Handlebars와 내장 헬퍼에 의해 구현됩니다.
4+
5+
## `@root`
6+
7+
템플릿이 실행된 초기 컨텍스트입니다.
8+
9+
```handlebars
10+
{{#each array}} {{@root.foo}} {{/each}}
11+
```
12+
13+
명시적으로 수정되지 않는 한, 이 값은 페이지 렌더링의 모든 부분에서 일관되게 유지되므로, 깊은 매개변수가 상위 템플릿을 참
14+
조할 수 없는 부분 템플릿 내에서도 사용할 수 있습니다.
15+
16+
## `@first`
17+
18+
반복의 첫 번째 단계에서 `each` 헬퍼에 의해 true로 설정됩니다.
19+
20+
```handlebars
21+
{{#each array}} {{#if @first}} First! {{/if}} {{/each}}
22+
```
23+
24+
## `@index`
25+
26+
현재 반복 단계의 0부터 시작하는 인덱스입니다. `each` 헬퍼에 의해 설정됩니다.
27+
28+
```handlebars
29+
{{#each array}} {{@index}} {{/each}}
30+
```
31+
32+
## `@key`
33+
34+
현재 반복 단계의 키 이름입니다. 객체를 반복할 때 `each` 헬퍼에 의해 설정됩니다.
35+
36+
```handlebars
37+
{{#each array}} {{@key}} {{/each}}
38+
```
39+
40+
## `@last`
41+
42+
반복의 마지막 단계에서 `each` 헬퍼에 의해 true로 설정됩니다.
43+
44+
```handlebars
45+
{{#each array}} {{#if @last}} Last :( {{/if}} {{/each}}
46+
```
47+
48+
## `@level`
49+
50+
로그 레벨을 할당합니다.
51+
52+
```js
53+
template({}, { data: { level: Handlebars.logger.WARN } });
54+
```
55+
56+
`Handlebars.logger.DEBUG``Handlebars.logger.INFO``Handlebars.logger.WARN` 또는 `Handlebars.logger.ERROR` 중 하나로설
57+
정할 수 있습니다.
58+
59+
설정하게 되면, 로거는 출력에 `Handlebars.logger.level` 이상의 로그 레벨을 가진 메시지만 포함합니다. 기본 값은
60+
`Handlebars.logger.ERROR`입니다.

src/ko/api-reference/helpers.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# 헬퍼(Helpers)
2+
3+
## `options` 파라미터
4+
5+
헬퍼 호출에 사용되는 파라미터 외에도, options 객체가 추가 파라미터로 헬퍼에 전달됩니다.
6+
7+
- `lookupProperty(object, propertyName)`: 객체의 "자체 속성"을 반환하는 함수입니다. 이 함수는 `allowedProtoProperties`
8+
`allowedProtoMethods`에 지정된 화이트리스트를 따릅니다. 예시:
9+
10+
<ExamplePart examplePage="/ko/examples/helper-lookup-property.md" show="preparationScript" />
11+
12+
- TODO:헬퍼에 전달되는 모든 옵션을 설명하세요.

src/ko/api-reference/index.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 인덱스
2+
3+
TODO: 여기에 모든 함수의 인덱스를 작성할 수 있습니다. 가장 좋은 방법은 API 참조 부분의 모든 헤더를 수집하는 사용자 정의
4+
Vue-컴포넌트를 작성하는 것입니다. 하지만 지금은 페이지를 직접 찾아보거나 검색 기능을 사용해야 합니다.
5+
6+
- [(사전) 컴파일](compilation.md)
7+
- [런타임](runtime.md)
8+
- [유틸리티](utilities.md)
9+
- [헬퍼 유틸리티](utilities.md#helper-utilities)
10+
- [일반 유틸리티](utilities.md#general-utilities)
11+
- [내장 헬퍼에서 사용하는 `@data` 변수](data-variables.md)
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# 런타임 옵션
2+
3+
::: v-pre
4+
5+
`Handlebars.compile``Handlebars.precompile` 함수는 함수를 생성합니다. 이 함수는 `template(context, options)`로 호출
6+
될수 있으며, 여기서 `context`는 입력 객체입니다.
7+
8+
`options` 는 다음 속성을 가질 수 있는 객체입니다.
9+
10+
- `data` : 사용자 정의 `@variable` 프라이빗 변수를 정의하기 위해 객체를 전달합니다.
11+
- `helpers` 전역적으로 정의된 헬퍼 외에 사용자 정의 헬퍼를 제공하기 위해 전달합니다. 이 객체에 정의된 값은 템플릿 실행동
12+
안 전역 객체에 정의된 값을 대체합니다.
13+
- `partials` 전역적으로 정의된 부분 템플릿 외에 사용자 정의 부분 템플릿을 제공하기 위해 전달합니다. 이 객체에 정의된 값
14+
은 템플릿 실행 동안 전역 객체에 정의된 값을 대체합니다.
15+
- `allowCallsToHelperMissing`(4.3.0 이후, 안전하지 않음):`true`로 설정하면 `{{helperMissing}}`
16+
`{{blockHelperMissing}}`와 같은 호출이 허용됩니다. 이 옵션을 설정하면 템플릿 작성자가 Handlebars를 실행하는 환경에서원
17+
격 코드 실행을 위한 템플릿을 제작할 수 있으므로 주의해야 합니다 (자세한 내용은 여기를 참조하세요
18+
https://github.com/handlebars-lang/handlebars.js/issues/1558).
19+
20+
:::
21+
22+
## 프로토타입 접근을 제어하는 옵션
23+
24+
버전 4.6.0부터 Handlebars는 기본적으로 컨텍스트 객체의 프로토타입 속성 및 메서드에 대한 접근을 금지합니다. 이는 이러한가
25+
능성에서 발생하는 다양한 보안 문제 때문입니다. 다음 옵션을 사용하여 이 접근을 제어할 수 있습니다.
26+
27+
::: 위험 이러한 속성을 사용하는 것은 보안 허점을 열 수 있습니다.
28+
29+
프로토타입 속성을 허용하면 템플릿 작성자가 Handlebars가 실행되는 환경에서 임의의 코드를 실행할 수 있습니다. 일부 제한이
30+
있더라도 공격자는 Handlebars 템플릿을 제작하여 머신을 충돌시킬 수 있습니다.
31+
32+
자세한 내용은 npm 보안 권고 [755](https://www.npmjs.com/advisories/755), [1164](https://www.npmjs.com/advisories/1164),
33+
[1316](https://www.npmjs.com/advisories/1316), [1324](https://www.npmjs.com/advisories/1324)
34+
[1325](https://www.npmjs.com/advisories/1325) 그리고
35+
[Mahmoud Gamal](http://mahmoudsec.blogspot.com/2019/04/handlebars-template-injection-and-rce.html)의 블로그 기사를 참조
36+
하세요.
37+
38+
:::
39+
40+
- `allowProtoMethodsByDefault`(4.7.0 이후):기본적으로 객체의 프로토타입에 정의된 메서드가 해석 가능해야 하는지 여부를정
41+
의하는 부울 값 (기본값: false).
42+
43+
`constructor``__defineGetter__``__defineSetter__``__lookupGetter__`, `__lookupSetter__` 메서드는 이 옵션이
44+
`true`로 설정되어 있어도 금지됩니다. 이러한 메서드는 allowedProtoMethods에서 해당 키가 `true`로 설정된 경우에만 접근할
45+
수 있습니다.
46+
47+
이 옵션을 설정하면 프로토타입 메서드 접근이 시도되고 금지되었을 때 Handlebars가 콘솔에 기록하는 경고를 비활성화합니다.
48+
49+
- `allowedProtoMethods`(4.6.0 이후):부모 객체의 메서드인 경우 허용되는 속성 이름의 문자열-부울 맵입니다. 정의되지 않은
50+
값은 `allowProtoMethodsByDefault`에서 정의된 값으로 되돌아갑니다.
51+
52+
- `allowProtoPropertiesByDefault`(4.7.0 이후):본적으로 객체의 프로토타입에 정의된 비메서드 속성이 해석 가능해야 하는지
53+
여부를 정의하는 부울 값 (기본값: false).
54+
55+
`__proto__` 속성은 이 옵션이 `true`로 설정되어 있어도 금지됩니다. 이 속성은 `allowedProtoProperties`에서 해당 키가
56+
`true`로 설정된 경우에만 접근할 수 있습니다.
57+
58+
이 옵션을 설정하면 프로토타입 속성 접근이 시도되고 금지되었을 때 Handlebars가 콘솔에 기록하는 경고를 비활성화합니다.
59+
60+
- `allowedProtoProperties`(4.6.0 이후): 부모 객체의 메서드가 아닌 속성인 경우 허용되는 속성 이름의 문자열-부울 맵입니다.
61+
정의되지 않은 값은 `allowProtoPropertiesByDefault`에서 정의된 값으로 되돌아갑니다.
62+
63+
```js
64+
const template = handlebars.compile("{{aString.trim}}");
65+
const result = template({ aString: " abc " });
66+
// result is empty, because trim is defined at String prototype
67+
```
68+
69+
```js
70+
const template = handlebars.compile("{{aString.trim}}");
71+
const result = template(
72+
{ aString: " abc " },
73+
{
74+
allowedProtoMethods: {
75+
trim: true,
76+
},
77+
}
78+
);
79+
// result = 'abc'
80+
```
81+
82+
런타임 옵션을 전달할 수 없는 경우, [express-handlebars](https://www.npmjs.com/package/express-handlebars) 와 같은 경우에
83+
[@handlebars/allow-prototype-access](https://www.npmjs.com/package/@handlebars/allow-prototype-access) 패키지를 사용
84+
하여 4.5.3 버전의 동작으로 되돌릴 수 있습니다.

src/ko/api-reference/runtime.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Handlebars 런타임
2+
3+
## `Handlebars.registerPartial(name, partial)`
4+
5+
환경 내 모든 템플릿에서 접근할 수 있는 부분 템플릿을 등록합니다.
6+
7+
```js
8+
Handlebars.registerPartial("foo", partial);
9+
```
10+
11+
여러 부분 템플릿을 한 번에 등록하는 것도 지원합니다.
12+
13+
```js
14+
Handlebars.registerPartial({ foo: partial, bar: partial });
15+
```
16+
17+
전체 라이브러리를 로드하는 경우, 부분 템플릿은 필요할 때 컴파일되는 문자열 값일 수 있습니다. 런타임만 로드하는 경우, 부
18+
분 템플릿은 `Handlebars.template` 메서드를 사용하여 적절히 설정된 사전 컴파일된 템플릿이어야 합니다.
19+
20+
## `Handlebars.unregisterPartial(name)`
21+
22+
이전에 등록된 부분 템플릿을 등록 해제합니다.
23+
24+
```js
25+
Handlebars.unregisterPartial("foo");
26+
```
27+
28+
## `Handlebars.registerHelper(name, helper)`
29+
30+
환경 내 모든 템플릿에서 접근할 수 있는 헬퍼를 등록합니다.
31+
32+
```js
33+
Handlebars.registerHelper("foo", function () {});
34+
```
35+
36+
여러 헬퍼를 한 번에 등록하는 것도 지원합니다.
37+
38+
```js
39+
Handlebars.registerHelper({ foo: function () {}, bar: function () {} });
40+
```
41+
42+
## `Handlebars.unregisterHelper(name)`
43+
44+
이전에 등록된 헬퍼를 등록 해제합니다.
45+
46+
```js
47+
Handlebars.unregisterHelper("foo");
48+
```
49+
50+
## `Handlebars.registerDecorator(name, helper)` (폐기 예정)
51+
52+
::: 주의 폐기 예정 안내
53+
54+
사용자 정의 데코레이터는 폐기 예정이며 Handlebars의 다음 주요 버전에서 사라질 수 있습니다. 이들은 다른 언어로 포팅하기어
55+
려운 내부 API의 너무 많은 부분을 노출하며 코드 유지 관리가 어렵게 만듭니다.
56+
57+
:::
58+
59+
환경 내 모든 템플릿에서 접근할 수 있는 데코레이터를 등록합니다.
60+
61+
```js
62+
Handlebars.registerDecorator("foo", function () {});
63+
```
64+
65+
여러 데코레이터를 한 번에 등록하는 것도 지원합니다.
66+
67+
```js
68+
Handlebars.registerDecorator({ foo: function () {}, bar: function () {} });
69+
```
70+
71+
## `Handlebars.unregisterDecorator(name)`
72+
73+
이전에 등록된 데코레이터를 등록 해제합니다.
74+
75+
```js
76+
Handlebars.unregisterDecorator("foo");
77+
```
78+
79+
## `Handlebars.create()`
80+
81+
고립된 Handlebars 환경을 만듭니다.
82+
83+
```js
84+
var OtherHandlebars = Handlebars.create();
85+
```
86+
87+
각 환경은 자체 헬퍼와 부분 템플릿을 가집니다. 이는 별개의 헬퍼 또는 부분 템플릿이 필요한 사용 사례에서만 필요합니다. 대
88+
부분의 사용 사례는 루트 `Handlebars` 환경을 직접 사용할 수 있습니다.
89+
90+
주어진 환경을 위해 생성된 템플릿은 해당 환경에 바인딩됩니다. 이는 여러 환경에서 실행되어야 하는 템플릿이 각 환경에 대해
91+
다시 컴파일되거나 `Handlebars.template`을 통해 재구성되어야 함을 의미합니다. 이는 부분 템플릿에도 적용됩니다.
92+
93+
## `Handlebars.noConflict()`
94+
95+
이 Handlebars 인스턴스를 전역 네임스페이스에서 제거하고 전역 `Handlebars` 변수를 이전 값으로 복원합니다.
96+
97+
```js
98+
var myHandlebars = Handlebars.noConflict();
99+
```
100+
101+
이를 통해 라이브러리의 다양한 버전을 동시에 사용하면서 버전 충돌에 대한 걱정 없이 사용할 수 있습니다.

0 commit comments

Comments
 (0)