project-auto-wizard 0.13.2 β 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/project-auto-wizard.js +18 -4
- package/package.json +2 -2
- package/payload/config/breaking-changes.json +28 -14
- package/payload/config/wizard-prompts.yml +102 -46
- package/payload/flutter-app/android/fastlane/Fastfile.playstore +44 -32
- package/payload/flutter-app/ios/ExportOptions.plist +8 -8
- package/payload/flutter-app/ios/fastlane/Fastfile +57 -43
- package/payload/scripts/changelog_manager.py +296 -257
- package/payload/scripts/issue_helper.py +54 -50
- package/payload/scripts/messages.py +2279 -0
- package/payload/scripts/truncate_release_notes.py +7 -6
- package/payload/scripts/version_manager.py +64 -61
- package/payload/version.yml.template +2 -1
- package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +17 -12
- package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +59 -34
- package/payload/workflows/common/PROJECT-COMMON-ISSUE-HELPER.yaml +17 -15
- package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +17 -10
- package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +54 -44
- package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +24 -17
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +194 -184
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +226 -213
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +46 -42
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +334 -241
- package/payload/workflows/flutter/PROJECT-FLUTTER-APP-BUILD-TRIGGER.yaml +152 -128
- package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +246 -188
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +353 -238
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +96 -85
- package/payload/workflows/go/PROJECT-GO-CI.yaml +47 -36
- package/payload/workflows/go/PROJECT-GO-PR-PREVIEW.yaml +945 -508
- package/payload/workflows/go/PROJECT-GO-SIMPLE-CICD.yaml +155 -133
- package/payload/workflows/next/PROJECT-NEXT-CI.yaml +76 -60
- package/payload/workflows/next/PROJECT-NEXT-CICD.yaml +97 -77
- package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +62 -47
- package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +942 -505
- package/payload/workflows/python/PROJECT-PYTHON-SIMPLE-CICD.yaml +148 -126
- package/payload/workflows/react/PROJECT-REACT-CI.yaml +86 -70
- package/payload/workflows/react/PROJECT-REACT-CICD.yaml +112 -92
- package/payload/workflows/spring/PROJECT-SPRING-CI.yml +112 -82
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-NGINX-CICD.yaml +180 -150
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-TRAEFIK-CICD.yaml +161 -131
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +970 -549
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-SIMPLE-CICD.yaml +193 -162
- package/src/cli/args.js +98 -52
- package/src/cli/help.js +8 -41
- package/src/commands/doctor.js +85 -89
- package/src/commands/dry-run.js +63 -43
- package/src/commands/full.js +79 -77
- package/src/commands/install-settings.js +16 -15
- package/src/commands/interactive-flutter.js +20 -19
- package/src/commands/interactive.js +135 -132
- package/src/commands/purge.js +47 -42
- package/src/commands/status.js +36 -36
- package/src/commands/uninstall.js +43 -41
- package/src/context.js +12 -11
- package/src/core/assets.js +12 -11
- package/src/core/baseline.js +27 -27
- package/src/core/branches.js +29 -27
- package/src/core/branding.js +7 -6
- package/src/core/breaking-check.js +22 -21
- package/src/core/breaking.js +15 -8
- package/src/core/copy/app-files.js +5 -4
- package/src/core/copy/flutter-app.js +8 -8
- package/src/core/copy/gitignore.js +58 -50
- package/src/core/copy/readme.js +45 -35
- package/src/core/copy/simple.js +16 -15
- package/src/core/copy/workflows.js +131 -124
- package/src/core/deploy-style.js +51 -48
- package/src/core/detect-fs.js +57 -57
- package/src/core/detect.js +67 -65
- package/src/core/errors.js +2 -2
- package/src/core/flutter-doctor.js +17 -16
- package/src/core/flutter-hooks.js +33 -32
- package/src/core/flutter-options.js +34 -33
- package/src/core/fsutil.js +12 -12
- package/src/core/installed-stores.js +4 -4
- package/src/core/logger.js +42 -40
- package/src/core/paths-resolve.js +88 -86
- package/src/core/paths.js +10 -10
- package/src/core/release-options.js +8 -8
- package/src/core/removal-exec.js +14 -13
- package/src/core/removal-plan.js +37 -37
- package/src/core/types.js +47 -47
- package/src/core/verify.js +44 -38
- package/src/core/version-yml.js +76 -68
- package/src/core/wizard-env.js +46 -46
- package/src/core/wizard-labels.js +63 -41
- package/src/i18n/catalog/en/cli.js +50 -0
- package/src/i18n/catalog/en/commands.js +187 -0
- package/src/i18n/catalog/en/copy.js +19 -0
- package/src/i18n/catalog/en/core.js +74 -0
- package/src/i18n/catalog/en/core2.js +15 -0
- package/src/i18n/catalog/en/ui.js +221 -0
- package/src/i18n/catalog/en.js +12 -0
- package/src/i18n/catalog/index.js +5 -0
- package/src/i18n/catalog/ko/cli.js +50 -0
- package/src/i18n/catalog/ko/commands.js +187 -0
- package/src/i18n/catalog/ko/copy.js +19 -0
- package/src/i18n/catalog/ko/core.js +74 -0
- package/src/i18n/catalog/ko/core2.js +15 -0
- package/src/i18n/catalog/ko/ui.js +221 -0
- package/src/i18n/catalog/ko.js +10 -0
- package/src/i18n/index.js +44 -0
- package/src/i18n/languages.js +9 -0
- package/src/index.js +128 -94
- package/src/ui/ansi.js +7 -7
- package/src/ui/banner.js +7 -6
- package/src/ui/env-plan.js +82 -81
- package/src/ui/prompts.js +97 -122
- package/src/ui/readline-engine.js +59 -58
- package/src/ui/status-cards.js +37 -31
- package/src/ui/summary.js +89 -88
|
@@ -0,0 +1,2279 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
messages.py β message catalog and language lookup shared by the installed
|
|
4
|
+
workflow scripts (stdlib only).
|
|
5
|
+
|
|
6
|
+
This script is copied into user repos (.github/scripts/) by project-auto-wizard.
|
|
7
|
+
Everything a workflow or script prints for people to read (PR comments, release
|
|
8
|
+
summaries, log lines, AI prompts) is looked up here by key, so the wording
|
|
9
|
+
follows the `language` value in version.yml (en | ko, default en).
|
|
10
|
+
|
|
11
|
+
Language resolution (first match wins):
|
|
12
|
+
1. env PROJECT_AUTO_WIZARD_LANG (same variable the installer honors)
|
|
13
|
+
2. `language:` in the first version.yml that has it, looking in: ./version.yml, the repo root
|
|
14
|
+
relative to this script (../../version.yml), $GITHUB_WORKSPACE/version.yml
|
|
15
|
+
(steps with a working-directory in a monorepo do not run at the repo root)
|
|
16
|
+
3. "en"
|
|
17
|
+
|
|
18
|
+
Python usage:
|
|
19
|
+
from messages import t
|
|
20
|
+
t("issue_helper.branch_title")
|
|
21
|
+
t("changelog.count", n=3) # {n} placeholders are replaced
|
|
22
|
+
|
|
23
|
+
Command line (used from bash and actions/github-script):
|
|
24
|
+
messages.py get KEY [name=value ...] print one message (trailing newline)
|
|
25
|
+
messages.py dump PREFIX print {key: template} JSON for keys with the prefix
|
|
26
|
+
messages.py lang print the resolved language
|
|
27
|
+
|
|
28
|
+
A key missing from the selected language falls back to English; a key missing
|
|
29
|
+
everywhere is returned as-is so the gap is visible instead of crashing a run.
|
|
30
|
+
Placeholders are `{name}`; unknown placeholders and any other braces stay as written.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
import json
|
|
34
|
+
import os
|
|
35
|
+
import re
|
|
36
|
+
import sys
|
|
37
|
+
|
|
38
|
+
SUPPORTED = ("en", "ko")
|
|
39
|
+
DEFAULT = "en"
|
|
40
|
+
LANG_ENV = "PROJECT_AUTO_WIZARD_LANG"
|
|
41
|
+
|
|
42
|
+
_PLACEHOLDER = re.compile(r"\{(\w+)\}")
|
|
43
|
+
_LANG_LINE = re.compile(r"^language:\s*(.+)")
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def normalize_language(value):
|
|
47
|
+
"""Trim and lowercase, like the CLI's normalizeLanguage (so ' KO ' == 'ko')."""
|
|
48
|
+
return str(value if value is not None else "").strip().lower()
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def parse_saved_language(text):
|
|
52
|
+
"""`language:` value from version.yml text, normalized ('' when absent).
|
|
53
|
+
|
|
54
|
+
Mirrors the CLI's parseExisting(): top-level line only, `#` comment lines skipped,
|
|
55
|
+
first match wins, trailing ` # comment` and quotes removed. The whole value is kept,
|
|
56
|
+
so 'ko_KR' is unsupported here exactly as it is in the CLI."""
|
|
57
|
+
for line in str(text or "").split("\n"):
|
|
58
|
+
if line.startswith("#"):
|
|
59
|
+
continue
|
|
60
|
+
m = _LANG_LINE.match(line)
|
|
61
|
+
if m:
|
|
62
|
+
return normalize_language(re.sub(r"\s+#.*$", "", m.group(1)).replace('"', "").replace("'", ""))
|
|
63
|
+
return ""
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _version_yml_candidates(version_yml):
|
|
67
|
+
"""Where to look for version.yml: cwd, then the repo root relative to this script, then $GITHUB_WORKSPACE.
|
|
68
|
+
|
|
69
|
+
Steps with a working-directory (monorepo) or a scripts run from a subfolder are not at the repo root;
|
|
70
|
+
the installed script lives in <root>/.github/scripts, so the root is two levels up."""
|
|
71
|
+
candidates = [version_yml, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "version.yml")]
|
|
72
|
+
workspace = os.environ.get("GITHUB_WORKSPACE", "")
|
|
73
|
+
if workspace:
|
|
74
|
+
candidates.append(os.path.join(workspace, "version.yml"))
|
|
75
|
+
return candidates
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def get_language(version_yml="version.yml"):
|
|
79
|
+
"""Resolve the message language: env -> version.yml -> default.
|
|
80
|
+
|
|
81
|
+
Same rules as the CLI (src/i18n): values are normalized and only supported ones count.
|
|
82
|
+
Unlike the CLI, an unsupported env value is ignored instead of aborting, because a
|
|
83
|
+
failing message lookup must never break a workflow step. An unreadable or
|
|
84
|
+
non-UTF-8 version.yml is skipped; the first file that has a `language:` line decides."""
|
|
85
|
+
env = normalize_language(os.environ.get(LANG_ENV))
|
|
86
|
+
if env in SUPPORTED:
|
|
87
|
+
return env
|
|
88
|
+
saved = ""
|
|
89
|
+
for path in _version_yml_candidates(version_yml):
|
|
90
|
+
try:
|
|
91
|
+
# errors="replace" keeps ASCII keys readable in a cp949/latin-1 file, as the CLI's utf8 read does
|
|
92
|
+
with open(path, encoding="utf-8", errors="replace") as f:
|
|
93
|
+
saved = parse_saved_language(f.read())
|
|
94
|
+
except (OSError, ValueError):
|
|
95
|
+
continue
|
|
96
|
+
# A file without a language line says nothing; keep looking (monorepo subfolder copies etc.)
|
|
97
|
+
if saved:
|
|
98
|
+
break
|
|
99
|
+
return saved if saved in SUPPORTED else DEFAULT
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def template(key, lang=None):
|
|
103
|
+
"""Raw template for `key` in `lang` (English fallback, then the key itself)."""
|
|
104
|
+
lang = lang or get_language()
|
|
105
|
+
return CATALOG.get(lang, {}).get(key) or CATALOG[DEFAULT].get(key) or key
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def render(text, params):
|
|
109
|
+
"""Replace `{name}` placeholders from params; leave unknown ones untouched."""
|
|
110
|
+
return _PLACEHOLDER.sub(lambda m: str(params[m.group(1)]) if m.group(1) in params else m.group(0), text)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def t(key, lang=None, **params):
|
|
114
|
+
"""Look up `key` and fill placeholders."""
|
|
115
|
+
return render(template(key, lang), params)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def tn(key, n, lang=None, **params):
|
|
119
|
+
"""Like t(), but uses `<key>_one` when n == 1 and that key exists (English singular).
|
|
120
|
+
{n} is always filled in, so languages without plural forms just define `<key>` alone."""
|
|
121
|
+
if n == 1 and f"{key}_one" in CATALOG[DEFAULT]:
|
|
122
|
+
key = f"{key}_one"
|
|
123
|
+
return t(key, lang, n=n, **params)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def dump(prefix, lang=None):
|
|
127
|
+
"""{key: raw template} for every key starting with `prefix`, English-filled."""
|
|
128
|
+
lang = lang or get_language()
|
|
129
|
+
keys = [k for k in CATALOG[DEFAULT] if k.startswith(prefix)]
|
|
130
|
+
return {k: template(k, lang) for k in keys}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def use_utf8_output():
|
|
134
|
+
"""Print UTF-8 regardless of the console code page (Windows defaults to cp1252) and never crash on it."""
|
|
135
|
+
for stream in (sys.stdout, sys.stderr):
|
|
136
|
+
if hasattr(stream, "reconfigure"):
|
|
137
|
+
stream.reconfigure(encoding="utf-8", errors="replace")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def main(argv):
|
|
141
|
+
use_utf8_output()
|
|
142
|
+
if len(argv) >= 2 and argv[0] == "get":
|
|
143
|
+
params = dict(a.split("=", 1) for a in argv[2:] if "=" in a)
|
|
144
|
+
print(t(argv[1], **params))
|
|
145
|
+
return 0
|
|
146
|
+
if len(argv) == 2 and argv[0] == "dump":
|
|
147
|
+
print(json.dumps(dump(argv[1]), ensure_ascii=False))
|
|
148
|
+
return 0
|
|
149
|
+
if argv == ["lang"]:
|
|
150
|
+
print(get_language())
|
|
151
|
+
return 0
|
|
152
|
+
print("usage: messages.py get KEY [name=value ...] | dump PREFIX | lang", file=sys.stderr)
|
|
153
|
+
return 2
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
# Catalogs are grouped by area (`<area>.<name>` keys). Keep the English and
|
|
157
|
+
# Korean sections in the same order and with the same placeholders.
|
|
158
|
+
|
|
159
|
+
EN = {
|
|
160
|
+
# --- apk_test ---
|
|
161
|
+
"apk_test.branch_check_log": "π Checking that the branch exists: {branch}",
|
|
162
|
+
"apk_test.branch_exists_log": "β
Branch exists: {branch}",
|
|
163
|
+
"apk_test.branch_not_found_log": "β Branch not found: {branch}",
|
|
164
|
+
"apk_test.branch_missing_title": "π€ β **Android test APK build failed - branch not found**",
|
|
165
|
+
"apk_test.kv_head": "| Item | Value |",
|
|
166
|
+
"apk_test.row_requested_branch": "| **Requested branch** | `{branch}` |",
|
|
167
|
+
"apk_test.row_issue_pr": "| **Issue/PR** | #{number} |",
|
|
168
|
+
"apk_test.hint_title": "### π‘ Things to check",
|
|
169
|
+
"apk_test.hint_pushed": "1. Make sure the branch has been pushed to the remote repository",
|
|
170
|
+
"apk_test.hint_helper_branch": "2. Make sure the branch name in the \"Issue Helper\" comment is correct",
|
|
171
|
+
"apk_test.hint_typo": "3. Make sure the branch name has no typos",
|
|
172
|
+
"apk_test.workflow_log_link": "π [Workflow log]({url})",
|
|
173
|
+
"apk_test.branch_not_found_fail": "Branch not found: {branch}",
|
|
174
|
+
"apk_test.branch_check_error_fail": "Error while checking the branch: {error}",
|
|
175
|
+
"apk_test.firebase_detected": "β
Firebase service account detected - App Distribution upload scheduled",
|
|
176
|
+
"apk_test.firebase_missing": "β οΈ No Firebase service account - skipping the App Distribution upload",
|
|
177
|
+
"apk_test.title_running": "## π€ Building the Android APK...",
|
|
178
|
+
"apk_test.title_done": "## π€ β
Android APK build complete!",
|
|
179
|
+
"apk_test.title_failed": "## π€ β Android APK build failed",
|
|
180
|
+
"apk_test.table_header": "| Step | Status | Duration |",
|
|
181
|
+
"apk_test.step_prepare": "π§ Prepare",
|
|
182
|
+
"apk_test.step_build": "π¨ APK build",
|
|
183
|
+
"apk_test.step_upload": "π€ GitHub artifact upload",
|
|
184
|
+
"apk_test.step_firebase": "π₯ Firebase App Distribution",
|
|
185
|
+
"apk_test.st_running": "β³ In progress...",
|
|
186
|
+
"apk_test.st_waiting": "βΈοΈ Waiting",
|
|
187
|
+
"apk_test.st_done": "β
Done",
|
|
188
|
+
"apk_test.st_failed": "β Failed",
|
|
189
|
+
"apk_test.st_skipped": "βΈοΈ Skipped",
|
|
190
|
+
"apk_test.live_log": "π **[View live log]({url})**",
|
|
191
|
+
"apk_test.log_progress_created": "β
Progress comment created (ID: {id})",
|
|
192
|
+
"apk_test.pull_branch": "πΏ Branch: {branch}",
|
|
193
|
+
"apk_test.pull_failed": "β οΈ Pull failed (the branch may already be up to date)",
|
|
194
|
+
"apk_test.branch_name_log": "πΏ Branch name: {branch}",
|
|
195
|
+
"apk_test.issue_number_missing": "β οΈ Could not find an issue number in the branch name.",
|
|
196
|
+
"apk_test.issue_number_extracted": "β
Extracted issue number: #{number}",
|
|
197
|
+
"apk_test.issue_fetching": "π Fetching issue info from the GitHub API...",
|
|
198
|
+
"apk_test.issue_title_default": "Issue info not available",
|
|
199
|
+
"apk_test.issue_not_found": "β οΈ Issue #{number} not found.",
|
|
200
|
+
"apk_test.issue_title_log": "π Issue title: {title}",
|
|
201
|
+
"apk_test.issue_state_log": "π Issue state: {state}",
|
|
202
|
+
"apk_test.event_dispatch": "π repository_dispatch event detected",
|
|
203
|
+
"apk_test.event_pr_number": " PR number: #{pr}",
|
|
204
|
+
"apk_test.event_build_number_pr": " Build number: {build} (from the PR number)",
|
|
205
|
+
"apk_test.event_workflow_dispatch": "π workflow_dispatch event detected",
|
|
206
|
+
"apk_test.event_build_number_default": " Build number: {build} (default)",
|
|
207
|
+
"apk_test.build_info_header": "π Build info:",
|
|
208
|
+
"apk_test.build_info_build": " Build number: #{build}",
|
|
209
|
+
"apk_test.build_info_pr": " PR number: #{pr}",
|
|
210
|
+
"apk_test.build_info_commit": " Commit hash: {commit}",
|
|
211
|
+
"apk_test.build_info_date": " Build date: {date}",
|
|
212
|
+
"apk_test.sign_debug_warning": "Signing secrets are empty, signing with the debug key:{missing} (this is not a store-upload key)",
|
|
213
|
+
"apk_test.sign_keystore_empty": "The keystore decoded from RELEASE_KEYSTORE_BASE64 is empty",
|
|
214
|
+
"apk_test.sign_release_ok": "β
Release keystore created (signing with the release key)",
|
|
215
|
+
"apk_test.key_properties_ok": "β
key.properties created",
|
|
216
|
+
"apk_test.gradlew_missing": "βΉοΈ gradlew is not in the repository β flutter build will generate it",
|
|
217
|
+
"apk_test.elapsed_min_sec": "{m}m {s}s",
|
|
218
|
+
"apk_test.elapsed_sec": "{s}s",
|
|
219
|
+
"apk_test.log_prepare_done": "β
Progress updated: prepare done ({elapsed})",
|
|
220
|
+
"apk_test.log_build_done": "β
Progress updated: APK build done ({elapsed})",
|
|
221
|
+
"apk_test.apk_filename_log": "π¦ APK file name: {name}",
|
|
222
|
+
"apk_test.version_set_log": "π Setting the test build version: {version}",
|
|
223
|
+
"apk_test.pubspec_updated": "β
pubspec.yaml version updated:",
|
|
224
|
+
"apk_test.flutter_build_log": "π¦ Building directly with Flutter...",
|
|
225
|
+
"apk_test.apk_size_log": "π¦ APK file size: {size}MB",
|
|
226
|
+
"apk_test.apk_size_over": "β οΈ Warning: the APK file size exceeds 500MB ({size}MB)",
|
|
227
|
+
"apk_test.apk_size_ok": "β
The APK file size is within the artifact limit ({size}MB / 500MB)",
|
|
228
|
+
"apk_test.info_title": "Test APK build info",
|
|
229
|
+
"apk_test.info_build_number": "Build number: #{build}",
|
|
230
|
+
"apk_test.info_pr_number": "PR number: #{pr}",
|
|
231
|
+
"apk_test.info_branch": "Branch: {branch}",
|
|
232
|
+
"apk_test.info_commit": "Commit: {commit}",
|
|
233
|
+
"apk_test.info_full_commit": "Full commit hash: {sha}",
|
|
234
|
+
"apk_test.info_date": "Build date: {date}",
|
|
235
|
+
"apk_test.info_issue_header": "Related issue:",
|
|
236
|
+
"apk_test.info_file_created": "π Build info file created:",
|
|
237
|
+
"apk_test.firebase_creds_ok": "β
Firebase service account JSON file created",
|
|
238
|
+
"apk_test.fb_notes_build": "Test build #{build}",
|
|
239
|
+
"apk_test.fb_notes_branch": "Branch: {branch}",
|
|
240
|
+
"apk_test.fb_notes_commit": "Commit: {commit}",
|
|
241
|
+
"apk_test.fb_notes_issue": "Issue: #{number} {title}",
|
|
242
|
+
"apk_test.firebase_upload_ok": "β
Firebase App Distribution upload succeeded",
|
|
243
|
+
"apk_test.firebase_upload_failed": "β Firebase App Distribution upload failed - the APK artifact was uploaded normally",
|
|
244
|
+
"apk_test.result_title": "### π¦ Build result",
|
|
245
|
+
"apk_test.row_app_version": "| **App version** | `{version}({build})` |",
|
|
246
|
+
"apk_test.row_branch": "| **Branch** | `{branch}` |",
|
|
247
|
+
"apk_test.row_commit": "| **Commit** | `{commit}` |",
|
|
248
|
+
"apk_test.row_total": "| **Total duration** | {elapsed} |",
|
|
249
|
+
"apk_test.firebase_installable": "π₯ **Install it from the Firebase App Tester app**",
|
|
250
|
+
"apk_test.firebase_failed_hint": "β οΈ **Firebase upload failed - download the APK from the artifact**",
|
|
251
|
+
"apk_test.artifact_link": "π¦ **[Download artifact]({url})**",
|
|
252
|
+
"apk_test.run_log_link": "π **[Workflow run log]({url})**",
|
|
253
|
+
"apk_test.log_success": "β
Progress updated: build succeeded (total {elapsed})",
|
|
254
|
+
"apk_test.issue_done_title": "π€ β
**Android APK build complete**",
|
|
255
|
+
"apk_test.issue_line_version": "- App version: `{version}({build})`",
|
|
256
|
+
"apk_test.issue_line_commit": "- Commit: `{commit}`",
|
|
257
|
+
"apk_test.log_issue_success": "β
Build success comment also posted on issue #{number}",
|
|
258
|
+
"apk_test.fail_line_branch": "- Branch: `{branch}`",
|
|
259
|
+
"apk_test.fail_line_total": "- Total duration: {elapsed}",
|
|
260
|
+
"apk_test.build_error": "β An error occurred during the build.",
|
|
261
|
+
"apk_test.run_log_check_link": "π **[Check the workflow run log]({url})**",
|
|
262
|
+
"apk_test.log_failed": "β Progress updated: build failed ({elapsed})",
|
|
263
|
+
"apk_test.issue_failed_title": "π€ β **Android APK build failed**",
|
|
264
|
+
"apk_test.log_issue_failed": "β Build failure comment also posted on issue #{number}",
|
|
265
|
+
"apk_test.notify_ok": "β
Android test APK build succeeded!",
|
|
266
|
+
"apk_test.notify_build_number": "Build number: {build}",
|
|
267
|
+
"apk_test.notify_pr": "PR number: {pr}",
|
|
268
|
+
"apk_test.notify_branch": "Branch: {branch}",
|
|
269
|
+
"apk_test.notify_commit": "Commit: {commit}",
|
|
270
|
+
"apk_test.notify_issue": "Related issue: {url}",
|
|
271
|
+
"apk_test.notify_artifact_hint": "π¦ You can download the APK file from the artifact.",
|
|
272
|
+
"apk_test.notify_fail": "β Android test APK build failed!",
|
|
273
|
+
"apk_test.check_logs": "Please check the logs.",
|
|
274
|
+
# --- app_trigger ---
|
|
275
|
+
"app_trigger.reaction_done": "π Confirmation reaction added to the comment",
|
|
276
|
+
"app_trigger.build_type": "π± Build type: {type} (Android={android}, iOS={ios})",
|
|
277
|
+
"app_trigger.branch_from_comment": "πΏ Branch specified in the comment: {branch}",
|
|
278
|
+
"app_trigger.branch_override": "πΏ Branch from the comment takes precedence: {branch} (PR head={head})",
|
|
279
|
+
"app_trigger.pr_confirmed": "β
PR confirmed: #{number}",
|
|
280
|
+
"app_trigger.branch_name": "πΏ Branch name: {branch}",
|
|
281
|
+
"app_trigger.commit_sha": "π Commit hash: {sha}",
|
|
282
|
+
"app_trigger.issue_extracted": "π Extracted issue number: #{number}",
|
|
283
|
+
"app_trigger.not_pr": "βΉοΈ Not a PR. Looking for the branch info in the issue...",
|
|
284
|
+
"app_trigger.custom_branch_used": "πΏ Using the branch from the comment (skipping the Guide comment): {branch}",
|
|
285
|
+
"app_trigger.related_issue": "π Related issue number: #{number}",
|
|
286
|
+
"app_trigger.helper_missing_log": "β \"Issue Helper\" comment not found.",
|
|
287
|
+
"app_trigger.helper_missing_error": "Could not find an \"Issue Helper\" comment on the issue. A comment containing the branch info is required.",
|
|
288
|
+
"app_trigger.helper_found": "β
\"Issue Helper\" comment found",
|
|
289
|
+
"app_trigger.branch_parse_log": "β Could not parse the branch info.",
|
|
290
|
+
"app_trigger.branch_parse_error": "Could not parse the branch info from the \"Issue Helper\" comment. Please check the comment format.",
|
|
291
|
+
"app_trigger.branch_extracted": "πΏ Extracted branch name: {branch}",
|
|
292
|
+
"app_trigger.build_info_extracted": "β
Build info extracted from issue #{number}",
|
|
293
|
+
"app_trigger.comments_error_log": "β Error while fetching the issue comments:",
|
|
294
|
+
"app_trigger.comments_error": "An error occurred while fetching the issue comments: {error}",
|
|
295
|
+
"app_trigger.trigger_failed_body": "β **App build trigger failed**\n\n{error}\n\n**How to fix:**\n- Building from a PR: post the comment on the PR page.\n- Building from an issue: an \"Issue Helper\" comment must exist.\n - The comment must contain a `### Branch name` section with the branch name.\n- Or specify the branch name directly in the comment: `/wizard app build <branch-name>`",
|
|
296
|
+
"app_trigger.branch_check_log": "π Checking that the branch exists: {branch}",
|
|
297
|
+
"app_trigger.branch_exists_log": "β
Branch exists: {branch}",
|
|
298
|
+
"app_trigger.branch_not_found_log": "β Branch not found: {branch}",
|
|
299
|
+
"app_trigger.branch_not_found_error": "Branch `{branch}` not found.",
|
|
300
|
+
"app_trigger.branch_check_error_log": "β Error while checking the branch: {error}",
|
|
301
|
+
"app_trigger.branch_check_error": "An error occurred while checking the branch: {error}",
|
|
302
|
+
"app_trigger.branch_missing_title": "β **App build trigger failed - branch not found**",
|
|
303
|
+
"app_trigger.table_head": "| Item | Value |",
|
|
304
|
+
"app_trigger.row_requested_branch": "| **Requested branch** | `{branch}` |",
|
|
305
|
+
"app_trigger.row_issue_pr": "| **Issue/PR** | #{number} |",
|
|
306
|
+
"app_trigger.hint_title": "### π‘ Things to check",
|
|
307
|
+
"app_trigger.hint_pushed": "1. Make sure the branch has been pushed to the remote repository",
|
|
308
|
+
"app_trigger.hint_helper_branch": "2. Make sure the branch name in the \"Issue Helper\" comment is correct",
|
|
309
|
+
"app_trigger.hint_typo": "3. Make sure the branch name has no typos",
|
|
310
|
+
"app_trigger.workflow_log_link": "π [Workflow log]({url})",
|
|
311
|
+
"app_trigger.branch_not_found_fail": "Branch not found: {branch}",
|
|
312
|
+
"app_trigger.count_lookup": "π Looking up the build count for {type} #{number}...",
|
|
313
|
+
"app_trigger.count_build_type": "π± Build type: {type}",
|
|
314
|
+
"app_trigger.count_ios": "π iOS build count: ios + app (shared) combined",
|
|
315
|
+
"app_trigger.count_android": "π Android build count: apk + app (shared) combined",
|
|
316
|
+
"app_trigger.count_app": "π Full app build count: all build commands combined",
|
|
317
|
+
"app_trigger.count_result": "π {type} #{number}: build #{count} for {build_type}",
|
|
318
|
+
"app_trigger.build_number_generated": "π¦ Generated build number: {number}",
|
|
319
|
+
"app_trigger.dispatch_start": "π Triggering the {platform} build workflow...",
|
|
320
|
+
"app_trigger.dispatch_source_number": " {type} number: #{number}",
|
|
321
|
+
"app_trigger.dispatch_build_number": " Build number: {number}",
|
|
322
|
+
"app_trigger.dispatch_branch": " Branch: {branch}",
|
|
323
|
+
"app_trigger.dispatch_related_issue": " Related issue number: {issue}",
|
|
324
|
+
"app_trigger.none": "none",
|
|
325
|
+
"app_trigger.dispatch_done": "β
{platform} build workflow triggered",
|
|
326
|
+
"app_trigger.done_log": "β
Android and iOS build workflows triggered",
|
|
327
|
+
"app_trigger.done_build_number": "π¦ Build number: {number}",
|
|
328
|
+
"app_trigger.done_branch": "πΏ Branch: {branch}",
|
|
329
|
+
"app_trigger.done_progress_note": "π A progress comment is created automatically for each platform.",
|
|
330
|
+
# --- changelog ---
|
|
331
|
+
"changelog.parser_section_ok": " β section parser succeeded",
|
|
332
|
+
"changelog.parser_lenient_ok": " β lenient parser succeeded",
|
|
333
|
+
"changelog.parser_heuristic_ok": " β heuristic parser succeeded",
|
|
334
|
+
"changelog.section_breaking": "### β οΈ Breaking changes",
|
|
335
|
+
"changelog.section_feat": "### β¨ Features",
|
|
336
|
+
"changelog.section_fix": "### π Fixes",
|
|
337
|
+
"changelog.section_perf": "### β‘ Performance",
|
|
338
|
+
"changelog.section_docs": "### π Documentation",
|
|
339
|
+
"changelog.section_refactor": "### β»οΈ Refactoring",
|
|
340
|
+
"changelog.section_test": "### β
Tests",
|
|
341
|
+
"changelog.section_deps": "### π¦ Dependencies",
|
|
342
|
+
"changelog.section_changes": "### π§ Changes",
|
|
343
|
+
"changelog.section_wip": "### π§ Work in progress",
|
|
344
|
+
"changelog.bump_prompt_prefix": "The following are free-form commit messages that do not follow the agreed commit convention.\nIf any of them looks like a new user-facing feature, answer with exactly MINOR and nothing else,\notherwise answer with exactly PATCH. Never add anything else.\nCommit list:\n",
|
|
345
|
+
"changelog.err_no_input": "β Input file not found (pr_body.md or summary_section.html)",
|
|
346
|
+
"changelog.input_file": "π Input file: {input_file}",
|
|
347
|
+
"changelog.file_size": "π File size: {size} bytes",
|
|
348
|
+
"changelog.parse_start": "\nπ Starting Markdown parsing...",
|
|
349
|
+
"changelog.parse_ok": "β
Parsed successfully: {n} categories",
|
|
350
|
+
"changelog.parse_ok_one": "β
Parsed successfully: {n} category",
|
|
351
|
+
"changelog.parse_failed": "β οΈ Parsing failed, saving raw_summary only",
|
|
352
|
+
"changelog.result_header": "\nπ Parse result:",
|
|
353
|
+
"changelog.result_method": " - parse method: {method}",
|
|
354
|
+
"changelog.result_raw_len": " - raw_summary length: {n} characters",
|
|
355
|
+
"changelog.result_categories": " - parsed categories: {n}",
|
|
356
|
+
"changelog.result_category_item": " β’ {title}: {n} items",
|
|
357
|
+
"changelog.result_category_item_one": " β’ {title}: {n} item",
|
|
358
|
+
"changelog.err_json_unreadable": "β Cannot parse CHANGELOG.json, aborting the update (protecting existing history): {error}",
|
|
359
|
+
"changelog.err_json_annotation": "::error::CHANGELOG.json is not valid JSON: {error}",
|
|
360
|
+
"changelog.json_updated": "\nβ
CHANGELOG.json updated!",
|
|
361
|
+
"changelog.err_update_failed": "β update-from-summary failed: {error}",
|
|
362
|
+
"changelog.md_current_version": "**Current version:** {version}",
|
|
363
|
+
"changelog.md_last_updated": "**Last updated:** {updated}",
|
|
364
|
+
"changelog.md_no_changes": "*No change information*",
|
|
365
|
+
"changelog.md_regenerated": "β
CHANGELOG.md regenerated!",
|
|
366
|
+
"changelog.err_md_failed": "β Failed to generate CHANGELOG.md: {error}",
|
|
367
|
+
"changelog.export_header": "Version {version} update",
|
|
368
|
+
"changelog.export_fallback": "Version {version} update\nApp stability and user experience have been improved.",
|
|
369
|
+
"changelog.warn_json_notes": "::warning::Could not read the notes for {version} from CHANGELOG.json: {error}",
|
|
370
|
+
"changelog.warn_md_notes": "::warning::Could not read the notes for {version} from CHANGELOG.md: {error}",
|
|
371
|
+
"changelog.warn_missing_key": "::warning::AI_API_BASE_URL/AI_MODEL are set but the AI_API_KEY secret is missing, skipping the user API tier",
|
|
372
|
+
"changelog.warn_missing_url_model": "::warning::AI_API_KEY is set but AI_API_BASE_URL/AI_MODEL are missing, skipping the user API tier",
|
|
373
|
+
"changelog.prompt_intro": "Write an English release summary based on the commit list below.",
|
|
374
|
+
"changelog.prompt_format": "Output format: start the first line with the '## [{version}]' heading,",
|
|
375
|
+
"changelog.prompt_sections_intro": "then write only the sections that have entries, using these names:",
|
|
376
|
+
"changelog.prompt_names_1": "'{breaking}', '{feat}', '{fix}', '{perf}', '{docs}', '{refactor}',",
|
|
377
|
+
"changelog.prompt_names_2": "'{test}', '{deps}', '{changes}', '{wip}'.",
|
|
378
|
+
"changelog.prompt_breaking": "Commits with '!' after the type or with BREAKING CHANGE must go under '{breaking}'.",
|
|
379
|
+
"changelog.prompt_bullets": "Write each entry as a bullet starting with '- '.",
|
|
380
|
+
"changelog.prompt_pr_title": "PR title: {title}",
|
|
381
|
+
"changelog.prompt_diff_stat": "Per-file change summary:",
|
|
382
|
+
"changelog.prompt_commits": "Commit list:",
|
|
383
|
+
"changelog.warn_commits_unreadable": "::warning::Could not read the commit list file, summarizing an empty list: {error}",
|
|
384
|
+
"changelog.cli_description": "Unified changelog manager",
|
|
385
|
+
"changelog.cli_update_help": "update CHANGELOG.json from the PR body",
|
|
386
|
+
"changelog.cli_generate_help": "generate CHANGELOG.md from CHANGELOG.json",
|
|
387
|
+
"changelog.cli_classify_help": "decide the semver bump level (major/minor/patch) from a commit list",
|
|
388
|
+
"changelog.cli_commits_file_help": "file with commit subjects (one per line)",
|
|
389
|
+
"changelog.cli_export_help": "extract the release notes of a version",
|
|
390
|
+
"changelog.cli_version_help": "version number",
|
|
391
|
+
"changelog.cli_output_help": "output file path (stdout if omitted)",
|
|
392
|
+
"changelog.cli_ai_summary_help": "build a release summary from a commit list (model-generated or rule-based)",
|
|
393
|
+
"changelog.cli_summary_output_help": "file path to save the summary to",
|
|
394
|
+
"changelog.cli_pr_title_help": "PR title (used as prompt context, optional)",
|
|
395
|
+
"changelog.cli_diff_stat_help": "git diff --stat output file (extra prompt context, optional)",
|
|
396
|
+
"changelog.cli_collect_help": "extract the issue numbers included in this release from PRs merged into develop",
|
|
397
|
+
"changelog.cli_shas_help": "file with the commit SHAs included in this release (one per line)",
|
|
398
|
+
"changelog.cli_prs_help": "JSON file with the output of gh pr list --json number,headRefName,mergeCommit",
|
|
399
|
+
# --- cibuild ---
|
|
400
|
+
"cibuild.go_done": "β
Go build verification completed successfully!",
|
|
401
|
+
"cibuild.python_done": "β
Python build verification completed successfully!",
|
|
402
|
+
"cibuild.info_title": "π Build info:",
|
|
403
|
+
"cibuild.info_project": " π― Project: {project}",
|
|
404
|
+
"cibuild.info_branch": " πΏ Branch: {branch}",
|
|
405
|
+
"cibuild.info_commit": " π Commit: {sha}",
|
|
406
|
+
"cibuild.info_time": " β° Verified at: {time}",
|
|
407
|
+
"cibuild.py_no_deps": "::notice::requirements.txt, pyproject.toml and setup.py not found, skipping dependency install",
|
|
408
|
+
"cibuild.py_no_tests_collected": "::notice::No tests collected, skipping pytest",
|
|
409
|
+
"cibuild.py_no_test_files": "::notice::No test files (tests/, test_*.py, ...) found, skipping pytest",
|
|
410
|
+
"cibuild.py_no_dockerfile": "::notice::{path}/Dockerfile not found, skipping Docker build verification",
|
|
411
|
+
"cibuild.node_deps_installing": "π¦ Installing dependencies...",
|
|
412
|
+
"cibuild.node_deps_done": "β
Dependencies installed",
|
|
413
|
+
"cibuild.node_no_test_script": "::notice::No test script in package.json, skipping tests",
|
|
414
|
+
"cibuild.node_test_run": "π§ͺ Running npm test: {script}",
|
|
415
|
+
"cibuild.node_build_start_next": "π¨ Starting Next.js build...",
|
|
416
|
+
"cibuild.node_build_start": "π¨ Starting build...",
|
|
417
|
+
"cibuild.node_build_project": "Project: {project}",
|
|
418
|
+
"cibuild.node_build_node": "Node.js: {node}",
|
|
419
|
+
"cibuild.node_build_failed": "β Build failed",
|
|
420
|
+
"cibuild.node_build_ok": "β
Build complete",
|
|
421
|
+
"cibuild.node_build_output": "π Build output:",
|
|
422
|
+
"cibuild.node_build_next_dir": " - .next/ folder created",
|
|
423
|
+
"cibuild.node_errlog_title": "β Build failed - error log",
|
|
424
|
+
"cibuild.node_errlog_missing": "Error log file not found.",
|
|
425
|
+
"cibuild.node_result_next_ok": "π Next.js build complete!",
|
|
426
|
+
"cibuild.node_result_next_fail": "β Next.js build failed",
|
|
427
|
+
"cibuild.node_result_ok": "π Build workflow complete!",
|
|
428
|
+
"cibuild.node_result_fail": "β Build workflow failed",
|
|
429
|
+
"cibuild.node_result_title": "π Build result:",
|
|
430
|
+
"cibuild.node_result_project": " π¦ Project: {project}",
|
|
431
|
+
"cibuild.node_result_node": " π Node.js version: {node}",
|
|
432
|
+
"cibuild.node_result_status": " π Build status: {status}",
|
|
433
|
+
"cibuild.node_result_branch": " πΏ Branch: {branch}",
|
|
434
|
+
"cibuild.node_result_commit": " π Commit: {sha}",
|
|
435
|
+
"cibuild.node_result_time": " π Time: {time}",
|
|
436
|
+
"cibuild.node_all_ok": "β
All steps completed successfully.",
|
|
437
|
+
"cibuild.node_error_occurred": "β An error occurred during the build.",
|
|
438
|
+
"cibuild.node_log_hint": "π‘ Download the 'build-log' artifact from the Actions tab to see the full log.",
|
|
439
|
+
"cibuild.gate_results": "needs results: {results}",
|
|
440
|
+
"cibuild.gate_failed": "Some jobs failed or were cancelled.",
|
|
441
|
+
# --- cicd ---
|
|
442
|
+
"cicd.precheck_secret_title": "Missing required Secret",
|
|
443
|
+
"cicd.precheck_secret_body": "GitHub Secrets not registered:{missing} β add them under Settings β Secrets and variables β Actions",
|
|
444
|
+
"cicd.precheck_dockerfile_title": "Dockerfile not found",
|
|
445
|
+
"cicd.precheck_dockerfile_body": "{path} does not exist. This workflow deploys a Docker image, so a Dockerfile is required (delete this workflow file if you do not deploy to a server)",
|
|
446
|
+
"cicd.precheck_ok": "β
Pre-check passed: all required Secrets and the Dockerfile are present",
|
|
447
|
+
"cicd.env_file_created": "β
{file} created",
|
|
448
|
+
"cicd.dotenv_created": "β
.env file created",
|
|
449
|
+
"cicd.disk_before": "π Disk usage before build:",
|
|
450
|
+
"cicd.disk_cleaning": "π§Ή Cleaning up unneeded files...",
|
|
451
|
+
"cicd.disk_docker_prune": "π³ Pruning Docker system...",
|
|
452
|
+
"cicd.disk_after_cleanup": "π Disk usage after cleanup:",
|
|
453
|
+
"cicd.post_build_cleanup": "π§Ή Cleaning up after build...",
|
|
454
|
+
"cicd.disk_final": "π Final disk usage:",
|
|
455
|
+
"cicd.setup_env": "π§ Setting up environment variables..",
|
|
456
|
+
"cicd.ssh_auth": "π SSH auth method: {method}",
|
|
457
|
+
"cicd.deploy_start": "π Deploying to the production environment (branch: {branch})",
|
|
458
|
+
"cicd.branch_unsupported": "β οΈ Unsupported branch: {branch}",
|
|
459
|
+
"cicd.branch_only": "This workflow only supports the {branch} branch.",
|
|
460
|
+
"cicd.branch_hint": "Set the branches to support under on.push.branches.",
|
|
461
|
+
"cicd.container_default": "βΉοΈ CONTAINER_NAME is not set, using PROJECT_NAME: {container}",
|
|
462
|
+
"cicd.container_custom": "βΉοΈ Using custom CONTAINER_NAME: {container}",
|
|
463
|
+
"cicd.config_title": "π Deployment settings:",
|
|
464
|
+
"cicd.config_branch": " - Branch: {branch}",
|
|
465
|
+
"cicd.config_project": " - Project: {project}",
|
|
466
|
+
"cicd.config_container": " - Container name: {container}",
|
|
467
|
+
"cicd.config_port": " - Port: {port}",
|
|
468
|
+
"cicd.config_image": " - Docker image: {image}",
|
|
469
|
+
"cicd.pull_image": "β¬οΈ Pulling Docker image: {image}",
|
|
470
|
+
"cicd.pull_image_short": "β¬οΈ Pulling Docker image...",
|
|
471
|
+
"cicd.container_check": "π§Ή Checking whether container {container} exists...",
|
|
472
|
+
"cicd.container_exists": "β οΈ Container {container} exists. Stopping and removing it...",
|
|
473
|
+
"cicd.container_removed": "β
Container {container} removed.",
|
|
474
|
+
"cicd.container_none": "βΉοΈ No existing container {container}.",
|
|
475
|
+
"cicd.container_run": "π Starting new container {container}...",
|
|
476
|
+
"cicd.volume_mkdir": "π Creating volume mount directory: {path}",
|
|
477
|
+
"cicd.volume_on": "π¦ Volume mount enabled: {opts}",
|
|
478
|
+
"cicd.volume_off": "βΉοΈ Volume mount disabled",
|
|
479
|
+
"cicd.health_wait": "β³ Waiting for the container to initialize... ({seconds}s)",
|
|
480
|
+
"cicd.health_check": "π₯ Checking container health...",
|
|
481
|
+
"cicd.health_no_process": "β Container {container} process is not running",
|
|
482
|
+
"cicd.health_process_ok": "β
Container process is running",
|
|
483
|
+
"cicd.http_start": "π Starting HTTP health check: {url}",
|
|
484
|
+
"cicd.http_try": " Attempt {i}/{max}...",
|
|
485
|
+
"cicd.http_ok": "β
HTTP health check passed (status code: {code})",
|
|
486
|
+
"cicd.http_fail": "β οΈ HTTP health check failed (status code: {code})",
|
|
487
|
+
"cicd.http_retry": " Retrying in {interval}s...",
|
|
488
|
+
"cicd.http_final_fail": "β οΈ HTTP health check finally failed, falling back to log pattern matching...",
|
|
489
|
+
"cicd.http_skipped": "βΉοΈ HEALTHCHECK_PATH is not set, using log pattern matching only",
|
|
490
|
+
"cicd.log_start": "π Starting log pattern matching: '{pattern}'",
|
|
491
|
+
"cicd.log_ok": "β
Log pattern matched: the application started normally",
|
|
492
|
+
"cicd.log_fail": "β Log pattern not matched: could not find the application start log",
|
|
493
|
+
"cicd.debug_title": "π Debug info:",
|
|
494
|
+
"cicd.debug_pattern": " - Search pattern: {pattern}",
|
|
495
|
+
"cicd.debug_container": " - Container: {container}",
|
|
496
|
+
"cicd.debug_image": " - Image: {image}",
|
|
497
|
+
"cicd.debug_port": " - Port: {port}",
|
|
498
|
+
"cicd.debug_volume": " - Volume: {volume}",
|
|
499
|
+
"cicd.debug_logs": "π Container logs (last 50 lines):",
|
|
500
|
+
"cicd.health_done": "β
Health check complete: container {container} is running normally",
|
|
501
|
+
"cicd.deploy_done": "β
Deployment completed successfully!",
|
|
502
|
+
"cicd.summary_title": "π Deployment summary:",
|
|
503
|
+
"cicd.summary_project": " π― Project: {project}",
|
|
504
|
+
"cicd.summary_branch": " πΏ Branch: {branch}",
|
|
505
|
+
"cicd.summary_container": " π³ Container: {container}",
|
|
506
|
+
"cicd.summary_port": " π Port: {port}",
|
|
507
|
+
"cicd.summary_time": " β° Deployed at: {time}",
|
|
508
|
+
"cicd.summary_url": "π URL: {url}",
|
|
509
|
+
# --- fastlane ---
|
|
510
|
+
"fastlane.env_empty": "The {name} environment variable is empty. Check that the workflow passes the value.",
|
|
511
|
+
"fastlane.ios_prepare_wait": "DEPLOY_MODE={deploy_mode}: waiting for build processing to finish, then preparing the App Store version.",
|
|
512
|
+
"fastlane.deploy_mode_unknown": "Unknown DEPLOY_MODE '{deploy_mode}'. Treating it as store_only.",
|
|
513
|
+
"fastlane.package_name_empty": "PACKAGE_NAME is empty. Register the ANDROID_PACKAGE_NAME secret or variable. (e.g. com.example.app)",
|
|
514
|
+
"fastlane.android_env_required": "AAB_PATH, GOOGLE_PLAY_JSON_KEY, VERSION_NAME and VERSION_CODE environment variables are all required. Check that the workflow passes them.",
|
|
515
|
+
"fastlane.changelog_missing": "Changelog file not found: {file}",
|
|
516
|
+
"fastlane.play_deploy": "Play deploy: DEPLOY_MODE={deploy_mode} -> track={track}, release_status={release_status}",
|
|
517
|
+
# --- flutter_a ---
|
|
518
|
+
"flutter_a.precheck_missing_title": "Missing required Secret",
|
|
519
|
+
"flutter_a.precheck_missing_body": "GitHub Secrets not registered:{missing} - register them under Settings β Secrets and variables β Actions",
|
|
520
|
+
"flutter_a.precheck_passed": "β
Pre-check passed: all required Secrets are present",
|
|
521
|
+
"flutter_a.debug_keystore_empty": "The DEBUG_KEYSTORE Secret is empty, so the build is signed with the runner's default debug key (the signature differs per build)",
|
|
522
|
+
"flutter_a.debug_keystore_created": "Debug Keystore created (signed with DEBUG_KEYSTORE)",
|
|
523
|
+
"flutter_a.gradlew_missing": "βΉοΈ gradlew is not in the repository - flutter build will generate it",
|
|
524
|
+
"flutter_a.current_version": "Current version: {current_version}",
|
|
525
|
+
"flutter_a.short_commit_hash": "Short commit hash: {short_commit_hash}",
|
|
526
|
+
"flutter_a.project_type": "π§ Project type: {project_type}",
|
|
527
|
+
"flutter_a.extracting_v_release_notes_changelog": "π Extracting the v{version} release notes from CHANGELOG.json...",
|
|
528
|
+
"flutter_a.release_notes_extracted": "β
Release notes extracted!",
|
|
529
|
+
"flutter_a.extracted_release_notes": "π Extracted release notes:",
|
|
530
|
+
"flutter_a.failed_extract_release_notes": "β Failed to extract release notes",
|
|
531
|
+
"flutter_a.default_release_note": "v{version} update",
|
|
532
|
+
"flutter_a.changelog_json_not_found_using": "β οΈ CHANGELOG.json not found. Using the default release notes.",
|
|
533
|
+
"flutter_a.signing_secrets_empty": "The signing Secrets are empty:{missing} (see the comments at the top of the workflow)",
|
|
534
|
+
"flutter_a.keystore_decoded_empty": "The keystore decoded from RELEASE_KEYSTORE_BASE64 is empty",
|
|
535
|
+
"flutter_a.release_keystore_created": "β
Release keystore created",
|
|
536
|
+
"flutter_a.key_properties_created": "β
key.properties created",
|
|
537
|
+
"flutter_a.signing_config_must_added_build": "β οΈ A signing config must be added to build.gradle.kts",
|
|
538
|
+
"flutter_a.android_build_config_check_complete": "β
Android build config check complete",
|
|
539
|
+
"flutter_a.starting_aab_build": "π Starting the AAB build",
|
|
540
|
+
"flutter_a.build_version": "π― Build version: {version_name}",
|
|
541
|
+
"flutter_a.build_code": "π― Build code: {version_code}",
|
|
542
|
+
"flutter_a.version_name_or_version_code": "β VERSION_NAME or VERSION_CODE is empty!",
|
|
543
|
+
"flutter_a.flutter_environment_info": "π Flutter environment info:",
|
|
544
|
+
"flutter_a.cleaning_previous_build_output": "π§Ή Cleaning previous build output...",
|
|
545
|
+
"flutter_a.running_flutter_clean_reinstalling_dependencies": "π Running flutter clean and reinstalling dependencies...",
|
|
546
|
+
"flutter_a.setting_version_info_local_properties": "π§ Setting version info in local.properties...",
|
|
547
|
+
"flutter_a.local_properties_updated": "β
local.properties updated",
|
|
548
|
+
"flutter_a.version_info_version_name_version": "π Version info: VERSION_NAME={version_name}, VERSION_CODE={version_code}",
|
|
549
|
+
"flutter_a.gradle_tuning_applied": "β
Gradle tuning applied",
|
|
550
|
+
"flutter_a.running_flutter_build": "π¨ Running flutter build...",
|
|
551
|
+
"flutter_a.command_flutter_build_appbundle_release": "π Command: flutter build appbundle --release --build-name={version_name} --build-number={version_code} --verbose",
|
|
552
|
+
"flutter_a.build_start_time": "β±οΈ Build start time: {cmd1}",
|
|
553
|
+
"flutter_a.flutter_build_failed_exit_code": "β Flutter build failed! Exit code: {build_exit_code}",
|
|
554
|
+
"flutter_a.build_directory_state": "π Build directory state:",
|
|
555
|
+
"flutter_a.aab_apk_not_found": "No AAB/APK file found",
|
|
556
|
+
"flutter_a.flutter_build_succeeded": "β
Flutter build succeeded!",
|
|
557
|
+
"flutter_a.checking_build_result": "π Checking the build result:",
|
|
558
|
+
"flutter_a.aab_file_not_created": "β The AAB file was not created!",
|
|
559
|
+
"flutter_a.full_build_directory_contents": "π Full build directory contents:",
|
|
560
|
+
"flutter_a.outputs_directory_structure": "π outputs directory structure:",
|
|
561
|
+
"flutter_a.outputs_directory_does_not_exist": "The outputs directory does not exist",
|
|
562
|
+
"flutter_a.aab_file_creation_confirmed": "β
AAB file creation confirmed",
|
|
563
|
+
"flutter_a.aab_file_size": "π± AAB file size: {cmd1}",
|
|
564
|
+
"flutter_a.aab_file_info": "π AAB file info: {cmd1}",
|
|
565
|
+
"flutter_a.downloading_bundletool": "π¦ Downloading bundletool...",
|
|
566
|
+
"flutter_a.download_url": "π Download URL: {bundletool_url}",
|
|
567
|
+
"flutter_a.bundletool_download_failed": "β bundletool download failed",
|
|
568
|
+
"flutter_a.retrying_fallback_url": "π Retrying with the fallback URL...",
|
|
569
|
+
"flutter_a.bundletool_download_failed_completely": "β bundletool download failed completely",
|
|
570
|
+
"flutter_a.bundletool_downloaded": "β
bundletool downloaded",
|
|
571
|
+
"flutter_a.bundletool_file_size": "π bundletool file size: {cmd1}",
|
|
572
|
+
"flutter_a.checking_java_environment": "π Checking the Java environment:",
|
|
573
|
+
"flutter_a.verifying_version_info_inside_aab": "π Verifying the version info inside the AAB file",
|
|
574
|
+
"flutter_a.extracting_actual_version_info_aab": "π Extracting the actual version info from the AAB...",
|
|
575
|
+
"flutter_a.command_run_java_jar_bundletool": "π Command to run: java -jar bundletool.jar dump manifest --bundle='{aab_file}'",
|
|
576
|
+
"flutter_a.bundletool_result_exit_code": "π bundletool result (Exit code: {manifest_exit_code}):",
|
|
577
|
+
"flutter_a.manifest_extracted": "β
Manifest extracted",
|
|
578
|
+
"flutter_a.version_info_comparison": "π― Version info comparison:",
|
|
579
|
+
"flutter_a.expected_version_code": " Expected VERSION_CODE: '{version_code}'",
|
|
580
|
+
"flutter_a.actual_version_code": " Actual VERSION_CODE: '{actual_version_code}'",
|
|
581
|
+
"flutter_a.expected_version_name": " Expected VERSION_NAME: '{version_name}'",
|
|
582
|
+
"flutter_a.actual_version_name": " Actual VERSION_NAME: '{actual_version_name}'",
|
|
583
|
+
"flutter_a.fatal_error_version_code_could": "β Fatal error: VERSION_CODE could not be extracted from the AAB!",
|
|
584
|
+
"flutter_a.full_manifest_contents": "π Full Manifest contents:",
|
|
585
|
+
"flutter_a.fatal_error_version_code_aab": "β Fatal error: the VERSION_CODE in the AAB is not what was expected!",
|
|
586
|
+
"flutter_a.google_play_would_reject_version": " Google Play would reject this with a 'version code already used' error.",
|
|
587
|
+
"flutter_a.debugging_info": "π Debugging info:",
|
|
588
|
+
"flutter_a.version_code_version_yml": " VERSION_CODE in version.yml: {version_code}",
|
|
589
|
+
"flutter_a.version_code_inside_aab_file": " VERSION_CODE inside the AAB file: {actual_version_code}",
|
|
590
|
+
"flutter_a.flags_passed_flutter_build_command": " Flags passed to the flutter build command:",
|
|
591
|
+
"flutter_a.full_manifest_contents_2": " Full Manifest contents:",
|
|
592
|
+
"flutter_a.version_code_check_passed": "β
VERSION_CODE check passed: {actual_version_code}",
|
|
593
|
+
"flutter_a.warning_version_name_could_not": "β οΈ Warning: VERSION_NAME could not be extracted from the AAB",
|
|
594
|
+
"flutter_a.warning_version_name_differs_expected": "β οΈ Warning: VERSION_NAME differs from the expected value (not fatal)",
|
|
595
|
+
"flutter_a.expected_actual": " Expected: '{version_name}', actual: '{actual_version_name}'",
|
|
596
|
+
"flutter_a.version_name_check_passed": "β
VERSION_NAME check passed: {actual_version_name}",
|
|
597
|
+
"flutter_a.failed_extract_manifest_bundletool": "β Failed to extract the Manifest with bundletool",
|
|
598
|
+
"flutter_a.trying_verify_another_way": "π Trying to verify another way...",
|
|
599
|
+
"flutter_a.trying_direct_extraction_unzip": "π Trying direct extraction with unzip...",
|
|
600
|
+
"flutter_a.version_info_extracted_unzip": "β
Version info extracted with unzip:",
|
|
601
|
+
"flutter_a.direct_extraction_unzip_failed_too": "β Direct extraction with unzip failed too",
|
|
602
|
+
"flutter_a.skipping_aab_verification_continuing": "β οΈ Skipping the AAB verification and continuing.",
|
|
603
|
+
"flutter_a.aab_build_verification_complete": "β
AAB build and verification complete",
|
|
604
|
+
"flutter_a.final_aab": "π― Final AAB: {aab_file}",
|
|
605
|
+
"flutter_a.file_size": "π± File size: {cmd1}",
|
|
606
|
+
"flutter_a.google_play_service_account_json": "The GOOGLE_PLAY_SERVICE_ACCOUNT_JSON_BASE64 Secret is empty",
|
|
607
|
+
"flutter_a.service_account_json_configured": "β
Service Account JSON configured",
|
|
608
|
+
"flutter_a.using_repository_gemfile": "βΉοΈ Using the repository Gemfile",
|
|
609
|
+
"flutter_a.fastlane_installed_bundler": "β
Fastlane installed (Bundler)",
|
|
610
|
+
"flutter_a.fastfile_copied_fastfile_playstore_fastfile": "β
Fastfile copied (Fastfile.playstore β Fastfile)",
|
|
611
|
+
"flutter_a.fastfile_contents": "π Fastfile contents:",
|
|
612
|
+
"flutter_a.starting_play_store_deployment": "π Starting the Play Store deployment",
|
|
613
|
+
"flutter_a.deploy_start_time": "π Deploy start time: {cmd1}",
|
|
614
|
+
"flutter_a.version_info_deploy": "π Version info to deploy:",
|
|
615
|
+
"flutter_a.fatal_error_version_name_or": "β Fatal error: VERSION_NAME or VERSION_CODE is empty!",
|
|
616
|
+
"flutter_a.means_prepare_build_job_did": "This means the prepare-build job did not pass its outputs correctly.",
|
|
617
|
+
"flutter_a.aab_file_path": "π¦ AAB file path: {aab_path}",
|
|
618
|
+
"flutter_a.aab_file_not_found": "β AAB file not found!",
|
|
619
|
+
"flutter_a.build_directory_contents": "π Build directory contents:",
|
|
620
|
+
"flutter_a.directory_does_not_exist": "The directory does not exist",
|
|
621
|
+
"flutter_a.full_build_directory_structure": "π Full build directory structure:",
|
|
622
|
+
"flutter_a.aab_file_exists": "β
AAB file exists",
|
|
623
|
+
"flutter_a.verifying_aab_version": "π Verifying the AAB version...",
|
|
624
|
+
"flutter_a.aab_version_code": "π AAB version: {final_version_name} (code: {final_version_code})",
|
|
625
|
+
"flutter_a.error_aab_version_code_not": "β Error: the AAB version code is not what was expected! (expected: {version_code}, actual: {final_version_code})",
|
|
626
|
+
"flutter_a.version_check_passed": "β
Version check passed",
|
|
627
|
+
"flutter_a.version_check_failed_continuing_deployment": "β οΈ Version check failed, continuing with the deployment",
|
|
628
|
+
"flutter_a.changelog_ready_version_code": "β
Changelog ready (version code: {version_code})",
|
|
629
|
+
"flutter_a.default_release_note_name": "v{version_name} update",
|
|
630
|
+
"flutter_a.created_default_changelog_version_code": "β οΈ Created a default changelog (version code: {version_code})",
|
|
631
|
+
"flutter_a.service_account_json_file_not": "β Service Account JSON file not found",
|
|
632
|
+
"flutter_a.running_play_store_deployment": "π Running the Play Store deployment",
|
|
633
|
+
"flutter_a.version_code": "π― Version: {version_name} (code: {version_code})",
|
|
634
|
+
"flutter_a.play_store_internal_testing_deployment": "β
Play Store internal testing deployment succeeded!",
|
|
635
|
+
"flutter_a.version": "Version: {version} ({version_code})",
|
|
636
|
+
"flutter_a.commit": "Commit: {sha}",
|
|
637
|
+
"flutter_a.how_testers_check_build": "π± How testers check the build:",
|
|
638
|
+
"flutter_a.play_console_test_release_internal": "1. Play Console β Test and release β Internal testing",
|
|
639
|
+
"flutter_a.share_test_link_your_testers": "2. Share the test link with your testers",
|
|
640
|
+
"flutter_a.play_store_deployment_failed": "β Play Store deployment failed!",
|
|
641
|
+
"flutter_a.please_check_logs": "Please check the logs.",
|
|
642
|
+
"flutter_a.precheck_firebase_app_id_title": "FIREBASE_APP_ID not set",
|
|
643
|
+
"flutter_a.precheck_firebase_app_id_body": "Replace FIREBASE_APP_ID in the workflow env section with the app ID from the Firebase Console",
|
|
644
|
+
"flutter_a.precheck_passed_firebase": "β
Pre-check passed: all required Secrets and FIREBASE_APP_ID are present",
|
|
645
|
+
"flutter_a.firebase_service_account_json_base64": "The FIREBASE_SERVICE_ACCOUNT_JSON_BASE64 Secret is empty",
|
|
646
|
+
"flutter_a.firebase_service_account_json_file": "β
Firebase service account JSON file created",
|
|
647
|
+
"flutter_a.firebase_app_distribution_deployment_succeeded": "β
Firebase App Distribution deployment succeeded!",
|
|
648
|
+
"flutter_a.launch_firebase_app_tester_app": "1. Launch the Firebase App Tester app",
|
|
649
|
+
"flutter_a.select_app": "2. Select the app",
|
|
650
|
+
"flutter_a.download_latest_build": "3. Download the latest build",
|
|
651
|
+
"flutter_a.firebase_app_distribution_deployment_failed": "β Firebase App Distribution deployment failed!",
|
|
652
|
+
"flutter_a.ci_config_header": "π CI settings:",
|
|
653
|
+
"flutter_a.ci_config_trigger": " Trigger: {event_name}",
|
|
654
|
+
"flutter_a.ci_info_header": "π Build info:",
|
|
655
|
+
"flutter_a.ci_info_branch": " Branch: {branch_name}",
|
|
656
|
+
"flutter_a.ci_info_commit": " Commit: {commit_hash}",
|
|
657
|
+
"flutter_a.ci_analyze_start": "π Starting Flutter code analysis...",
|
|
658
|
+
"flutter_a.ci_analyze_done": "β
Code analysis complete",
|
|
659
|
+
"flutter_a.ci_test_start": "π§ͺ Starting Flutter tests...",
|
|
660
|
+
"flutter_a.ci_test_passed": "β
Tests passed",
|
|
661
|
+
"flutter_a.ci_test_skipped_title": "Flutter tests skipped",
|
|
662
|
+
"flutter_a.ci_test_skipped_body": "flutter test was not run because test/ has no *_test.dart files",
|
|
663
|
+
"flutter_a.ci_apk_start": "π¦ Starting the Flutter APK build (debug)...",
|
|
664
|
+
"flutter_a.ci_apk_done": "β
APK build complete",
|
|
665
|
+
"flutter_a.ci_podfile_missing": "βΉοΈ ios/Podfile not found, skipping pod install (no CocoaPods plugins)",
|
|
666
|
+
"flutter_a.ci_ios_start": "π¦ Starting the Flutter iOS build...",
|
|
667
|
+
"flutter_a.ci_ios_done": "β
iOS build complete",
|
|
668
|
+
"flutter_a.ci_gate_results": "needs results: {results}",
|
|
669
|
+
"flutter_a.ci_gate_failed": "A job failed or was cancelled.",
|
|
670
|
+
"flutter_a.ci_hdr_analyze_running": "## π Flutter CI (Analyze Only) in progress...",
|
|
671
|
+
"flutter_a.ci_hdr_running": "## π¨ Flutter CI in progress...",
|
|
672
|
+
"flutter_a.ci_status_skipped": "βΈοΈ Skipped",
|
|
673
|
+
"flutter_a.ci_status_running": "β³ In progress...",
|
|
674
|
+
"flutter_a.ci_status_disabled": "βΈοΈ Disabled",
|
|
675
|
+
"flutter_a.ci_table_head": "| Check | Status | Duration |",
|
|
676
|
+
"flutter_a.ci_row_analyze_running": "| π Analyze | β³ In progress... | - |",
|
|
677
|
+
"flutter_a.ci_row_test_running": "| π§ͺ Test | β³ In progress... | - |",
|
|
678
|
+
"flutter_a.ci_row_android_pending": "| π€ Android build | {status} | - |",
|
|
679
|
+
"flutter_a.ci_row_ios_pending": "| π iOS build | {status} | - |",
|
|
680
|
+
"flutter_a.ci_info_head": "| Item | Value |",
|
|
681
|
+
"flutter_a.ci_row_branch": "| **Branch** | `{branch}` |",
|
|
682
|
+
"flutter_a.ci_row_commit": "| **Commit** | `{commit}` |",
|
|
683
|
+
"flutter_a.ci_note_analyze_only_running": "βΉοΈ **Analyze Only mode**: only the code analysis runs, without builds.",
|
|
684
|
+
"flutter_a.ci_link_live_log": "**[π View live logs]({url})**",
|
|
685
|
+
"flutter_a.ci_footer_auto_update": "*π€ This comment is updated automatically.*",
|
|
686
|
+
"flutter_a.ci_log_comment_created": "β
Progress comment created: #{id}",
|
|
687
|
+
"flutter_a.ci_dur_min_sec": "{minutes}m {seconds}s",
|
|
688
|
+
"flutter_a.ci_dur_sec": "{seconds}s",
|
|
689
|
+
"flutter_a.ci_log_analyze_result": "π Code analysis result: {status}, tests: {test} ({duration})",
|
|
690
|
+
"flutter_a.ci_log_android_result": "π Android build result: {status} ({duration})",
|
|
691
|
+
"flutter_a.ci_log_ios_result": "π iOS build result: {status} ({duration})",
|
|
692
|
+
"flutter_a.ci_status_success": "β
Success",
|
|
693
|
+
"flutter_a.ci_status_failure": "β Failed",
|
|
694
|
+
"flutter_a.ci_status_no_tests": "βΈοΈ No tests",
|
|
695
|
+
"flutter_a.ci_status_not_run": "βΈοΈ Not run",
|
|
696
|
+
"flutter_a.ci_hdr_analyze_success": "## β
Flutter CI (Analyze Only) succeeded!",
|
|
697
|
+
"flutter_a.ci_hdr_analyze_failure": "## β Flutter CI (Analyze Only) failed",
|
|
698
|
+
"flutter_a.ci_hdr_success": "## β
Flutter CI succeeded!",
|
|
699
|
+
"flutter_a.ci_hdr_failure": "## β Flutter CI failed",
|
|
700
|
+
"flutter_a.ci_row_android_result": "| π€ Android build | {status} | {duration} |",
|
|
701
|
+
"flutter_a.ci_row_ios_result": "| π iOS build | {status} | {duration} |",
|
|
702
|
+
"flutter_a.ci_row_total": "| **Total duration** | {duration} |",
|
|
703
|
+
"flutter_a.ci_note_analyze_only_done": "βΉοΈ **Analyze Only mode**: only the code analysis ran, without builds.",
|
|
704
|
+
"flutter_a.ci_hdr_checks": "### π‘ Things to check",
|
|
705
|
+
"flutter_a.ci_analyze_fail_title": "**If Analyze failed:**",
|
|
706
|
+
"flutter_a.ci_analyze_fail_lint": "- Run `flutter analyze` locally to check the lint errors",
|
|
707
|
+
"flutter_a.ci_analyze_fail_fix": "- Fix code style and type errors",
|
|
708
|
+
"flutter_a.ci_test_fail_title": "**If Test failed:**",
|
|
709
|
+
"flutter_a.ci_test_fail_local": "- Run `flutter test` locally to find the failing tests",
|
|
710
|
+
"flutter_a.ci_android_fail_title": "**If the Android build failed:**",
|
|
711
|
+
"flutter_a.ci_android_fail_gradle": "- Check the errors in the Gradle build log",
|
|
712
|
+
"flutter_a.ci_android_fail_deps": "- Check dependency version compatibility",
|
|
713
|
+
"flutter_a.ci_ios_fail_title": "**If the iOS build failed:**",
|
|
714
|
+
"flutter_a.ci_ios_fail_xcode": "- Check the errors in the Xcode build log",
|
|
715
|
+
"flutter_a.ci_ios_fail_pods": "- Check the CocoaPods dependencies",
|
|
716
|
+
"flutter_a.ci_link_workflow_log": "**[π Workflow log]({url})**",
|
|
717
|
+
"flutter_a.ci_log_result_updated": "β
Result comment updated",
|
|
718
|
+
"flutter_a.ci_log_no_comment_id": "β οΈ No comment ID, skipping the update.",
|
|
719
|
+
# --- ios_test_tf ---
|
|
720
|
+
"ios_test_tf.branch_check_log": "π Checking that the branch exists: {branch}",
|
|
721
|
+
"ios_test_tf.branch_exists_log": "β
Branch exists: {branch}",
|
|
722
|
+
"ios_test_tf.branch_not_found_log": "β Branch not found: {branch}",
|
|
723
|
+
"ios_test_tf.branch_missing_title": "π β **iOS TestFlight build failed - branch not found**",
|
|
724
|
+
"ios_test_tf.kv_head": "| Item | Value |",
|
|
725
|
+
"ios_test_tf.row_requested_branch": "| **Requested branch** | `{branch}` |",
|
|
726
|
+
"ios_test_tf.row_issue_pr": "| **Issue/PR** | #{number} |",
|
|
727
|
+
"ios_test_tf.hint_title": "### π‘ Things to check",
|
|
728
|
+
"ios_test_tf.hint_pushed": "1. Make sure the branch has been pushed to the remote repository",
|
|
729
|
+
"ios_test_tf.hint_helper_branch": "2. Make sure the branch name in the \"Issue Helper\" comment is correct",
|
|
730
|
+
"ios_test_tf.hint_typo": "3. Make sure the branch name has no typos",
|
|
731
|
+
"ios_test_tf.workflow_log_link": "π [Workflow log]({url})",
|
|
732
|
+
"ios_test_tf.branch_not_found_fail": "Branch not found: {branch}",
|
|
733
|
+
"ios_test_tf.branch_check_error_fail": "Error while checking the branch: {error}",
|
|
734
|
+
"ios_test_tf.title_running": "## π iOS TestFlight build in progress...",
|
|
735
|
+
"ios_test_tf.table_header": "| Step | Status | Duration |",
|
|
736
|
+
"ios_test_tf.step_prepare": "π§ Prepare",
|
|
737
|
+
"ios_test_tf.step_build": "π¨ IPA build",
|
|
738
|
+
"ios_test_tf.step_deploy": "π€ TestFlight deploy",
|
|
739
|
+
"ios_test_tf.st_running": "β³ In progress...",
|
|
740
|
+
"ios_test_tf.st_waiting": "βΈοΈ Waiting",
|
|
741
|
+
"ios_test_tf.st_done": "β
Done",
|
|
742
|
+
"ios_test_tf.st_failed": "β Failed",
|
|
743
|
+
"ios_test_tf.st_canceled": "βΈοΈ Canceled",
|
|
744
|
+
"ios_test_tf.row_build_number": "| **Build number** | `{build}` |",
|
|
745
|
+
"ios_test_tf.row_app_version": "| **App version** | `{version}({build})` |",
|
|
746
|
+
"ios_test_tf.row_branch": "| **Branch** | `{branch}` |",
|
|
747
|
+
"ios_test_tf.row_commit": "| **Commit** | `{commit}` |",
|
|
748
|
+
"ios_test_tf.row_total": "| **Total duration** | {elapsed} |",
|
|
749
|
+
"ios_test_tf.live_log_link": "**[π View live log]({url})**",
|
|
750
|
+
"ios_test_tf.auto_update_note": "*π€ This comment is updated automatically.*",
|
|
751
|
+
"ios_test_tf.log_progress_created": "β
Progress comment created: #{id}",
|
|
752
|
+
"ios_test_tf.elapsed_min_sec": "{m}m {s}s",
|
|
753
|
+
"ios_test_tf.elapsed_sec": "{s}s",
|
|
754
|
+
"ios_test_tf.secrets_missing": "Required GitHub Secrets are empty:{missing} (see the comments at the top of the workflow)",
|
|
755
|
+
"ios_test_tf.export_options_missing": "ios/ExportOptions.plist not found β add it to the repository and commit it.",
|
|
756
|
+
"ios_test_tf.export_options_placeholders": "ios/ExportOptions.plist still contains unfilled placeholders β replace them with your team ID, bundle ID and provisioning profile name, then commit.",
|
|
757
|
+
"ios_test_tf.fastfile_missing_error": "ios/fastlane/Fastfile not found β add it to the repository and commit it.",
|
|
758
|
+
"ios_test_tf.preflight_ok": "β
Deploy settings verified",
|
|
759
|
+
"ios_test_tf.event_dispatch": "π repository_dispatch event detected",
|
|
760
|
+
"ios_test_tf.event_pr_number": " PR number: #{pr}",
|
|
761
|
+
"ios_test_tf.event_build_number_pr": " Build number: {build} (from the PR number)",
|
|
762
|
+
"ios_test_tf.event_workflow_dispatch": "π workflow_dispatch event detected",
|
|
763
|
+
"ios_test_tf.event_build_number_default": " Build number: {build} (default)",
|
|
764
|
+
"ios_test_tf.test_build_log": "π Test build: version={version}, build number={build}",
|
|
765
|
+
"ios_test_tf.branch_name_log": "πΏ Branch name: {branch}",
|
|
766
|
+
"ios_test_tf.issue_number_missing": "β οΈ Could not find an issue number in the branch name.",
|
|
767
|
+
"ios_test_tf.issue_number_extracted": "β
Extracted issue number: #{number}",
|
|
768
|
+
"ios_test_tf.issue_fetching": "π Fetching issue info from the GitHub API...",
|
|
769
|
+
"ios_test_tf.issue_title_default": "Issue info not available",
|
|
770
|
+
"ios_test_tf.issue_not_found": "β οΈ Issue #{number} not found.",
|
|
771
|
+
"ios_test_tf.issue_title_log": "π Issue title: {title}",
|
|
772
|
+
"ios_test_tf.issue_state_log": "π Issue state: {state}",
|
|
773
|
+
"ios_test_tf.notes_build": "Test build #{build}",
|
|
774
|
+
"ios_test_tf.notes_branch": "Branch: {branch}",
|
|
775
|
+
"ios_test_tf.notes_commit": "Commit: {commit}",
|
|
776
|
+
"ios_test_tf.notes_date": "Date: {date}",
|
|
777
|
+
"ios_test_tf.notes_issue_header": "Related issue:",
|
|
778
|
+
"ios_test_tf.notes_generated": "π Generated release notes:",
|
|
779
|
+
"ios_test_tf.title_prepare_failed": "## π β iOS TestFlight build failed",
|
|
780
|
+
"ios_test_tf.prepare_error": "β **An error occurred while preparing the environment.**",
|
|
781
|
+
"ios_test_tf.run_log_check_link": "π [Check the workflow run log]({url})",
|
|
782
|
+
"ios_test_tf.log_prepare_failed": "β Progress update complete: prepare failed",
|
|
783
|
+
"ios_test_tf.log_prepare_done": "β
Progress update complete: prepare done ({elapsed})",
|
|
784
|
+
"ios_test_tf.podfile_skip": "βΉοΈ ios/Podfile not found, skipping pod install (no CocoaPods plugins)",
|
|
785
|
+
"ios_test_tf.plist_missing": "β ios/ExportOptions.plist not found!",
|
|
786
|
+
"ios_test_tf.plist_missing_hint": "Add ios/ExportOptions.plist to the repository and commit it. See the comments at the top of the workflow for the required Secrets.",
|
|
787
|
+
"ios_test_tf.plist_ok": "β
ExportOptions.plist verified",
|
|
788
|
+
"ios_test_tf.title_ipa_done": "## π β
iOS build complete",
|
|
789
|
+
"ios_test_tf.log_ipa_done": "β
Progress update complete: IPA build done ({elapsed})",
|
|
790
|
+
"ios_test_tf.title_ipa_failed": "## π β iOS TestFlight build failed",
|
|
791
|
+
"ios_test_tf.ipa_error": "β **An error occurred while building the IPA.**",
|
|
792
|
+
"ios_test_tf.log_ipa_failed": "β Progress update complete: IPA build failed",
|
|
793
|
+
"ios_test_tf.fastfile_missing": "β ios/fastlane/Fastfile not found!",
|
|
794
|
+
"ios_test_tf.fastfile_missing_hint": "Add ios/fastlane/Fastfile to the repository and commit it. See the comments at the top of the workflow for the required Secrets.",
|
|
795
|
+
"ios_test_tf.fastfile_ok": "β
Fastfile found: ios/fastlane/Fastfile",
|
|
796
|
+
"ios_test_tf.gemfile_repo": "βΉοΈ Using the repository's Gemfile",
|
|
797
|
+
"ios_test_tf.ipa_missing": "β IPA file not found!",
|
|
798
|
+
"ios_test_tf.default_notes_echo": "π Default Release Notes: {notes}",
|
|
799
|
+
"ios_test_tf.upload_ok": "β
TestFlight test build upload succeeded!",
|
|
800
|
+
"ios_test_tf.upload_version": "Version: {version}",
|
|
801
|
+
"ios_test_tf.upload_build": "Build number: {build}",
|
|
802
|
+
"ios_test_tf.upload_pr": "PR number: {pr}",
|
|
803
|
+
"ios_test_tf.upload_branch": "Branch: {branch}",
|
|
804
|
+
"ios_test_tf.upload_commit": "Commit: {sha}",
|
|
805
|
+
"ios_test_tf.upload_issue": "Related issue: {url}",
|
|
806
|
+
"ios_test_tf.upload_failed": "β TestFlight test build upload failed!",
|
|
807
|
+
"ios_test_tf.check_logs": "Please check the logs.",
|
|
808
|
+
"ios_test_tf.title_deploy_done": "## π β
iOS TestFlight deploy complete",
|
|
809
|
+
"ios_test_tf.download_hint": "π± **You can download the test app from TestFlight.**",
|
|
810
|
+
"ios_test_tf.run_log_link": "π [Workflow run log]({url})",
|
|
811
|
+
"ios_test_tf.log_all_done": "β
Final progress update complete: everything succeeded ({elapsed})",
|
|
812
|
+
"ios_test_tf.title_deploy_failed": "## π β iOS TestFlight deploy failed",
|
|
813
|
+
"ios_test_tf.deploy_error": "β **An error occurred while deploying to TestFlight.**",
|
|
814
|
+
"ios_test_tf.log_deploy_failed": "β Final progress update complete: TestFlight deploy failed",
|
|
815
|
+
# --- ios_testflight ---
|
|
816
|
+
"ios_testflight.secrets_missing": "Required GitHub Secrets are empty:{missing} (see the comments at the top of the workflow)",
|
|
817
|
+
"ios_testflight.export_options_missing": "ios/ExportOptions.plist not found β add it to the repository and commit it.",
|
|
818
|
+
"ios_testflight.export_options_placeholders": "ios/ExportOptions.plist still contains unfilled placeholders β replace them with your team ID, bundle ID and provisioning profile name, then commit.",
|
|
819
|
+
"ios_testflight.fastfile_missing_error": "ios/fastlane/Fastfile not found β add it to the repository and commit it.",
|
|
820
|
+
"ios_testflight.preflight_ok": "β
Deploy settings verified",
|
|
821
|
+
"ios_testflight.podfile_skip": "βΉοΈ ios/Podfile not found, skipping pod install (no CocoaPods plugins)",
|
|
822
|
+
"ios_testflight.version_info": "π Version: {version} (build number: {build})",
|
|
823
|
+
"ios_testflight.default_notes": "v{version} update",
|
|
824
|
+
"ios_testflight.plist_placeholders": "β ios/ExportOptions.plist still contains unfilled placeholders:",
|
|
825
|
+
"ios_testflight.plist_placeholders_hint": "Replace them with your team ID, bundle ID and provisioning profile name, commit, and run again.",
|
|
826
|
+
"ios_testflight.fastfile_missing": "β ios/fastlane/Fastfile not found!",
|
|
827
|
+
"ios_testflight.fastfile_missing_hint": "Add ios/fastlane/Fastfile to the repository and commit it. See the comments at the top of the workflow for the required Secrets.",
|
|
828
|
+
"ios_testflight.fastfile_ok": "β
Fastfile found: ios/fastlane/Fastfile",
|
|
829
|
+
"ios_testflight.gemfile_repo": "βΉοΈ Using the repository's Gemfile",
|
|
830
|
+
"ios_testflight.ipa_missing": "β IPA file not found!",
|
|
831
|
+
"ios_testflight.default_notes_echo": "π Default Release Notes: {notes}",
|
|
832
|
+
"ios_testflight.upload_ok": "β
TestFlight upload succeeded!",
|
|
833
|
+
"ios_testflight.upload_version": "π± Version: {version}",
|
|
834
|
+
"ios_testflight.upload_build": "π’ Build number: {build}",
|
|
835
|
+
"ios_testflight.upload_commit": "π Commit: {sha}",
|
|
836
|
+
"ios_testflight.upload_failed": "β TestFlight upload failed!",
|
|
837
|
+
"ios_testflight.check_logs": "Please check the logs.",
|
|
838
|
+
# --- issue_helper ---
|
|
839
|
+
"issue_helper.err_list_comments": "Failed to list issue comments ({status}): {issue_number}",
|
|
840
|
+
"issue_helper.err_update_comment": "Failed to update comment ({status})",
|
|
841
|
+
"issue_helper.comment_updated": "Updated the existing comment.",
|
|
842
|
+
"issue_helper.err_create_comment": "Failed to create comment ({status})",
|
|
843
|
+
"issue_helper.comment_created": "Created a new comment.",
|
|
844
|
+
"issue_helper.err_repo_info": "Failed to fetch repository info ({status})",
|
|
845
|
+
"issue_helper.err_base_ref": "Failed to fetch base branch ref ({base}, {status})",
|
|
846
|
+
"issue_helper.branch_exists": "Branch already exists, skipping: {branch_name}",
|
|
847
|
+
"issue_helper.err_create_branch": "Failed to create branch ({branch_name}, {status})",
|
|
848
|
+
"issue_helper.branch_created": "Branch created: {branch_name}",
|
|
849
|
+
"issue_helper.warn_issue_missing": "::warning::Issue #{n} does not exist in the repo, excluded from the PR body Closes links",
|
|
850
|
+
"issue_helper.warn_is_pr": "::warning::#{n} is a PR, not an issue, excluded from the Closes links",
|
|
851
|
+
"issue_helper.issue_check_failed": "Could not verify issue #{n} ({status}) β linking it as is",
|
|
852
|
+
"issue_helper.no_issue_to_link": "No issues to link β skipping (PR #{pr_number})",
|
|
853
|
+
"issue_helper.err_get_pr": "Failed to fetch PR ({status}): {pr_number}",
|
|
854
|
+
"issue_helper.link_unchanged": "No change to issue links β skipping (PR #{pr_number})",
|
|
855
|
+
"issue_helper.err_update_pr": "Failed to update PR body ({status}): {pr_number}",
|
|
856
|
+
"issue_helper.link_done": "Issues linked: {numbers} (PR #{pr_number})",
|
|
857
|
+
"issue_helper.err_no_event_path": "ERROR: GITHUB_EVENT_PATH is not set.",
|
|
858
|
+
"issue_helper.err_event_payload": "ERROR: cannot read the event payload: {error}",
|
|
859
|
+
"issue_helper.not_relevant_event": "Not an opened or title-edited event -> exiting",
|
|
860
|
+
"issue_helper.err_repo_format": "ERROR: GITHUB_REPOSITORY has an invalid format: {repo}",
|
|
861
|
+
"issue_helper.err_no_token": "ERROR: GITHUB_TOKEN is not set.",
|
|
862
|
+
"issue_helper.commit_template_default": "${issueTitle} : feat : {description of the change} ${issueUrl}",
|
|
863
|
+
"issue_helper.branch_title": "Branch name",
|
|
864
|
+
"issue_helper.commit_title": "Commit message",
|
|
865
|
+
"issue_helper.no_issue_numbers": "No issue numbers β skipping",
|
|
866
|
+
"issue_helper.run_failed": "Run failed: {error}",
|
|
867
|
+
# --- truncate ---
|
|
868
|
+
"truncate.file_missing": "Release notes file not found, skipping: {path}",
|
|
869
|
+
"truncate.within_limit": "Within limit ({length}/{limit} {mode}), not truncating: {path}",
|
|
870
|
+
"truncate.truncated": "Over limit ({length} -> truncated to at most {limit} {mode}): {path}",
|
|
871
|
+
"truncate.limit_positive": "ERROR: limit must be a positive integer: {limit}",
|
|
872
|
+
# --- version ---
|
|
873
|
+
"version.bump_help": "bump level (default patch β same as before when not given)",
|
|
874
|
+
# --- wf_aisum ---
|
|
875
|
+
"wf_aisum.no_issue_in_branch": "No issue number found in the branch name β skipping: {ref}",
|
|
876
|
+
# --- wf_changelog ---
|
|
877
|
+
"wf_changelog.pr_list_limit": "gh pr list reached --limit 200 β older merged PRs may be missing (PRs fetched: {count})",
|
|
878
|
+
"wf_changelog.no_issues": "No issues to link for this release β skipping",
|
|
879
|
+
"wf_changelog.issues_linked": "Linked issues: {issues}",
|
|
880
|
+
"wf_changelog.merge_conflict": "The release PR conflicts with {prod} (version files, CHANGELOG, etc.) β merge the commits that exist only on {prod} into {dev} and push: git checkout {dev} && git merge origin/{prod} (for a version-line conflict either side is fine, the next run re-confirms it correctly)",
|
|
881
|
+
"wf_changelog.merge_commit_disabled": "Merge commits are disabled in this repo β turn on 'Allow merge commits' in Settings; release detection relies on the merge commit subject",
|
|
882
|
+
"wf_changelog.merge_confirmed": "PR #{pr} merge confirmed (elapsed {elapsed}s)",
|
|
883
|
+
"wf_changelog.merge_timeout": "Could not confirm the merge of PR #{pr} within {max}s β skipping the automatic RELEASE-PUBLISH trigger. If WORKFLOW_PAT is registered the normal path proceeds; otherwise run RELEASE-PUBLISH manually via workflow_dispatch if needed.",
|
|
884
|
+
"wf_changelog.release_publish_triggered": "RELEASE-PUBLISH workflow_dispatch trigger requested (works without WORKFLOW_PAT)",
|
|
885
|
+
# --- wf_preview ---
|
|
886
|
+
"wf_preview.chk_deleted_3": "3. Check that the branch has not been deleted",
|
|
887
|
+
"wf_preview.chk_helper_exists": "1. Check that the Issue Helper comment exists",
|
|
888
|
+
"wf_preview.chk_helper_marker": "3. Check that the `ISSUE_HELPER_MARKER` environment variable is correct",
|
|
889
|
+
"wf_preview.chk_helper_section": "2. Check that the comment has a `### Branch name` section",
|
|
890
|
+
"wf_preview.chk_name_1": "1. Check that the branch name is correct",
|
|
891
|
+
"wf_preview.chk_name_2": "2. Check that the branch name is correct",
|
|
892
|
+
"wf_preview.chk_pushed_1": "1. Check that the branch has been pushed",
|
|
893
|
+
"wf_preview.chk_pushed_2": "2. Check that the branch has been pushed",
|
|
894
|
+
"wf_preview.cmd_advanced": "<summary>π§ Advanced commands (control from another issue/PR)</summary>",
|
|
895
|
+
"wf_preview.cmd_build": "| `/wizard server build` | Redeploy with the latest commit |",
|
|
896
|
+
"wf_preview.cmd_build_branch": "| `/wizard server build {branchName}` | Redeploy with the latest commit |",
|
|
897
|
+
"wf_preview.cmd_destroy": "| `/wizard server destroy` | Delete the preview environment |",
|
|
898
|
+
"wf_preview.cmd_destroy_branch": "| `/wizard server destroy {branchName}` | Delete the preview environment |",
|
|
899
|
+
"wf_preview.cmd_detected_build": "β
Command detected: build",
|
|
900
|
+
"wf_preview.cmd_detected_build_branch": "β
Command detected: build (branch: {branch})",
|
|
901
|
+
"wf_preview.cmd_detected_destroy": "β
Command detected: destroy",
|
|
902
|
+
"wf_preview.cmd_detected_destroy_branch": "β
Command detected: destroy (branch: {branch})",
|
|
903
|
+
"wf_preview.cmd_detected_status": "β
Command detected: status",
|
|
904
|
+
"wf_preview.cmd_detected_status_branch": "β
Command detected: status (branch: {branch})",
|
|
905
|
+
"wf_preview.cmd_from_issue": "βΉοΈ Command detected in an issue comment",
|
|
906
|
+
"wf_preview.cmd_from_pr": "βΉοΈ Command detected in a PR comment",
|
|
907
|
+
"wf_preview.cmd_not_wizard": "βΉοΈ Not a /wizard server command",
|
|
908
|
+
"wf_preview.cmd_status": "| `/wizard server status` | Check the current status |",
|
|
909
|
+
"wf_preview.cmd_status_branch": "| `/wizard server status {branchName}` | Check the current status |",
|
|
910
|
+
"wf_preview.deploy_hint": "To deploy: `/wizard server build`",
|
|
911
|
+
"wf_preview.deploy_hint_branch": "To deploy: `/wizard server build {branchName}`",
|
|
912
|
+
"wf_preview.done_label": "Done",
|
|
913
|
+
"wf_preview.dur_min_sec": "{minutes}m {seconds}s",
|
|
914
|
+
"wf_preview.dur_sec": "{seconds}s",
|
|
915
|
+
"wf_preview.env_branch": "| **Branch** | `{branchName}` |",
|
|
916
|
+
"wf_preview.env_commit": "| **Commit** | `{sha}` |",
|
|
917
|
+
"wf_preview.env_container_issue": "| **Container** | `{projectName}-pr-{issueNumber}` |",
|
|
918
|
+
"wf_preview.env_container_name": "| **Container** | `{containerName}` |",
|
|
919
|
+
"wf_preview.env_container_num": "| **Container** | `{projectName}-pr-{number}` |",
|
|
920
|
+
"wf_preview.env_container_pr": "| **Container** | `{projectName}-pr-{prNumber}` |",
|
|
921
|
+
"wf_preview.env_marker": "| **Marker** | `{marker}` |",
|
|
922
|
+
"wf_preview.env_status_absent": "| **Status** | π΄ Not Found |",
|
|
923
|
+
"wf_preview.env_status_deleted": "| **Status** | Deleted |",
|
|
924
|
+
"wf_preview.env_status_running": "| **Status** | π’ Running |",
|
|
925
|
+
"wf_preview.fail_branch_missing": "Branch not found",
|
|
926
|
+
"wf_preview.fail_branch_missing_named": "Branch not found: {branchName}",
|
|
927
|
+
"wf_preview.footer_context": "*π€ This comment was generated automatically by the {contextType} Preview system.*",
|
|
928
|
+
"wf_preview.footer_custom": "*π€ This comment was generated automatically by the Custom Branch Preview system.*",
|
|
929
|
+
"wf_preview.footer_generic": "*π€ This comment was generated automatically by the Preview system.*",
|
|
930
|
+
"wf_preview.footer_issue": "*π€ This comment was generated automatically by the Issue Preview system.*",
|
|
931
|
+
"wf_preview.footer_pr": "*π€ This comment was generated automatically by the PR Preview system.*",
|
|
932
|
+
"wf_preview.footer_pr_issue": "*π€ This comment was generated automatically by the PR/Issue Preview system.*",
|
|
933
|
+
"wf_preview.footer_progress": "*π€ This comment is updated automatically.*",
|
|
934
|
+
"wf_preview.hint_docker": "- Docker image build failed",
|
|
935
|
+
"wf_preview.hint_docker_go": "- Docker image build failed (Go dependency/build problem)",
|
|
936
|
+
"wf_preview.hint_docker_python": "- Docker image build failed (Python dependency problem)",
|
|
937
|
+
"wf_preview.hint_env_missing": "- Missing environment variables (check the .env file)",
|
|
938
|
+
"wf_preview.hint_gradle": "- Gradle build failed",
|
|
939
|
+
"wf_preview.hint_health_timeout": "- Health check timed out (startup did not finish within 120 seconds)",
|
|
940
|
+
"wf_preview.hint_secrets": "- Required secrets (DOCKERHUB_*, SERVER_*) not registered or Dockerfile missing β check the \"Deploy pre-check\" step in the log",
|
|
941
|
+
"wf_preview.hint_server_conn": "- Server connection problem",
|
|
942
|
+
"wf_preview.hint_start": "- Container failed to start",
|
|
943
|
+
"wf_preview.hint_start_go": "- Container failed to start (application startup error)",
|
|
944
|
+
"wf_preview.hint_start_python": "- Container failed to start (FastAPI/Uvicorn startup error)",
|
|
945
|
+
"wf_preview.hint_start_spring": "- Container failed to start (Spring Boot startup error)",
|
|
946
|
+
"wf_preview.line_branch": "**Branch**: `{branchName}`",
|
|
947
|
+
"wf_preview.line_commit": "**Commit**: `{sha}`",
|
|
948
|
+
"wf_preview.link_build_logs": "**[π View build/deploy logs]({runUrl})**",
|
|
949
|
+
"wf_preview.link_logs": "**[π View live logs]({runUrl})**",
|
|
950
|
+
"wf_preview.log_branch_exists": "β
Branch exists: {branchName}",
|
|
951
|
+
"wf_preview.log_branch_found": "β
Branch found: {branchName}",
|
|
952
|
+
"wf_preview.log_branch_missing": "β Branch not found: {branchName}",
|
|
953
|
+
"wf_preview.log_check_branch": "π Checking branch: {branchName}",
|
|
954
|
+
"wf_preview.log_check_exists": "π Checking that the branch exists: {branchName}",
|
|
955
|
+
"wf_preview.log_hash": "β
Hash generated: custom-{hashStr}",
|
|
956
|
+
"wf_preview.log_helper_no_branch": "β οΈ No branch found in the Issue Helper comment.",
|
|
957
|
+
"wf_preview.log_issue_number": "β
Issue number extracted: #{n}",
|
|
958
|
+
"wf_preview.log_marker": "π Marker: {marker}",
|
|
959
|
+
"wf_preview.log_search_branch": "π Searching issue #{issueNumber} for a branch...",
|
|
960
|
+
"wf_preview.next_logs": "1. Check the build/deploy logs at the link above",
|
|
961
|
+
"wf_preview.next_retry": "2. Fix the problem and try again: `/wizard server build`",
|
|
962
|
+
"wf_preview.next_retry_branch": "2. Fix the problem and try again: `/wizard server build {branchName}`",
|
|
963
|
+
"wf_preview.precheck_dockerfile_body": "{path} does not exist. This workflow deploys a Docker image, so a Dockerfile is required (delete this workflow file if you do not deploy to a server)",
|
|
964
|
+
"wf_preview.precheck_dockerfile_title": "Dockerfile not found",
|
|
965
|
+
"wf_preview.precheck_ok": "β
Pre-check passed: all required Secrets and the Dockerfile are present",
|
|
966
|
+
"wf_preview.precheck_secret_body": "GitHub secrets not registered:{missing} β add them under Settings β Secrets and variables β Actions",
|
|
967
|
+
"wf_preview.precheck_secret_title": "Missing required secrets",
|
|
968
|
+
"wf_preview.r_container_absent": "β Container not found",
|
|
969
|
+
"wf_preview.r_container_confirmed": "β
Container confirmed running",
|
|
970
|
+
"wf_preview.r_container_exited": "β Container exited abnormally!",
|
|
971
|
+
"wf_preview.r_container_logs": "π Container logs (last 100 lines):",
|
|
972
|
+
"wf_preview.r_container_missing_info": "βΉοΈ Container does not exist: {container_name}",
|
|
973
|
+
"wf_preview.r_container_name": "π Container: {container_name}",
|
|
974
|
+
"wf_preview.r_container_new_named": "π³ Starting new container: {container_name}",
|
|
975
|
+
"wf_preview.r_container_removing": "π³ Removing container...",
|
|
976
|
+
"wf_preview.r_container_removing_named": "ποΈ Removing container: {container_name}",
|
|
977
|
+
"wf_preview.r_container_running": "β
Container is running",
|
|
978
|
+
"wf_preview.r_container_starting": "π³ Starting new container...",
|
|
979
|
+
"wf_preview.r_deploy_done": "β
Deployment complete!",
|
|
980
|
+
"wf_preview.r_deploy_failed_not_running": "β Deployment failed: the container is not running",
|
|
981
|
+
"wf_preview.r_deploy_head_custom": "π Custom Branch Preview deployment started",
|
|
982
|
+
"wf_preview.r_deploy_head_custom_short": "π Custom Branch Preview deployment",
|
|
983
|
+
"wf_preview.r_deploy_head_issue": "π Issue Preview deployment started",
|
|
984
|
+
"wf_preview.r_deploy_head_pr": "π PR Preview deployment started",
|
|
985
|
+
"wf_preview.r_destroy_head": "ποΈ Preview removal",
|
|
986
|
+
"wf_preview.r_destroy_head_custom": "ποΈ Custom Branch Preview removal",
|
|
987
|
+
"wf_preview.r_destroy_head_pr": "ποΈ PR Preview removal",
|
|
988
|
+
"wf_preview.r_domain": "π Domain: {domain}",
|
|
989
|
+
"wf_preview.r_existing_cleanup": "ποΈ Cleaning up the existing container...",
|
|
990
|
+
"wf_preview.r_existing_removed": "ποΈ Removing existing container: {container_name}",
|
|
991
|
+
"wf_preview.r_hc_done": "β
Deploy and health check complete! (method: {health_check_method})",
|
|
992
|
+
"wf_preview.r_hc_ok_http": "β
Startup confirmed! (HTTP response: {health_path})",
|
|
993
|
+
"wf_preview.r_hc_ok_log": "β
Startup confirmed! (log pattern)",
|
|
994
|
+
"wf_preview.r_hc_start": "β³ Starting health check (waiting up to 120s)...",
|
|
995
|
+
"wf_preview.r_hc_timeout": "β Health check timed out (120s)",
|
|
996
|
+
"wf_preview.r_hc_wait_60": "β³ Waiting for health check (up to 60s)...",
|
|
997
|
+
"wf_preview.r_hc_waiting": "β³ Waiting... ({retry_count}/{max_retries}) - status: {status}",
|
|
998
|
+
"wf_preview.r_image_pulling": "π₯ Pulling Docker image...",
|
|
999
|
+
"wf_preview.r_image_removing": "πΌοΈ Removing image...",
|
|
1000
|
+
"wf_preview.r_num_generic": "π’ Number: #{pr_number}",
|
|
1001
|
+
"wf_preview.r_num_issue": "π’ Issue number: #{issue_number}",
|
|
1002
|
+
"wf_preview.r_num_pr": "π’ PR number: #{pr_number}",
|
|
1003
|
+
"wf_preview.r_project_name": "π¦ Project: {project_name}",
|
|
1004
|
+
"wf_preview.r_removed": "β
Removal complete!",
|
|
1005
|
+
"wf_preview.r_ssh_auth": "π SSH auth method: {ssh_auth_method}",
|
|
1006
|
+
"wf_preview.r_status_head": "π Preview status check",
|
|
1007
|
+
"wf_preview.r_status_head_custom": "π Custom Branch Preview status check",
|
|
1008
|
+
"wf_preview.r_wait_i": "Waiting... ({i}/12)",
|
|
1009
|
+
"wf_preview.redeploy_hint": "To deploy again: `/wizard server build`",
|
|
1010
|
+
"wf_preview.redeploy_hint_branch": "To deploy again: `/wizard server build {branchName}`",
|
|
1011
|
+
"wf_preview.row_build_done": "| π¨ Project build | β
Done | {buildDuration} |",
|
|
1012
|
+
"wf_preview.row_build_progress": "| π¨ Project build | β³ In progress... | - |",
|
|
1013
|
+
"wf_preview.row_build_status": "| π¨ Project build | {buildStatus} | {buildTime} |",
|
|
1014
|
+
"wf_preview.row_deploy_done": "| π Server deploy & health check | β
Done | {deployDuration} |",
|
|
1015
|
+
"wf_preview.row_deploy_progress": "| π Server deploy & health check | β³ In progress... | - |",
|
|
1016
|
+
"wf_preview.row_deploy_status": "| π Server deploy & health check | {deployStatus} | - |",
|
|
1017
|
+
"wf_preview.row_deploy_wait": "| π Server deploy & health check | βΈοΈ Waiting | - |",
|
|
1018
|
+
"wf_preview.row_docker_done": "| π³ Docker image build & push | β
Done | {dockerDuration} |",
|
|
1019
|
+
"wf_preview.row_docker_progress": "| π³ Docker image build & push | β³ In progress... | - |",
|
|
1020
|
+
"wf_preview.row_docker_status": "| π³ Docker image build & push | {dockerStatus} | {dockerTime} |",
|
|
1021
|
+
"wf_preview.row_image_done": "| π³ Docker image creation | β
Done | {dockerDuration} |",
|
|
1022
|
+
"wf_preview.row_image_progress": "| π³ Docker image creation | β³ In progress... | - |",
|
|
1023
|
+
"wf_preview.row_image_status": "| π³ Docker image creation | {dockerStatus} | {dockerTime} |",
|
|
1024
|
+
"wf_preview.row_image_wait": "| π³ Docker image creation | βΈοΈ Waiting | - |",
|
|
1025
|
+
"wf_preview.sec_causes": "### π Possible causes",
|
|
1026
|
+
"wf_preview.sec_check": "### π‘ Things to check",
|
|
1027
|
+
"wf_preview.sec_commands": "### π Commands",
|
|
1028
|
+
"wf_preview.sec_env": "### π Preview environment",
|
|
1029
|
+
"wf_preview.sec_next": "### π‘ Next steps",
|
|
1030
|
+
"wf_preview.skip_no_branch": "β οΈ The branch does not exist, skipping the build.",
|
|
1031
|
+
"wf_preview.status_done": "β
Done",
|
|
1032
|
+
"wf_preview.status_failed": "β Failed",
|
|
1033
|
+
"wf_preview.status_init_failed": "β οΈ Initialization failed",
|
|
1034
|
+
"wf_preview.status_waiting": "βΈοΈ Waiting",
|
|
1035
|
+
"wf_preview.tbl_commands": "| Command | Description |",
|
|
1036
|
+
"wf_preview.tbl_items": "| Item | Value |",
|
|
1037
|
+
"wf_preview.tbl_steps": "| Step | Status | Duration |",
|
|
1038
|
+
"wf_preview.title_absent": "## β Preview environment not found",
|
|
1039
|
+
"wf_preview.title_branch_missing": "## β Branch not found",
|
|
1040
|
+
"wf_preview.title_branch_missing_warn": "## β οΈ Branch not found",
|
|
1041
|
+
"wf_preview.title_custom_absent": "## β Custom Branch Preview environment not found",
|
|
1042
|
+
"wf_preview.title_custom_building": "## π Custom Branch Preview building...",
|
|
1043
|
+
"wf_preview.title_custom_deployed": "## β
Custom Branch Preview deployed!",
|
|
1044
|
+
"wf_preview.title_custom_destroyed": "## ποΈ Custom Branch Preview environment destroyed!",
|
|
1045
|
+
"wf_preview.title_custom_destroyed_short": "## ποΈ Custom Branch Preview destroyed",
|
|
1046
|
+
"wf_preview.title_custom_failed": "## β Custom Branch Preview deployment failed!",
|
|
1047
|
+
"wf_preview.title_custom_running": "## β
Custom Branch Preview environment is running",
|
|
1048
|
+
"wf_preview.title_custom_started": "## π Custom Branch Preview deployment started",
|
|
1049
|
+
"wf_preview.title_destroyed": "## ποΈ Preview environment destroyed!",
|
|
1050
|
+
"wf_preview.title_issue_building": "## π Issue Preview building...",
|
|
1051
|
+
"wf_preview.title_issue_deployed": "## β
Issue Preview deployed!",
|
|
1052
|
+
"wf_preview.title_issue_failed": "## β Issue Preview deployment failed!",
|
|
1053
|
+
"wf_preview.title_pr_building": "## π PR Preview building...",
|
|
1054
|
+
"wf_preview.title_pr_deployed": "## β
PR Preview deployed!",
|
|
1055
|
+
"wf_preview.title_pr_failed": "## β PR Preview deployment failed!",
|
|
1056
|
+
"wf_preview.title_running": "## β
Preview environment is running",
|
|
1057
|
+
# --- wf_readme ---
|
|
1058
|
+
"wf_readme.hint_first_example": "## Latest Version : v1.0.0 (2025-08-15)",
|
|
1059
|
+
"wf_readme.default_heading": "Latest Version",
|
|
1060
|
+
# --- wf_release ---
|
|
1061
|
+
"wf_release.drift_heading": "### β οΈ Missing release detected",
|
|
1062
|
+
"wf_release.drift_version_line": "- version.yml: `{version}`",
|
|
1063
|
+
"wf_release.drift_tag_line": "- Latest tag: `{tag}`",
|
|
1064
|
+
"wf_release.drift_body": "The version was bumped without a release being confirmed. This version will not be published to npm.",
|
|
1065
|
+
"wf_release.drift_recover": "Recovery: Actions β PROJECT-RELEASE-PUBLISH β Run workflow",
|
|
1066
|
+
"wf_release.readme_dispatch_ok": "README-VERSION-UPDATE workflow_dispatch trigger requested",
|
|
1067
|
+
"wf_release.readme_dispatch_skip": "Could not wake the README-VERSION-UPDATE workflow (deleted or disabled) β skipping the README version update",
|
|
1068
|
+
"wf_release.not_merge_release": "v{version} did not arrive through a release PR merge β the push event handles the deploy",
|
|
1069
|
+
"wf_release.bot_merged": "PR #{pr} was merged with the bot token β the push event could not wake the deploys",
|
|
1070
|
+
"wf_release.merger_unknown_pat": "Could not determine who merged and WORKFLOW_PAT exists β assuming the push event ran the deploys and skipping",
|
|
1071
|
+
"wf_release.merger_unknown_nopat": "Could not determine who merged and WORKFLOW_PAT is missing β treating it as a bot-token merge",
|
|
1072
|
+
"wf_release.human_merged": "PR #{pr} was merged by {user} β the push event already ran the deploys, skipping",
|
|
1073
|
+
"wf_release.no_targets": "No deploy workflow runs on a {branch} push β skipping",
|
|
1074
|
+
"wf_release.deploy_trigger_ok": "{wf} workflow_dispatch trigger requested",
|
|
1075
|
+
"wf_release.deploy_trigger_warn": "Could not wake the {wf} deploy workflow β run it manually with Run workflow in the Actions tab",
|
|
1076
|
+
# --- wf_spring_ci ---
|
|
1077
|
+
"wf_spring_ci.status_ok": "β
Success",
|
|
1078
|
+
"wf_spring_ci.status_fail": "β Failed",
|
|
1079
|
+
"wf_spring_ci.err_compile_header": "## π¨ Compile errors",
|
|
1080
|
+
"wf_spring_ci.err_compile_missing": "Could not find the error log.",
|
|
1081
|
+
"wf_spring_ci.err_test_header": "## π§ͺ Test failures",
|
|
1082
|
+
"wf_spring_ci.err_test_missing": "Could not find the test error log.",
|
|
1083
|
+
"wf_spring_ci.err_build_header": "## π¦ Build errors",
|
|
1084
|
+
"wf_spring_ci.err_build_missing": "Could not find the build error log.",
|
|
1085
|
+
"wf_spring_ci.comment_title": "## π§ CI Build Check Results",
|
|
1086
|
+
"wf_spring_ci.comment_success": "### β
Build succeeded!",
|
|
1087
|
+
"wf_spring_ci.comment_failure": "### β Build failed!",
|
|
1088
|
+
"wf_spring_ci.table_header": "| Step | Status |",
|
|
1089
|
+
"wf_spring_ci.row_compile": "| Compile | {status} |",
|
|
1090
|
+
"wf_spring_ci.row_test": "| Test | {status} |",
|
|
1091
|
+
"wf_spring_ci.row_build": "| Build | {status} |",
|
|
1092
|
+
"wf_spring_ci.overall": "**Overall status**: {status}",
|
|
1093
|
+
"wf_spring_ci.details_header": "### π Error details",
|
|
1094
|
+
"wf_spring_ci.fix_header": "### π§ How to fix",
|
|
1095
|
+
"wf_spring_ci.fix_build": "- Run `./gradlew clean build` locally to check the build",
|
|
1096
|
+
"wf_spring_ci.fix_error": "- Fix the code based on the error messages",
|
|
1097
|
+
"wf_spring_ci.fix_test": "- If tests failed, run `./gradlew test` to run them locally",
|
|
1098
|
+
"wf_spring_ci.footer": "*π€ Generated automatically by GitHub Actions - {time}*",
|
|
1099
|
+
"wf_spring_ci.date_locale": "en-US",
|
|
1100
|
+
"wf_spring_ci.check_summary_success": "The build verification succeeded.",
|
|
1101
|
+
"wf_spring_ci.check_summary_failure": "The build verification failed.",
|
|
1102
|
+
"wf_spring_ci.check_compile": "Compile: {status}",
|
|
1103
|
+
"wf_spring_ci.check_test": "Test: {status}",
|
|
1104
|
+
"wf_spring_ci.check_build": "Build: {status}",
|
|
1105
|
+
"wf_spring_ci.build_failed": "β The build failed. Check the error messages above.",
|
|
1106
|
+
"wf_spring_ci.gate_results": "needs results: {results}",
|
|
1107
|
+
"wf_spring_ci.gate_failed": "At least one job failed or was cancelled.",
|
|
1108
|
+
# --- wf_spring_deploy ---
|
|
1109
|
+
"wf_spring_deploy.prod_yml_created": "β
application-prod.yml created ({dir})",
|
|
1110
|
+
"wf_spring_deploy.ssh_auth_method": "π SSH auth method: {method}",
|
|
1111
|
+
"wf_spring_deploy.image_pull": "π₯ Pulling image: {image}",
|
|
1112
|
+
"wf_spring_deploy.volume_mkdir": "π Creating volume mount directory: {path}",
|
|
1113
|
+
"wf_spring_deploy.volume_disabled": "βΉοΈ Volume mount disabled",
|
|
1114
|
+
"wf_spring_deploy.volume_enabled": "π¦ Volume mount enabled: {host} β {container}",
|
|
1115
|
+
"wf_spring_deploy.idle_slot_cleanup": "ποΈ Cleaning up idle slot: {name}",
|
|
1116
|
+
"wf_spring_deploy.banner_project": "π¦ Project: {name}",
|
|
1117
|
+
"wf_spring_deploy.banner_domain": "π Domain: {domain}",
|
|
1118
|
+
"wf_spring_deploy.banner_image": "πΌοΈ Image: {image}",
|
|
1119
|
+
"wf_spring_deploy.old_removed": "ποΈ Removing old={name}",
|
|
1120
|
+
"wf_spring_deploy.old_absent": "βΉοΈ old={name} not found β skipping cleanup",
|
|
1121
|
+
"wf_spring_deploy.inflight_wait": "β±οΈ Waiting for in-flight requests to finish ({sec}s)",
|
|
1122
|
+
"wf_spring_deploy.prune_dangling": "π§Ή Cleaning up dangling (<none>) images...",
|
|
1123
|
+
"wf_spring_deploy.new_container_start": "π³ Starting new container: {name}",
|
|
1124
|
+
"wf_spring_deploy.simple_env_setup": "π§ Setting up environment variables..",
|
|
1125
|
+
"wf_spring_deploy.simple_container_name_default": "βΉοΈ CONTAINER_NAME is not set, using PROJECT_NAME: {name}",
|
|
1126
|
+
"wf_spring_deploy.simple_container_name_custom": "βΉοΈ Using custom CONTAINER_NAME: {name}",
|
|
1127
|
+
"wf_spring_deploy.simple_deploy_start": "π Deploying to the deploy environment (branch: {branch})",
|
|
1128
|
+
"wf_spring_deploy.simple_config_header": "π Deployment settings:",
|
|
1129
|
+
"wf_spring_deploy.simple_config_branch": " - Branch: {branch}",
|
|
1130
|
+
"wf_spring_deploy.simple_config_project": " - Project: {name}",
|
|
1131
|
+
"wf_spring_deploy.simple_config_container": " - Container name: {name}",
|
|
1132
|
+
"wf_spring_deploy.simple_config_port": " - Port: {port}",
|
|
1133
|
+
"wf_spring_deploy.simple_config_image": " - Docker image: {image}",
|
|
1134
|
+
"wf_spring_deploy.simple_image_pull": "β¬οΈ Pulling Docker image: {image}",
|
|
1135
|
+
"wf_spring_deploy.simple_container_check": "π§Ή Checking whether container {name} exists...",
|
|
1136
|
+
"wf_spring_deploy.simple_container_exists": "β οΈ Container {name} exists. Stopping and removing it...",
|
|
1137
|
+
"wf_spring_deploy.simple_container_removed": "β
Container {name} was removed.",
|
|
1138
|
+
"wf_spring_deploy.simple_container_missing": "βΉοΈ No existing container {name}.",
|
|
1139
|
+
"wf_spring_deploy.simple_container_starting": "π Starting new container {name}...",
|
|
1140
|
+
"wf_spring_deploy.simple_volume_enabled": "π¦ Volume mount enabled: {option}",
|
|
1141
|
+
"wf_spring_deploy.simple_init_wait": "β³ Waiting for the container to initialize... ({sec}s)",
|
|
1142
|
+
"wf_spring_deploy.simple_hc_check": "π₯ Running container health check...",
|
|
1143
|
+
"wf_spring_deploy.simple_hc_process_missing": "β Container {name} process is not running",
|
|
1144
|
+
"wf_spring_deploy.simple_hc_process_ok": "β
Container process is running",
|
|
1145
|
+
"wf_spring_deploy.simple_http_start": "π Starting HTTP health check: {url}",
|
|
1146
|
+
"wf_spring_deploy.simple_http_attempt": " Attempt {i}/{max}...",
|
|
1147
|
+
"wf_spring_deploy.simple_http_ok": "β
HTTP health check succeeded (response code: {code})",
|
|
1148
|
+
"wf_spring_deploy.simple_http_fail": "β οΈ HTTP health check failed (response code: {code})",
|
|
1149
|
+
"wf_spring_deploy.simple_http_retry": " Retrying in {sec}s...",
|
|
1150
|
+
"wf_spring_deploy.simple_http_fallback": "β οΈ HTTP health check ultimately failed, falling back to log pattern matching...",
|
|
1151
|
+
"wf_spring_deploy.simple_hc_path_unset": "βΉοΈ HEALTHCHECK_PATH is not set, using log pattern matching only",
|
|
1152
|
+
"wf_spring_deploy.simple_log_match_start": "π Starting log pattern matching: '{pattern}'",
|
|
1153
|
+
"wf_spring_deploy.simple_log_match_ok": "β
Log pattern matched: the application started successfully",
|
|
1154
|
+
"wf_spring_deploy.simple_log_match_fail": "β Log pattern did not match: application startup log not found",
|
|
1155
|
+
"wf_spring_deploy.simple_debug_header": "π Debug info:",
|
|
1156
|
+
"wf_spring_deploy.simple_debug_pattern": " - Search pattern: {pattern}",
|
|
1157
|
+
"wf_spring_deploy.simple_debug_container": " - Container: {name}",
|
|
1158
|
+
"wf_spring_deploy.simple_debug_image": " - Image: {image}",
|
|
1159
|
+
"wf_spring_deploy.simple_debug_port": " - Port: {port}",
|
|
1160
|
+
"wf_spring_deploy.simple_debug_volume": " - Volume: {volume}",
|
|
1161
|
+
"wf_spring_deploy.simple_debug_profile": " - Profile: {profile}",
|
|
1162
|
+
"wf_spring_deploy.simple_logs_tail": "π Container logs (last 50 lines):",
|
|
1163
|
+
"wf_spring_deploy.simple_hc_done": "β
Health check complete: container {name} is running normally",
|
|
1164
|
+
"wf_spring_deploy.simple_deploy_done": "β
Deployment completed successfully!",
|
|
1165
|
+
"wf_spring_deploy.simple_summary_header": "π Deployment summary:",
|
|
1166
|
+
"wf_spring_deploy.simple_summary_project": " π― Project: {name}",
|
|
1167
|
+
"wf_spring_deploy.simple_summary_branch": " πΏ Branch: {branch}",
|
|
1168
|
+
"wf_spring_deploy.simple_summary_container": " π³ Container: {name}",
|
|
1169
|
+
"wf_spring_deploy.simple_summary_port": " π Port: {port}",
|
|
1170
|
+
"wf_spring_deploy.simple_summary_time": " β° Deployed at: {time}",
|
|
1171
|
+
"wf_spring_deploy.simple_access_url": "π URL: {url}",
|
|
1172
|
+
"wf_spring_deploy.nginx_deploy_start": "π Starting Nginx Blue-Green zero-downtime deploy",
|
|
1173
|
+
"wf_spring_deploy.nginx_backup_dir": "π Creating nginx backup directory: {dir}",
|
|
1174
|
+
"wf_spring_deploy.nginx_backup_file": "πΎ Backing up nginx config: {file}",
|
|
1175
|
+
"wf_spring_deploy.nginx_find_active": "π Looking up the active port in the nginx config",
|
|
1176
|
+
"wf_spring_deploy.nginx_active_missing": "β οΈ Active port not found β assuming the default (BLUE={blue}) is active",
|
|
1177
|
+
"wf_spring_deploy.nginx_active_port": "π¨ Current active port: {port}",
|
|
1178
|
+
"wf_spring_deploy.nginx_new_deploy": "π³ New deploy β port={port} container={name}",
|
|
1179
|
+
"wf_spring_deploy.nginx_old_container": "ποΈ Previous container (to be removed) = {name}",
|
|
1180
|
+
"wf_spring_deploy.nginx_new_container_start": "π³ Starting new container: {name} (port {port})",
|
|
1181
|
+
"wf_spring_deploy.nginx_hc_start": "β³ Starting health check (up to {retries} Γ {interval}s)",
|
|
1182
|
+
"wf_spring_deploy.nginx_hc_ok": "β
Health check succeeded (attempt {i})",
|
|
1183
|
+
"wf_spring_deploy.nginx_hc_progress": "β³ Health check in progress... ({i}/{max})",
|
|
1184
|
+
"wf_spring_deploy.nginx_hc_fail": "β Health check failed β aborting deploy",
|
|
1185
|
+
"wf_spring_deploy.nginx_new_cleanup": "ποΈ Cleaning up new container: {name}",
|
|
1186
|
+
"wf_spring_deploy.nginx_toggle": "π§ Toggling nginx config port: {old} β {new}",
|
|
1187
|
+
"wf_spring_deploy.nginx_apply": "π§ Applying and validating nginx config",
|
|
1188
|
+
"wf_spring_deploy.nginx_test_fail": "β nginx config validation failed β restoring from backup",
|
|
1189
|
+
"wf_spring_deploy.nginx_test_ok": "β
nginx config validation succeeded",
|
|
1190
|
+
"wf_spring_deploy.nginx_reload_fail": "β οΈ reload failed β trying restart",
|
|
1191
|
+
"wf_spring_deploy.nginx_restart_fail": "β nginx reload/restart failed β restoring backup",
|
|
1192
|
+
"wf_spring_deploy.nginx_domain_check": "π Verifying domain access ({domain})",
|
|
1193
|
+
"wf_spring_deploy.nginx_domain_ok": "β
Domain access verified (attempt {i})",
|
|
1194
|
+
"wf_spring_deploy.nginx_domain_progress": "β³ Verifying domain access... ({i}/{max})",
|
|
1195
|
+
"wf_spring_deploy.nginx_domain_fail": "β οΈ Domain access verification failed: continuing the deploy (DNS propagation may be delayed)",
|
|
1196
|
+
"wf_spring_deploy.nginx_backup_keep": "π§Ή Keeping the latest {keep} backup files",
|
|
1197
|
+
"wf_spring_deploy.nginx_done": "β
Zero-downtime deploy complete. active={name} (port {port})",
|
|
1198
|
+
"wf_spring_deploy.traefik_deploy_start": "π Starting Blue-Green zero-downtime deploy",
|
|
1199
|
+
"wf_spring_deploy.traefik_entry": "π§ Traefik entry: localhost:{port} (entrypoint={entrypoint})",
|
|
1200
|
+
"wf_spring_deploy.traefik_extra_network": "π Connecting extra network: {net}",
|
|
1201
|
+
"wf_spring_deploy.traefik_labels": "π Checking Traefik labels:",
|
|
1202
|
+
"wf_spring_deploy.traefik_hc_start": "β³ Starting health check (up to {max_wait}s, {retries} Γ {interval}s)",
|
|
1203
|
+
"wf_spring_deploy.traefik_exited": "β Container exited unexpectedly (exited). Last 200 log lines:",
|
|
1204
|
+
"wf_spring_deploy.traefik_kept": "βΉοΈ Keeping container {name} (not deleted automatically) β inspect and debug manually",
|
|
1205
|
+
"wf_spring_deploy.traefik_rollback_note": "βΉοΈ If old={name} exists it stays as is β effectively an automatic rollback",
|
|
1206
|
+
"wf_spring_deploy.traefik_hc_pass": "β
Health check passed ({n}/{max}) HTTP={code}",
|
|
1207
|
+
"wf_spring_deploy.traefik_waiting": "β³ Waiting ({n}/{max}) status={status} http={http}",
|
|
1208
|
+
"wf_spring_deploy.traefik_hc_timeout": "β Health check timed out ({sec}s)",
|
|
1209
|
+
"wf_spring_deploy.traefik_logs_header": "π Last 200 log lines of {name}:",
|
|
1210
|
+
"wf_spring_deploy.traefik_done": "β
Zero-downtime deploy complete. active={name}",
|
|
1211
|
+
# --- wf_version ---
|
|
1212
|
+
"wf_version.release_publish_triggered": "RELEASE-PUBLISH workflow_dispatch trigger requested (works without WORKFLOW_PAT, recovers version drift automatically)",
|
|
1213
|
+
"wf_version.backmerge_conflict": "Could not automatically merge {prod} into {dev} (conflict). Merge it manually before the next release PR: {manual}",
|
|
1214
|
+
"wf_version.backmerge_push_failed": "Could not push to {dev} (branch protection, etc.). Merge it manually before the next release PR: {manual}",
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
KO = {
|
|
1218
|
+
# --- apk_test ---
|
|
1219
|
+
"apk_test.branch_check_log": "π λΈλμΉ μ‘΄μ¬ μ¬λΆ νμΈ: {branch}",
|
|
1220
|
+
"apk_test.branch_exists_log": "β
λΈλμΉ μ‘΄μ¬ νμΈλ¨: {branch}",
|
|
1221
|
+
"apk_test.branch_not_found_log": "β λΈλμΉλ₯Ό μ°Ύμ μ μμ: {branch}",
|
|
1222
|
+
"apk_test.branch_missing_title": "π€ β **Android ν
μ€νΈ APK λΉλ μ€ν¨ - λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€**",
|
|
1223
|
+
"apk_test.kv_head": "| νλͺ© | κ° |",
|
|
1224
|
+
"apk_test.row_requested_branch": "| **μμ²λ λΈλμΉ** | `{branch}` |",
|
|
1225
|
+
"apk_test.row_issue_pr": "| **μ΄μ/PR** | #{number} |",
|
|
1226
|
+
"apk_test.hint_title": "### π‘ νμΈ μ¬ν",
|
|
1227
|
+
"apk_test.hint_pushed": "1. λΈλμΉκ° μ격 μ μ₯μμ pushλμλμ§ νμΈνμΈμ",
|
|
1228
|
+
"apk_test.hint_helper_branch": "2. \"Issue Helper\" λκΈμ λΈλμΉλͺ
μ΄ μ¬λ°λ₯Έμ§ νμΈνμΈμ",
|
|
1229
|
+
"apk_test.hint_typo": "3. λΈλμΉλͺ
μ μ€νκ° μλμ§ νμΈνμΈμ",
|
|
1230
|
+
"apk_test.workflow_log_link": "π [μν¬νλ‘μ° λ‘κ·Έ]({url})",
|
|
1231
|
+
"apk_test.branch_not_found_fail": "λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€: {branch}",
|
|
1232
|
+
"apk_test.branch_check_error_fail": "λΈλμΉ νμΈ μ€ μ€λ₯: {error}",
|
|
1233
|
+
"apk_test.firebase_detected": "β
Firebase μλΉμ€ κ³μ κ°μ§ - App Distribution μ
λ‘λ μμ ",
|
|
1234
|
+
"apk_test.firebase_missing": "β οΈ Firebase μλΉμ€ κ³μ μμ - App Distribution μ
λ‘λ 건λλ",
|
|
1235
|
+
"apk_test.title_running": "## π€ Android APK λΉλ μ€...",
|
|
1236
|
+
"apk_test.title_done": "## π€ β
Android APK λΉλ μλ£!",
|
|
1237
|
+
"apk_test.title_failed": "## π€ β Android APK λΉλ μ€ν¨",
|
|
1238
|
+
"apk_test.table_header": "| λ¨κ³ | μν | μμ μκ° |",
|
|
1239
|
+
"apk_test.step_prepare": "π§ μ€λΉ",
|
|
1240
|
+
"apk_test.step_build": "π¨ APK λΉλ",
|
|
1241
|
+
"apk_test.step_upload": "π€ GitHub μν°ν©νΈ μ
λ‘λ",
|
|
1242
|
+
"apk_test.step_firebase": "π₯ Firebase App Distribution",
|
|
1243
|
+
"apk_test.st_running": "β³ μ§ν μ€...",
|
|
1244
|
+
"apk_test.st_waiting": "βΈοΈ λκΈ°",
|
|
1245
|
+
"apk_test.st_done": "β
μλ£",
|
|
1246
|
+
"apk_test.st_failed": "β μ€ν¨",
|
|
1247
|
+
"apk_test.st_skipped": "βΈοΈ 건λλ",
|
|
1248
|
+
"apk_test.live_log": "π **[μ€μκ° λ‘κ·Έ 보기]({url})**",
|
|
1249
|
+
"apk_test.log_progress_created": "β
μ§νμν© λκΈ μμ± μλ£ (ID: {id})",
|
|
1250
|
+
"apk_test.pull_branch": "πΏ λΈλμΉ: {branch}",
|
|
1251
|
+
"apk_test.pull_failed": "β οΈ Pull μ€ν¨ (μ΄λ―Έ μ΅μ μνμΌ μ μμ)",
|
|
1252
|
+
"apk_test.branch_name_log": "πΏ λΈλμΉλͺ
: {branch}",
|
|
1253
|
+
"apk_test.issue_number_missing": "β οΈ λΈλμΉλͺ
μμ μ΄μ λ²νΈλ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
1254
|
+
"apk_test.issue_number_extracted": "β
μΆμΆλ μ΄μ λ²νΈ: #{number}",
|
|
1255
|
+
"apk_test.issue_fetching": "π GitHub APIλ‘ μ΄μ μ 보 μ‘°ν μ€...",
|
|
1256
|
+
"apk_test.issue_title_default": "μ΄μ μ 보 μμ",
|
|
1257
|
+
"apk_test.issue_not_found": "β οΈ μ΄μ #{number}λ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
1258
|
+
"apk_test.issue_title_log": "π μ΄μ μ λͺ©: {title}",
|
|
1259
|
+
"apk_test.issue_state_log": "π μ΄μ μν: {state}",
|
|
1260
|
+
"apk_test.event_dispatch": "π repository_dispatch μ΄λ²€νΈ κ°μ§",
|
|
1261
|
+
"apk_test.event_pr_number": " PR λ²νΈ: #{pr}",
|
|
1262
|
+
"apk_test.event_build_number_pr": " λΉλ λ²νΈ: {build} (PR λ²νΈ μ¬μ©)",
|
|
1263
|
+
"apk_test.event_workflow_dispatch": "π workflow_dispatch μ΄λ²€νΈ κ°μ§",
|
|
1264
|
+
"apk_test.event_build_number_default": " λΉλ λ²νΈ: {build} (κΈ°λ³Έκ°)",
|
|
1265
|
+
"apk_test.build_info_header": "π λΉλ μ 보:",
|
|
1266
|
+
"apk_test.build_info_build": " λΉλ λ²νΈ: #{build}",
|
|
1267
|
+
"apk_test.build_info_pr": " PR λ²νΈ: #{pr}",
|
|
1268
|
+
"apk_test.build_info_commit": " μ»€λ° ν΄μ: {commit}",
|
|
1269
|
+
"apk_test.build_info_date": " λΉλ λ μ§: {date}",
|
|
1270
|
+
"apk_test.sign_debug_warning": "μλͺ
Secretμ΄ λΉμ΄ μμ΄ debug ν€λ‘ μλͺ
ν©λλ€:{missing} (μ€ν μ΄ μ
λ‘λμ© ν€κ° μλλλ€)",
|
|
1271
|
+
"apk_test.sign_keystore_empty": "RELEASE_KEYSTORE_BASE64λ₯Ό λμ½λ©ν keystoreκ° λΉμ΄ μμ΅λλ€",
|
|
1272
|
+
"apk_test.sign_release_ok": "β
Release Keystore μμ± μλ£ (release ν€λ‘ μλͺ
)",
|
|
1273
|
+
"apk_test.key_properties_ok": "β
key.properties μμ± μλ£",
|
|
1274
|
+
"apk_test.gradlew_missing": "βΉοΈ gradlewκ° μ μ₯μμ μμ΅λλ€ β flutter buildκ° μμ±ν©λλ€",
|
|
1275
|
+
"apk_test.elapsed_min_sec": "{m}λΆ {s}μ΄",
|
|
1276
|
+
"apk_test.elapsed_sec": "{s}μ΄",
|
|
1277
|
+
"apk_test.log_prepare_done": "β
μ§νμν© μ
λ°μ΄νΈ: μ€λΉ μλ£ ({elapsed})",
|
|
1278
|
+
"apk_test.log_build_done": "β
μ§νμν© μ
λ°μ΄νΈ: APK λΉλ μλ£ ({elapsed})",
|
|
1279
|
+
"apk_test.apk_filename_log": "π¦ APK νμΌλͺ
: {name}",
|
|
1280
|
+
"apk_test.version_set_log": "π ν
μ€νΈ λΉλ λ²μ μ€μ : {version}",
|
|
1281
|
+
"apk_test.pubspec_updated": "β
pubspec.yaml λ²μ λ³κ²½ μλ£:",
|
|
1282
|
+
"apk_test.flutter_build_log": "π¦ Flutter μ§μ λΉλ...",
|
|
1283
|
+
"apk_test.apk_size_log": "π¦ APK νμΌ ν¬κΈ°: {size}MB",
|
|
1284
|
+
"apk_test.apk_size_over": "β οΈ κ²½κ³ : APK νμΌ ν¬κΈ°κ° 500MBλ₯Ό μ΄κ³Όν©λλ€ ({size}MB)",
|
|
1285
|
+
"apk_test.apk_size_ok": "β
APK νμΌ ν¬κΈ°κ° μν°ν©νΈ μ ν λ΄μ
λλ€ ({size}MB / 500MB)",
|
|
1286
|
+
"apk_test.info_title": "ν
μ€νΈ APK λΉλ μ 보",
|
|
1287
|
+
"apk_test.info_build_number": "λΉλ λ²νΈ: #{build}",
|
|
1288
|
+
"apk_test.info_pr_number": "PR λ²νΈ: #{pr}",
|
|
1289
|
+
"apk_test.info_branch": "λΈλμΉ: {branch}",
|
|
1290
|
+
"apk_test.info_commit": "컀λ°: {commit}",
|
|
1291
|
+
"apk_test.info_full_commit": "μ 체 μ»€λ° ν΄μ: {sha}",
|
|
1292
|
+
"apk_test.info_date": "λΉλ λ μ§: {date}",
|
|
1293
|
+
"apk_test.info_issue_header": "κ΄λ ¨ μ΄μ:",
|
|
1294
|
+
"apk_test.info_file_created": "π λΉλ μ 보 νμΌ μμ± μλ£:",
|
|
1295
|
+
"apk_test.firebase_creds_ok": "β
Firebase μλΉμ€ κ³μ JSON νμΌ μμ± μλ£",
|
|
1296
|
+
"apk_test.fb_notes_build": "ν
μ€νΈ λΉλ #{build}",
|
|
1297
|
+
"apk_test.fb_notes_branch": "λΈλμΉ: {branch}",
|
|
1298
|
+
"apk_test.fb_notes_commit": "컀λ°: {commit}",
|
|
1299
|
+
"apk_test.fb_notes_issue": "μ΄μ: #{number} {title}",
|
|
1300
|
+
"apk_test.firebase_upload_ok": "β
Firebase App Distribution μ
λ‘λ μ±κ³΅",
|
|
1301
|
+
"apk_test.firebase_upload_failed": "β Firebase App Distribution μ
λ‘λ μ€ν¨ - APK μν°ν©νΈλ μ μ μ
λ‘λλ¨",
|
|
1302
|
+
"apk_test.result_title": "### π¦ λΉλ κ²°κ³Ό",
|
|
1303
|
+
"apk_test.row_app_version": "| **μ± λ²μ ** | `{version}({build})` |",
|
|
1304
|
+
"apk_test.row_branch": "| **λΈλμΉ** | `{branch}` |",
|
|
1305
|
+
"apk_test.row_commit": "| **컀λ°** | `{commit}` |",
|
|
1306
|
+
"apk_test.row_total": "| **μ΄ μμ μκ°** | {elapsed} |",
|
|
1307
|
+
"apk_test.firebase_installable": "π₯ **Firebase App Tester μ±μμ μ€μΉ κ°λ₯ν©λλ€**",
|
|
1308
|
+
"apk_test.firebase_failed_hint": "β οΈ **Firebase μ
λ‘λ μ€ν¨ - μν°ν©νΈμμ APKλ₯Ό λ€μ΄λ‘λν΄μ£ΌμΈμ**",
|
|
1309
|
+
"apk_test.artifact_link": "π¦ **[μν°ν©νΈ λ€μ΄λ‘λ]({url})**",
|
|
1310
|
+
"apk_test.run_log_link": "π **[μν¬νλ‘μ° μ€ν λ‘κ·Έ]({url})**",
|
|
1311
|
+
"apk_test.log_success": "β
μ§νμν© μ
λ°μ΄νΈ: λΉλ μ±κ³΅ (μ΄ {elapsed})",
|
|
1312
|
+
"apk_test.issue_done_title": "π€ β
**Android APK λΉλ μλ£**",
|
|
1313
|
+
"apk_test.issue_line_version": "- μ± λ²μ : `{version}({build})`",
|
|
1314
|
+
"apk_test.issue_line_commit": "- 컀λ°: `{commit}`",
|
|
1315
|
+
"apk_test.log_issue_success": "β
μ΄μ #{number}μλ λΉλ μ±κ³΅ λκΈ μμ± μλ£",
|
|
1316
|
+
"apk_test.fail_line_branch": "- λΈλμΉ: `{branch}`",
|
|
1317
|
+
"apk_test.fail_line_total": "- μ΄ μμ μκ°: {elapsed}",
|
|
1318
|
+
"apk_test.build_error": "β λΉλ μ€ μ€λ₯κ° λ°μνμ΅λλ€.",
|
|
1319
|
+
"apk_test.run_log_check_link": "π **[μν¬νλ‘μ° μ€ν λ‘κ·Έ νμΈ]({url})**",
|
|
1320
|
+
"apk_test.log_failed": "β μ§νμν© μ
λ°μ΄νΈ: λΉλ μ€ν¨ ({elapsed})",
|
|
1321
|
+
"apk_test.issue_failed_title": "π€ β **Android APK λΉλ μ€ν¨**",
|
|
1322
|
+
"apk_test.log_issue_failed": "β μ΄μ #{number}μλ λΉλ μ€ν¨ λκΈ μμ± μλ£",
|
|
1323
|
+
"apk_test.notify_ok": "β
Android ν
μ€νΈ APK λΉλ μ±κ³΅!",
|
|
1324
|
+
"apk_test.notify_build_number": "λΉλ λ²νΈ: {build}",
|
|
1325
|
+
"apk_test.notify_pr": "PR λ²νΈ: {pr}",
|
|
1326
|
+
"apk_test.notify_branch": "λΈλμΉ: {branch}",
|
|
1327
|
+
"apk_test.notify_commit": "컀λ°: {commit}",
|
|
1328
|
+
"apk_test.notify_issue": "κ΄λ ¨ μ΄μ: {url}",
|
|
1329
|
+
"apk_test.notify_artifact_hint": "π¦ μν°ν©νΈμμ APK νμΌμ λ€μ΄λ‘λν μ μμ΅λλ€.",
|
|
1330
|
+
"apk_test.notify_fail": "β Android ν
μ€νΈ APK λΉλ μ€ν¨!",
|
|
1331
|
+
"apk_test.check_logs": "λ‘κ·Έλ₯Ό νμΈν΄μ£ΌμΈμ.",
|
|
1332
|
+
# --- app_trigger ---
|
|
1333
|
+
"app_trigger.reaction_done": "π λκΈμ νμΈ λ¦¬μ‘μ
μΆκ° μλ£",
|
|
1334
|
+
"app_trigger.build_type": "π± λΉλ νμ
: {type} (Android={android}, iOS={ios})",
|
|
1335
|
+
"app_trigger.branch_from_comment": "πΏ λκΈμμ μ§μ λ λΈλμΉ: {branch}",
|
|
1336
|
+
"app_trigger.branch_override": "πΏ λκΈ μ§μ λΈλμΉ μ°μ μ μ©: {branch} (PR head={head})",
|
|
1337
|
+
"app_trigger.pr_confirmed": "β
PR νμΈ: #{number}",
|
|
1338
|
+
"app_trigger.branch_name": "πΏ λΈλμΉλͺ
: {branch}",
|
|
1339
|
+
"app_trigger.commit_sha": "π μ»€λ° ν΄μ: {sha}",
|
|
1340
|
+
"app_trigger.issue_extracted": "π μΆμΆλ μ΄μ λ²νΈ: #{number}",
|
|
1341
|
+
"app_trigger.not_pr": "βΉοΈ PRμ΄ μλλλ€. μ΄μμμ λΈλμΉ μ 보λ₯Ό μ°Ύμ΅λλ€...",
|
|
1342
|
+
"app_trigger.custom_branch_used": "πΏ λκΈ μ§μ λΈλμΉ μ¬μ© (Guide λκΈ κ±΄λλ): {branch}",
|
|
1343
|
+
"app_trigger.related_issue": "π κ΄λ ¨ μ΄μ λ²νΈ: #{number}",
|
|
1344
|
+
"app_trigger.helper_missing_log": "β \"Issue Helper\" λκΈμ μ°Ύμ μ μμ΅λλ€.",
|
|
1345
|
+
"app_trigger.helper_missing_error": "μ΄μμμ \"Issue Helper\" λκΈμ μ°Ύμ μ μμ΅λλ€. λΈλμΉ μ λ³΄κ° ν¬ν¨λ λκΈμ΄ νμν©λλ€.",
|
|
1346
|
+
"app_trigger.helper_found": "β
\"Issue Helper\" λκΈ λ°κ²¬",
|
|
1347
|
+
"app_trigger.branch_parse_log": "β λΈλμΉ μ 보λ₯Ό νμ±ν μ μμ΅λλ€.",
|
|
1348
|
+
"app_trigger.branch_parse_error": "\"Issue Helper\" λκΈμμ λΈλμΉ μ 보λ₯Ό νμ±ν μ μμ΅λλ€. λκΈ νμμ νμΈν΄μ£ΌμΈμ.",
|
|
1349
|
+
"app_trigger.branch_extracted": "πΏ μΆμΆλ λΈλμΉλͺ
: {branch}",
|
|
1350
|
+
"app_trigger.build_info_extracted": "β
μ΄μ #{number}μμ λΉλ μ 보 μΆμΆ μλ£",
|
|
1351
|
+
"app_trigger.comments_error_log": "β μ΄μ λκΈ μ‘°ν μ€ μ€λ₯ λ°μ:",
|
|
1352
|
+
"app_trigger.comments_error": "μ΄μ λκΈ μ‘°ν μ€ μ€λ₯κ° λ°μνμ΅λλ€: {error}",
|
|
1353
|
+
"app_trigger.trigger_failed_body": "β **μ± λΉλ νΈλ¦¬κ±° μ€ν¨**\n\n{error}\n\n**ν΄κ²° λ°©λ²:**\n- PRμμ λΉλνλ κ²½μ°: PR νμ΄μ§μμ λκΈμ μμ±ν΄μ£ΌμΈμ.\n- μ΄μμμ λΉλνλ κ²½μ°: \"Issue Helper\" λκΈμ΄ μμ΄μΌ ν©λλ€.\n - λκΈμ `### λΈλμΉ` μΉμ
κ³Ό λΈλμΉλͺ
μ΄ ν¬ν¨λμ΄ μμ΄μΌ ν©λλ€.\n- λλ λκΈμ λΈλμΉλͺ
μ μ§μ μ§μ ν μ μμ΅λλ€: `/wizard app build <λΈλμΉλͺ
>`",
|
|
1354
|
+
"app_trigger.branch_check_log": "π λΈλμΉ μ‘΄μ¬ μ¬λΆ νμΈ: {branch}",
|
|
1355
|
+
"app_trigger.branch_exists_log": "β
λΈλμΉ μ‘΄μ¬ νμΈλ¨: {branch}",
|
|
1356
|
+
"app_trigger.branch_not_found_log": "β λΈλμΉλ₯Ό μ°Ύμ μ μμ: {branch}",
|
|
1357
|
+
"app_trigger.branch_not_found_error": "λΈλμΉ `{branch}`λ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
1358
|
+
"app_trigger.branch_check_error_log": "β λΈλμΉ νμΈ μ€ μ€λ₯: {error}",
|
|
1359
|
+
"app_trigger.branch_check_error": "λΈλμΉ νμΈ μ€ μ€λ₯κ° λ°μνμ΅λλ€: {error}",
|
|
1360
|
+
"app_trigger.branch_missing_title": "β **μ± λΉλ νΈλ¦¬κ±° μ€ν¨ - λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€**",
|
|
1361
|
+
"app_trigger.table_head": "| νλͺ© | κ° |",
|
|
1362
|
+
"app_trigger.row_requested_branch": "| **μμ²λ λΈλμΉ** | `{branch}` |",
|
|
1363
|
+
"app_trigger.row_issue_pr": "| **μ΄μ/PR** | #{number} |",
|
|
1364
|
+
"app_trigger.hint_title": "### π‘ νμΈ μ¬ν",
|
|
1365
|
+
"app_trigger.hint_pushed": "1. λΈλμΉκ° μ격 μ μ₯μμ pushλμλμ§ νμΈνμΈμ",
|
|
1366
|
+
"app_trigger.hint_helper_branch": "2. \"Issue Helper\" λκΈμ λΈλμΉλͺ
μ΄ μ¬λ°λ₯Έμ§ νμΈνμΈμ",
|
|
1367
|
+
"app_trigger.hint_typo": "3. λΈλμΉλͺ
μ μ€νκ° μλμ§ νμΈνμΈμ",
|
|
1368
|
+
"app_trigger.workflow_log_link": "π [μν¬νλ‘μ° λ‘κ·Έ]({url})",
|
|
1369
|
+
"app_trigger.branch_not_found_fail": "λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€: {branch}",
|
|
1370
|
+
"app_trigger.count_lookup": "π {type} #{number}μ λΉλ νμ μ‘°ν μ€...",
|
|
1371
|
+
"app_trigger.count_build_type": "π± λΉλ νμ
: {type}",
|
|
1372
|
+
"app_trigger.count_ios": "π iOS λΉλ μΉ΄μ΄νΈ: ios + app(곡μ©) ν΅ν©",
|
|
1373
|
+
"app_trigger.count_android": "π Android λΉλ μΉ΄μ΄νΈ: apk + app(곡μ©) ν΅ν©",
|
|
1374
|
+
"app_trigger.count_app": "π μ 체 μ± λΉλ μΉ΄μ΄νΈ: λͺ¨λ λΉλ λͺ
λ Ήμ΄ ν΅ν©",
|
|
1375
|
+
"app_trigger.count_result": "π {type} #{number}: {build_type} {count}λ²μ§Έ λΉλ",
|
|
1376
|
+
"app_trigger.build_number_generated": "π¦ μμ±λ λΉλ λ²νΈ: {number}",
|
|
1377
|
+
"app_trigger.dispatch_start": "π {platform} λΉλ μν¬νλ‘μ° νΈλ¦¬κ±° μμ...",
|
|
1378
|
+
"app_trigger.dispatch_source_number": " {type} λ²νΈ: #{number}",
|
|
1379
|
+
"app_trigger.dispatch_build_number": " λΉλ λ²νΈ: {number}",
|
|
1380
|
+
"app_trigger.dispatch_branch": " λΈλμΉ: {branch}",
|
|
1381
|
+
"app_trigger.dispatch_related_issue": " κ΄λ ¨ μ΄μ λ²νΈ: {issue}",
|
|
1382
|
+
"app_trigger.none": "μμ",
|
|
1383
|
+
"app_trigger.dispatch_done": "β
{platform} λΉλ μν¬νλ‘μ° νΈλ¦¬κ±° μλ£",
|
|
1384
|
+
"app_trigger.done_log": "β
Android λ° iOS λΉλ μν¬νλ‘μ° νΈλ¦¬κ±° μλ£",
|
|
1385
|
+
"app_trigger.done_build_number": "π¦ λΉλ λ²νΈ: {number}",
|
|
1386
|
+
"app_trigger.done_branch": "πΏ λΈλμΉ: {branch}",
|
|
1387
|
+
"app_trigger.done_progress_note": "π κ° νλ«νΌλ³ μ§νμν© λκΈμ΄ μλμΌλ‘ μμ±λ©λλ€.",
|
|
1388
|
+
# --- changelog ---
|
|
1389
|
+
"changelog.parser_section_ok": " β μΉμ
νμ μ±κ³΅",
|
|
1390
|
+
"changelog.parser_lenient_ok": " β κ΄λν νμ μ±κ³΅",
|
|
1391
|
+
"changelog.parser_heuristic_ok": " β ν΄λ¦¬μ€ν± νμ μ±κ³΅",
|
|
1392
|
+
"changelog.section_breaking": "### β οΈ νΈνμ± κΉ¨μ§",
|
|
1393
|
+
"changelog.section_feat": "### β¨ κΈ°λ₯",
|
|
1394
|
+
"changelog.section_fix": "### π μμ ",
|
|
1395
|
+
"changelog.section_perf": "### β‘ μ±λ₯",
|
|
1396
|
+
"changelog.section_docs": "### π λ¬Έμ",
|
|
1397
|
+
"changelog.section_refactor": "### β»οΈ 리ν©ν λ§",
|
|
1398
|
+
"changelog.section_test": "### β
ν
μ€νΈ",
|
|
1399
|
+
"changelog.section_deps": "### π¦ μμ‘΄μ±",
|
|
1400
|
+
"changelog.section_changes": "### π§ λ³κ²½μ¬ν",
|
|
1401
|
+
"changelog.section_wip": "### π§ μμ
μ€",
|
|
1402
|
+
"changelog.bump_prompt_prefix": "λ€μμ μ ν΄μ§ μ»€λ° μ»¨λ²€μ
μ λ°λ₯΄μ§ μλ μμ νμ μ»€λ° λ©μμ§λ€μ΄λ€.\nμ΄ μ€ μ¬μ©μ λμ μλ‘μ΄ κΈ°λ₯(feature) μΆκ°λ‘ 보μ΄λ κ²μ΄ νλλΌλ μμΌλ©΄ μ νν MINORλΌκ³ λ§ λ΅νκ³ ,\nμμΌλ©΄ μ νν PATCHλΌκ³ λ§ λ΅ν΄λΌ. λ€λ₯Έ λ§μ μ λ λ§λΆμ΄μ§ λ§λΌ.\nμ»€λ° λͺ©λ‘:\n",
|
|
1403
|
+
"changelog.err_no_input": "β μ
λ ₯ νμΌμ μ°Ύμ μ μμ΅λλ€ (pr_body.md λλ summary_section.html)",
|
|
1404
|
+
"changelog.input_file": "π μ
λ ₯ νμΌ: {input_file}",
|
|
1405
|
+
"changelog.file_size": "π νμΌ ν¬κΈ°: {size} bytes",
|
|
1406
|
+
"changelog.parse_start": "\nπ Markdown νμ± μμ...",
|
|
1407
|
+
"changelog.parse_ok": "β
νμ± μ±κ³΅: {n}κ° μΉ΄ν
κ³ λ¦¬",
|
|
1408
|
+
"changelog.parse_ok_one": "β
νμ± μ±κ³΅: {n}κ° μΉ΄ν
κ³ λ¦¬",
|
|
1409
|
+
"changelog.parse_failed": "β οΈ νμ± μ€ν¨, raw_summaryλ§ μ μ₯",
|
|
1410
|
+
"changelog.result_header": "\nπ νμ± κ²°κ³Ό:",
|
|
1411
|
+
"changelog.result_method": " - νμ± λ°©μ: {method}",
|
|
1412
|
+
"changelog.result_raw_len": " - raw_summary κΈΈμ΄: {n} λ¬Έμ",
|
|
1413
|
+
"changelog.result_categories": " - νμ±λ μΉ΄ν
κ³ λ¦¬: {n}κ°",
|
|
1414
|
+
"changelog.result_category_item": " β’ {title}: {n}κ° νλͺ©",
|
|
1415
|
+
"changelog.result_category_item_one": " β’ {title}: {n}κ° νλͺ©",
|
|
1416
|
+
"changelog.err_json_unreadable": "β CHANGELOG.jsonμ ν΄μν μ μμ΄ κ°±μ μ μ€λ¨ν©λλ€ (κΈ°μ‘΄ μ΄λ ₯ 보νΈ): {error}",
|
|
1417
|
+
"changelog.err_json_annotation": "::error::CHANGELOG.jsonμ΄ μ¬λ°λ₯Έ JSONμ΄ μλλλ€: {error}",
|
|
1418
|
+
"changelog.json_updated": "\nβ
CHANGELOG.json μ
λ°μ΄νΈ μλ£!",
|
|
1419
|
+
"changelog.err_update_failed": "β update-from-summary μ€ν¨: {error}",
|
|
1420
|
+
"changelog.md_current_version": "**νμ¬ λ²μ :** {version}",
|
|
1421
|
+
"changelog.md_last_updated": "**λ§μ§λ§ μ
λ°μ΄νΈ:** {updated}",
|
|
1422
|
+
"changelog.md_no_changes": "*λ³κ²½μ¬ν μ 보 μμ*",
|
|
1423
|
+
"changelog.md_regenerated": "β
CHANGELOG.md μ¬μμ± μλ£!",
|
|
1424
|
+
"changelog.err_md_failed": "β CHANGELOG.md μμ± μ€ν¨: {error}",
|
|
1425
|
+
"changelog.export_header": "λ²μ {version} μ
λ°μ΄νΈ",
|
|
1426
|
+
"changelog.export_fallback": "λ²μ {version} μ
λ°μ΄νΈ\nμ± μμ μ± λ° μ¬μ©μ κ²½νμ΄ κ°μ λμμ΅λλ€.",
|
|
1427
|
+
"changelog.warn_json_notes": "::warning::CHANGELOG.jsonμμ {version} λ
ΈνΈλ₯Ό μ½μ§ λͺ»νμ΅λλ€: {error}",
|
|
1428
|
+
"changelog.warn_md_notes": "::warning::CHANGELOG.mdμμ {version} λ
ΈνΈλ₯Ό μ½μ§ λͺ»νμ΅λλ€: {error}",
|
|
1429
|
+
"changelog.warn_missing_key": "::warning::AI_API_BASE_URL/AI_MODELμ΄ μ€μ λμ§λ§ AI_API_KEY secretμ΄ μμ΄ μ¬μ©μ API ν°μ΄λ₯Ό 건λλλλ€",
|
|
1430
|
+
"changelog.warn_missing_url_model": "::warning::AI_API_KEYκ° μ€μ λμ§λ§ AI_API_BASE_URL/AI_MODELμ΄ μμ΄ μ¬μ©μ API ν°μ΄λ₯Ό 건λλλλ€",
|
|
1431
|
+
"changelog.prompt_intro": "μλ μ»€λ° λͺ©λ‘μ λ°νμΌλ‘ νκ΅μ΄ λ¦΄λ¦¬μ¦ μμ½μ μμ±ν΄μ€.",
|
|
1432
|
+
"changelog.prompt_format": "μΆλ ₯ νμ: 첫 μ€μ '## [{version}]' ν€λλ‘ μμνκ³ ,",
|
|
1433
|
+
"changelog.prompt_sections_intro": "ν΄λΉ νλͺ©μ΄ μλ μΉμ
λ§ λ€μ μ΄λ¦μΌλ‘ μμ±ν΄μ€:",
|
|
1434
|
+
"changelog.prompt_names_1": "'{breaking}', '{feat}', '{fix}', '{perf}', '{docs}', '{refactor}',",
|
|
1435
|
+
"changelog.prompt_names_2": "'{test}', '{deps}', '{changes}', '{wip}'.",
|
|
1436
|
+
"changelog.prompt_breaking": "νμ
λ€μ '!'κ° λΆμκ±°λ BREAKING CHANGEμΈ μ»€λ°μ λ°λμ '{breaking}'μ λ£μ΄μ€.",
|
|
1437
|
+
"changelog.prompt_bullets": "κ° νλͺ©μ '- 'λ‘ μμνλ λΆλ¦ΏμΌλ‘ μμ±ν΄μ€.",
|
|
1438
|
+
"changelog.prompt_pr_title": "PR μ λͺ©: {title}",
|
|
1439
|
+
"changelog.prompt_diff_stat": "νμΌλ³ λ³κ²½ μμ½:",
|
|
1440
|
+
"changelog.prompt_commits": "μ»€λ° λͺ©λ‘:",
|
|
1441
|
+
"changelog.warn_commits_unreadable": "::warning::μ»€λ° λͺ©λ‘ νμΌμ μ½μ§ λͺ»ν΄ λΉ λͺ©λ‘μΌλ‘ μμ½ν©λλ€: {error}",
|
|
1442
|
+
"changelog.cli_description": "ν΅ν© 체μΈμ§λ‘κ·Έ λ§€λμ ",
|
|
1443
|
+
"changelog.cli_update_help": "PR bodyμμ CHANGELOG.json κ°±μ ",
|
|
1444
|
+
"changelog.cli_generate_help": "CHANGELOG.json β CHANGELOG.md μμ±",
|
|
1445
|
+
"changelog.cli_classify_help": "μ»€λ° λͺ©λ‘μΌλ‘ semver μΉκ²© ν(major/minor/patch) νλ¨",
|
|
1446
|
+
"changelog.cli_commits_file_help": "μ»€λ° μ λͺ© λͺ©λ‘ νμΌ (ν μ€λΉ 1κ°)",
|
|
1447
|
+
"changelog.cli_export_help": "νΉμ λ²μ λ¦΄λ¦¬μ¦ λ
ΈνΈ μΆμΆ",
|
|
1448
|
+
"changelog.cli_version_help": "λ²μ λ²νΈ",
|
|
1449
|
+
"changelog.cli_output_help": "μΆλ ₯ νμΌ κ²½λ‘ (μμΌλ©΄ stdout)",
|
|
1450
|
+
"changelog.cli_ai_summary_help": "μ»€λ° λͺ©λ‘μΌλ‘ AI/κ·μΉ κΈ°λ° λ¦΄λ¦¬μ¦ μμ½ μμ±",
|
|
1451
|
+
"changelog.cli_summary_output_help": "μμ½ κ²°κ³Όλ₯Ό μ μ₯ν νμΌ κ²½λ‘",
|
|
1452
|
+
"changelog.cli_pr_title_help": "PR μ λͺ© (ν둬ννΈ μ»¨ν
μ€νΈλ‘ μ¬μ©, μ ν)",
|
|
1453
|
+
"changelog.cli_diff_stat_help": "git diff --stat μΆλ ₯ νμΌ (ν둬ννΈ μ»¨ν
μ€νΈ νμ₯, μ ν)",
|
|
1454
|
+
"changelog.cli_collect_help": "developμ λ¨Έμ§λ PR μ€ μ΄λ² 릴리μ€μ ν¬ν¨λ μ΄μ λ²νΈ λͺ©λ‘ μΆμΆ",
|
|
1455
|
+
"changelog.cli_shas_help": "μ΄λ² 릴리μ€μ ν¬ν¨λ μ»€λ° SHA λͺ©λ‘ νμΌ (ν μ€λΉ 1κ°)",
|
|
1456
|
+
"changelog.cli_prs_help": "gh pr list --json number,headRefName,mergeCommit μΆλ ₯ JSON νμΌ",
|
|
1457
|
+
# --- cibuild ---
|
|
1458
|
+
"cibuild.go_done": "β
Go λΉλ κ²μ¦μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€!",
|
|
1459
|
+
"cibuild.python_done": "β
Python λΉλ κ²μ¦μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€!",
|
|
1460
|
+
"cibuild.info_title": "π λΉλ μ 보:",
|
|
1461
|
+
"cibuild.info_project": " π― νλ‘μ νΈ: {project}",
|
|
1462
|
+
"cibuild.info_branch": " πΏ λΈλμΉ: {branch}",
|
|
1463
|
+
"cibuild.info_commit": " π 컀λ°: {sha}",
|
|
1464
|
+
"cibuild.info_time": " β° κ²μ¦ μκ°: {time}",
|
|
1465
|
+
"cibuild.py_no_deps": "::notice::requirements.txtΒ·pyproject.tomlΒ·setup.pyκ° μμ΄ μμ‘΄μ± μ€μΉλ₯Ό 건λλλλ€",
|
|
1466
|
+
"cibuild.py_no_tests_collected": "::notice::μμ§λ ν
μ€νΈκ° μμ΄ pytestλ₯Ό 건λλλλ€",
|
|
1467
|
+
"cibuild.py_no_test_files": "::notice::ν
μ€νΈ νμΌ(tests/, test_*.py λ±)μ΄ μμ΄ pytestλ₯Ό 건λλλλ€",
|
|
1468
|
+
"cibuild.py_no_dockerfile": "::notice::{path}/Dockerfileμ΄ μμ΄ Docker λΉλ κ²μ¦μ 건λλλλ€",
|
|
1469
|
+
"cibuild.node_deps_installing": "π¦ μμ‘΄μ± μ€μΉ μ€...",
|
|
1470
|
+
"cibuild.node_deps_done": "β
μμ‘΄μ± μ€μΉ μλ£",
|
|
1471
|
+
"cibuild.node_no_test_script": "::notice::package.jsonμ test μ€ν¬λ¦½νΈκ° μμ΄ ν
μ€νΈλ₯Ό 건λλλλ€",
|
|
1472
|
+
"cibuild.node_test_run": "π§ͺ npm test μ€ν: {script}",
|
|
1473
|
+
"cibuild.node_build_start_next": "π¨ Next.js λΉλ μμ...",
|
|
1474
|
+
"cibuild.node_build_start": "π¨ λΉλ μμ...",
|
|
1475
|
+
"cibuild.node_build_project": "νλ‘μ νΈ: {project}",
|
|
1476
|
+
"cibuild.node_build_node": "Node.js: {node}",
|
|
1477
|
+
"cibuild.node_build_failed": "β λΉλ μ€ν¨",
|
|
1478
|
+
"cibuild.node_build_ok": "β
λΉλ μλ£",
|
|
1479
|
+
"cibuild.node_build_output": "π λΉλ κ²°κ³Όλ¬Ό:",
|
|
1480
|
+
"cibuild.node_build_next_dir": " - .next/ ν΄λ μμ±λ¨",
|
|
1481
|
+
"cibuild.node_errlog_title": "β λΉλ μ€ν¨ - μλ¬ λ‘κ·Έ",
|
|
1482
|
+
"cibuild.node_errlog_missing": "μλ¬ λ‘κ·Έ νμΌμ μ°Ύμ μ μμ΅λλ€.",
|
|
1483
|
+
"cibuild.node_result_next_ok": "π Next.js λΉλ μλ£!",
|
|
1484
|
+
"cibuild.node_result_next_fail": "β Next.js λΉλ μ€ν¨",
|
|
1485
|
+
"cibuild.node_result_ok": "π λΉλ μν¬νλ‘μ° μλ£!",
|
|
1486
|
+
"cibuild.node_result_fail": "β λΉλ μν¬νλ‘μ° μ€ν¨",
|
|
1487
|
+
"cibuild.node_result_title": "π λΉλ κ²°κ³Ό:",
|
|
1488
|
+
"cibuild.node_result_project": " π¦ νλ‘μ νΈ: {project}",
|
|
1489
|
+
"cibuild.node_result_node": " π Node.js λ²μ : {node}",
|
|
1490
|
+
"cibuild.node_result_status": " π λΉλ μν: {status}",
|
|
1491
|
+
"cibuild.node_result_branch": " πΏ λΈλμΉ: {branch}",
|
|
1492
|
+
"cibuild.node_result_commit": " π 컀λ°: {sha}",
|
|
1493
|
+
"cibuild.node_result_time": " π μκ°: {time}",
|
|
1494
|
+
"cibuild.node_all_ok": "β
λͺ¨λ λ¨κ³κ° μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€.",
|
|
1495
|
+
"cibuild.node_error_occurred": "β λΉλ μ€ μ€λ₯κ° λ°μνμ΅λλ€.",
|
|
1496
|
+
"cibuild.node_log_hint": "π‘ Actions νμμ 'build-log' μν°ν©νΈλ₯Ό λ€μ΄λ‘λνμ¬ μ 체 λ‘κ·Έλ₯Ό νμΈνμΈμ.",
|
|
1497
|
+
"cibuild.gate_results": "needs κ²°κ³Ό: {results}",
|
|
1498
|
+
"cibuild.gate_failed": "μ€ν¨νκ±°λ μ·¨μλ jobμ΄ μμ΅λλ€.",
|
|
1499
|
+
# --- cicd ---
|
|
1500
|
+
"cicd.precheck_secret_title": "νμ Secret λλ½",
|
|
1501
|
+
"cicd.precheck_secret_body": "λ±λ‘λμ§ μμ GitHub Secret:{missing} β Settings β Secrets and variables β Actionsμμ λ±λ‘νμΈμ",
|
|
1502
|
+
"cicd.precheck_dockerfile_title": "Dockerfile μμ",
|
|
1503
|
+
"cicd.precheck_dockerfile_body": "{path} νμΌμ΄ μμ΅λλ€. μ΄ μν¬νλ‘μ°λ Docker μ΄λ―Έμ§λ‘ λ°°ν¬νλ―λ‘ Dockerfileμ΄ νμν©λλ€ (μλ² λ°°ν¬λ₯Ό νμ§ μλλ€λ©΄ μ΄ μν¬νλ‘μ° νμΌμ μμ νμΈμ)",
|
|
1504
|
+
"cicd.precheck_ok": "β
μ¬μ μ κ² ν΅κ³Ό: νμ Secretκ³Ό Dockerfileμ΄ λͺ¨λ μμ΅λλ€",
|
|
1505
|
+
"cicd.env_file_created": "β
{file} νμΌ μμ± μλ£",
|
|
1506
|
+
"cicd.dotenv_created": "β
.env νμΌμ΄ μμ±λμμ΅λλ€",
|
|
1507
|
+
"cicd.disk_before": "π λΉλ μ λμ€ν¬ μ¬μ©λ:",
|
|
1508
|
+
"cicd.disk_cleaning": "π§Ή λΆνμν νμΌ μ 리 μ€...",
|
|
1509
|
+
"cicd.disk_docker_prune": "π³ Docker μμ€ν
μ 리 μ€...",
|
|
1510
|
+
"cicd.disk_after_cleanup": "π μ 리 ν λμ€ν¬ μ¬μ©λ:",
|
|
1511
|
+
"cicd.post_build_cleanup": "π§Ή λΉλ ν μ 리 μ€...",
|
|
1512
|
+
"cicd.disk_final": "π μ΅μ’
λμ€ν¬ μ¬μ©λ:",
|
|
1513
|
+
"cicd.setup_env": "π§ νκ²½λ³μ μ€μ ..",
|
|
1514
|
+
"cicd.ssh_auth": "π SSH μΈμ¦ λ°©μ: {method}",
|
|
1515
|
+
"cicd.deploy_start": "π λ°°ν¬ νκ²½μΌλ‘ λ°°ν¬ν©λλ€ (λΈλμΉ: {branch})",
|
|
1516
|
+
"cicd.branch_unsupported": "β οΈ μ§μνμ§ μλ λΈλμΉμ
λλ€: {branch}",
|
|
1517
|
+
"cicd.branch_only": "μ΄ μν¬νλ‘μ°λ {branch} λΈλμΉλ§ μ§μν©λλ€.",
|
|
1518
|
+
"cicd.branch_hint": "on.push.branchesμμ μ§μν λΈλμΉλ₯Ό μ€μ νμΈμ.",
|
|
1519
|
+
"cicd.container_default": "βΉοΈ CONTAINER_NAMEμ΄ μ€μ λμ§ μμ PROJECT_NAMEμ μ¬μ©ν©λλ€: {container}",
|
|
1520
|
+
"cicd.container_custom": "βΉοΈ μ¬μ©μ μ§μ CONTAINER_NAME μ¬μ©: {container}",
|
|
1521
|
+
"cicd.config_title": "π λ°°ν¬ μ€μ μ 보:",
|
|
1522
|
+
"cicd.config_branch": " - λΈλμΉ: {branch}",
|
|
1523
|
+
"cicd.config_project": " - νλ‘μ νΈ: {project}",
|
|
1524
|
+
"cicd.config_container": " - 컨ν
μ΄λ μ΄λ¦: {container}",
|
|
1525
|
+
"cicd.config_port": " - ν¬νΈ: {port}",
|
|
1526
|
+
"cicd.config_image": " - Docker μ΄λ―Έμ§: {image}",
|
|
1527
|
+
"cicd.pull_image": "β¬οΈ Docker μ΄λ―Έμ§ ν: {image}",
|
|
1528
|
+
"cicd.pull_image_short": "β¬οΈ Docker μ΄λ―Έμ§ ν...",
|
|
1529
|
+
"cicd.container_check": "𧹠컨ν
μ΄λ {container} μ‘΄μ¬ μ¬λΆ νμΈ μ€...",
|
|
1530
|
+
"cicd.container_exists": "β οΈ μ»¨ν
μ΄λ {container} μ΄(κ°) μ‘΄μ¬ν©λλ€. μ€μ§ λ° μμ μ€...",
|
|
1531
|
+
"cicd.container_removed": "β
컨ν
μ΄λ {container} μ΄(κ°) μμ λμμ΅λλ€.",
|
|
1532
|
+
"cicd.container_none": "βΉοΈ μ‘΄μ¬νλ 컨ν
μ΄λ {container} μ΄(κ°) μμ΅λλ€.",
|
|
1533
|
+
"cicd.container_run": "π μλ‘μ΄ μ»¨ν
μ΄λ {container} μ€ν μ€...",
|
|
1534
|
+
"cicd.volume_mkdir": "π λ³Όλ₯¨ λ§μ΄νΈ λλ ν 리 μμ±: {path}",
|
|
1535
|
+
"cicd.volume_on": "π¦ λ³Όλ₯¨ λ§μ΄νΈ νμ±ν: {opts}",
|
|
1536
|
+
"cicd.volume_off": "βΉοΈ λ³Όλ₯¨ λ§μ΄νΈ λΉνμ±νλ¨",
|
|
1537
|
+
"cicd.health_wait": "Ⳡ컨ν
μ΄λ μ΄κΈ°ν λκΈ° μ€... ({seconds}μ΄)",
|
|
1538
|
+
"cicd.health_check": "π₯ 컨ν
μ΄λ ν¬μ€μ²΄ν¬ μ€...",
|
|
1539
|
+
"cicd.health_no_process": "β 컨ν
μ΄λ {container} νλ‘μΈμ€κ° μ€νλμ§ μμμ΅λλ€",
|
|
1540
|
+
"cicd.health_process_ok": "β
컨ν
μ΄λ νλ‘μΈμ€ μ€ν νμΈ μλ£",
|
|
1541
|
+
"cicd.http_start": "π HTTP ν¬μ€μ²΄ν¬ μμ: {url}",
|
|
1542
|
+
"cicd.http_try": " μλ {i}/{max}...",
|
|
1543
|
+
"cicd.http_ok": "β
HTTP ν¬μ€μ²΄ν¬ μ±κ³΅ (μλ΅ μ½λ: {code})",
|
|
1544
|
+
"cicd.http_fail": "β οΈ HTTP ν¬μ€μ²΄ν¬ μ€ν¨ (μλ΅ μ½λ: {code})",
|
|
1545
|
+
"cicd.http_retry": " {interval}μ΄ ν μ¬μλ...",
|
|
1546
|
+
"cicd.http_final_fail": "β οΈ HTTP ν¬μ€μ²΄ν¬ μ΅μ’
μ€ν¨, λ‘κ·Έ ν¨ν΄ λ§€μΉμΌλ‘ fallback...",
|
|
1547
|
+
"cicd.http_skipped": "βΉοΈ HEALTHCHECK_PATHκ° μ€μ λμ§ μμ λ‘κ·Έ ν¨ν΄ λ§€μΉλ§ μ¬μ©ν©λλ€",
|
|
1548
|
+
"cicd.log_start": "π λ‘κ·Έ ν¨ν΄ λ§€μΉ μμ: '{pattern}'",
|
|
1549
|
+
"cicd.log_ok": "β
λ‘κ·Έ ν¨ν΄ λ§€μΉ μ±κ³΅: μ ν리μΌμ΄μ
μ΄ μ μμ μΌλ‘ μμλμμ΅λλ€",
|
|
1550
|
+
"cicd.log_fail": "β λ‘κ·Έ ν¨ν΄ λ§€μΉ μ€ν¨: μ ν리μΌμ΄μ
μμ λ‘κ·Έλ₯Ό μ°Ύμ μ μμ΅λλ€",
|
|
1551
|
+
"cicd.debug_title": "π λλ²κΉ
μ 보:",
|
|
1552
|
+
"cicd.debug_pattern": " - κ²μ ν¨ν΄: {pattern}",
|
|
1553
|
+
"cicd.debug_container": " - 컨ν
μ΄λ: {container}",
|
|
1554
|
+
"cicd.debug_image": " - μ΄λ―Έμ§: {image}",
|
|
1555
|
+
"cicd.debug_port": " - ν¬νΈ: {port}",
|
|
1556
|
+
"cicd.debug_volume": " - λ³Όλ₯¨: {volume}",
|
|
1557
|
+
"cicd.debug_logs": "π 컨ν
μ΄λ λ‘κ·Έ (μ΅κ·Ό 50μ€):",
|
|
1558
|
+
"cicd.health_done": "β
ν¬μ€μ²΄ν¬ μλ£: 컨ν
μ΄λ {container} μ΄(κ°) μ μμ μΌλ‘ μ€ν μ€μ
λλ€",
|
|
1559
|
+
"cicd.deploy_done": "β
λ°°ν¬κ° μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€!",
|
|
1560
|
+
"cicd.summary_title": "π λ°°ν¬ κ²°κ³Ό μμ½:",
|
|
1561
|
+
"cicd.summary_project": " π― νλ‘μ νΈ: {project}",
|
|
1562
|
+
"cicd.summary_branch": " πΏ λΈλμΉ: {branch}",
|
|
1563
|
+
"cicd.summary_container": " π³ 컨ν
μ΄λ: {container}",
|
|
1564
|
+
"cicd.summary_port": " π ν¬νΈ: {port}",
|
|
1565
|
+
"cicd.summary_time": " β° λ°°ν¬ μκ°: {time}",
|
|
1566
|
+
"cicd.summary_url": "π μ μ URL: {url}",
|
|
1567
|
+
# --- fastlane ---
|
|
1568
|
+
"fastlane.env_empty": "{name} νκ²½λ³μκ° λΉμ΄ μμ΅λλ€. μν¬νλ‘μ°μμ κ°μ μ λ¬νλμ§ νμΈνμΈμ.",
|
|
1569
|
+
"fastlane.ios_prepare_wait": "DEPLOY_MODE={deploy_mode}: λΉλ μ²λ¦¬ μλ£κΉμ§ κΈ°λ€λ¦° λ€ App Store λ²μ μ μ€λΉν©λλ€.",
|
|
1570
|
+
"fastlane.deploy_mode_unknown": "μ μ μλ DEPLOY_MODE '{deploy_mode}' μ
λλ€. store_onlyλ‘ μ²λ¦¬ν©λλ€.",
|
|
1571
|
+
"fastlane.package_name_empty": "PACKAGE_NAMEμ΄ λΉμ΄ μμ΅λλ€. ANDROID_PACKAGE_NAME secrets/variablesλ₯Ό λ±λ‘νμΈμ. (μ: com.example.app)",
|
|
1572
|
+
"fastlane.android_env_required": "AAB_PATH, GOOGLE_PLAY_JSON_KEY, VERSION_NAME, VERSION_CODE νκ²½λ³μκ° λͺ¨λ νμν©λλ€. μν¬νλ‘μ°μμ μ λ¬νλμ§ νμΈνμΈμ.",
|
|
1573
|
+
"fastlane.changelog_missing": "λ³κ²½ μ΄λ ₯ νμΌμ΄ μμ΅λλ€: {file}",
|
|
1574
|
+
"fastlane.play_deploy": "Play λ°°ν¬: DEPLOY_MODE={deploy_mode} β track={track}, release_status={release_status}",
|
|
1575
|
+
# --- flutter_a ---
|
|
1576
|
+
"flutter_a.precheck_missing_title": "νμ Secret λλ½",
|
|
1577
|
+
"flutter_a.precheck_missing_body": "λ±λ‘λμ§ μμ GitHub Secret:{missing} β Settings β Secrets and variables β Actionsμμ λ±λ‘νμΈμ",
|
|
1578
|
+
"flutter_a.precheck_passed": "β
μ¬μ μ κ² ν΅κ³Ό: νμ Secretμ΄ λͺ¨λ μμ΅λλ€",
|
|
1579
|
+
"flutter_a.debug_keystore_empty": "DEBUG_KEYSTORE Secretμ΄ λΉμ΄ μμ΄ λ¬λ κΈ°λ³Έ debug ν€λ‘ μλͺ
ν©λλ€ (λΉλλ§λ€ μλͺ
μ΄ λ¬λΌμ§λλ€)",
|
|
1580
|
+
"flutter_a.debug_keystore_created": "Debug Keystore created (DEBUG_KEYSTOREλ‘ μλͺ
)",
|
|
1581
|
+
"flutter_a.gradlew_missing": "βΉοΈ gradlewκ° μ μ₯μμ μμ΅λλ€ β flutter buildκ° μμ±ν©λλ€",
|
|
1582
|
+
"flutter_a.current_version": "νμ¬ λ²μ : {current_version}",
|
|
1583
|
+
"flutter_a.short_commit_hash": "μ§§μ μ»€λ° ν΄μ: {short_commit_hash}",
|
|
1584
|
+
"flutter_a.project_type": "π§ νλ‘μ νΈ νμ
: {project_type}",
|
|
1585
|
+
"flutter_a.extracting_v_release_notes_changelog": "π CHANGELOG.jsonμμ v{version} λ¦΄λ¦¬μ¦ λ
ΈνΈ μΆμΆ μ€...",
|
|
1586
|
+
"flutter_a.release_notes_extracted": "β
λ¦΄λ¦¬μ¦ λ
ΈνΈ μΆμΆ μ±κ³΅!",
|
|
1587
|
+
"flutter_a.extracted_release_notes": "π μΆμΆλ λ¦΄λ¦¬μ¦ λ
ΈνΈ:",
|
|
1588
|
+
"flutter_a.failed_extract_release_notes": "β λ¦΄λ¦¬μ¦ λ
ΈνΈ μΆμΆ μ€ν¨",
|
|
1589
|
+
"flutter_a.default_release_note": "v{version} μ
λ°μ΄νΈ",
|
|
1590
|
+
"flutter_a.changelog_json_not_found_using": "β οΈ CHANGELOG.json νμΌμ΄ μμ΅λλ€. κΈ°λ³Έ λ¦΄λ¦¬μ¦ λ
ΈνΈλ₯Ό μ¬μ©ν©λλ€.",
|
|
1591
|
+
"flutter_a.signing_secrets_empty": "μλͺ
Secretμ΄ λΉμ΄ μμ΅λλ€:{missing} (μν¬νλ‘μ° μλ¨ μ£Όμ μ°Έκ³ )",
|
|
1592
|
+
"flutter_a.keystore_decoded_empty": "RELEASE_KEYSTORE_BASE64λ₯Ό λμ½λ©ν keystoreκ° λΉμ΄ μμ΅λλ€",
|
|
1593
|
+
"flutter_a.release_keystore_created": "β
Release Keystore μμ± μλ£",
|
|
1594
|
+
"flutter_a.key_properties_created": "β
key.properties μμ± μλ£",
|
|
1595
|
+
"flutter_a.signing_config_must_added_build": "β οΈ build.gradle.ktsμ μλͺ
μ€μ μΆκ° νμ",
|
|
1596
|
+
"flutter_a.android_build_config_check_complete": "β
Android λΉλ μ€μ νμΈ μλ£",
|
|
1597
|
+
"flutter_a.starting_aab_build": "π AAB λΉλ μμ",
|
|
1598
|
+
"flutter_a.build_version": "π― λΉλ λ²μ : {version_name}",
|
|
1599
|
+
"flutter_a.build_code": "π― λΉλ μ½λ: {version_code}",
|
|
1600
|
+
"flutter_a.version_name_or_version_code": "β VERSION_NAME λλ VERSION_CODEκ° λΉμ΄μμ΅λλ€!",
|
|
1601
|
+
"flutter_a.flutter_environment_info": "π Flutter νκ²½ μ 보:",
|
|
1602
|
+
"flutter_a.cleaning_previous_build_output": "π§Ή μ΄μ λΉλ κ²°κ³Όλ¬Ό μ 리...",
|
|
1603
|
+
"flutter_a.running_flutter_clean_reinstalling_dependencies": "π Flutter clean λ° μμ‘΄μ± μ¬μ€μΉ...",
|
|
1604
|
+
"flutter_a.setting_version_info_local_properties": "π§ local.propertiesμ λ²μ μ 보 μ€μ ...",
|
|
1605
|
+
"flutter_a.local_properties_updated": "β
local.properties μ
λ°μ΄νΈ μλ£",
|
|
1606
|
+
"flutter_a.version_info_version_name_version": "π λ²μ μ 보: VERSION_NAME={version_name}, VERSION_CODE={version_code}",
|
|
1607
|
+
"flutter_a.gradle_tuning_applied": "β
Gradle μ΅μ ν μ€μ μλ£",
|
|
1608
|
+
"flutter_a.running_flutter_build": "π¨ Flutter build μ€ν...",
|
|
1609
|
+
"flutter_a.command_flutter_build_appbundle_release": "π λͺ
λ Ήμ΄: flutter build appbundle --release --build-name={version_name} --build-number={version_code} --verbose",
|
|
1610
|
+
"flutter_a.build_start_time": "β±οΈ λΉλ μμ μκ°: {cmd1}",
|
|
1611
|
+
"flutter_a.flutter_build_failed_exit_code": "β Flutter build μ€ν¨! Exit code: {build_exit_code}",
|
|
1612
|
+
"flutter_a.build_directory_state": "π λΉλ λλ ν 리 μν:",
|
|
1613
|
+
"flutter_a.aab_apk_not_found": "AAB/APK νμΌμ μ°Ύμ μ μμ΅λλ€",
|
|
1614
|
+
"flutter_a.flutter_build_succeeded": "β
Flutter build μ±κ³΅!",
|
|
1615
|
+
"flutter_a.checking_build_result": "π λΉλ κ²°κ³Ό νμΈ:",
|
|
1616
|
+
"flutter_a.aab_file_not_created": "β AAB νμΌμ΄ μμ±λμ§ μμμ΅λλ€!",
|
|
1617
|
+
"flutter_a.full_build_directory_contents": "π μ 체 λΉλ λλ ν 리 λ΄μ©:",
|
|
1618
|
+
"flutter_a.outputs_directory_structure": "π outputs λλ ν 리 ꡬ쑰:",
|
|
1619
|
+
"flutter_a.outputs_directory_does_not_exist": "outputs λλ ν λ¦¬κ° μμ΅λλ€",
|
|
1620
|
+
"flutter_a.aab_file_creation_confirmed": "β
AAB νμΌ μμ± νμΈ",
|
|
1621
|
+
"flutter_a.aab_file_size": "π± AAB νμΌ ν¬κΈ°: {cmd1}",
|
|
1622
|
+
"flutter_a.aab_file_info": "π AAB νμΌ μ 보: {cmd1}",
|
|
1623
|
+
"flutter_a.downloading_bundletool": "π¦ bundletool λ€μ΄λ‘λ μ€...",
|
|
1624
|
+
"flutter_a.download_url": "π λ€μ΄λ‘λ URL: {bundletool_url}",
|
|
1625
|
+
"flutter_a.bundletool_download_failed": "β bundletool λ€μ΄λ‘λ μ€ν¨",
|
|
1626
|
+
"flutter_a.retrying_fallback_url": "π λ체 URLλ‘ μ¬μλ...",
|
|
1627
|
+
"flutter_a.bundletool_download_failed_completely": "β bundletool λ€μ΄λ‘λ μμ μ€ν¨",
|
|
1628
|
+
"flutter_a.bundletool_downloaded": "β
bundletool λ€μ΄λ‘λ μλ£",
|
|
1629
|
+
"flutter_a.bundletool_file_size": "π bundletool νμΌ ν¬κΈ°: {cmd1}",
|
|
1630
|
+
"flutter_a.checking_java_environment": "π Java νκ²½ νμΈ:",
|
|
1631
|
+
"flutter_a.verifying_version_info_inside_aab": "π AAB νμΌ λ΄λΆ λ²μ μ 보 κ²μ¦",
|
|
1632
|
+
"flutter_a.extracting_actual_version_info_aab": "π AABμμ μ€μ λ²μ μ 보 μΆμΆ μ€...",
|
|
1633
|
+
"flutter_a.command_run_java_jar_bundletool": "π μ€νν λͺ
λ Ήμ΄: java -jar bundletool.jar dump manifest --bundle='{aab_file}'",
|
|
1634
|
+
"flutter_a.bundletool_result_exit_code": "π bundletool μ€ν κ²°κ³Ό (Exit code: {manifest_exit_code}):",
|
|
1635
|
+
"flutter_a.manifest_extracted": "β
Manifest μΆμΆ μ±κ³΅",
|
|
1636
|
+
"flutter_a.version_info_comparison": "π― λ²μ μ 보 λΉκ΅:",
|
|
1637
|
+
"flutter_a.expected_version_code": " μμ VERSION_CODE: '{version_code}'",
|
|
1638
|
+
"flutter_a.actual_version_code": " μ€μ VERSION_CODE: '{actual_version_code}'",
|
|
1639
|
+
"flutter_a.expected_version_name": " μμ VERSION_NAME: '{version_name}'",
|
|
1640
|
+
"flutter_a.actual_version_name": " μ€μ VERSION_NAME: '{actual_version_name}'",
|
|
1641
|
+
"flutter_a.fatal_error_version_code_could": "β μΉλͺ
μ μ€λ₯: AABμμ VERSION_CODEλ₯Ό μΆμΆν μ μμ΅λλ€!",
|
|
1642
|
+
"flutter_a.full_manifest_contents": "π μ 체 Manifest λ΄μ©:",
|
|
1643
|
+
"flutter_a.fatal_error_version_code_aab": "β μΉλͺ
μ μ€λ₯: AABμ VERSION_CODEκ° μμκ³Ό λ€λ¦
λλ€!",
|
|
1644
|
+
"flutter_a.google_play_would_reject_version": " μ΄λ Google Playμμ 'μ΄λ―Έ μ¬μ©λ λ²μ μ½λ' μ€λ₯λ₯Ό λ°μμν΅λλ€.",
|
|
1645
|
+
"flutter_a.debugging_info": "π λλ²κΉ
μ 보:",
|
|
1646
|
+
"flutter_a.version_code_version_yml": " version.ymlμ VERSION_CODE: {version_code}",
|
|
1647
|
+
"flutter_a.version_code_inside_aab_file": " AAB νμΌ λ΄λΆμ VERSION_CODE: {actual_version_code}",
|
|
1648
|
+
"flutter_a.flags_passed_flutter_build_command": " Flutter build λͺ
λ Ήμ΄μ μ λ¬λ νλκ·Έ:",
|
|
1649
|
+
"flutter_a.full_manifest_contents_2": " μ 체 Manifest λ΄μ©:",
|
|
1650
|
+
"flutter_a.version_code_check_passed": "β
VERSION_CODE κ²μ¦ μ±κ³΅: {actual_version_code}",
|
|
1651
|
+
"flutter_a.warning_version_name_could_not": "β οΈ κ²½κ³ : AABμμ VERSION_NAMEμ μΆμΆν μ μμ΅λλ€",
|
|
1652
|
+
"flutter_a.warning_version_name_differs_expected": "β οΈ κ²½κ³ : VERSION_NAMEμ΄ μμκ³Ό λ€λ¦
λλ€ (μΉλͺ
μ μ΄μ§ μμ)",
|
|
1653
|
+
"flutter_a.expected_actual": " μμ: '{version_name}', μ€μ : '{actual_version_name}'",
|
|
1654
|
+
"flutter_a.version_name_check_passed": "β
VERSION_NAME κ²μ¦ μ±κ³΅: {actual_version_name}",
|
|
1655
|
+
"flutter_a.failed_extract_manifest_bundletool": "β bundletoolλ‘ Manifest μΆμΆ μ€ν¨",
|
|
1656
|
+
"flutter_a.trying_verify_another_way": "π λ체 λ°©λ²μΌλ‘ κ²μ¦ μλ...",
|
|
1657
|
+
"flutter_a.trying_direct_extraction_unzip": "π unzipμ μ¬μ©ν μ§μ μΆμΆ μλ...",
|
|
1658
|
+
"flutter_a.version_info_extracted_unzip": "β
unzipμΌλ‘ λ²μ μ 보 μΆμΆ μ±κ³΅:",
|
|
1659
|
+
"flutter_a.direct_extraction_unzip_failed_too": "β unzipμ μ¬μ©ν μ§μ μΆμΆλ μ€ν¨",
|
|
1660
|
+
"flutter_a.skipping_aab_verification_continuing": "β οΈ AAB κ²μ¦μ 건λλ°κ³ κ³μ μ§νν©λλ€.",
|
|
1661
|
+
"flutter_a.aab_build_verification_complete": "β
AAB λΉλ λ° κ²μ¦ μλ£",
|
|
1662
|
+
"flutter_a.final_aab": "π― μ΅μ’
AAB: {aab_file}",
|
|
1663
|
+
"flutter_a.file_size": "π± νμΌ ν¬κΈ°: {cmd1}",
|
|
1664
|
+
"flutter_a.google_play_service_account_json": "GOOGLE_PLAY_SERVICE_ACCOUNT_JSON_BASE64 Secretμ΄ λΉμ΄ μμ΅λλ€",
|
|
1665
|
+
"flutter_a.service_account_json_configured": "β
Service Account JSON μ€μ μλ£",
|
|
1666
|
+
"flutter_a.using_repository_gemfile": "βΉοΈ μ μ₯μμ Gemfileμ μ¬μ©ν©λλ€",
|
|
1667
|
+
"flutter_a.fastlane_installed_bundler": "β
Fastlane μ€μΉ μλ£ (Bundler)",
|
|
1668
|
+
"flutter_a.fastfile_copied_fastfile_playstore_fastfile": "β
Fastfile λ³΅μ¬ μλ£ (Fastfile.playstore β Fastfile)",
|
|
1669
|
+
"flutter_a.fastfile_contents": "π Fastfile λ΄μ©:",
|
|
1670
|
+
"flutter_a.starting_play_store_deployment": "π Play Store λ°°ν¬ μμ",
|
|
1671
|
+
"flutter_a.deploy_start_time": "π λ°°ν¬ μμ μκ°: {cmd1}",
|
|
1672
|
+
"flutter_a.version_info_deploy": "π λ°°ν¬ λμ λ²μ μ 보:",
|
|
1673
|
+
"flutter_a.fatal_error_version_name_or": "β μΉλͺ
μ μ€λ₯: VERSION_NAME λλ VERSION_CODEκ° λΉμ΄μμ΅λλ€!",
|
|
1674
|
+
"flutter_a.means_prepare_build_job_did": "μ΄λ prepare-build μμ
μμ μΆλ ₯μ΄ μ λλ‘ μ λ¬λμ§ μμμμ μλ―Έν©λλ€.",
|
|
1675
|
+
"flutter_a.aab_file_path": "π¦ AAB νμΌ κ²½λ‘: {aab_path}",
|
|
1676
|
+
"flutter_a.aab_file_not_found": "β AAB νμΌμ μ°Ύμ μ μμ΅λλ€!",
|
|
1677
|
+
"flutter_a.build_directory_contents": "π λΉλ λλ ν 리 λ΄μ©:",
|
|
1678
|
+
"flutter_a.directory_does_not_exist": "λλ ν λ¦¬κ° μ‘΄μ¬νμ§ μμ΅λλ€",
|
|
1679
|
+
"flutter_a.full_build_directory_structure": "π μ 체 λΉλ λλ ν 리 ꡬ쑰:",
|
|
1680
|
+
"flutter_a.aab_file_exists": "β
AAB νμΌ μ‘΄μ¬ νμΈ",
|
|
1681
|
+
"flutter_a.verifying_aab_version": "π AAB λ²μ κ²μ¦ μ€...",
|
|
1682
|
+
"flutter_a.aab_version_code": "π AAB λ²μ : {final_version_name} (μ½λ: {final_version_code})",
|
|
1683
|
+
"flutter_a.error_aab_version_code_not": "β μ€λ₯: AAB λ²μ μ½λκ° μμκ³Ό λ€λ¦
λλ€! (μμ: {version_code}, μ€μ : {final_version_code})",
|
|
1684
|
+
"flutter_a.version_check_passed": "β
λ²μ κ²μ¦ μ±κ³΅",
|
|
1685
|
+
"flutter_a.version_check_failed_continuing_deployment": "β οΈ λ²μ κ²μ¦ μ€ν¨, λ°°ν¬ κ³μ μ§ν",
|
|
1686
|
+
"flutter_a.changelog_ready_version_code": "β
Changelog μ€λΉ μλ£ (λ²μ μ½λ: {version_code})",
|
|
1687
|
+
"flutter_a.default_release_note_name": "v{version_name} μ
λ°μ΄νΈ",
|
|
1688
|
+
"flutter_a.created_default_changelog_version_code": "β οΈ κΈ°λ³Έ Changelog μμ± (λ²μ μ½λ: {version_code})",
|
|
1689
|
+
"flutter_a.service_account_json_file_not": "β Service Account JSON νμΌμ μ°Ύμ μ μμ΅λλ€",
|
|
1690
|
+
"flutter_a.running_play_store_deployment": "π Play Store λ°°ν¬ μ€ν",
|
|
1691
|
+
"flutter_a.version_code": "π― λ²μ : {version_name} (μ½λ: {version_code})",
|
|
1692
|
+
"flutter_a.play_store_internal_testing_deployment": "β
Play Store λ΄λΆ ν
μ€νΈ λ°°ν¬ μ±κ³΅!",
|
|
1693
|
+
"flutter_a.version": "λ²μ : {version} ({version_code})",
|
|
1694
|
+
"flutter_a.commit": "컀λ°: {sha}",
|
|
1695
|
+
"flutter_a.how_testers_check_build": "π± ν
μ€ν° νμΈ λ°©λ²:",
|
|
1696
|
+
"flutter_a.play_console_test_release_internal": "1. Play Console β ν
μ€νΈ λ° μΆμ β λ΄λΆ ν
μ€νΈ",
|
|
1697
|
+
"flutter_a.share_test_link_your_testers": "2. ν
μ€ν°μκ² ν
μ€νΈ λ§ν¬ 곡μ ",
|
|
1698
|
+
"flutter_a.play_store_deployment_failed": "β Play Store λ°°ν¬ μ€ν¨!",
|
|
1699
|
+
"flutter_a.please_check_logs": "λ‘κ·Έλ₯Ό νμΈν΄μ£ΌμΈμ.",
|
|
1700
|
+
"flutter_a.precheck_firebase_app_id_title": "FIREBASE_APP_ID λ―Έμ€μ ",
|
|
1701
|
+
"flutter_a.precheck_firebase_app_id_body": "μν¬νλ‘μ° env μΉμ
μ FIREBASE_APP_IDλ₯Ό Firebase Consoleμ μ± IDλ‘ λ°κΎΈμΈμ",
|
|
1702
|
+
"flutter_a.precheck_passed_firebase": "β
μ¬μ μ κ² ν΅κ³Ό: νμ Secretκ³Ό FIREBASE_APP_IDκ° λͺ¨λ μμ΅λλ€",
|
|
1703
|
+
"flutter_a.firebase_service_account_json_base64": "FIREBASE_SERVICE_ACCOUNT_JSON_BASE64 Secretμ΄ λΉμ΄ μμ΅λλ€",
|
|
1704
|
+
"flutter_a.firebase_service_account_json_file": "β
Firebase μλΉμ€ κ³μ JSON νμΌ μμ± μλ£",
|
|
1705
|
+
"flutter_a.firebase_app_distribution_deployment_succeeded": "β
Firebase App Distribution λ°°ν¬ μ±κ³΅!",
|
|
1706
|
+
"flutter_a.launch_firebase_app_tester_app": "1. Firebase App Tester μ± μ€ν",
|
|
1707
|
+
"flutter_a.select_app": "2. μ± μ ν",
|
|
1708
|
+
"flutter_a.download_latest_build": "3. μ΅μ λΉλ λ€μ΄λ‘λ",
|
|
1709
|
+
"flutter_a.firebase_app_distribution_deployment_failed": "β Firebase App Distribution λ°°ν¬ μ€ν¨!",
|
|
1710
|
+
"flutter_a.ci_config_header": "π CI μ€μ :",
|
|
1711
|
+
"flutter_a.ci_config_trigger": " νΈλ¦¬κ±°: {event_name}",
|
|
1712
|
+
"flutter_a.ci_info_header": "π λΉλ μ 보:",
|
|
1713
|
+
"flutter_a.ci_info_branch": " λΈλμΉ: {branch_name}",
|
|
1714
|
+
"flutter_a.ci_info_commit": " 컀λ°: {commit_hash}",
|
|
1715
|
+
"flutter_a.ci_analyze_start": "π Flutter μ½λ λΆμ μμ...",
|
|
1716
|
+
"flutter_a.ci_analyze_done": "β
μ½λ λΆμ μλ£",
|
|
1717
|
+
"flutter_a.ci_test_start": "π§ͺ Flutter ν
μ€νΈ μμ...",
|
|
1718
|
+
"flutter_a.ci_test_passed": "β
ν
μ€νΈ ν΅κ³Ό",
|
|
1719
|
+
"flutter_a.ci_test_skipped_title": "Flutter ν
μ€νΈ 건λλ",
|
|
1720
|
+
"flutter_a.ci_test_skipped_body": "test/ ν΄λμ *_test.dart νμΌμ΄ μμ΄ flutter testλ₯Ό μ€ννμ§ μμμ΅λλ€",
|
|
1721
|
+
"flutter_a.ci_apk_start": "π¦ Flutter APK λΉλ μμ (debug)...",
|
|
1722
|
+
"flutter_a.ci_apk_done": "β
APK λΉλ μλ£",
|
|
1723
|
+
"flutter_a.ci_podfile_missing": "βΉοΈ ios/Podfileμ΄ μμ΄ pod installμ 건λλλλ€ (CocoaPods νλ¬κ·ΈμΈ μμ)",
|
|
1724
|
+
"flutter_a.ci_ios_start": "π¦ Flutter iOS λΉλ μμ...",
|
|
1725
|
+
"flutter_a.ci_ios_done": "β
iOS λΉλ μλ£",
|
|
1726
|
+
"flutter_a.ci_gate_results": "needs κ²°κ³Ό: {results}",
|
|
1727
|
+
"flutter_a.ci_gate_failed": "μ€ν¨νκ±°λ μ·¨μλ jobμ΄ μμ΅λλ€.",
|
|
1728
|
+
"flutter_a.ci_hdr_analyze_running": "## π Flutter CI (Analyze Only) μ§ν μ€...",
|
|
1729
|
+
"flutter_a.ci_hdr_running": "## π¨ Flutter CI μ§ν μ€...",
|
|
1730
|
+
"flutter_a.ci_status_skipped": "βΈοΈ μ€ν΅",
|
|
1731
|
+
"flutter_a.ci_status_running": "β³ μ§ν μ€...",
|
|
1732
|
+
"flutter_a.ci_status_disabled": "βΈοΈ λΉνμ±ν",
|
|
1733
|
+
"flutter_a.ci_table_head": "| κ²μ¬ νλͺ© | μν | μμ μκ° |",
|
|
1734
|
+
"flutter_a.ci_row_analyze_running": "| π Analyze | β³ μ§ν μ€... | - |",
|
|
1735
|
+
"flutter_a.ci_row_test_running": "| π§ͺ Test | β³ μ§ν μ€... | - |",
|
|
1736
|
+
"flutter_a.ci_row_android_pending": "| π€ Android λΉλ | {status} | - |",
|
|
1737
|
+
"flutter_a.ci_row_ios_pending": "| π iOS λΉλ | {status} | - |",
|
|
1738
|
+
"flutter_a.ci_info_head": "| νλͺ© | κ° |",
|
|
1739
|
+
"flutter_a.ci_row_branch": "| **λΈλμΉ** | `{branch}` |",
|
|
1740
|
+
"flutter_a.ci_row_commit": "| **컀λ°** | `{commit}` |",
|
|
1741
|
+
"flutter_a.ci_note_analyze_only_running": "βΉοΈ **Analyze Only λͺ¨λ**: λΉλ μμ΄ μ½λ λΆμλ§ μ€νλ©λλ€.",
|
|
1742
|
+
"flutter_a.ci_link_live_log": "**[π μ€μκ° λ‘κ·Έ 보기]({url})**",
|
|
1743
|
+
"flutter_a.ci_footer_auto_update": "*π€ μ΄ λκΈμ μλμΌλ‘ μ
λ°μ΄νΈλ©λλ€.*",
|
|
1744
|
+
"flutter_a.ci_log_comment_created": "β
μ§ν μν© λκΈ μμ± μλ£: #{id}",
|
|
1745
|
+
"flutter_a.ci_dur_min_sec": "{minutes}λΆ {seconds}μ΄",
|
|
1746
|
+
"flutter_a.ci_dur_sec": "{seconds}μ΄",
|
|
1747
|
+
"flutter_a.ci_log_analyze_result": "π μ½λ λΆμ κ²°κ³Ό: {status}, ν
μ€νΈ: {test} ({duration})",
|
|
1748
|
+
"flutter_a.ci_log_android_result": "π Android λΉλ κ²°κ³Ό: {status} ({duration})",
|
|
1749
|
+
"flutter_a.ci_log_ios_result": "π iOS λΉλ κ²°κ³Ό: {status} ({duration})",
|
|
1750
|
+
"flutter_a.ci_status_success": "β
μ±κ³΅",
|
|
1751
|
+
"flutter_a.ci_status_failure": "β μ€ν¨",
|
|
1752
|
+
"flutter_a.ci_status_no_tests": "βΈοΈ ν
μ€νΈ μμ",
|
|
1753
|
+
"flutter_a.ci_status_not_run": "βΈοΈ μ€ν μ λ¨",
|
|
1754
|
+
"flutter_a.ci_hdr_analyze_success": "## β
Flutter CI (Analyze Only) μ±κ³΅!",
|
|
1755
|
+
"flutter_a.ci_hdr_analyze_failure": "## β Flutter CI (Analyze Only) μ€ν¨",
|
|
1756
|
+
"flutter_a.ci_hdr_success": "## β
Flutter CI μ±κ³΅!",
|
|
1757
|
+
"flutter_a.ci_hdr_failure": "## β Flutter CI μ€ν¨",
|
|
1758
|
+
"flutter_a.ci_row_android_result": "| π€ Android λΉλ | {status} | {duration} |",
|
|
1759
|
+
"flutter_a.ci_row_ios_result": "| π iOS λΉλ | {status} | {duration} |",
|
|
1760
|
+
"flutter_a.ci_row_total": "| **μ΄ μμ μκ°** | {duration} |",
|
|
1761
|
+
"flutter_a.ci_note_analyze_only_done": "βΉοΈ **Analyze Only λͺ¨λ**: λΉλ μμ΄ μ½λ λΆμλ§ μ€νλμμ΅λλ€.",
|
|
1762
|
+
"flutter_a.ci_hdr_checks": "### π‘ νμΈ μ¬ν",
|
|
1763
|
+
"flutter_a.ci_analyze_fail_title": "**Analyze μ€ν¨ μ:**",
|
|
1764
|
+
"flutter_a.ci_analyze_fail_lint": "- `flutter analyze` λ‘컬μμ μ€ννμ¬ lint μ€λ₯ νμΈ",
|
|
1765
|
+
"flutter_a.ci_analyze_fail_fix": "- μ½λ μ€νμΌ λ° νμ
μ€λ₯ μμ ",
|
|
1766
|
+
"flutter_a.ci_test_fail_title": "**Test μ€ν¨ μ:**",
|
|
1767
|
+
"flutter_a.ci_test_fail_local": "- `flutter test` λ‘컬μμ μ€ννμ¬ μ€ν¨ν ν
μ€νΈ νμΈ",
|
|
1768
|
+
"flutter_a.ci_android_fail_title": "**Android λΉλ μ€ν¨ μ:**",
|
|
1769
|
+
"flutter_a.ci_android_fail_gradle": "- Gradle λΉλ λ‘κ·Έμμ μλ¬ νμΈ",
|
|
1770
|
+
"flutter_a.ci_android_fail_deps": "- μμ‘΄μ± λ²μ νΈνμ± νμΈ",
|
|
1771
|
+
"flutter_a.ci_ios_fail_title": "**iOS λΉλ μ€ν¨ μ:**",
|
|
1772
|
+
"flutter_a.ci_ios_fail_xcode": "- Xcode λΉλ λ‘κ·Έμμ μλ¬ νμΈ",
|
|
1773
|
+
"flutter_a.ci_ios_fail_pods": "- CocoaPods μμ‘΄μ± νμΈ",
|
|
1774
|
+
"flutter_a.ci_link_workflow_log": "**[π μν¬νλ‘μ° λ‘κ·Έ]({url})**",
|
|
1775
|
+
"flutter_a.ci_log_result_updated": "β
κ²°κ³Ό λκΈ μ
λ°μ΄νΈ μλ£",
|
|
1776
|
+
"flutter_a.ci_log_no_comment_id": "β οΈ λκΈ IDκ° μμ΄ μ
λ°μ΄νΈλ₯Ό 건λλλλ€.",
|
|
1777
|
+
# --- ios_test_tf ---
|
|
1778
|
+
"ios_test_tf.branch_check_log": "π λΈλμΉ μ‘΄μ¬ μ¬λΆ νμΈ: {branch}",
|
|
1779
|
+
"ios_test_tf.branch_exists_log": "β
λΈλμΉ μ‘΄μ¬ νμΈλ¨: {branch}",
|
|
1780
|
+
"ios_test_tf.branch_not_found_log": "β λΈλμΉλ₯Ό μ°Ύμ μ μμ: {branch}",
|
|
1781
|
+
"ios_test_tf.branch_missing_title": "π β **iOS TestFlight λΉλ μ€ν¨ - λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€**",
|
|
1782
|
+
"ios_test_tf.kv_head": "| νλͺ© | κ° |",
|
|
1783
|
+
"ios_test_tf.row_requested_branch": "| **μμ²λ λΈλμΉ** | `{branch}` |",
|
|
1784
|
+
"ios_test_tf.row_issue_pr": "| **μ΄μ/PR** | #{number} |",
|
|
1785
|
+
"ios_test_tf.hint_title": "### π‘ νμΈ μ¬ν",
|
|
1786
|
+
"ios_test_tf.hint_pushed": "1. λΈλμΉκ° μ격 μ μ₯μμ pushλμλμ§ νμΈνμΈμ",
|
|
1787
|
+
"ios_test_tf.hint_helper_branch": "2. \"Issue Helper\" λκΈμ λΈλμΉλͺ
μ΄ μ¬λ°λ₯Έμ§ νμΈνμΈμ",
|
|
1788
|
+
"ios_test_tf.hint_typo": "3. λΈλμΉλͺ
μ μ€νκ° μλμ§ νμΈνμΈμ",
|
|
1789
|
+
"ios_test_tf.workflow_log_link": "π [μν¬νλ‘μ° λ‘κ·Έ]({url})",
|
|
1790
|
+
"ios_test_tf.branch_not_found_fail": "λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€: {branch}",
|
|
1791
|
+
"ios_test_tf.branch_check_error_fail": "λΈλμΉ νμΈ μ€ μ€λ₯: {error}",
|
|
1792
|
+
"ios_test_tf.title_running": "## π iOS TestFlight λΉλ μ§ν μ€...",
|
|
1793
|
+
"ios_test_tf.table_header": "| λ¨κ³ | μν | μμ μκ° |",
|
|
1794
|
+
"ios_test_tf.step_prepare": "π§ μ€λΉ",
|
|
1795
|
+
"ios_test_tf.step_build": "π¨ IPA λΉλ",
|
|
1796
|
+
"ios_test_tf.step_deploy": "π€ TestFlight λ°°ν¬",
|
|
1797
|
+
"ios_test_tf.st_running": "β³ μ§ν μ€...",
|
|
1798
|
+
"ios_test_tf.st_waiting": "βΈοΈ λκΈ°",
|
|
1799
|
+
"ios_test_tf.st_done": "β
μλ£",
|
|
1800
|
+
"ios_test_tf.st_failed": "β μ€ν¨",
|
|
1801
|
+
"ios_test_tf.st_canceled": "βΈοΈ μ·¨μλ¨",
|
|
1802
|
+
"ios_test_tf.row_build_number": "| **λΉλ λ²νΈ** | `{build}` |",
|
|
1803
|
+
"ios_test_tf.row_app_version": "| **μ± λ²μ ** | `{version}({build})` |",
|
|
1804
|
+
"ios_test_tf.row_branch": "| **λΈλμΉ** | `{branch}` |",
|
|
1805
|
+
"ios_test_tf.row_commit": "| **컀λ°** | `{commit}` |",
|
|
1806
|
+
"ios_test_tf.row_total": "| **μ΄ μμ μκ°** | {elapsed} |",
|
|
1807
|
+
"ios_test_tf.live_log_link": "**[π μ€μκ° λ‘κ·Έ 보기]({url})**",
|
|
1808
|
+
"ios_test_tf.auto_update_note": "*π€ μ΄ λκΈμ μλμΌλ‘ μ
λ°μ΄νΈλ©λλ€.*",
|
|
1809
|
+
"ios_test_tf.log_progress_created": "β
μ§ν μν© λκΈ μμ± μλ£: #{id}",
|
|
1810
|
+
"ios_test_tf.elapsed_min_sec": "{m}λΆ {s}μ΄",
|
|
1811
|
+
"ios_test_tf.elapsed_sec": "{s}μ΄",
|
|
1812
|
+
"ios_test_tf.secrets_missing": "νμ GitHub Secretμ΄ λΉμ΄ μμ΅λλ€:{missing} (μν¬νλ‘μ° μλ¨ μ£Όμ μ°Έκ³ )",
|
|
1813
|
+
"ios_test_tf.export_options_missing": "ios/ExportOptions.plistκ° μμ΅λλ€ β μ μ₯μμ μΆκ°(컀λ°)νμΈμ.",
|
|
1814
|
+
"ios_test_tf.export_options_placeholders": "ios/ExportOptions.plistμ μ±μμ§μ§ μμ νλ μ΄μ€νλκ° λ¨μ μμ΅λλ€ β ν IDΒ·λ²λ€ IDΒ·νλ‘λΉμ λ νλ‘νμΌ μ΄λ¦μΌλ‘ λ°κΏ 컀λ°νμΈμ.",
|
|
1815
|
+
"ios_test_tf.fastfile_missing_error": "ios/fastlane/Fastfileμ΄ μμ΅λλ€ β μ μ₯μμ μΆκ°(컀λ°)νμΈμ.",
|
|
1816
|
+
"ios_test_tf.preflight_ok": "β
λ°°ν¬ μ€μ νμΈ μλ£",
|
|
1817
|
+
"ios_test_tf.event_dispatch": "π repository_dispatch μ΄λ²€νΈ κ°μ§",
|
|
1818
|
+
"ios_test_tf.event_pr_number": " PR λ²νΈ: #{pr}",
|
|
1819
|
+
"ios_test_tf.event_build_number_pr": " λΉλ λ²νΈ: {build} (PR λ²νΈ μ¬μ©)",
|
|
1820
|
+
"ios_test_tf.event_workflow_dispatch": "π workflow_dispatch μ΄λ²€νΈ κ°μ§",
|
|
1821
|
+
"ios_test_tf.event_build_number_default": " λΉλ λ²νΈ: {build} (κΈ°λ³Έκ°)",
|
|
1822
|
+
"ios_test_tf.test_build_log": "π ν
μ€νΈ λΉλ: λ²μ ={version}, λΉλλ²νΈ={build}",
|
|
1823
|
+
"ios_test_tf.branch_name_log": "πΏ λΈλμΉλͺ
: {branch}",
|
|
1824
|
+
"ios_test_tf.issue_number_missing": "β οΈ λΈλμΉλͺ
μμ μ΄μ λ²νΈλ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
1825
|
+
"ios_test_tf.issue_number_extracted": "β
μΆμΆλ μ΄μ λ²νΈ: #{number}",
|
|
1826
|
+
"ios_test_tf.issue_fetching": "π GitHub APIλ‘ μ΄μ μ 보 μ‘°ν μ€...",
|
|
1827
|
+
"ios_test_tf.issue_title_default": "μ΄μ μ 보 μμ",
|
|
1828
|
+
"ios_test_tf.issue_not_found": "β οΈ μ΄μ #{number}λ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
1829
|
+
"ios_test_tf.issue_title_log": "π μ΄μ μ λͺ©: {title}",
|
|
1830
|
+
"ios_test_tf.issue_state_log": "π μ΄μ μν: {state}",
|
|
1831
|
+
"ios_test_tf.notes_build": "ν
μ€νΈ λΉλ #{build}",
|
|
1832
|
+
"ios_test_tf.notes_branch": "λΈλμΉ: {branch}",
|
|
1833
|
+
"ios_test_tf.notes_commit": "컀λ°: {commit}",
|
|
1834
|
+
"ios_test_tf.notes_date": "λ μ§: {date}",
|
|
1835
|
+
"ios_test_tf.notes_issue_header": "κ΄λ ¨ μ΄μ:",
|
|
1836
|
+
"ios_test_tf.notes_generated": "π μμ±λ λ¦΄λ¦¬μ¦ λ
ΈνΈ:",
|
|
1837
|
+
"ios_test_tf.title_prepare_failed": "## π β iOS TestFlight λΉλ μ€ν¨",
|
|
1838
|
+
"ios_test_tf.prepare_error": "β **νκ²½ μ€λΉ μ€ μ€λ₯κ° λ°μνμ΅λλ€.**",
|
|
1839
|
+
"ios_test_tf.run_log_check_link": "π [μν¬νλ‘μ° μ€ν λ‘κ·Έ νμΈ]({url})",
|
|
1840
|
+
"ios_test_tf.log_prepare_failed": "β μ§ν μν© μ
λ°μ΄νΈ μλ£: μ€λΉ μ€ν¨",
|
|
1841
|
+
"ios_test_tf.log_prepare_done": "β
μ§ν μν© μ
λ°μ΄νΈ μλ£: μ€λΉ μλ£ ({elapsed})",
|
|
1842
|
+
"ios_test_tf.podfile_skip": "βΉοΈ ios/Podfileμ΄ μμ΄ pod installμ 건λλλλ€ (CocoaPods νλ¬κ·ΈμΈ μμ)",
|
|
1843
|
+
"ios_test_tf.plist_missing": "β ios/ExportOptions.plistκ° μμ΅λλ€!",
|
|
1844
|
+
"ios_test_tf.plist_missing_hint": "ios/ExportOptions.plistλ₯Ό μ μ₯μμ μΆκ°(컀λ°)νμΈμ. νμν Secretsλ μν¬νλ‘μ° μλ¨ μ£Όμμ μ°Έκ³ νμΈμ.",
|
|
1845
|
+
"ios_test_tf.plist_ok": "β
ExportOptions.plist νμΈλ¨",
|
|
1846
|
+
"ios_test_tf.title_ipa_done": "## π β
iOS λΉλ μλ£",
|
|
1847
|
+
"ios_test_tf.log_ipa_done": "β
μ§ν μν© μ
λ°μ΄νΈ μλ£: IPA λΉλ μλ£ ({elapsed})",
|
|
1848
|
+
"ios_test_tf.title_ipa_failed": "## π β iOS TestFlight λΉλ μ€ν¨",
|
|
1849
|
+
"ios_test_tf.ipa_error": "β **IPA λΉλ μ€ μ€λ₯κ° λ°μνμ΅λλ€.**",
|
|
1850
|
+
"ios_test_tf.log_ipa_failed": "β μ§ν μν© μ
λ°μ΄νΈ μλ£: IPA λΉλ μ€ν¨",
|
|
1851
|
+
"ios_test_tf.fastfile_missing": "β ios/fastlane/Fastfileμ΄ μμ΅λλ€!",
|
|
1852
|
+
"ios_test_tf.fastfile_missing_hint": "ios/fastlane/Fastfileμ μ μ₯μμ μΆκ°(컀λ°)νμΈμ. νμν Secretsλ μν¬νλ‘μ° μλ¨ μ£Όμμ μ°Έκ³ νμΈμ.",
|
|
1853
|
+
"ios_test_tf.fastfile_ok": "β
Fastfile νμΈλ¨: ios/fastlane/Fastfile",
|
|
1854
|
+
"ios_test_tf.gemfile_repo": "βΉοΈ μ μ₯μμ Gemfileμ μ¬μ©ν©λλ€",
|
|
1855
|
+
"ios_test_tf.ipa_missing": "β IPA νμΌμ μ°Ύμ μ μμ΅λλ€!",
|
|
1856
|
+
"ios_test_tf.default_notes_echo": "π κΈ°λ³Έ Release Notes: {notes}",
|
|
1857
|
+
"ios_test_tf.upload_ok": "β
TestFlight ν
μ€νΈ λΉλ μ
λ‘λ μ±κ³΅!",
|
|
1858
|
+
"ios_test_tf.upload_version": "λ²μ : {version}",
|
|
1859
|
+
"ios_test_tf.upload_build": "λΉλ λ²νΈ: {build}",
|
|
1860
|
+
"ios_test_tf.upload_pr": "PR λ²νΈ: {pr}",
|
|
1861
|
+
"ios_test_tf.upload_branch": "λΈλμΉ: {branch}",
|
|
1862
|
+
"ios_test_tf.upload_commit": "컀λ°: {sha}",
|
|
1863
|
+
"ios_test_tf.upload_issue": "κ΄λ ¨ μ΄μ: {url}",
|
|
1864
|
+
"ios_test_tf.upload_failed": "β TestFlight ν
μ€νΈ λΉλ μ
λ‘λ μ€ν¨!",
|
|
1865
|
+
"ios_test_tf.check_logs": "λ‘κ·Έλ₯Ό νμΈν΄μ£ΌμΈμ.",
|
|
1866
|
+
"ios_test_tf.title_deploy_done": "## π β
iOS TestFlight λ°°ν¬ μλ£",
|
|
1867
|
+
"ios_test_tf.download_hint": "π± **TestFlightμμ ν
μ€νΈ μ±μ λ€μ΄λ‘λν μ μμ΅λλ€.**",
|
|
1868
|
+
"ios_test_tf.run_log_link": "π [μν¬νλ‘μ° μ€ν λ‘κ·Έ]({url})",
|
|
1869
|
+
"ios_test_tf.log_all_done": "β
μ§ν μν© μ΅μ’
μ
λ°μ΄νΈ μλ£: μ 체 μ±κ³΅ ({elapsed})",
|
|
1870
|
+
"ios_test_tf.title_deploy_failed": "## π β iOS TestFlight λ°°ν¬ μ€ν¨",
|
|
1871
|
+
"ios_test_tf.deploy_error": "β **TestFlight λ°°ν¬ μ€ μ€λ₯κ° λ°μνμ΅λλ€.**",
|
|
1872
|
+
"ios_test_tf.log_deploy_failed": "β μ§ν μν© μ΅μ’
μ
λ°μ΄νΈ μλ£: TestFlight λ°°ν¬ μ€ν¨",
|
|
1873
|
+
# --- ios_testflight ---
|
|
1874
|
+
"ios_testflight.secrets_missing": "νμ GitHub Secretμ΄ λΉμ΄ μμ΅λλ€:{missing} (μν¬νλ‘μ° μλ¨ μ£Όμ μ°Έκ³ )",
|
|
1875
|
+
"ios_testflight.export_options_missing": "ios/ExportOptions.plistκ° μμ΅λλ€ β μ μ₯μμ μΆκ°(컀λ°)νμΈμ.",
|
|
1876
|
+
"ios_testflight.export_options_placeholders": "ios/ExportOptions.plistμ μ±μμ§μ§ μμ νλ μ΄μ€νλκ° λ¨μ μμ΅λλ€ β ν IDΒ·λ²λ€ IDΒ·νλ‘λΉμ λ νλ‘νμΌ μ΄λ¦μΌλ‘ λ°κΏ 컀λ°νμΈμ.",
|
|
1877
|
+
"ios_testflight.fastfile_missing_error": "ios/fastlane/Fastfileμ΄ μμ΅λλ€ β μ μ₯μμ μΆκ°(컀λ°)νμΈμ.",
|
|
1878
|
+
"ios_testflight.preflight_ok": "β
λ°°ν¬ μ€μ νμΈ μλ£",
|
|
1879
|
+
"ios_testflight.podfile_skip": "βΉοΈ ios/Podfileμ΄ μμ΄ pod installμ 건λλλλ€ (CocoaPods νλ¬κ·ΈμΈ μμ)",
|
|
1880
|
+
"ios_testflight.version_info": "π λ²μ : {version} (λΉλλ²νΈ: {build})",
|
|
1881
|
+
"ios_testflight.default_notes": "v{version} μ
λ°μ΄νΈ",
|
|
1882
|
+
"ios_testflight.plist_placeholders": "β ios/ExportOptions.plistμ μ±μμ§μ§ μμ νλ μ΄μ€νλκ° λ¨μ μμ΅λλ€:",
|
|
1883
|
+
"ios_testflight.plist_placeholders_hint": "ν IDΒ·λ²λ€ IDΒ·νλ‘λΉμ λ νλ‘νμΌ μ΄λ¦μΌλ‘ λ°κΏ 컀λ°ν λ€ λ€μ μ€ννμΈμ.",
|
|
1884
|
+
"ios_testflight.fastfile_missing": "β ios/fastlane/Fastfileμ΄ μμ΅λλ€!",
|
|
1885
|
+
"ios_testflight.fastfile_missing_hint": "ios/fastlane/Fastfileμ μ μ₯μμ μΆκ°(컀λ°)νμΈμ. νμν Secretsλ μν¬νλ‘μ° μλ¨ μ£Όμμ μ°Έκ³ νμΈμ.",
|
|
1886
|
+
"ios_testflight.fastfile_ok": "β
Fastfile νμΈλ¨: ios/fastlane/Fastfile",
|
|
1887
|
+
"ios_testflight.gemfile_repo": "βΉοΈ μ μ₯μμ Gemfileμ μ¬μ©ν©λλ€",
|
|
1888
|
+
"ios_testflight.ipa_missing": "β IPA νμΌμ μ°Ύμ μ μμ΅λλ€!",
|
|
1889
|
+
"ios_testflight.default_notes_echo": "π κΈ°λ³Έ Release Notes: {notes}",
|
|
1890
|
+
"ios_testflight.upload_ok": "β
TestFlight μ
λ‘λ μ±κ³΅!",
|
|
1891
|
+
"ios_testflight.upload_version": "π± λ²μ : {version}",
|
|
1892
|
+
"ios_testflight.upload_build": "π’ λΉλλ²νΈ: {build}",
|
|
1893
|
+
"ios_testflight.upload_commit": "π 컀λ°: {sha}",
|
|
1894
|
+
"ios_testflight.upload_failed": "β TestFlight μ
λ‘λ μ€ν¨!",
|
|
1895
|
+
"ios_testflight.check_logs": "λ‘κ·Έλ₯Ό νμΈν΄μ£ΌμΈμ.",
|
|
1896
|
+
# --- issue_helper ---
|
|
1897
|
+
"issue_helper.err_list_comments": "μ΄μ μ½λ©νΈ μ‘°ν μ€ν¨({status}): {issue_number}",
|
|
1898
|
+
"issue_helper.err_update_comment": "μ½λ©νΈ κ°±μ μ€ν¨({status})",
|
|
1899
|
+
"issue_helper.comment_updated": "κΈ°μ‘΄ μ½λ©νΈλ₯Ό κ°±μ νμ΅λλ€.",
|
|
1900
|
+
"issue_helper.err_create_comment": "μ½λ©νΈ μμ± μ€ν¨({status})",
|
|
1901
|
+
"issue_helper.comment_created": "μ μ½λ©νΈλ₯Ό μμ±νμ΅λλ€.",
|
|
1902
|
+
"issue_helper.err_repo_info": "λ ν¬ μ 보 μ‘°ν μ€ν¨({status})",
|
|
1903
|
+
"issue_helper.err_base_ref": "base λΈλμΉ ref μ‘°ν μ€ν¨({base}, {status})",
|
|
1904
|
+
"issue_helper.branch_exists": "λΈλμΉκ° μ΄λ―Έ μ‘΄μ¬ν¨, 건λλ: {branch_name}",
|
|
1905
|
+
"issue_helper.err_create_branch": "λΈλμΉ μμ± μ€ν¨({branch_name}, {status})",
|
|
1906
|
+
"issue_helper.branch_created": "λΈλμΉ μμ±λ¨: {branch_name}",
|
|
1907
|
+
"issue_helper.warn_issue_missing": "::warning::μ΄μ #{n}μ΄ λ ν¬μ μμ΄ PR λ³Έλ¬Έ Closes μ°κ²°μμ μ μΈν©λλ€",
|
|
1908
|
+
"issue_helper.warn_is_pr": "::warning::#{n}μ μ΄μκ° μλλΌ PRμ΄λΌ Closes μ°κ²°μμ μ μΈν©λλ€",
|
|
1909
|
+
"issue_helper.issue_check_failed": "μ΄μ #{n} νμΈ μ€ν¨({status}) β νμΈνμ§ λͺ»ν΄ κ·Έλλ‘ μ°κ²°ν©λλ€",
|
|
1910
|
+
"issue_helper.no_issue_to_link": "μ°κ²°ν μ΄μκ° μμ β 건λλ (PR #{pr_number})",
|
|
1911
|
+
"issue_helper.err_get_pr": "PR μ‘°ν μ€ν¨({status}): {pr_number}",
|
|
1912
|
+
"issue_helper.link_unchanged": "μ΄μ μ°κ²° λ³κ²½ μμ β 건λλ (PR #{pr_number})",
|
|
1913
|
+
"issue_helper.err_update_pr": "PR λ³Έλ¬Έ κ°±μ μ€ν¨({status}): {pr_number}",
|
|
1914
|
+
"issue_helper.link_done": "μ΄μ μ°κ²° μλ£: {numbers} (PR #{pr_number})",
|
|
1915
|
+
"issue_helper.err_no_event_path": "ERROR: GITHUB_EVENT_PATHκ° μμ΅λλ€.",
|
|
1916
|
+
"issue_helper.err_event_payload": "ERROR: μ΄λ²€νΈ νμ΄λ‘λλ₯Ό μ½μ μ μμ΅λλ€: {error}",
|
|
1917
|
+
"issue_helper.not_relevant_event": "μ΄λ¦Ό λλ μ λͺ© λ³κ²½ μ΄λ²€νΈκ° μλ β μ’
λ£",
|
|
1918
|
+
"issue_helper.err_repo_format": "ERROR: GITHUB_REPOSITORY νμμ΄ μ¬λ°λ₯΄μ§ μμ΅λλ€: {repo}",
|
|
1919
|
+
"issue_helper.err_no_token": "ERROR: GITHUB_TOKENμ΄ μμ΅λλ€.",
|
|
1920
|
+
"issue_helper.commit_template_default": "${issueTitle} : feat : {λ³κ²½ μ¬νμ λν μ€λͺ
} ${issueUrl}",
|
|
1921
|
+
"issue_helper.branch_title": "λΈλμΉλͺ
",
|
|
1922
|
+
"issue_helper.commit_title": "μ»€λ° λ©μμ§",
|
|
1923
|
+
"issue_helper.no_issue_numbers": "μ΄μ λ²νΈκ° μμ β 건λλ",
|
|
1924
|
+
"issue_helper.run_failed": "μ€ν μ€ν¨: {error}",
|
|
1925
|
+
# --- truncate ---
|
|
1926
|
+
"truncate.file_missing": "λ¦΄λ¦¬μ¦ λ
ΈνΈ νμΌ μμ, 건λλ: {path}",
|
|
1927
|
+
"truncate.within_limit": "νλ μ΄λ΄ ({length}/{limit} {mode}), μλ₯΄μ§ μμ: {path}",
|
|
1928
|
+
"truncate.truncated": "νλ μ΄κ³Ό ({length} -> {limit} {mode} μ΄νλ‘ μ λ¨): {path}",
|
|
1929
|
+
"truncate.limit_positive": "ERROR: limitμ μμμ¬μΌ ν¨: {limit}",
|
|
1930
|
+
# --- version ---
|
|
1931
|
+
"version.bump_help": "μΉκ²© ν (κΈ°λ³Έ patch β μ§μ μ νλ©΄ κΈ°μ‘΄ λμκ³Ό λμΌ)",
|
|
1932
|
+
# --- wf_aisum ---
|
|
1933
|
+
"wf_aisum.no_issue_in_branch": "λΈλμΉλͺ
μμ μ΄μ λ²νΈλ₯Ό μ°Ύμ§ λͺ»ν¨ β 건λλ: {ref}",
|
|
1934
|
+
# --- wf_changelog ---
|
|
1935
|
+
"wf_changelog.pr_list_limit": "gh pr listκ° --limit 200μ λλ¬νμ΅λλ€ β μ€λλ λ³ν© PRμ΄ λλ½λμ μ μμ΅λλ€ (μ‘°νλ PR: {count})",
|
|
1936
|
+
"wf_changelog.no_issues": "μ΄λ² 릴리μ€μ μ°κ²°ν μ΄μ μμ β 건λλ",
|
|
1937
|
+
"wf_changelog.issues_linked": "μ΄μ μ°κ²°: {issues}",
|
|
1938
|
+
"wf_changelog.merge_conflict": "λ¦΄λ¦¬μ€ PRμ΄ {prod}μ μΆ©λν©λλ€ (λ²μ νμΌΒ·CHANGELOG λ±) β {prod}μλ§ μλ 컀λ°μ {dev}μ λ³ν©ν λ€ pushνμΈμ: git checkout {dev} && git merge origin/{prod} (λ²μ μ€ μΆ©λμ μ΄λ μͺ½μ νν΄λ λ€μ μ€νμ΄ μλ§κ² λ€μ νμ ν©λλ€)",
|
|
1939
|
+
"wf_changelog.merge_commit_disabled": "μ΄ λ ν¬λ merge commitμ΄ λΉνμ±νλμ΄ μμ΅λλ€ β Settingsμμ 'Allow merge commits'λ₯Ό μΌμΈμ; λ¦΄λ¦¬μ€ κ°μ§λ merge commit subjectλ₯Ό μ¬μ©ν©λλ€",
|
|
1940
|
+
"wf_changelog.merge_confirmed": "PR #{pr} λ³ν© νμΈ (κ²½κ³Ό {elapsed}s)",
|
|
1941
|
+
"wf_changelog.merge_timeout": "PR #{pr} λ³ν©μ {max}s λ΄μ νμΈνμ§ λͺ»νμ΅λλ€ β RELEASE-PUBLISH μλ νΈλ¦¬κ±°λ₯Ό 건λλλλ€. WORKFLOW_PATμ΄ λ±λ‘λμ΄ μλ€λ©΄ κΈ°μ‘΄ κ²½λ‘λ‘ μ μ μ§νλλ©°, μλ€λ©΄ νμ μ RELEASE-PUBLISHλ₯Ό μλμΌλ‘ workflow_dispatch νμΈμ.",
|
|
1942
|
+
"wf_changelog.release_publish_triggered": "RELEASE-PUBLISH workflow_dispatch νΈλ¦¬κ±° μμ² μλ£ (WORKFLOW_PAT μμ΄λ λμ)",
|
|
1943
|
+
# --- wf_preview ---
|
|
1944
|
+
"wf_preview.chk_deleted_3": "3. λΈλμΉκ° μμ λμ§ μμλμ§ νμΈνμΈμ",
|
|
1945
|
+
"wf_preview.chk_helper_exists": "1. Issue Helper λκΈμ΄ μ‘΄μ¬νλμ§ νμΈνμΈμ",
|
|
1946
|
+
"wf_preview.chk_helper_marker": "3. `ISSUE_HELPER_MARKER` νκ²½λ³μκ° μ¬λ°λ₯Έμ§ νμΈνμΈμ",
|
|
1947
|
+
"wf_preview.chk_helper_section": "2. λκΈμ `### λΈλμΉ` μΉμ
μ΄ μλμ§ νμΈνμΈμ",
|
|
1948
|
+
"wf_preview.chk_name_1": "1. λΈλμΉλͺ
μ΄ μ ννμ§ νμΈνμΈμ",
|
|
1949
|
+
"wf_preview.chk_name_2": "2. λΈλμΉλͺ
μ΄ μ ννμ§ νμΈνμΈμ",
|
|
1950
|
+
"wf_preview.chk_pushed_1": "1. λΈλμΉκ° pushλμλμ§ νμΈνμΈμ",
|
|
1951
|
+
"wf_preview.chk_pushed_2": "2. λΈλμΉκ° pushλμλμ§ νμΈνμΈμ",
|
|
1952
|
+
"wf_preview.cmd_advanced": "<summary>π§ κ³ κΈ λͺ
λ Ήμ΄ (λ€λ₯Έ Issue/PRμμ μ μ΄)</summary>",
|
|
1953
|
+
"wf_preview.cmd_build": "| `/wizard server build` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |",
|
|
1954
|
+
"wf_preview.cmd_build_branch": "| `/wizard server build {branchName}` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |",
|
|
1955
|
+
"wf_preview.cmd_destroy": "| `/wizard server destroy` | Preview νκ²½ μμ |",
|
|
1956
|
+
"wf_preview.cmd_destroy_branch": "| `/wizard server destroy {branchName}` | Preview νκ²½ μμ |",
|
|
1957
|
+
"wf_preview.cmd_detected_build": "β
λͺ
λ Ήμ΄ κ°μ§: build",
|
|
1958
|
+
"wf_preview.cmd_detected_build_branch": "β
λͺ
λ Ήμ΄ κ°μ§: build (λΈλμΉ: {branch})",
|
|
1959
|
+
"wf_preview.cmd_detected_destroy": "β
λͺ
λ Ήμ΄ κ°μ§: destroy",
|
|
1960
|
+
"wf_preview.cmd_detected_destroy_branch": "β
λͺ
λ Ήμ΄ κ°μ§: destroy (λΈλμΉ: {branch})",
|
|
1961
|
+
"wf_preview.cmd_detected_status": "β
λͺ
λ Ήμ΄ κ°μ§: status",
|
|
1962
|
+
"wf_preview.cmd_detected_status_branch": "β
λͺ
λ Ήμ΄ κ°μ§: status (λΈλμΉ: {branch})",
|
|
1963
|
+
"wf_preview.cmd_from_issue": "βΉοΈ Issue λκΈμμ λͺ
λ Ήμ΄ κ°μ§",
|
|
1964
|
+
"wf_preview.cmd_from_pr": "βΉοΈ PR λκΈμμ λͺ
λ Ήμ΄ κ°μ§",
|
|
1965
|
+
"wf_preview.cmd_not_wizard": "βΉοΈ /wizard server λͺ
λ Ήμ΄κ° μλ",
|
|
1966
|
+
"wf_preview.cmd_status": "| `/wizard server status` | νμ¬ μν νμΈ |",
|
|
1967
|
+
"wf_preview.cmd_status_branch": "| `/wizard server status {branchName}` | νμ¬ μν νμΈ |",
|
|
1968
|
+
"wf_preview.deploy_hint": "λ°°ν¬νλ €λ©΄: `/wizard server build`",
|
|
1969
|
+
"wf_preview.deploy_hint_branch": "λ°°ν¬νλ €λ©΄: `/wizard server build {branchName}`",
|
|
1970
|
+
"wf_preview.done_label": "μλ£",
|
|
1971
|
+
"wf_preview.dur_min_sec": "{minutes}λΆ {seconds}μ΄",
|
|
1972
|
+
"wf_preview.dur_sec": "{seconds}μ΄",
|
|
1973
|
+
"wf_preview.env_branch": "| **λΈλμΉ** | `{branchName}` |",
|
|
1974
|
+
"wf_preview.env_commit": "| **컀λ°** | `{sha}` |",
|
|
1975
|
+
"wf_preview.env_container_issue": "| **컨ν
μ΄λ** | `{projectName}-pr-{issueNumber}` |",
|
|
1976
|
+
"wf_preview.env_container_name": "| **컨ν
μ΄λ** | `{containerName}` |",
|
|
1977
|
+
"wf_preview.env_container_num": "| **컨ν
μ΄λ** | `{projectName}-pr-{number}` |",
|
|
1978
|
+
"wf_preview.env_container_pr": "| **컨ν
μ΄λ** | `{projectName}-pr-{prNumber}` |",
|
|
1979
|
+
"wf_preview.env_marker": "| **λ§μ»€** | `{marker}` |",
|
|
1980
|
+
"wf_preview.env_status_absent": "| **μν** | π΄ Not Found |",
|
|
1981
|
+
"wf_preview.env_status_deleted": "| **μν** | μμ λ¨ |",
|
|
1982
|
+
"wf_preview.env_status_running": "| **μν** | π’ Running |",
|
|
1983
|
+
"wf_preview.fail_branch_missing": "λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€",
|
|
1984
|
+
"wf_preview.fail_branch_missing_named": "λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€: {branchName}",
|
|
1985
|
+
"wf_preview.footer_context": "*π€ μ΄ λκΈμ {contextType} Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*",
|
|
1986
|
+
"wf_preview.footer_custom": "*π€ μ΄ λκΈμ Custom Branch Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*",
|
|
1987
|
+
"wf_preview.footer_generic": "*π€ μ΄ λκΈμ Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*",
|
|
1988
|
+
"wf_preview.footer_issue": "*π€ μ΄ λκΈμ Issue Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*",
|
|
1989
|
+
"wf_preview.footer_pr": "*π€ μ΄ λκΈμ PR Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*",
|
|
1990
|
+
"wf_preview.footer_pr_issue": "*π€ μ΄ λκΈμ PR/Issue Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*",
|
|
1991
|
+
"wf_preview.footer_progress": "*π€ μ΄ λκΈμ μλμΌλ‘ μ
λ°μ΄νΈλ©λλ€.*",
|
|
1992
|
+
"wf_preview.hint_docker": "- Docker μ΄λ―Έμ§ λΉλ μ€ν¨",
|
|
1993
|
+
"wf_preview.hint_docker_go": "- Docker μ΄λ―Έμ§ λΉλ μ€ν¨ (Go μμ‘΄μ±/λΉλ λ¬Έμ )",
|
|
1994
|
+
"wf_preview.hint_docker_python": "- Docker μ΄λ―Έμ§ λΉλ μ€ν¨ (Python μμ‘΄μ± λ¬Έμ )",
|
|
1995
|
+
"wf_preview.hint_env_missing": "- νκ²½λ³μ λλ½ (.env νμΌ μ€μ νμΈ)",
|
|
1996
|
+
"wf_preview.hint_gradle": "- Gradle λΉλ μ€ν¨",
|
|
1997
|
+
"wf_preview.hint_health_timeout": "- Health Check νμμμ (120μ΄ λ΄ κΈ°λ μλ£ μλ¨)",
|
|
1998
|
+
"wf_preview.hint_secrets": "- νμ Secret(DOCKERHUB_*, SERVER_*) λ―Έλ±λ‘ λλ Dockerfile μμ β λ‘κ·Έμ \"λ°°ν¬ μ¬μ μ κ²\" λ¨κ³ νμΈ",
|
|
1999
|
+
"wf_preview.hint_server_conn": "- μλ² μ°κ²° λ¬Έμ ",
|
|
2000
|
+
"wf_preview.hint_start": "- 컨ν
μ΄λ μμ μ€ν¨",
|
|
2001
|
+
"wf_preview.hint_start_go": "- 컨ν
μ΄λ μμ μ€ν¨ (μ ν리μΌμ΄μ
κΈ°λ μ€λ₯)",
|
|
2002
|
+
"wf_preview.hint_start_python": "- 컨ν
μ΄λ μμ μ€ν¨ (FastAPI/Uvicorn κΈ°λ μ€λ₯)",
|
|
2003
|
+
"wf_preview.hint_start_spring": "- 컨ν
μ΄λ μμ μ€ν¨ (Spring Boot κΈ°λ μ€λ₯)",
|
|
2004
|
+
"wf_preview.line_branch": "**λΈλμΉ**: `{branchName}`",
|
|
2005
|
+
"wf_preview.line_commit": "**컀λ°**: `{sha}`",
|
|
2006
|
+
"wf_preview.link_build_logs": "**[π λΉλ/λ°°ν¬ λ‘κ·Έ νμΈ]({runUrl})**",
|
|
2007
|
+
"wf_preview.link_logs": "**[π μ€μκ° λ‘κ·Έ 보기]({runUrl})**",
|
|
2008
|
+
"wf_preview.log_branch_exists": "β
λΈλμΉ μ‘΄μ¬: {branchName}",
|
|
2009
|
+
"wf_preview.log_branch_found": "β
λΈλμΉ λ°κ²¬: {branchName}",
|
|
2010
|
+
"wf_preview.log_branch_missing": "β λΈλμΉ μμ: {branchName}",
|
|
2011
|
+
"wf_preview.log_check_branch": "π λΈλμΉ νμΈ: {branchName}",
|
|
2012
|
+
"wf_preview.log_check_exists": "π λΈλμΉ μ‘΄μ¬ νμΈ: {branchName}",
|
|
2013
|
+
"wf_preview.log_hash": "β
ν΄μ μμ±: custom-{hashStr}",
|
|
2014
|
+
"wf_preview.log_helper_no_branch": "β οΈ Issue Helper λκΈμμ λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
2015
|
+
"wf_preview.log_issue_number": "β
Issue λ²νΈ μΆμΆ: #{n}",
|
|
2016
|
+
"wf_preview.log_marker": "π λ§μ»€: {marker}",
|
|
2017
|
+
"wf_preview.log_search_branch": "π Issue #{issueNumber}μμ λΈλμΉ κ²μ μ€...",
|
|
2018
|
+
"wf_preview.next_logs": "1. μ λ§ν¬μμ λΉλ/λ°°ν¬ λ‘κ·Έλ₯Ό νμΈνμΈμ",
|
|
2019
|
+
"wf_preview.next_retry": "2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ: `/wizard server build`",
|
|
2020
|
+
"wf_preview.next_retry_branch": "2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ: `/wizard server build {branchName}`",
|
|
2021
|
+
"wf_preview.precheck_dockerfile_body": "{path} νμΌμ΄ μμ΅λλ€. μ΄ μν¬νλ‘μ°λ Docker μ΄λ―Έμ§λ‘ λ°°ν¬νλ―λ‘ Dockerfileμ΄ νμν©λλ€ (μλ² λ°°ν¬λ₯Ό νμ§ μλλ€λ©΄ μ΄ μν¬νλ‘μ° νμΌμ μμ νμΈμ)",
|
|
2022
|
+
"wf_preview.precheck_dockerfile_title": "Dockerfile μμ",
|
|
2023
|
+
"wf_preview.precheck_ok": "β
μ¬μ μ κ² ν΅κ³Ό: νμ Secretκ³Ό Dockerfileμ΄ λͺ¨λ μμ΅λλ€",
|
|
2024
|
+
"wf_preview.precheck_secret_body": "λ±λ‘λμ§ μμ GitHub Secret:{missing} β Settings β Secrets and variables β Actionsμμ λ±λ‘νμΈμ",
|
|
2025
|
+
"wf_preview.precheck_secret_title": "νμ Secret λλ½",
|
|
2026
|
+
"wf_preview.r_container_absent": "β 컨ν
μ΄λ μμ",
|
|
2027
|
+
"wf_preview.r_container_confirmed": "β
컨ν
μ΄λ μ€ν νμΈλ¨",
|
|
2028
|
+
"wf_preview.r_container_exited": "β 컨ν
μ΄λ λΉμ μ μ’
λ£!",
|
|
2029
|
+
"wf_preview.r_container_logs": "π 컨ν
μ΄λ λ‘κ·Έ (μ΅κ·Ό 100μ€):",
|
|
2030
|
+
"wf_preview.r_container_missing_info": "βΉοΈ 컨ν
μ΄λκ° μ‘΄μ¬νμ§ μμ: {container_name}",
|
|
2031
|
+
"wf_preview.r_container_name": "π 컨ν
μ΄λ: {container_name}",
|
|
2032
|
+
"wf_preview.r_container_new_named": "π³ μ 컨ν
μ΄λ μμ: {container_name}",
|
|
2033
|
+
"wf_preview.r_container_removing": "π³ 컨ν
μ΄λ μμ μ€...",
|
|
2034
|
+
"wf_preview.r_container_removing_named": "ποΈ μ»¨ν
μ΄λ μμ μ€: {container_name}",
|
|
2035
|
+
"wf_preview.r_container_running": "β
컨ν
μ΄λ μ€ν μ€",
|
|
2036
|
+
"wf_preview.r_container_starting": "π³ μ 컨ν
μ΄λ μ€ν μ€...",
|
|
2037
|
+
"wf_preview.r_deploy_done": "β
λ°°ν¬ μλ£!",
|
|
2038
|
+
"wf_preview.r_deploy_failed_not_running": "β λ°°ν¬ μ€ν¨: 컨ν
μ΄λκ° μ€νλμ§ μμ",
|
|
2039
|
+
"wf_preview.r_deploy_head_custom": "π Custom Branch Preview λ°°ν¬ μμ",
|
|
2040
|
+
"wf_preview.r_deploy_head_custom_short": "π Custom Branch Preview λ°°ν¬",
|
|
2041
|
+
"wf_preview.r_deploy_head_issue": "π Issue Preview λ°°ν¬ μμ",
|
|
2042
|
+
"wf_preview.r_deploy_head_pr": "π PR Preview λ°°ν¬ μμ",
|
|
2043
|
+
"wf_preview.r_destroy_head": "ποΈ Preview μμ ",
|
|
2044
|
+
"wf_preview.r_destroy_head_custom": "ποΈ Custom Branch Preview μμ ",
|
|
2045
|
+
"wf_preview.r_destroy_head_pr": "ποΈ PR Preview μμ ",
|
|
2046
|
+
"wf_preview.r_domain": "π λλ©μΈ: {domain}",
|
|
2047
|
+
"wf_preview.r_existing_cleanup": "ποΈ κΈ°μ‘΄ 컨ν
μ΄λ μ 리 μ€...",
|
|
2048
|
+
"wf_preview.r_existing_removed": "ποΈ κΈ°μ‘΄ 컨ν
μ΄λ μμ : {container_name}",
|
|
2049
|
+
"wf_preview.r_hc_done": "β
λ°°ν¬ λ° Health Check μλ£! (λ°©μ: {health_check_method})",
|
|
2050
|
+
"wf_preview.r_hc_ok_http": "β
μ μ κΈ°λ νμΈ! (HTTP μλ΅: {health_path})",
|
|
2051
|
+
"wf_preview.r_hc_ok_log": "β
μ μ κΈ°λ νμΈ! (λ‘κ·Έ ν¨ν΄)",
|
|
2052
|
+
"wf_preview.r_hc_start": "β³ Health Check μμ (μ΅λ 120μ΄ λκΈ°)...",
|
|
2053
|
+
"wf_preview.r_hc_timeout": "β Health Check νμμμ (120μ΄)",
|
|
2054
|
+
"wf_preview.r_hc_wait_60": "β³ Health Check λκΈ° (μ΅λ 60μ΄)...",
|
|
2055
|
+
"wf_preview.r_hc_waiting": "β³ λκΈ° μ€... ({retry_count}/{max_retries}) - μν: {status}",
|
|
2056
|
+
"wf_preview.r_image_pulling": "π₯ Docker μ΄λ―Έμ§ Pull μ€...",
|
|
2057
|
+
"wf_preview.r_image_removing": "πΌοΈ μ΄λ―Έμ§ μμ μ€...",
|
|
2058
|
+
"wf_preview.r_num_generic": "π’ λ²νΈ: #{pr_number}",
|
|
2059
|
+
"wf_preview.r_num_issue": "π’ Issue λ²νΈ: #{issue_number}",
|
|
2060
|
+
"wf_preview.r_num_pr": "π’ PR λ²νΈ: #{pr_number}",
|
|
2061
|
+
"wf_preview.r_project_name": "π¦ νλ‘μ νΈ: {project_name}",
|
|
2062
|
+
"wf_preview.r_removed": "β
μμ μλ£!",
|
|
2063
|
+
"wf_preview.r_ssh_auth": "π SSH μΈμ¦ λ°©μ: {ssh_auth_method}",
|
|
2064
|
+
"wf_preview.r_status_head": "π Preview μν νμΈ",
|
|
2065
|
+
"wf_preview.r_status_head_custom": "π Custom Branch Preview μν νμΈ",
|
|
2066
|
+
"wf_preview.r_wait_i": "λκΈ° μ€... ({i}/12)",
|
|
2067
|
+
"wf_preview.redeploy_hint": "λ€μ λ°°ν¬νλ €λ©΄: `/wizard server build`",
|
|
2068
|
+
"wf_preview.redeploy_hint_branch": "λ€μ λ°°ν¬νλ €λ©΄: `/wizard server build {branchName}`",
|
|
2069
|
+
"wf_preview.row_build_done": "| π¨ νλ‘μ νΈ λΉλ | β
μλ£ | {buildDuration} |",
|
|
2070
|
+
"wf_preview.row_build_progress": "| π¨ νλ‘μ νΈ λΉλ | β³ μ§ν μ€... | - |",
|
|
2071
|
+
"wf_preview.row_build_status": "| π¨ νλ‘μ νΈ λΉλ | {buildStatus} | {buildTime} |",
|
|
2072
|
+
"wf_preview.row_deploy_done": "| π μλ² λ°°ν¬ & Health Check | β
μλ£ | {deployDuration} |",
|
|
2073
|
+
"wf_preview.row_deploy_progress": "| π μλ² λ°°ν¬ & Health Check | β³ μ§ν μ€... | - |",
|
|
2074
|
+
"wf_preview.row_deploy_status": "| π μλ² λ°°ν¬ & Health Check | {deployStatus} | - |",
|
|
2075
|
+
"wf_preview.row_deploy_wait": "| π μλ² λ°°ν¬ & Health Check | βΈοΈ λκΈ° | - |",
|
|
2076
|
+
"wf_preview.row_docker_done": "| π³ Docker μ΄λ―Έμ§ λΉλ & Push | β
μλ£ | {dockerDuration} |",
|
|
2077
|
+
"wf_preview.row_docker_progress": "| π³ Docker μ΄λ―Έμ§ λΉλ & Push | β³ μ§ν μ€... | - |",
|
|
2078
|
+
"wf_preview.row_docker_status": "| π³ Docker μ΄λ―Έμ§ λΉλ & Push | {dockerStatus} | {dockerTime} |",
|
|
2079
|
+
"wf_preview.row_image_done": "| π³ Docker μ΄λ―Έμ§ μμ± | β
μλ£ | {dockerDuration} |",
|
|
2080
|
+
"wf_preview.row_image_progress": "| π³ Docker μ΄λ―Έμ§ μμ± | β³ μ§ν μ€... | - |",
|
|
2081
|
+
"wf_preview.row_image_status": "| π³ Docker μ΄λ―Έμ§ μμ± | {dockerStatus} | {dockerTime} |",
|
|
2082
|
+
"wf_preview.row_image_wait": "| π³ Docker μ΄λ―Έμ§ μμ± | βΈοΈ λκΈ° | - |",
|
|
2083
|
+
"wf_preview.sec_causes": "### π κ°λ₯ν μμΈ",
|
|
2084
|
+
"wf_preview.sec_check": "### π‘ νμΈ μ¬ν",
|
|
2085
|
+
"wf_preview.sec_commands": "### π λͺ
λ Ήμ΄",
|
|
2086
|
+
"wf_preview.sec_env": "### π Preview νκ²½",
|
|
2087
|
+
"wf_preview.sec_next": "### π‘ λ€μ λ¨κ³",
|
|
2088
|
+
"wf_preview.skip_no_branch": "β οΈ λΈλμΉκ° μ‘΄μ¬νμ§ μμ λΉλλ₯Ό 건λλλλ€.",
|
|
2089
|
+
"wf_preview.status_done": "β
μλ£",
|
|
2090
|
+
"wf_preview.status_failed": "β μ€ν¨",
|
|
2091
|
+
"wf_preview.status_init_failed": "β οΈ μ΄κΈ°ν μ€ν¨",
|
|
2092
|
+
"wf_preview.status_waiting": "βΈοΈ λκΈ°",
|
|
2093
|
+
"wf_preview.tbl_commands": "| λͺ
λ Ήμ΄ | μ€λͺ
|",
|
|
2094
|
+
"wf_preview.tbl_items": "| νλͺ© | κ° |",
|
|
2095
|
+
"wf_preview.tbl_steps": "| λ¨κ³ | μν | μμ μκ° |",
|
|
2096
|
+
"wf_preview.title_absent": "## β Preview νκ²½ μμ",
|
|
2097
|
+
"wf_preview.title_branch_missing": "## β λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€",
|
|
2098
|
+
"wf_preview.title_branch_missing_warn": "## β οΈ λΈλμΉλ₯Ό μ°Ύμ μ μμ΅λλ€",
|
|
2099
|
+
"wf_preview.title_custom_absent": "## β Custom Branch Preview νκ²½ μμ",
|
|
2100
|
+
"wf_preview.title_custom_building": "## π Custom Branch Preview λΉλ μ€...",
|
|
2101
|
+
"wf_preview.title_custom_deployed": "## β
Custom Branch Preview λ°°ν¬ μλ£!",
|
|
2102
|
+
"wf_preview.title_custom_destroyed": "## ποΈ Custom Branch Preview νκ²½ μμ μλ£!",
|
|
2103
|
+
"wf_preview.title_custom_destroyed_short": "## ποΈ Custom Branch Preview μμ μλ£",
|
|
2104
|
+
"wf_preview.title_custom_failed": "## β Custom Branch Preview λ°°ν¬ μ€ν¨!",
|
|
2105
|
+
"wf_preview.title_custom_running": "## β
Custom Branch Preview νκ²½ μ€ν μ€",
|
|
2106
|
+
"wf_preview.title_custom_started": "## π Custom Branch Preview λ°°ν¬ μμ",
|
|
2107
|
+
"wf_preview.title_destroyed": "## ποΈ Preview νκ²½ μμ μλ£!",
|
|
2108
|
+
"wf_preview.title_issue_building": "## π Issue Preview λΉλ μ€...",
|
|
2109
|
+
"wf_preview.title_issue_deployed": "## β
Issue Preview λ°°ν¬ μλ£!",
|
|
2110
|
+
"wf_preview.title_issue_failed": "## β Issue Preview λ°°ν¬ μ€ν¨!",
|
|
2111
|
+
"wf_preview.title_pr_building": "## π PR Preview λΉλ μ€...",
|
|
2112
|
+
"wf_preview.title_pr_deployed": "## β
PR Preview λ°°ν¬ μλ£!",
|
|
2113
|
+
"wf_preview.title_pr_failed": "## β PR Preview λ°°ν¬ μ€ν¨!",
|
|
2114
|
+
"wf_preview.title_running": "## β
Preview νκ²½ μ€ν μ€",
|
|
2115
|
+
# --- wf_readme ---
|
|
2116
|
+
"wf_readme.hint_first_example": "## μ΅μ λ²μ : v1.0.0 (2025-08-15)",
|
|
2117
|
+
"wf_readme.default_heading": "μ΅μ λ²μ ",
|
|
2118
|
+
# --- wf_release ---
|
|
2119
|
+
"wf_release.drift_heading": "### β οΈ λ¦΄λ¦¬μ€ λλ½ κ°μ§",
|
|
2120
|
+
"wf_release.drift_version_line": "- version.yml: `{version}`",
|
|
2121
|
+
"wf_release.drift_tag_line": "- μ΅μ νκ·Έ: `{tag}`",
|
|
2122
|
+
"wf_release.drift_body": "λ¦΄λ¦¬μ€ νμ μμ΄ λ²μ λ§ μ¬λΌκ°μ΅λλ€. μ΄ λ²μ μ npmμ λ°°ν¬λμ§ μμ΅λλ€.",
|
|
2123
|
+
"wf_release.drift_recover": "볡ꡬ: Actions β PROJECT-RELEASE-PUBLISH β Run workflow",
|
|
2124
|
+
"wf_release.readme_dispatch_ok": "README-VERSION-UPDATE workflow_dispatch νΈλ¦¬κ±° μμ² μλ£",
|
|
2125
|
+
"wf_release.readme_dispatch_skip": "README-VERSION-UPDATE μν¬νλ‘μ°λ₯Ό κΉ¨μ°μ§ λͺ»νμ΅λλ€ (μμ νκ±°λ λΉνμ±νλ¨) β README λ²μ κ°±μ μ 건λλλλ€",
|
|
2126
|
+
"wf_release.not_merge_release": "v{version}μ λ¦΄λ¦¬μ€ PR λ³ν©μΌλ‘ λ€μ΄μ¨ 릴리μ€κ° μλλλ€ β λ°°ν¬λ push μ΄λ²€νΈκ° λ§‘μ΅λλ€",
|
|
2127
|
+
"wf_release.bot_merged": "PR #{pr}μ λ΄ ν ν°μ΄ λ³ν©νμ΅λλ€ β push μ΄λ²€νΈκ° λ°°ν¬λ₯Ό κΉ¨μ°μ§ λͺ»νμ΅λλ€",
|
|
2128
|
+
"wf_release.merger_unknown_pat": "λ³ν© 주체λ₯Ό νμΈνμ§ λͺ»νκ³ WORKFLOW_PATμ΄ μμ΅λλ€ β push μ΄λ²€νΈκ° λ°°ν¬λ₯Ό μ€ννλ€κ³ λ³΄κ³ κ±΄λλλλ€",
|
|
2129
|
+
"wf_release.merger_unknown_nopat": "λ³ν© 주체λ₯Ό νμΈνμ§ λͺ»νκ³ WORKFLOW_PATμ΄ μμ΅λλ€ β λ΄ ν ν° λ³ν©μΌλ‘ λ΄
λλ€",
|
|
2130
|
+
"wf_release.human_merged": "PR #{pr}μ {user}μ΄(κ°) λ³ν©νμ΅λλ€ β push μ΄λ²€νΈκ° λ°°ν¬λ₯Ό μ΄λ―Έ μ€ννμΌλ―λ‘ κ±΄λλλλ€",
|
|
2131
|
+
"wf_release.no_targets": "{branch} pushλ‘ λλ λ°°ν¬ μν¬νλ‘μ°κ° μμ΅λλ€ β 건λλλλ€",
|
|
2132
|
+
"wf_release.deploy_trigger_ok": "{wf} workflow_dispatch νΈλ¦¬κ±° μμ² μλ£",
|
|
2133
|
+
"wf_release.deploy_trigger_warn": "{wf} λ°°ν¬ μν¬νλ‘μ°λ₯Ό κΉ¨μ°μ§ λͺ»νμ΅λλ€ β Actions νμμ Run workflowλ‘ μ§μ μ€ννμΈμ",
|
|
2134
|
+
# --- wf_spring_ci ---
|
|
2135
|
+
"wf_spring_ci.status_ok": "β
μ±κ³΅",
|
|
2136
|
+
"wf_spring_ci.status_fail": "β μ€ν¨",
|
|
2137
|
+
"wf_spring_ci.err_compile_header": "## π¨ μ»΄νμΌ μλ¬",
|
|
2138
|
+
"wf_spring_ci.err_compile_missing": "μλ¬ λ‘κ·Έλ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
2139
|
+
"wf_spring_ci.err_test_header": "## π§ͺ ν
μ€νΈ μ€ν¨",
|
|
2140
|
+
"wf_spring_ci.err_test_missing": "ν
μ€νΈ μλ¬ λ‘κ·Έλ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
2141
|
+
"wf_spring_ci.err_build_header": "## π¦ λΉλ μλ¬",
|
|
2142
|
+
"wf_spring_ci.err_build_missing": "λΉλ μλ¬ λ‘κ·Έλ₯Ό μ°Ύμ μ μμ΅λλ€.",
|
|
2143
|
+
"wf_spring_ci.comment_title": "## π§ CI Build Check κ²°κ³Ό",
|
|
2144
|
+
"wf_spring_ci.comment_success": "### β
λΉλ μ±κ³΅!",
|
|
2145
|
+
"wf_spring_ci.comment_failure": "### β λΉλ μ€ν¨!",
|
|
2146
|
+
"wf_spring_ci.table_header": "| λ¨κ³ | μν |",
|
|
2147
|
+
"wf_spring_ci.row_compile": "| μ»΄νμΌ | {status} |",
|
|
2148
|
+
"wf_spring_ci.row_test": "| ν
μ€νΈ | {status} |",
|
|
2149
|
+
"wf_spring_ci.row_build": "| λΉλ | {status} |",
|
|
2150
|
+
"wf_spring_ci.overall": "**μ 체 μν**: {status}",
|
|
2151
|
+
"wf_spring_ci.details_header": "### π μλ¬ μμΈ μ 보",
|
|
2152
|
+
"wf_spring_ci.fix_header": "### π§ ν΄κ²° λ°©λ²",
|
|
2153
|
+
"wf_spring_ci.fix_build": "- λ‘컬μμ `./gradlew clean build` λͺ
λ Ήμ΄λ‘ λΉλλ₯Ό νμΈν΄λ³΄μΈμ",
|
|
2154
|
+
"wf_spring_ci.fix_error": "- μλ¬ λ©μμ§λ₯Ό μ°Έκ³ νμ¬ μ½λλ₯Ό μμ ν΄μ£ΌμΈμ",
|
|
2155
|
+
"wf_spring_ci.fix_test": "- ν
μ€νΈκ° μ€ν¨ν κ²½μ° `./gradlew test` λͺ
λ Ήμ΄λ‘ ν
μ€νΈλ₯Ό μ€νν΄λ³΄μΈμ",
|
|
2156
|
+
"wf_spring_ci.footer": "*π€ GitHub Actionsμ μν΄ μλ μμ±λ¨ - {time}*",
|
|
2157
|
+
"wf_spring_ci.date_locale": "ko-KR",
|
|
2158
|
+
"wf_spring_ci.check_summary_success": "λΉλ κ²μ¦μ΄ μ±κ³΅νμ΅λλ€.",
|
|
2159
|
+
"wf_spring_ci.check_summary_failure": "λΉλ κ²μ¦μ΄ μ€ν¨νμ΅λλ€.",
|
|
2160
|
+
"wf_spring_ci.check_compile": "μ»΄νμΌ: {status}",
|
|
2161
|
+
"wf_spring_ci.check_test": "ν
μ€νΈ: {status}",
|
|
2162
|
+
"wf_spring_ci.check_build": "λΉλ: {status}",
|
|
2163
|
+
"wf_spring_ci.build_failed": "β λΉλκ° μ€ν¨νμ΅λλ€. μμ μλ¬ λ©μμ§λ₯Ό νμΈν΄μ£ΌμΈμ.",
|
|
2164
|
+
"wf_spring_ci.gate_results": "needs κ²°κ³Ό: {results}",
|
|
2165
|
+
"wf_spring_ci.gate_failed": "μ€ν¨νκ±°λ μ·¨μλ jobμ΄ μμ΅λλ€.",
|
|
2166
|
+
# --- wf_spring_deploy ---
|
|
2167
|
+
"wf_spring_deploy.prod_yml_created": "β
application-prod.yml νμΌ μμ± μλ£ ({dir})",
|
|
2168
|
+
"wf_spring_deploy.ssh_auth_method": "π SSH μΈμ¦ λ°©μ: {method}",
|
|
2169
|
+
"wf_spring_deploy.image_pull": "π₯ μ΄λ―Έμ§ Pull: {image}",
|
|
2170
|
+
"wf_spring_deploy.volume_mkdir": "π λ³Όλ₯¨ λ§μ΄νΈ λλ ν 리 μμ±: {path}",
|
|
2171
|
+
"wf_spring_deploy.volume_disabled": "βΉοΈ λ³Όλ₯¨ λ§μ΄νΈ λΉνμ±νλ¨",
|
|
2172
|
+
"wf_spring_deploy.volume_enabled": "π¦ λ³Όλ₯¨ λ§μ΄νΈ νμ±ν: {host} β {container}",
|
|
2173
|
+
"wf_spring_deploy.idle_slot_cleanup": "ποΈ idle μ¬λ‘― μ 리: {name}",
|
|
2174
|
+
"wf_spring_deploy.banner_project": "π¦ νλ‘μ νΈ: {name}",
|
|
2175
|
+
"wf_spring_deploy.banner_domain": "π λλ©μΈ: {domain}",
|
|
2176
|
+
"wf_spring_deploy.banner_image": "πΌοΈ μ΄λ―Έμ§: {image}",
|
|
2177
|
+
"wf_spring_deploy.old_removed": "ποΈ old={name} μ κ±°",
|
|
2178
|
+
"wf_spring_deploy.old_absent": "βΉοΈ old={name} μμ β μ 리 μλ΅",
|
|
2179
|
+
"wf_spring_deploy.inflight_wait": "β±οΈ in-flight μμ² μ²λ¦¬ λκΈ° ({sec}μ΄)",
|
|
2180
|
+
"wf_spring_deploy.prune_dangling": "π§Ή dangling(<none>) μ΄λ―Έμ§ μ 리...",
|
|
2181
|
+
"wf_spring_deploy.new_container_start": "π³ μ 컨ν
μ΄λ κΈ°λ: {name}",
|
|
2182
|
+
"wf_spring_deploy.simple_env_setup": "π§ νκ²½λ³μ μ€μ ..",
|
|
2183
|
+
"wf_spring_deploy.simple_container_name_default": "βΉοΈ CONTAINER_NAMEμ΄ μ€μ λμ§ μμ PROJECT_NAMEμ μ¬μ©ν©λλ€: {name}",
|
|
2184
|
+
"wf_spring_deploy.simple_container_name_custom": "βΉοΈ μ¬μ©μ μ§μ CONTAINER_NAME μ¬μ©: {name}",
|
|
2185
|
+
"wf_spring_deploy.simple_deploy_start": "π λ°°ν¬ νκ²½μΌλ‘ λ°°ν¬ν©λλ€ (λΈλμΉ: {branch})",
|
|
2186
|
+
"wf_spring_deploy.simple_config_header": "π λ°°ν¬ μ€μ μ 보:",
|
|
2187
|
+
"wf_spring_deploy.simple_config_branch": " - λΈλμΉ: {branch}",
|
|
2188
|
+
"wf_spring_deploy.simple_config_project": " - νλ‘μ νΈ: {name}",
|
|
2189
|
+
"wf_spring_deploy.simple_config_container": " - 컨ν
μ΄λ μ΄λ¦: {name}",
|
|
2190
|
+
"wf_spring_deploy.simple_config_port": " - ν¬νΈ: {port}",
|
|
2191
|
+
"wf_spring_deploy.simple_config_image": " - Docker μ΄λ―Έμ§: {image}",
|
|
2192
|
+
"wf_spring_deploy.simple_image_pull": "β¬οΈ Docker μ΄λ―Έμ§ ν: {image}",
|
|
2193
|
+
"wf_spring_deploy.simple_container_check": "𧹠컨ν
μ΄λ {name} μ‘΄μ¬ μ¬λΆ νμΈ μ€...",
|
|
2194
|
+
"wf_spring_deploy.simple_container_exists": "β οΈ μ»¨ν
μ΄λ {name} μ΄(κ°) μ‘΄μ¬ν©λλ€. μ€μ§ λ° μμ μ€...",
|
|
2195
|
+
"wf_spring_deploy.simple_container_removed": "β
컨ν
μ΄λ {name} μ΄(κ°) μμ λμμ΅λλ€.",
|
|
2196
|
+
"wf_spring_deploy.simple_container_missing": "βΉοΈ μ‘΄μ¬νλ 컨ν
μ΄λ {name} μ΄(κ°) μμ΅λλ€.",
|
|
2197
|
+
"wf_spring_deploy.simple_container_starting": "π μλ‘μ΄ μ»¨ν
μ΄λ {name} μ€ν μ€...",
|
|
2198
|
+
"wf_spring_deploy.simple_volume_enabled": "π¦ λ³Όλ₯¨ λ§μ΄νΈ νμ±ν: {option}",
|
|
2199
|
+
"wf_spring_deploy.simple_init_wait": "Ⳡ컨ν
μ΄λ μ΄κΈ°ν λκΈ° μ€... ({sec}μ΄)",
|
|
2200
|
+
"wf_spring_deploy.simple_hc_check": "π₯ 컨ν
μ΄λ ν¬μ€μ²΄ν¬ μ€...",
|
|
2201
|
+
"wf_spring_deploy.simple_hc_process_missing": "β 컨ν
μ΄λ {name} νλ‘μΈμ€κ° μ€νλμ§ μμμ΅λλ€",
|
|
2202
|
+
"wf_spring_deploy.simple_hc_process_ok": "β
컨ν
μ΄λ νλ‘μΈμ€ μ€ν νμΈ μλ£",
|
|
2203
|
+
"wf_spring_deploy.simple_http_start": "π HTTP ν¬μ€μ²΄ν¬ μμ: {url}",
|
|
2204
|
+
"wf_spring_deploy.simple_http_attempt": " μλ {i}/{max}...",
|
|
2205
|
+
"wf_spring_deploy.simple_http_ok": "β
HTTP ν¬μ€μ²΄ν¬ μ±κ³΅ (μλ΅ μ½λ: {code})",
|
|
2206
|
+
"wf_spring_deploy.simple_http_fail": "β οΈ HTTP ν¬μ€μ²΄ν¬ μ€ν¨ (μλ΅ μ½λ: {code})",
|
|
2207
|
+
"wf_spring_deploy.simple_http_retry": " {sec}μ΄ ν μ¬μλ...",
|
|
2208
|
+
"wf_spring_deploy.simple_http_fallback": "β οΈ HTTP ν¬μ€μ²΄ν¬ μ΅μ’
μ€ν¨, λ‘κ·Έ ν¨ν΄ λ§€μΉμΌλ‘ fallback...",
|
|
2209
|
+
"wf_spring_deploy.simple_hc_path_unset": "βΉοΈ HEALTHCHECK_PATHκ° μ€μ λμ§ μμ λ‘κ·Έ ν¨ν΄ λ§€μΉλ§ μ¬μ©ν©λλ€",
|
|
2210
|
+
"wf_spring_deploy.simple_log_match_start": "π λ‘κ·Έ ν¨ν΄ λ§€μΉ μμ: '{pattern}'",
|
|
2211
|
+
"wf_spring_deploy.simple_log_match_ok": "β
λ‘κ·Έ ν¨ν΄ λ§€μΉ μ±κ³΅: μ ν리μΌμ΄μ
μ΄ μ μμ μΌλ‘ μμλμμ΅λλ€",
|
|
2212
|
+
"wf_spring_deploy.simple_log_match_fail": "β λ‘κ·Έ ν¨ν΄ λ§€μΉ μ€ν¨: μ ν리μΌμ΄μ
μμ λ‘κ·Έλ₯Ό μ°Ύμ μ μμ΅λλ€",
|
|
2213
|
+
"wf_spring_deploy.simple_debug_header": "π λλ²κΉ
μ 보:",
|
|
2214
|
+
"wf_spring_deploy.simple_debug_pattern": " - κ²μ ν¨ν΄: {pattern}",
|
|
2215
|
+
"wf_spring_deploy.simple_debug_container": " - 컨ν
μ΄λ: {name}",
|
|
2216
|
+
"wf_spring_deploy.simple_debug_image": " - μ΄λ―Έμ§: {image}",
|
|
2217
|
+
"wf_spring_deploy.simple_debug_port": " - ν¬νΈ: {port}",
|
|
2218
|
+
"wf_spring_deploy.simple_debug_volume": " - λ³Όλ₯¨: {volume}",
|
|
2219
|
+
"wf_spring_deploy.simple_debug_profile": " - νλ‘νμΌ: {profile}",
|
|
2220
|
+
"wf_spring_deploy.simple_logs_tail": "π 컨ν
μ΄λ λ‘κ·Έ (μ΅κ·Ό 50μ€):",
|
|
2221
|
+
"wf_spring_deploy.simple_hc_done": "β
ν¬μ€μ²΄ν¬ μλ£: 컨ν
μ΄λ {name} μ΄(κ°) μ μμ μΌλ‘ μ€ν μ€μ
λλ€",
|
|
2222
|
+
"wf_spring_deploy.simple_deploy_done": "β
λ°°ν¬κ° μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€!",
|
|
2223
|
+
"wf_spring_deploy.simple_summary_header": "π λ°°ν¬ κ²°κ³Ό μμ½:",
|
|
2224
|
+
"wf_spring_deploy.simple_summary_project": " π― νλ‘μ νΈ: {name}",
|
|
2225
|
+
"wf_spring_deploy.simple_summary_branch": " πΏ λΈλμΉ: {branch}",
|
|
2226
|
+
"wf_spring_deploy.simple_summary_container": " π³ 컨ν
μ΄λ: {name}",
|
|
2227
|
+
"wf_spring_deploy.simple_summary_port": " π ν¬νΈ: {port}",
|
|
2228
|
+
"wf_spring_deploy.simple_summary_time": " β° λ°°ν¬ μκ°: {time}",
|
|
2229
|
+
"wf_spring_deploy.simple_access_url": "π μ μ URL: {url}",
|
|
2230
|
+
"wf_spring_deploy.nginx_deploy_start": "π Nginx Blue-Green 무μ€λ¨ λ°°ν¬ μμ",
|
|
2231
|
+
"wf_spring_deploy.nginx_backup_dir": "π nginx λ°±μ
λλ ν 리 μμ±: {dir}",
|
|
2232
|
+
"wf_spring_deploy.nginx_backup_file": "πΎ nginx config λ°±μ
: {file}",
|
|
2233
|
+
"wf_spring_deploy.nginx_find_active": "π nginx config μ νμ¬ νμ± ν¬νΈ νμ",
|
|
2234
|
+
"wf_spring_deploy.nginx_active_missing": "β οΈ νμ± ν¬νΈλ₯Ό μ°Ύμ§ λͺ»ν¨ β κΈ°λ³Έκ°(BLUE={blue})μ νμ±μΌλ‘ κ°μ£Ό",
|
|
2235
|
+
"wf_spring_deploy.nginx_active_port": "π¨ νμ¬ νμ± ν¬νΈ: {port}",
|
|
2236
|
+
"wf_spring_deploy.nginx_new_deploy": "π³ μ κ· λ°°ν¬ β ν¬νΈ={port} 컨ν
μ΄λ={name}",
|
|
2237
|
+
"wf_spring_deploy.nginx_old_container": "ποΈ μ΄μ 컨ν
μ΄λ (μ κ±° μμ ) = {name}",
|
|
2238
|
+
"wf_spring_deploy.nginx_new_container_start": "π³ μ 컨ν
μ΄λ κΈ°λ: {name} (ν¬νΈ {port})",
|
|
2239
|
+
"wf_spring_deploy.nginx_hc_start": "β³ ν¬μ€μ²΄ν¬ μμ (μ΅λ {retries}ν Γ {interval}μ΄)",
|
|
2240
|
+
"wf_spring_deploy.nginx_hc_ok": "β
ν¬μ€μ²΄ν¬ μ±κ³΅ (μλ {i})",
|
|
2241
|
+
"wf_spring_deploy.nginx_hc_progress": "β³ ν¬μ€μ²΄ν¬ μ§νμ€... ({i}/{max})",
|
|
2242
|
+
"wf_spring_deploy.nginx_hc_fail": "β ν¬μ€μ²΄ν¬ μ€ν¨ β λ°°ν¬ μ€λ¨",
|
|
2243
|
+
"wf_spring_deploy.nginx_new_cleanup": "ποΈ μ κ· μ»¨ν
μ΄λ μ 리: {name}",
|
|
2244
|
+
"wf_spring_deploy.nginx_toggle": "π§ nginx config ν¬νΈ ν κΈ: {old} β {new}",
|
|
2245
|
+
"wf_spring_deploy.nginx_apply": "π§ nginx μ€μ μ μ© λ° κ²μ¦",
|
|
2246
|
+
"wf_spring_deploy.nginx_test_fail": "β nginx μ€μ κ²μ¦ μ€ν¨ β λ°±μ
νμΌλ‘ 볡ꡬ",
|
|
2247
|
+
"wf_spring_deploy.nginx_test_ok": "β
nginx μ€μ κ²μ¦ μ±κ³΅",
|
|
2248
|
+
"wf_spring_deploy.nginx_reload_fail": "β οΈ reload μ€ν¨ β restart μλ",
|
|
2249
|
+
"wf_spring_deploy.nginx_restart_fail": "β nginx reload/restart μ€ν¨ β λ°±μ
볡ꡬ",
|
|
2250
|
+
"wf_spring_deploy.nginx_domain_check": "π λλ©μΈ μ κ·Ό κ²μ¦ ({domain})",
|
|
2251
|
+
"wf_spring_deploy.nginx_domain_ok": "β
λλ©μΈ μ κ·Ό κ²μ¦ μ±κ³΅ (μλ {i})",
|
|
2252
|
+
"wf_spring_deploy.nginx_domain_progress": "β³ λλ©μΈ μ κ·Ό κ²μ¦ μ€... ({i}/{max})",
|
|
2253
|
+
"wf_spring_deploy.nginx_domain_fail": "β οΈ λλ©μΈ μ κ·Ό κ²μ¦ μ€ν¨: λ°°ν¬ μ§ν (DNS μ ν μ§μ° κ°λ₯μ±)",
|
|
2254
|
+
"wf_spring_deploy.nginx_backup_keep": "π§Ή λ°±μ
νμΌ μ΅μ {keep}κ° λ³΄μ‘΄",
|
|
2255
|
+
"wf_spring_deploy.nginx_done": "β
무μ€λ¨ λ°°ν¬ μλ£. active={name} (ν¬νΈ {port})",
|
|
2256
|
+
"wf_spring_deploy.traefik_deploy_start": "π Blue-Green 무μ€λ¨ λ°°ν¬ μμ",
|
|
2257
|
+
"wf_spring_deploy.traefik_entry": "π§ Traefik μ§μ
: localhost:{port} (entrypoint={entrypoint})",
|
|
2258
|
+
"wf_spring_deploy.traefik_extra_network": "π μΆκ° λ€νΈμν¬ μ°κ²°: {net}",
|
|
2259
|
+
"wf_spring_deploy.traefik_labels": "π Traefik λΌλ²¨ νμΈ:",
|
|
2260
|
+
"wf_spring_deploy.traefik_hc_start": "β³ ν¬μ€μ²΄ν¬ μμ (μ΅λ {max_wait}μ΄, {retries}ν Γ {interval}μ΄)",
|
|
2261
|
+
"wf_spring_deploy.traefik_exited": "β 컨ν
μ΄λ λΉμ μ μ’
λ£ (exited). λ‘κ·Έ 200μ€:",
|
|
2262
|
+
"wf_spring_deploy.traefik_kept": "βΉοΈ 컨ν
μ΄λ {name} μ μ§ (μλ μμ μ ν¨) β μλ κ²μ¦/λλ²κΉ
",
|
|
2263
|
+
"wf_spring_deploy.traefik_rollback_note": "βΉοΈ old={name} μ‘΄μ¬ μ κ·Έλλ‘ μ μ§ β μ¬μ€μ μλ λ‘€λ°±",
|
|
2264
|
+
"wf_spring_deploy.traefik_hc_pass": "β
ν¬μ€μ²΄ν¬ ν΅κ³Ό ({n}/{max}) HTTP={code}",
|
|
2265
|
+
"wf_spring_deploy.traefik_waiting": "β³ λκΈ° ({n}/{max}) status={status} http={http}",
|
|
2266
|
+
"wf_spring_deploy.traefik_hc_timeout": "β ν¬μ€μ²΄ν¬ νμμμ ({sec}μ΄)",
|
|
2267
|
+
"wf_spring_deploy.traefik_logs_header": "π {name} μ΅κ·Ό 200μ€ λ‘κ·Έ:",
|
|
2268
|
+
"wf_spring_deploy.traefik_done": "β
무μ€λ¨ λ°°ν¬ μλ£. active={name}",
|
|
2269
|
+
# --- wf_version ---
|
|
2270
|
+
"wf_version.release_publish_triggered": "RELEASE-PUBLISH workflow_dispatch νΈλ¦¬κ±° μμ² μλ£ (WORKFLOW_PAT μμ΄λ λμ, μ΄μ #61 λ리ννΈ μλ 볡ꡬ)",
|
|
2271
|
+
"wf_version.backmerge_conflict": "{prod}μ {dev}μ μλ λ³ν©νμ§ λͺ»νμ΅λλ€ (μΆ©λ). λ€μ λ¦΄λ¦¬μ€ PR μ μ μ§μ λ³ν©νμΈμ: {manual}",
|
|
2272
|
+
"wf_version.backmerge_push_failed": "{dev}μ pushνμ§ λͺ»νμ΅λλ€ (λΈλμΉ λ³΄νΈ λ±). λ€μ λ¦΄λ¦¬μ€ PR μ μ μ§μ λ³ν©νμΈμ: {manual}",
|
|
2273
|
+
}
|
|
2274
|
+
|
|
2275
|
+
CATALOG = {"en": EN, "ko": KO}
|
|
2276
|
+
|
|
2277
|
+
|
|
2278
|
+
if __name__ == "__main__":
|
|
2279
|
+
sys.exit(main(sys.argv[1:]))
|