3a270cbeb0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
518 lines
17 KiB
Dart
518 lines
17 KiB
Dart
// strings_ko.dart — 한국어 문구 리소스 (단일 언어 표시)
|
||
//
|
||
// 금지어: 검열 우회·민감 표현. 목록은 design/CLAUDE.md §1 규칙 13 참조.
|
||
// 포지셔닝: 네트워크 가속 / 경험 최적화 + 프라이버시.
|
||
// 요금제 번호는 design/CLAUDE.md §7 을 따름.
|
||
import 'app_text.dart';
|
||
|
||
class StringsKo extends AppText {
|
||
const StringsKo();
|
||
|
||
@override
|
||
AppLang get lang => AppLang.ko;
|
||
|
||
@override
|
||
String get brand => 'Pangolin';
|
||
@override
|
||
String get online => '● 온라인';
|
||
@override
|
||
String get offline => '○ 오프라인';
|
||
@override
|
||
String get capOff => '탭하여 연결';
|
||
@override
|
||
String get capConnecting => '연결 중…';
|
||
@override
|
||
String get capOn => '연결됨 · 암호화';
|
||
@override
|
||
String get connectNow => '연결';
|
||
@override
|
||
String get secure => '보안';
|
||
|
||
@override
|
||
String get tabConnect => '연결';
|
||
@override
|
||
String get tabServers => '서버';
|
||
@override
|
||
String get tabStats => '통계';
|
||
@override
|
||
String get tabMe => '계정';
|
||
|
||
@override
|
||
String get currentNode => '현재 노드';
|
||
@override
|
||
String get download => '다운';
|
||
@override
|
||
String get upload => '업';
|
||
@override
|
||
String get latency => '지연';
|
||
|
||
@override
|
||
String get quotaToday => '오늘 남은 시간';
|
||
@override
|
||
String get minutes => '분';
|
||
@override
|
||
String get quotaFree => '무료 · 하루 10분';
|
||
@override
|
||
String get planFreeTag => '무료';
|
||
@override
|
||
String get watchAd => '광고 시청 후 시작';
|
||
@override
|
||
String get adUnlocked => '오늘 사용 가능';
|
||
@override
|
||
String get quotaLeftLabel => '남음';
|
||
@override
|
||
String get quotaUsedUp => '오늘 무료 시간을 모두 사용함';
|
||
@override
|
||
String get watchAdMore => '광고 시청으로 시간 추가';
|
||
@override
|
||
String get quotaExhaustedNotice => '오늘 무료 시간을 모두 사용했습니다. 업그레이드하면 계속 연결할 수 있습니다.';
|
||
@override
|
||
String get adPlaying => '광고 재생 중…';
|
||
@override
|
||
String adRewarded(int minutes) => '+$minutes분 추가됨';
|
||
@override
|
||
String get adFailed => '시간 추가에 실패했습니다. 다시 시도하세요';
|
||
@override
|
||
String get quotaDesktopTitle => '오늘 무료 시간을 모두 사용함';
|
||
@override
|
||
String get quotaDesktopBody => '모바일 앱에서 광고를 시청해 시간을 추가하거나, 업그레이드하여 무제한으로 이용하세요.';
|
||
@override
|
||
String get gotIt => '확인';
|
||
|
||
@override
|
||
String get chooseNode => '서버 선택';
|
||
@override
|
||
String get searchPh => '국가 / 도시 검색';
|
||
@override
|
||
String get smartSelect => '스마트 선택';
|
||
@override
|
||
String nodeSwitchTitle(String name) => '$name(으)로 전환할까요?';
|
||
@override
|
||
String get nodeSwitchBody => '현재 연결을 끊고 이 노드로 다시 연결합니다.';
|
||
@override
|
||
String get nodeSwitchConfirm => '전환';
|
||
@override
|
||
String get nodeUnhealthySwitched => '현재 노드에 연결할 수 없어 자동으로 전환했습니다';
|
||
@override
|
||
String get nodeUnhealthyError => '현재 노드에 연결할 수 없습니다 — 재연결하거나 노드를 전환하세요';
|
||
@override
|
||
String get nodeReconnecting => '네트워크가 불안정하여 다시 연결 중…';
|
||
@override
|
||
String get smartSub => '네트워크에 가장 적합한 노드를 선택합니다';
|
||
@override
|
||
String get recommended => '추천';
|
||
|
||
@override
|
||
String get statsTitle => '통계';
|
||
@override
|
||
String get trafficMonth => '트래픽';
|
||
@override
|
||
String get avgPing => '평균 지연';
|
||
@override
|
||
String get durMonth => '시간';
|
||
@override
|
||
String get weekTraffic => '이번 주 (GB)';
|
||
@override
|
||
List<String> get days7 => const ['월', '화', '수', '목', '금', '토', '일'];
|
||
@override
|
||
String get byDevice => '기기별';
|
||
@override
|
||
String get noDeviceUsage => '아직 기기 사용 기록이 없습니다';
|
||
@override
|
||
String get periodMonth => '이번 달';
|
||
@override
|
||
String get periodWeek => '이번 주';
|
||
@override
|
||
String get periodToday => '오늘';
|
||
@override
|
||
String get statDown => '다운로드';
|
||
@override
|
||
String get statUp => '업로드';
|
||
@override
|
||
String get statDuration => '사용 시간';
|
||
@override
|
||
String get chartTwoWeeks => '최근 2주';
|
||
@override
|
||
String get allDevices => '모든 기기';
|
||
|
||
@override
|
||
String get meTitle => '계정';
|
||
@override
|
||
String get proMember => 'PRO 회원';
|
||
@override
|
||
String get freePlanName => '무료';
|
||
@override
|
||
String get expires => '만료일';
|
||
@override
|
||
String get upgradeBtn => '갱신 / 업그레이드';
|
||
@override
|
||
String get accInfoTitle => '계정 정보';
|
||
@override
|
||
String get accEmail => '이메일';
|
||
@override
|
||
String get accPassword => '비밀번호';
|
||
@override
|
||
String get accChange => '변경';
|
||
@override
|
||
String get deviceLimitTitle => '기기 한도에 도달함';
|
||
@override
|
||
String get deviceLimitDesc => '현재 요금제는 최대 %s대의 기기를 허용합니다. 계속하려면 한 대를 삭제하세요.';
|
||
@override
|
||
String get deviceLimitRemoveOldest => '가장 오래 사용하지 않은 기기 삭제';
|
||
@override
|
||
String get myDevices => '내 기기';
|
||
@override
|
||
String get devicesSub => 'PRO는 최대 3대';
|
||
@override
|
||
String get thisDevice => '이 기기';
|
||
@override
|
||
String get remove => '삭제';
|
||
@override
|
||
String get devOnline => '온라인';
|
||
@override
|
||
String get devOffline => '오프라인';
|
||
@override
|
||
String get devLastOnline => '마지막 접속';
|
||
@override
|
||
String get devNeverLogin => '로그인한 적 없음';
|
||
@override
|
||
String get devForceLogout => '강제 로그아웃';
|
||
@override
|
||
String get devClearLogin => '로그인 정보 삭제';
|
||
@override
|
||
String get devRename => '이름 변경';
|
||
@override
|
||
String get devRenameHint => '기기 이름';
|
||
@override
|
||
String get devSave => '저장';
|
||
@override
|
||
String get devForceLogoutConfirm => '이 기기의 로그인 세션을 무효화합니다 — 오프라인으로 강제 종료되며 다시 로그인해야 합니다. 기기는 목록에 남아 있습니다.';
|
||
@override
|
||
String get devClearLoginConfirm => '이 기기를 목록에서 완전히 삭제하고 로그인 세션과 데이터 전송 자격 증명을 무효화합니다. 다시 사용하려면 재로그인해야 합니다.';
|
||
@override
|
||
String get devCancel => '취소';
|
||
@override
|
||
String get sessionRevokedTitle => '이 기기에서 로그아웃되었습니다';
|
||
@override
|
||
String get sessionRevokedBody => '다른 기기에서 이 기기를 로그아웃했습니다. 다시 로그인하세요.';
|
||
@override
|
||
String get sessionRevokedOk => '다시 로그인';
|
||
@override
|
||
String get redeemEntry => '코드 등록 및 구매';
|
||
@override
|
||
String get contactEntry => '문의하기';
|
||
@override
|
||
String get signOut => '로그아웃';
|
||
@override
|
||
String get language => '언어';
|
||
@override
|
||
String get darkAppearance => '다크 모드';
|
||
@override
|
||
String get stateOn => '켜짐';
|
||
@override
|
||
String get followLight => '꺼짐';
|
||
@override
|
||
String get protocol => '프로토콜';
|
||
@override
|
||
String get settingsTitle => '설정';
|
||
@override
|
||
String get autostart => '시작 시 실행';
|
||
@override
|
||
String get autostartSub => '시스템 시작 시 자동으로 실행';
|
||
@override
|
||
String get autoConnect => '자동 연결';
|
||
@override
|
||
String get autoConnectSub => '실행 시 자동으로 연결';
|
||
@override
|
||
String autoConnectingTo(String name) => '$name(으)로 자동 연결 중…';
|
||
@override
|
||
String get smartRoute => '스마트 라우팅';
|
||
@override
|
||
String get smartRouteSub => '해외는 가속, 국내는 직접 연결';
|
||
@override
|
||
String get killSwitch => 'Kill Switch';
|
||
@override
|
||
String get killSwitchSub => '연결이 끊기면 트래픽 차단';
|
||
@override
|
||
String get checkUpdate => '업데이트 확인';
|
||
@override
|
||
String get webUserCenter => '사용자 센터 (웹)';
|
||
@override
|
||
String updateAvailableTitle(String version) => '새 버전 v$version 사용 가능';
|
||
@override
|
||
String get updateNotesFallback => '이번 업데이트에는 버그 수정과 안정성 개선이 포함되어 있습니다.';
|
||
@override
|
||
String get updateLater => '나중에';
|
||
@override
|
||
String get updateDownload => '업데이트 다운로드';
|
||
@override
|
||
String get updateUpToDate => '최신 버전입니다';
|
||
@override
|
||
String get updateCheckFailed => '업데이트 확인에 실패했습니다. 잠시 후 다시 시도하세요';
|
||
|
||
@override
|
||
String get choosePlan => '요금제 선택';
|
||
@override
|
||
String get freePlan => '무료';
|
||
@override
|
||
String get proPlan => 'Pro';
|
||
@override
|
||
String get teamPlan => 'Team';
|
||
@override
|
||
String get perMonth => '/월';
|
||
@override
|
||
String get current => '현재';
|
||
@override
|
||
String get upgrade => '업그레이드';
|
||
@override
|
||
String get choose => '선택';
|
||
@override
|
||
String get mostPopular => '인기';
|
||
@override
|
||
List<String> get featsFree => const [
|
||
'기본 노드 1개',
|
||
'하루 10분',
|
||
'광고 시청 후 시작',
|
||
'가입 시 7일 무료 체험',
|
||
];
|
||
@override
|
||
List<String> get featsPro =>
|
||
const ['80개 이상 지역', '무제한 · 빠른 속도', '기기 5대', '스트리밍 최적화'];
|
||
@override
|
||
List<String> get featsTeam =>
|
||
const ['Pro의 모든 기능', '10인 좌석', '통합 결제', '우선 지원'];
|
||
|
||
@override
|
||
String get redeemTitle => '코드 등록 및 구매';
|
||
@override
|
||
String get redeemCodeTitle => '코드 등록';
|
||
@override
|
||
String get redeemPh => '활성화 코드 입력';
|
||
@override
|
||
String get redeemBtn => '등록';
|
||
@override
|
||
String get redeemOk => '활성화됨 · PRO 잠금 해제';
|
||
@override
|
||
String get buyTitle => '구매처';
|
||
@override
|
||
String get buySub => '앱 내 결제는 지원되지 않습니다. 다음 경로로 코드를 받으세요:';
|
||
@override
|
||
String get chStore => '셀프 스토어';
|
||
@override
|
||
String get chEmail => '이메일 지원';
|
||
|
||
@override
|
||
String get contactTitle => '문의하기';
|
||
@override
|
||
String get contactIntro =>
|
||
'도움이 필요하신가요? 아래 채널로 문의하세요 — 보통 몇 분 안에 답변드립니다.';
|
||
@override
|
||
String get contactEmail => '이메일 지원';
|
||
@override
|
||
String get contactStore => '셀프 스토어';
|
||
@override
|
||
String get contactWebsite => '공식 웹사이트';
|
||
@override
|
||
String get contactHoursTitle => '지원 시간';
|
||
@override
|
||
String get contactHours => '매일 9:00 – 24:00 (GMT+8)';
|
||
|
||
@override
|
||
String get authTagline => '빠르게 · 안정적으로 · 손쉽게';
|
||
@override
|
||
String get tabLogin => '로그인';
|
||
@override
|
||
String get tabRegister => '회원가입';
|
||
@override
|
||
String get emailLabel => '이메일';
|
||
@override
|
||
String get emailPh => 'your@email.com';
|
||
@override
|
||
String get pwLabel => '비밀번호';
|
||
@override
|
||
String get pwPh => '비밀번호 입력';
|
||
@override
|
||
String get setPwPh => '비밀번호 설정 (다중 기기 로그인용)';
|
||
@override
|
||
String get codeLabel => '인증 코드';
|
||
@override
|
||
String codeSentTo(String email) => '$email(으)로 코드를 보냈습니다';
|
||
@override
|
||
String get sendCode => '코드 전송';
|
||
@override
|
||
String get resend => '재전송';
|
||
@override
|
||
String get doLogin => '로그인';
|
||
@override
|
||
String get doNext => '다음';
|
||
@override
|
||
String get doCreate => '계정 만들기';
|
||
@override
|
||
String get forgotPw => '비밀번호를 잊으셨나요?';
|
||
@override
|
||
String get tos => '계속하면 이용약관 및 개인정보 처리방침에 동의하는 것입니다';
|
||
|
||
@override
|
||
String get obSkip => '건너뛰기';
|
||
@override
|
||
String get obNext => '다음';
|
||
@override
|
||
String get obAllow => '허용하고 계속';
|
||
@override
|
||
String get obStart => '시작하기';
|
||
@override
|
||
String get ob1Title => '전 세계로 연결';
|
||
@override
|
||
String get ob1Sub => '80개 이상의 지역, 자동 최적 경로, 안정적인 연결.';
|
||
@override
|
||
String get ob2Title => '네트워크 설정 허용';
|
||
@override
|
||
String get ob2Sub => '암호화된 터널을 구성하기 위해 시스템이 네트워크 프로필 추가를 요청합니다.';
|
||
@override
|
||
String get ob3Title => '설계부터 프라이버시';
|
||
@override
|
||
String get ob3Sub => '종단 간 암호화. 브라우징 기록을 전혀 저장하지 않습니다.';
|
||
|
||
// ── 购买 / 支付 ──
|
||
@override
|
||
String get purchaseTitle => '요금제 구매';
|
||
@override
|
||
String get paymentTitle => '결제';
|
||
@override
|
||
String get buyNow => '지금 구매';
|
||
@override
|
||
String get payMethodAlipay => 'Alipay';
|
||
@override
|
||
String get payMethodCrypto => 'USDT (TRC20)';
|
||
@override
|
||
String get choosePayMethod => '결제 수단 선택';
|
||
@override
|
||
String get proMonthly => 'Pro · 월간';
|
||
@override
|
||
String get proQuarterly => 'Pro · 분기';
|
||
@override
|
||
String get proYearly => 'Pro · 연간';
|
||
@override
|
||
String get perQuarter => '/분기';
|
||
@override
|
||
String get perYear => '/년';
|
||
@override
|
||
String get payAmountLabel => '송금액';
|
||
@override
|
||
String get payAddressLabel => '입금 주소';
|
||
@override
|
||
String get payNetworkLabel => '네트워크';
|
||
@override
|
||
String get payExactAmountHint => '정확한 금액을 보내주세요. 입금 확인 후 자동으로 활성화됩니다';
|
||
@override
|
||
String get copied => '복사됨';
|
||
@override
|
||
String get openAlipay => 'Alipay로 결제';
|
||
@override
|
||
String get openAlipayHint => '결제 후 돌아오면 이 페이지가 자동으로 새로고침됩니다';
|
||
@override
|
||
String get openAlipayFailed => 'Alipay를 열 수 없습니다. 설치되어 있는지 확인하거나 다시 시도하세요';
|
||
@override
|
||
String get awaitingPayment => '결제 대기 중';
|
||
@override
|
||
String get paySucceeded => '활성화됨';
|
||
@override
|
||
String get payExpiresAt => '유효기간';
|
||
@override
|
||
String get payDone => '완료';
|
||
@override
|
||
String get payFailed => '결제 실패';
|
||
@override
|
||
String get payRetry => '다시 시도';
|
||
@override
|
||
String get switchPayMethod => '다른 결제 수단으로 변경';
|
||
@override
|
||
String get cancelOrder => '주문 취소';
|
||
@override
|
||
String get qrNotSupported => '내용을 복사해 Alipay에서 여세요';
|
||
|
||
// ── 支付渠道 switch + 订单 ──
|
||
@override
|
||
String get payChannel => '결제 채널';
|
||
@override
|
||
String get payChannelUsdt => 'USDT · 암호화폐';
|
||
@override
|
||
String get payChannelCny => '위안화 · Alipay';
|
||
@override
|
||
String get perMonthSuffix => ' /월';
|
||
@override
|
||
String get ordersTitle => '내 주문';
|
||
@override
|
||
String get orderDetailTitle => '주문 상세';
|
||
@override
|
||
String get ordersEmpty => '주문이 없습니다';
|
||
@override
|
||
String get orderNoLabel => '주문 번호';
|
||
@override
|
||
String get orderPlanLabel => '플랜';
|
||
@override
|
||
String get orderMethodLabel => '결제 수단';
|
||
@override
|
||
String get orderAmountLabel => '금액';
|
||
@override
|
||
String get orderCreatedLabel => '생성 시각';
|
||
@override
|
||
String get orderPaidLabel => '결제 시각';
|
||
@override
|
||
String get orderStatusPaid => '활성화됨';
|
||
@override
|
||
String get orderStatusCanceled => '취소됨';
|
||
@override
|
||
String get orderContinuePay => '결제 계속';
|
||
@override
|
||
String get orderRefresh => '새로고침';
|
||
@override
|
||
String get orderRebuy => '다시 구매';
|
||
@override
|
||
String get payMethodNezha => 'Nazhapay';
|
||
|
||
// ── 邀请 / 通知 / 设置分组 / 订单过期(Spec ②③占位) ──
|
||
@override
|
||
String get inviteEntry => '친구 초대하고 멤버십 받기';
|
||
@override
|
||
String get inviteEntrySub => '친구가 가입하면 · 양쪽 모두 회원 일수 획득';
|
||
@override
|
||
String get inviteTitle => '친구 초대';
|
||
@override
|
||
String get inviteCodeLabel => '초대 코드';
|
||
@override
|
||
String get inviteLinkLabel => '초대 링크';
|
||
@override
|
||
String get inviteCopyCode => '코드 복사';
|
||
@override
|
||
String get inviteCopyLink => '링크 복사';
|
||
@override
|
||
String get inviteRewardsTitle => '보상 규칙';
|
||
@override
|
||
String get inviteRewardRegister => '친구 가입 · 양쪽 각 3일 지급';
|
||
@override
|
||
String get inviteRewardFirstBuy => '친구 첫 구매 · 양쪽 각 15일 지급';
|
||
@override
|
||
String get inviteRewardJoinTg => 'TG 채널 가입 · 3일 지급';
|
||
@override
|
||
String get inviteProgressTitle => '내 보상';
|
||
@override
|
||
String get notifTitle => '알림';
|
||
@override
|
||
String get notifEmpty => '알림이 없습니다';
|
||
@override
|
||
String get notifTypeNews => '소식';
|
||
@override
|
||
String get notifTypeFeature => '기능';
|
||
@override
|
||
String get notifTypeImportant => '중요';
|
||
@override
|
||
String get settingsGroupConn => '연결';
|
||
@override
|
||
String get settingsGroupAppearance => '화면';
|
||
@override
|
||
String get settingsGroupAbout => '정보';
|
||
@override
|
||
String get orderStatusExpired => '만료됨';
|
||
}
|