Skip to content

Commit 047132e

Browse files
committed
Fix: Remove default open ai url while input args step
1 parent 9887d56 commit 047132e

File tree

4 files changed

+75
-81
lines changed

4 files changed

+75
-81
lines changed

README-ko.md

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,29 @@
1414

1515
[English](README.md) | [中文](README-zh.md) | [한국어](README-ko.md)
1616

17-
`ai-markdown-translator`는 OpenAI의 언어 모델을 사용하여 Markdown 파일을 한 언어에서 다른 언어로 번역하는 명령줄 도구입니다. 내용 번역 Markdown 구문을 보존합니다.
17+
`ai-markdown-translator`는 OpenAI의 언어 모델을 사용하여 Markdown 파일을 한 언어에서 다른 언어로 번역하는 명령줄 도구입니다. 내용 번역 Markdown 구문을 보존합니다.
1818

19-
## 기능
19+
## 특징
2020

2121
- OpenAI 모델이 지원하는 모든 언어로 Markdown 파일 번역
2222
- 번역 중 Markdown 구문 보존
2323
- 재귀 디렉토리 번역 지원
2424
- 실패한 번역에 대한 자동 재시도 메커니즘
25-
- 포괄적인 로깅 시스템
25+
- 종합적인 로깅 시스템
2626
- 디렉토리 구조 시각화
2727
- 파일 실패 추적 및 복구
2828

29-
## 필수 조건
29+
## 사전 요구 사항
3030

3131
- Node.js (v14 이상)
32-
- npm (보통 Node.js에 포함됨)
32+
- npm (보통 Node.js와 함께 제공됨)
3333
- OpenAI API 키
3434

3535
## 설치
3636

37-
1.저장소를 클론하거나 소스 코드를 다운로드합니다.
37+
1.리포지토리를 클론하거나 소스 코드를 다운로드합니다.
3838
2. 터미널에서 프로젝트 디렉토리로 이동합니다.
39-
3. 종속성을 설치합니다:
39+
3. 의존성을 설치합니다:
4040

4141
```bash
4242
npm install
@@ -52,18 +52,18 @@ npm run build
5252

5353
- `build`: TypeScript 파일을 JavaScript로 컴파일합니다.
5454
- `start`: Node.js를 사용하여 컴파일된 JavaScript를 실행합니다.
55-
- `lint`: TypeScript 파일의 코드 품질 문제를 확인하기 위해 ESLint를 실행합니다.
56-
- `lint:fix`: TypeScript 파일의 린팅 문제를 자동으로 수정합니다.
57-
- `format`: `src` 디렉토리의 다양한 파일 유형에 대해 Prettier를 사용하여 코드를 포맷합니다.
58-
- `format:check`: `src` 디렉토리의 다양한 파일 유형에 대해 변경 없이 코드 포맷을 확인합니다.
55+
- `lint`: TypeScript 파일의 코드 품질 문제를 검사하기 위해 ESLint를 실행합니다.
56+
- `lint:fix`: TypeScript 파일에서 linting 문제를 자동으로 수정합니다.
57+
- `format`: `src` 디렉토리의 다양한 파일 형식을 위해 Prettier를 사용하여 코드를 포맷합니다.
58+
- `format:check`: `src` 디렉토리의 다양한 파일 형식에 대해 변경하지 않고 코드 포맷을 확인합니다.
5959
- `postbuild`: 컴파일된 `index.js` 파일을 실행 가능하게 만듭니다.
60-
- `changelog`: 관습적인 커밋에 기반하여 변경 로그를 생성합니다.
61-
- `version`: 버전 관리 시 변경 로그를 업데이트하고 커밋 대기 상태로 만듭니다.
60+
- `changelog`: 관례적 커밋을 기반으로 변경 로그를 생성합니다.
61+
- `version`: 버전 지정 시 변경 로그를 업데이트하고 커밋을 위해 스테이징합니다.
6262
- `test`: 프로젝트를 빌드하고 테스트를 실행합니다.
6363

6464
## 사용법
6565

66-
Node.js, `npx` 또는 패키징한 경우 독립 실행형 실행 파일을 사용하여 CLI 도구를 실행할 수 있습니다.
66+
CLI 도구를 Node.js, `npx` 또는 독립 실행형 실행 파일로 실행할 수 있습니다(패키징한 경우).
6767

6868
### Node.js 사용
6969

@@ -80,7 +80,7 @@ npx ai-markdown-translator -i <input-file> -o <output-file> -l <target-language>
8080
예를 들어:
8181

8282
```bash
83-
npx ai-markdown-translator -u https://gitee.com/h7ml/ai-markdown-translator/raw/main/README.md -o output.md -l "Italian"
83+
npx ai-markdown-translator -u https://gitee.com/h7ml/ai-markdown-translator/raw/main/README.md -o output.md -l "이탈리아어"
8484
```
8585

8686
### 독립 실행형 실행 파일 사용
@@ -91,91 +91,91 @@ npx ai-markdown-translator -u https://gitee.com/h7ml/ai-markdown-translator/raw/
9191

9292
## 옵션
9393

94-
- `--input`, `-i`: 입력 Markdown 파일 또는 디렉토리 (`--url`의 대안). 번역하려는 Markdown 파일 또는 디렉토리의 경로를 지정할 수 있습니다.
95-
- `--url`, `-u`: 번역할 Markdown 파일의 URL (`--input`의 대안). 번역하려는 Markdown 파일에 대한 직접 링크를 제공하는 옵션입니다.
96-
- `--extension`, `-e`: 번역할 파일 확장자를 지정합니다 (예: `md`). 제공하지 않으면 모든 파일이 처리됩니다. 이 옵션을 사용하여 확장자에 따라 번역할 파일을 필터링할 수 있습니다.
97-
- `--rename`: 파일 이름을 수정할지 여부. true인 경우, 출력 파일은 `<original-filename>-translated.<extension>`으로 명명됩니다. 이 옵션을 사용하여 번역된 파일 이름에 접미사를 추가할지 여부를 지정할 수 있습니다.
98-
- `--output`, `-o`: 출력 Markdown 파일 (제공하지 않으면 기본적으로 입력 파일 이름임). 번역된 내용이 저장될 출력 파일의 이름을 지정할 수 있는 옵션입니다.
99-
- `--language`, `-l`: 번역할 대상 언어 (필수). Markdown 내용을 번역할 언어를 지정합니다.
100-
- `--openai-url`: OpenAI API URL (기본값: `OPENAI_URL` 환경 변수 사용). 필요에 따라 OpenAI API의 사용자 정의 URL을 지정할 수 있는 옵션입니다.
101-
- `--api-key`: OpenAI API 키 (기본값: `API_KEY` 환경 변수 사용). 인증을 위해 OpenAI API 키를 제공하는 데 사용됩니다.
102-
- `--model`: 사용할 OpenAI 모델 (기본값: `MODEL` 환경 변수 또는 `gpt-3.5-turbo` 사용). 번역에 사용할 OpenAI 모델을 지정할 수 있는 옵션입니다.
103-
- `--help`, `-h`: 도움말 표시. 이 옵션은 명령줄 도구의 도움말 정보를 표시합니다.
94+
- `--input`, `-i`: 입력 Markdown 파일 또는 디렉토리 (`--url`의 대안). 이 옵션은 번역할 Markdown 파일 또는 디렉토리의 경로를 지정할 수 있습니다.
95+
- `--url`, `-u`: 번역할 Markdown 파일의 URL (`--input`의 대안). 이 옵션은 번역할 Markdown 파일에 대한 직접 링크를 제공하는 데 사용합니다.
96+
- `--extension`, `-e`: 번역할 파일 확장자 지정(예: `md`). 제공되지 않으면 모든 파일이 처리됩니다. 이 옵션은 확장자를 기준으로 어떤 파일을 번역할지 필터링할 수 있습니다.
97+
- `--rename`: 파일 이름을 수정할지 여부. true로 설정 시, 출력 파일은 `<original-filename>-translated.<extension>`의 형식으로 이름이 지정됩니다. 이 옵션은 번역된 파일 이름에 접미사를 추가할지 여부를 지정할 수 있습니다.
98+
- `--output`, `-o`: 출력 Markdown 파일(제공되지 않으면 입력 파일 이름이 기본값으로 사용됨). 이 옵션은 번역된 내용이 저장될 출력 파일의 이름을 지정할 수 있습니다.
99+
- `--language`, `-l`: 번역을 위한 대상 언어(필수). 이 옵션은 Markdown 내용을 번역할 언어를 지정합니다.
100+
- `--openai-url`: OpenAI API URL(기본값: `OPENAI_URL` 환경 변수를 사용). 필요한 경우 OpenAI API에 대한 사용자 정의 URL을 지정할 수 있는 옵션입니다.
101+
- `--api-key`: OpenAI API 키(기본값: `API_KEY` 환경 변수를 사용). 인증을 위해 OpenAI API 키를 제공하는 데 사용됩니다.
102+
- `--model`: 사용할 OpenAI 모델(기본값: `MODEL` 환경 변수를 사용하거나 `gpt-3.5-turbo`). 이 옵션은 번역에 사용할 OpenAI 모델을 지정할 수 있습니다.
103+
- `--help`, `-h`: 도움말 표시. 이 옵션은 명령줄 도구에 대한 도움말 정보를 표시합니다.
104104
- `--show-version`, `-v`: 버전 표시. 이 옵션은 도구의 현재 버전을 표시합니다.
105-
- `--log`: 로깅 활성화 (기본값: false). 성공 및 실패 정보를 포함하여 번역 프로세스에 대한 자세한 로깅을 활성화합니다.
106-
- `--log-file`: 로그 파일 경로 지정 (기본값: `<project_root>/log/translator-err.log`). 번역 오류 및 실패가 기록될 파일입니다.
107-
- `--log-dir`: 로그 디렉토리 지정 (기본값: `<project_root>/log`). 모든 로그 파일이 저장될 디렉토리입니다.
108-
- `--locale`: 로그 메시지 언어 설정 (기본값: 'zh'). 이 옵션을 사용하여 로그 메시지의 언어를 지정할 수 있습니다 (옵션: 'en', 'zh', 'ko').
109-
- `--retry-count`: 실패한 번역에 대한 재시도 횟수 (기본값: 3). 번역자가 실패한 번역을 재시도해야 하는 횟수입니다.
110-
- `--retry-delay`: 재시도 시도 간의 대기 시간 (기본값: 10초). 재시도 시도 간의 대기 시간입니다.
111-
- `--path`, `-p`: 디렉토리 구조 표시 (기본값: 현재 스크립트 디렉토리). 지정된 디렉토리 구조의 트리 보기를 표시합니다.
105+
- `--log`: 로깅 활성화(기본값: false). 번역 과정에 대한 자세한 로깅을 활성화하며, 성공 및 실패 정보를 포함합니다.
106+
- `--log-file`: 로그 파일 경로 지정(기본값: `<project_root>/log/translator-err.log`). 번역 오류 및 실패가 기록될 파일입니다.
107+
- `--log-dir`: 로그 디렉토리 지정(기본값: `<project_root>/log`). 모든 로그 파일이 저장될 디렉토리입니다.
108+
- `--locale`: 로그 메시지 언어 설정(기본값: 'zh'). 이 옵션은 로그 메시지의 언어를 지정할 수 있습니다(선택사항: 'en', 'zh', 'ko').
109+
- `--retry-count`: 실패한 번역에 대한 재시도 횟수(기본값: 3). 번역기가 실패한 번역을 다시 시도할 횟수를 설정합니다.
110+
- `--retry-delay`: 재시도 시도 사이의 지연 시간(초 단위)(기본값: 10). 재시도 시도 사이의 대기 시간을 설정합니다.
111+
- `--path`, `-p`: 디렉토리 구조 표시(기본값: 현재 스크립트 디렉토리). 지정된 디렉토리 구조의 트리 뷰를 보여줍니다.
112112

113-
> 참고: `--input``--url`은 상호 배타적입니다; 하나만 제공해야 합니다.
113+
> 참고: `--input``--url`은 상호 배타적입니다; 둘 중 하나를 제공해야 합니다.
114114
115115
## 환경 변수
116116

117-
다음 환경 변수를 명령줄 인수 대신 설정할 수 있습니다:
117+
명령줄 인수 대신 다음 환경 변수를 설정할 수 있습니다:
118118

119-
- `OPENAI_URL`: OpenAI API의 URL.
120-
- `API_KEY`: OpenAI API .
121-
- `MODEL`: 사용 할 OpenAI 모델 (예: `'gpt-3.5-turbo'`).
119+
- `OPENAI_URL`: OpenAI API의 URL입니다.
120+
- `API_KEY`: OpenAI API 키입니다.
121+
- `MODEL`: 사용할 OpenAI 모델입니다(예: `'gpt-3.5-turbo'`).
122122

123-
이들을 프로젝트 루트에 있는 `.env` 파일에 설정하거나 셸에서 내보낼 수 있습니다.
123+
이들은 프로젝트 루트에 있는 `.env` 파일에 설정하거나 셸에서 내보낼 수 있습니다.
124124

125125
## 예제
126126

127127
1. **영어에서 스페인어로 Markdown 파일 번역하기:**
128128

129129
```bash
130-
npx ai-markdown-translator -i english.md -o spanish.md -l "Spanish"
130+
npx ai-markdown-translator -i english.md -o spanish.md -l "스페인어"
131131
```
132132

133133
2. **특정 OpenAI 모델 사용하여 번역하기:**
134134

135135
```bash
136-
npx ai-markdown-translator -i input.md -o output.md -l "French" --model "gpt-4"
136+
npx ai-markdown-translator -i input.md -o output.md -l "프랑스어" --model "gpt-4"
137137
```
138138

139-
3. **사용자 정의 OpenAI URL 및 API 키로 번역하기:**
139+
3. **사용자 정의 OpenAI URL과 API 키를 사용하여 번역하기:**
140140

141141
```bash
142-
npx ai-markdown-translator -i input.md -o output.md -l "German" --openai-url "https://api.302.ai/v1/chat/completions" --api-key "sk-302-api-key"
142+
npx ai-markdown-translator -i input.md -o output.md -l "독일어" --openai-url "https://api.302.ai/v1/chat/completions" --api-key "sk-302-api-key"
143143
```
144144

145-
4. **URL의 Markdown 내용 번역하기:**
145+
4. **URL의 Markdown 내용을 번역하기:**
146146

147147
```bash
148-
npx ai-markdown-translator -u https://gitee.com/h7ml/ai-markdown-translator/raw/main/README.md -o output.md -l "Italian"
148+
npx ai-markdown-translator -u https://gitee.com/h7ml/ai-markdown-translator/raw/main/README.md -o output.md -l "이탈리아어"
149149
```
150150

151151
5. **디렉토리의 모든 Markdown 파일을 번역하고 이름 변경하기:**
152152

153153
```bash
154-
npx ai-markdown-translator -i ./markdown-files -l "Chinese" --rename
154+
npx ai-markdown-translator -i ./markdown-files -l "중국어" --rename
155155
```
156156

157157
6. **Markdown 파일을 번역하고 출력 파일 이름 지정하기:**
158158

159159
```bash
160-
npx ai-markdown-translator -i example.md -o translated_example.md -l "Japanese"
160+
npx ai-markdown-translator -i example.md -o translated_example.md -l "일본어"
161161
```
162162

163-
7. **로깅 및 재시도 옵션으로 번역하기:**
163+
7. **로깅 및 재시도 옵션과 함께 번역하기:**
164164

165165
```bash
166-
npx ai-markdown-translator -i ./docs -o ./translated -l "Chinese" --log --retry-count 5 --retry-delay 15
166+
npx ai-markdown-translator -i ./docs -o ./translated -l "중국어" --log --retry-count 5 --retry-delay 15
167167
```
168168

169-
8. **커스텀 로그 디렉토리로 번역하기:**
169+
8. **맞춤 로그 디렉토리로 번역하기:**
170170

171171
```bash
172-
npx ai-markdown-translator -i input.md -o output.md -l "Japanese" --log --log-dir "./custom-logs"
172+
npx ai-markdown-translator -i input.md -o output.md -l "일본어" --log --log-dir "./custom-logs"
173173
```
174174

175-
9. **모든 로깅 및 재시도 옵션으로 번역하기:**
175+
9. **모든 로깅 및 재시도 옵션과 함께 번역하기:**
176176

177177
```bash
178-
npx ai-markdown-translator -i ./markdown-files -l "French" \
178+
npx ai-markdown-translator -i ./markdown-files -l "프랑스어" \
179179
--log \
180180
--log-dir "./logs" \
181181
--log-file "./logs/translation.log" \
@@ -189,7 +189,7 @@ npx ai-markdown-translator -i ./markdown-files -l "French" \
189189
npx ai-markdown-translator -p ./src
190190
```
191191

192-
출력 예시:
192+
출력 예제:
193193

194194
```
195195
📂 디렉토리 구조: /path/to/src
@@ -203,10 +203,10 @@ npx ai-markdown-translator -p ./src
203203
└── 📄 index.ts
204204
```
205205

206-
11. **자동 재시도 및 로깅으로 번역하기:**
206+
11. **자동 재시도 및 로깅과 함께 번역하기:**
207207

208208
```bash
209-
npx ai-markdown-translator -i ./docs -o ./translated -l "Chinese" \
209+
npx ai-markdown-translator -i ./docs -o ./translated -l "중국어" \
210210
--log \
211211
--retry-count 5 \
212212
--retry-delay 15 \
@@ -216,21 +216,21 @@ npx ai-markdown-translator -i ./docs -o ./translated -l "Chinese" \
216216
12. **실패 추적과 함께 디렉토리 번역하기:**
217217

218218
```bash
219-
npx ai-markdown-translator -i ./markdown-files -o ./output -l "Japanese" \
219+
npx ai-markdown-translator -i ./markdown-files -o ./output -l "일본어" \
220220
--log \
221221
--log-dir "./logs" \
222222
--retry-count 3 \
223223
--retry-delay 10
224224
```
225225

226-
## 라이선스
226+
## 라이센스
227227

228-
[MIT 라이선스](LICENSE)
228+
[MIT 라이센스](LICENSE)
229229

230230
## Git 정보
231231

232-
- **저장소**: [h7ml/ai-markdown-translator](https://github.com/h7ml/ai-markdown-translator)
233-
- **이슈**: [이슈 보고하기](https://github.com/h7ml/ai-markdown-translator/issues)
232+
- **리포지토리**: [h7ml/ai-markdown-translator](https://github.com/h7ml/ai-markdown-translator)
233+
- **문제**: [문제 보고](https://github.com/h7ml/ai-markdown-translator/issues)
234234

235235
## 버전 정보
236236

@@ -239,17 +239,17 @@ npx ai-markdown-translator -i ./markdown-files -o ./output -l "Japanese" \
239239

240240
## CI 정보
241241

242-
이 프로젝트는 지속적인 통합을 위해 GitHub Actions를 사용합니다. CI 워크플로우에는 다음이 포함됩니다:
242+
이 프로젝트는 지속적 통합을 위해 GitHub Actions를 사용합니다. CI 워크플로에는 다음이 포함됩니다:
243243

244-
- ESLint로 코드 린팅
245-
- 테스트 실행 (해당되는 경우)
244+
- ESLint로 코드 검사
245+
- 테스트 실행(해당되는 경우)
246246
- 프로젝트 빌드
247-
- 더 빠른 빌드를 위한 종속성 캐시
247+
- 더 빠른 빌드를 위한 의존성 캐싱
248248

249249
## 기여
250250

251-
기여를 환영합니다! 자유롭게 Pull Request를 제출해 주세요.
251+
기여는 환영합니다! 자유롭게 Pull Request를 제출해 주세요.
252252

253253
## 지원
254254

255-
문제가 발생하거나 질문이 있으면 이 저장소에서 이슈를 열어 주세요.
255+
문제나 질문이 있는 경우, 이 리포지토리에 문제를 열어 주세요.

src/cli/options.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import {
2-
DEFAULT_LOG_DIR,
3-
DEFAULT_LOG_FILE,
4-
DEFAULT_MODEL,
5-
DEFAULT_OPENAI_URL,
6-
PROJECT_ROOT,
7-
} from '../config/constants';
1+
import { DEFAULT_LOG_DIR, DEFAULT_LOG_FILE, PROJECT_ROOT } from '../config/constants';
82
import { CliOptions, DirectoryOptions, OptionDefinition, RuntimeOptions } from '../types/option';
93

104
// Options definition separated into an object
@@ -73,7 +67,6 @@ export const OPTIONS: Record<keyof CliOptions, OptionDefinition> = {
7367
ko: 'OpenAI API URL',
7468
},
7569
type: 'string',
76-
default: DEFAULT_OPENAI_URL,
7770
},
7871
'api-key': {
7972
description: {
@@ -90,7 +83,6 @@ export const OPTIONS: Record<keyof CliOptions, OptionDefinition> = {
9083
ko: '사용할 OpenAI 모델',
9184
},
9285
type: 'string',
93-
default: DEFAULT_MODEL,
9486
},
9587
'api-type': {
9688
description: {

src/config/constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import * as path from 'path';
2+
import { fileURLToPath } from 'url';
3+
4+
const __filename = fileURLToPath(import.meta.url);
5+
const __dirname = path.dirname(__filename);
26

37
export const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
48
export const ALLOWED_CONTENT_TYPES = ['text/markdown', 'text/plain', 'application/octet-stream'];
59

610
export const PROJECT_ROOT = process.cwd();
11+
export const PROMPTS_DIR = path.resolve(__dirname, 'prompts');
712
export const DEFAULT_LOG_DIR = path.resolve(PROJECT_ROOT, 'log');
813
export const DEFAULT_LOG_FILE = path.resolve(DEFAULT_LOG_DIR, 'translation.log');
914
export const FAIL_LOG = path.resolve(DEFAULT_LOG_DIR, 'translator-err.log');

src/services/api.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
import fs from 'fs';
22
import path from 'path';
3-
import { fileURLToPath } from 'url';
43

5-
import { OFFICIAL_OPENAI_URL_V1 } from '../config/constants';
4+
import { OFFICIAL_OPENAI_URL_V1, PROMPTS_DIR } from '../config/constants';
65
import { ChatData } from '../types/common';
76
import { RuntimeOptions } from '../types/option';
87
import { t } from '../utils/i18n';
98
import { translateTextWithCompletionsModule, translateTextWithRestApi } from './openai';
109

11-
const __filename = fileURLToPath(import.meta.url);
12-
const __dirname = path.dirname(__filename);
13-
1410
export async function translateText(text: string, options: RuntimeOptions): Promise<string | null> {
1511
const prompt = `将以下文本翻译成${options.language}。请保持格式不变:\n\n${text}`;
1612
const systemContent = await getFileContent('system.md');
@@ -35,6 +31,7 @@ export async function translateText(text: string, options: RuntimeOptions): Prom
3531
],
3632
};
3733

34+
console.log(options.openaiUrl, OFFICIAL_OPENAI_URL_V1);
3835
if (options.openaiUrl.includes(OFFICIAL_OPENAI_URL_V1)) {
3936
if (options.apiType === 'completions') {
4037
return translateTextWithCompletionsModule(options.apiKey, options.directoryOptions, data);
@@ -50,7 +47,7 @@ export async function translateText(text: string, options: RuntimeOptions): Prom
5047
}
5148

5249
async function getFileContent(fileName: string): Promise<string> {
53-
const filePath = path.join(__dirname, './prompts/', fileName);
50+
const filePath = path.join(PROMPTS_DIR, fileName);
5451

5552
try {
5653
return fs.readFileSync(filePath, 'utf-8');

0 commit comments

Comments
 (0)