korean locale got implemented + some localization fixes

This commit is contained in:
dan63047 2025-02-12 17:38:18 +03:00
parent 71886c0a2c
commit a42a2b93de
16 changed files with 3383 additions and 66 deletions

View File

@ -21,6 +21,7 @@ You can [download an app](https://github.com/dan63047/TetraStats/releases), or [
- **p1nkl0bst3r** — providing players history and peak TR - **p1nkl0bst3r** — providing players history and peak TR
- **neko_ab4093** — Simplified Chinese localization - **neko_ab4093** — Simplified Chinese localization
- **founntain** — German localization - **founntain** — German localization
- **Tau, ctpw, PyHoKxvx, muqhc, xantho, mazohu, CEL_ESTIAL, pensil** — Korean localization
- **osk** and his team — TETR.IO - **osk** and his team — TETR.IO
## Legal notes ## Legal notes

2
debian/debian.yaml vendored
View File

@ -6,7 +6,7 @@ flutter_app:
control: control:
Package: tetra-stats Package: tetra-stats
Version: 2.0.4 Version: 2.0.6
Architecture: amd64 Architecture: amd64
Essential: no Essential: no
Priority: optional Priority: optional

View File

@ -1,5 +1,5 @@
[Desktop Entry] [Desktop Entry]
Version=2.0.4 Version=2.0.6
Name=Tetra Stats Name=Tetra Stats
GenericName=Tetra Stats GenericName=Tetra Stats
Comment=Track your and other player stats in TETR.IO Comment=Track your and other player stats in TETR.IO

File diff suppressed because it is too large Load Diff

View File

@ -21,10 +21,11 @@ class AboutView extends StatefulWidget {
class AboutCard extends StatelessWidget{ class AboutCard extends StatelessWidget{
final String title; final String title;
final String value; final String value;
final bool smallValue; // it's about size lol
final String? undervalue; //what? final String? undervalue; //what?
final List<InlineSpan> endvalue; // ... final List<InlineSpan> endvalue; // ...
const AboutCard(this.title, this.value, this.undervalue, this.endvalue); const AboutCard(this.title, this.value, this.undervalue, this.endvalue, {this.smallValue=false});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -32,7 +33,7 @@ class AboutCard extends StatelessWidget{
children: [ children: [
Text(title, style: Theme.of(context).textTheme.titleMedium, textAlign: TextAlign.center), Text(title, style: Theme.of(context).textTheme.titleMedium, textAlign: TextAlign.center),
Divider(), Divider(),
Text(value, textAlign: TextAlign.center, style: Theme.of(context).textTheme.headlineMedium), Text(value, textAlign: TextAlign.center, style: smallValue ? null : Theme.of(context).textTheme.headlineMedium),
if (undervalue != null) Text(undervalue!, textAlign: TextAlign.center), if (undervalue != null) Text(undervalue!, textAlign: TextAlign.center),
Divider(), Divider(),
Padding( Padding(
@ -124,20 +125,17 @@ class AboutState extends State<AboutView> {
TextSpan(text: t.aboutView.supportHim, style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("dan63.by", "donate"));}) TextSpan(text: t.aboutView.supportHim, style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("dan63.by", "donate"));})
])), ])),
FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.providedFormulas, "kerrmunism", null, [ FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.providedFormulas, "kerrmunism", null, [
//TextSpan(text: "Support him!", style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("paypal.com", "paypalme/Kerrmunism"));})
])), ])),
FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.providedS1history, "p1nkl0bst3r", null, [ FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.providedS1history, "p1nkl0bst3r", null, [
//TextSpan(text: "Support him!", style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("paypal.com", "paypalme/Kerrmunism"));})
])), ])),
FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.inoue, "szy", null, [ FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.inoue, "szy", null, [
//TextSpan(text: "Support him!", style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("paypal.com", "paypalme/Kerrmunism"));})
])), ])),
FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.zhCNlocale, "neko_ab4093", null, [ FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.zhCNlocale, "neko_ab4093", null, [
//TextSpan(text: "Support him!", style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("paypal.com", "paypalme/Kerrmunism"));})
])), ])),
FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.deDElocale, "founntain", null, [ FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.deDElocale, "founntain", null, [
//TextSpan(text: "Support him!", style: TextStyle(decoration: TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: Theme.of(context).colorScheme.primary), recognizer: TapGestureRecognizer()..onTap = (){launchInBrowser(Uri.https("paypal.com", "paypalme/Kerrmunism"));})
])), ])),
FractionallySizedBox(widthFactor: 1/((MediaQuery.of(context).size.width/600).ceil()), child: AboutCard(t.aboutView.koKRlocale, "Tau, ctpw, PyHoKxvx, muqhc,\nxantho, mazohu, CEL_ESTIAL, pensil", null, [
], smallValue: true)),
], ],
), ),
], ],

View File

@ -791,7 +791,7 @@ class _DestinationHomeState extends State<DestinationHome> with SingleTickerProv
const Divider(), const Divider(),
RecordSummary(record: summaries.blitz, betterThanClosestAverage: blitzBetterThanClosestAverage, betterThanRankAverage: blitzBetterThanRankAverage, closestAverage: closestAverageBlitz, rank: summaries.league.rank), RecordSummary(record: summaries.blitz, betterThanClosestAverage: blitzBetterThanClosestAverage, betterThanRankAverage: blitzBetterThanRankAverage, closestAverage: closestAverageBlitz, rank: summaries.league.rank),
const Divider(), const Divider(),
Text("Level ${summaries.blitz != null ? intf.format(summaries.blitz!.stats.level): "--"}${summaries.blitz != null ? f2.format(summaries.blitz!.stats.spp) : "-.--"} SPP • ${summaries.blitz != null ? f2.format(summaries.blitz!.stats.pps) : "-.--"} PPS", style: const TextStyle(color: Colors.grey)) Text("${t.stats.level.full} ${summaries.blitz != null ? intf.format(summaries.blitz!.stats.level): "--"}${summaries.blitz != null ? f2.format(summaries.blitz!.stats.spp) : "-.--"} SPP • ${summaries.blitz != null ? f2.format(summaries.blitz!.stats.pps) : "-.--"} PPS", style: const TextStyle(color: Colors.grey))
], ],
), ),
), ),

View File

@ -203,7 +203,7 @@ class _DestinationSettings extends State<DestinationSettings> with SingleTickerP
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
ListTile( ListTile(
title: Text("Language", style: Theme.of(context).textTheme.displayLarge), title: Text("${t.settingsDestination.language} (Language)", style: Theme.of(context).textTheme.displayLarge),
trailing: DropdownButton( trailing: DropdownButton(
items: locales, items: locales,
value: LocaleSettings.currentLocale, value: LocaleSettings.currentLocale,

View File

@ -32,7 +32,7 @@ class FinesseThingy extends StatelessWidget{
Positioned(left: 25, top: 20, child: Text(t.stats.finesse.widgetTitle, style: TextStyle(fontFamily: "Eurostile Round Extended"))), Positioned(left: 25, top: 20, child: Text(t.stats.finesse.widgetTitle, style: TextStyle(fontFamily: "Eurostile Round Extended"))),
Positioned( Positioned(
right: 0, top: 20, right: 0, top: 20,
child: Text("${finesse != null ? finesse!.faults : "---"}F", style: TextStyle( child: Text("${finesse != null ? finesse!.faults : "---"}${t.stats.finesseFaults.short}", style: TextStyle(
color: getFinesseColor() color: getFinesseColor()
))), ))),
Padding( Padding(

View File

@ -251,7 +251,7 @@ class _UserThingyState extends State<UserThingy> with SingleTickerProviderStateM
text: TextSpan( text: TextSpan(
style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white), style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white),
children: [ children: [
TextSpan(text: "Level ${(widget.player.level.isNegative || widget.player.level.isNaN) ? "---" : intf.format(widget.player.level.floor())}", style: TextStyle(decoration: (widget.player.level.isNegative || widget.player.level.isNaN) ? null : TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: (widget.player.level.isNegative || widget.player.level.isNaN) ? Colors.grey : Colors.white), recognizer: (widget.player.level.isNegative || widget.player.level.isNaN) ? null : TapGestureRecognizer()?..onTap = (){ TextSpan(text: "${t.stats.level.full} ${(widget.player.level.isNegative || widget.player.level.isNaN) ? "---" : intf.format(widget.player.level.floor())}", style: TextStyle(decoration: (widget.player.level.isNegative || widget.player.level.isNaN) ? null : TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: (widget.player.level.isNegative || widget.player.level.isNaN) ? Colors.grey : Colors.white), recognizer: (widget.player.level.isNegative || widget.player.level.isNaN) ? null : TapGestureRecognizer()?..onTap = (){
showDialog( showDialog(
context: context, context: context,
builder: (BuildContext context) => AlertDialog( builder: (BuildContext context) => AlertDialog(

View File

@ -2,7 +2,7 @@ name: tetra_stats
description: Track your and other player stats in TETR.IO description: Track your and other player stats in TETR.IO
publish_to: 'none' publish_to: 'none'
version: 2.0.5+46 version: 2.0.6+47
environment: environment:
sdk: '>=3.0.0' sdk: '>=3.0.0'

View File

@ -2,6 +2,7 @@
"locales(map)": { "locales(map)": {
"en": "English", "en": "English",
"ru-RU": "Russian (Русский)", "ru-RU": "Russian (Русский)",
"ko-KR": "Korean (한국인)",
"zh-CN": "Simplified Chinese (简体中文)", "zh-CN": "Simplified Chinese (简体中文)",
"de-DE": "German (Deutsch)" "de-DE": "German (Deutsch)"
}, },
@ -382,6 +383,7 @@
"inoue": "Inoue (replay grabber)", "inoue": "Inoue (replay grabber)",
"zhCNlocale": "Simplfied Chinese locale", "zhCNlocale": "Simplfied Chinese locale",
"deDElocale": "German locale", "deDElocale": "German locale",
"koKRlocale": "Korean locale",
"supportHim": "Support him!" "supportHim": "Support him!"
}, },
"stats": { "stats": {

View File

@ -2,6 +2,7 @@
"locales(map)": { "locales(map)": {
"en": "Englisch", "en": "Englisch",
"ru-RU": "Russisch (Русский)", "ru-RU": "Russisch (Русский)",
"ko-KR": "Koreanisch (한국인)",
"zh-CN": "Vereinfachtes Chinesisch (简体中文)", "zh-CN": "Vereinfachtes Chinesisch (简体中文)",
"de-DE": "German (Deutsch)" "de-DE": "German (Deutsch)"
}, },
@ -382,6 +383,7 @@
"inoue": "Inoue (Wiederholungsschnapper)", "inoue": "Inoue (Wiederholungsschnapper)",
"zhCNlocale": "Vereinfachtes Chinesisch Übersetzung", "zhCNlocale": "Vereinfachtes Chinesisch Übersetzung",
"deDElocale": "Deutsche Übersetzung", "deDElocale": "Deutsche Übersetzung",
"koKRlocale": "Korean locale",
"supportHim": "Unterstütze Ihn!" "supportHim": "Unterstütze Ihn!"
}, },
"stats": { "stats": {

View File

@ -0,0 +1,933 @@
{
"locales(map)": {
"en": "영어 (English)",
"ru-RU": "러시아어 (Русский)",
"ko-KR": "한국어",
"zh-CN": "중국어 간체 (简体中文)",
"de-DE": "독일어 (Deutsch)"
},
"gamemodes(map)": {
"league": "테트라 리그",
"zenith": "퀵 플레이",
"zenithex": "전문가용 퀵 플레이",
"40l": "40라인",
"blitz": "블리츠",
"5mblast": "5,000,000 블라스트",
"zen": "젠"
},
"destinations": {
"home": "홈",
"graphs": "그래프",
"leaderboards": "리더보드",
"cutoffs": "커트라인",
"calc": "계산기",
"info": "정보",
"data": "저장된 데이터",
"settings": "설정"
},
"playerRole(map)": {
"user": "사용자",
"banned": "밴",
"bot": "봇",
"sysop": "시스템 운영자",
"admin": "관리자",
"mod": "운영자",
"halfmod": "커뮤니티 운영자",
"anon": "익명"
},
"goBackButton": "뒤로",
"nanow": "지금은 사용할 수 없습니다...",
"seasonEnds": "시즌이 ${countdown} 뒤에 종료됩니다",
"seasonEnded": "시즌이 종료되었습니다",
"overallPB": "개인 최고 기록: $pb m",
"gamesUntilRanked": "랭크를 얻으려면 ${left}판을 더 플레이하세요",
"numOfVictories": "~${wins}승",
"promotionOnNextWin": "승리 시 승급",
"numOfdefeats": "~${losses}패",
"demotionOnNextLoss": "패배 시 강등",
"records": "기록",
"nerdStats": "세부 스탯",
"playstyles": "플레이스타일",
"horoscopes": "천궁도",
"relatedAchievements": "관련 업적",
"season": "시즌",
"smooth": "부드러운",
"dateAndTime": "날짜 / 시간",
"TLfullLBnote": "용량이 크지만, 플레이어들을 스탯으로 줄세우거나 랭크로 걸러낼 수 있게 해 줍니다",
"rank": "랭크",
"verdictGeneral": "$rank 평균보다 $n $verdict",
"verdictBetter": "앞섬",
"verdictWorse": "뒤쳐짐",
"localStanding": "국가 순위",
"xp": {
"title": "경험치 레벨",
"progressToNextLevel": "다음 레벨까지 $percentage",
"progressTowardsGoal": "0 XP에서 레벨 $goal까지 진행도: $percentage ($left XP 남음)"
},
"gametime": {
"title": "정확한 플레이 시간",
"gametimeAday": "일평균 $gametime",
"breakdown": "$years년, \n또는 $months개월,\n또는 $days일,\n또는 $minutes분,\n또는 $seconds초"
},
"track": "추적하기",
"stopTracking": "추적 취소하기",
"supporter": "서포터 ${tier}티어",
"comparingWith": "${oldDate} 와 ${newDate} 의 데이터를 비교 중",
"compare": "비교하기",
"comparison": "비교",
"enterUsername": "입력하세요: 닉네임 혹은 \\$avgX (X는 랭크를 의미)",
"general": "일반",
"badges": "배지들",
"obtainDate": "${date}에 얻음",
"assignedManualy": "이 배지는 TETR.IO 관리자에 의해 부여되었습니다",
"distinguishment": "타이틀",
"banned": "밴",
"bannedSubtext": "TETR.IO 약관이나 규칙을 어기면 밴이 조치됩니다",
"badStanding": "나쁜 평판",
"badStandingSubtext": "최소 한 번 밴을 당한 기록이 있습니다",
"botAccount": "봇 계정",
"botAccountSubtext": "$botMaintainers에 의해 운영됨",
"copiedToClipboard": "클립보드에 복사되었습니다!",
"bio": "자기소개",
"news": "뉴스",
"matchResult": {
"victory": "승리",
"defeat": "패배",
"tie": "무승부",
"dqvictory": "상대의 연결이 끊어짐",
"dqdefeat": "실격패",
"nocontest": "경기 취소",
"nullified": "경기 무효"
},
"distinguishments": {
"noHeader": "헤더를 찾을 수 없음",
"noFooter": "푸터를 찾을 수 없음",
"twc": "TETR.IO 세계 챔피언",
"twcYear": "$year TETR.IO 세계 챔피언십"
},
"newsEntries": {
"leaderboard(rich)": "$gametype에서 $rank등을 달성했습니다",
"personalbest(rich)": "$gametype에서 $pb의 최고 기록을 달성했습니다",
"badge(rich)": "배지 획득: $badge",
"rankup(rich)": "테트라 리그 $rank 달성",
"supporter(rich)": "${s(TETR.IO supporter)} 가 되었습니다",
"supporter_gift(rich)": "${s(TETR.IO supporter)} 를 선물받았습니다",
"unknown(rich)": "$type 종류의 확인되지 않은 소식"
},
"rankupMiddle": "${r} 랭크",
"copyUserID": "클릭하여 유저 ID를 복사",
"searchHint": "닉네임 또는 ID",
"navMenu": "탐색 메뉴",
"navMenuTooltip": "메뉴 열기",
"refresh": "정보 새로고침",
"searchButton": "검색",
"trackedPlayers": "추적된 플레이어들",
"standing": "순위",
"previousSeasons": "이전 시즌들",
"recent": "최근",
"top": "상위",
"noRecord": "기록 없음",
"sprintAndBlitsRelevance": "관련성: ${date}",
"snackBarMessages": {
"stateRemoved": "${date} 상태가 데이터베이스에서 제거되었어요!",
"matchRemoved": "${date} 매치가 데이터베이스에서 제거되었어요!",
"notForWeb": "웹 버전은 지원하지 않는 기능이에요",
"importSuccess": "불러오기 성공",
"importCancelled": "불러오기 거부됨"
},
"errors": {
"noRecords": "기록 없음",
"notEnoughData": "데이터가 충분하지 않음",
"noHistorySaved": "저장된 기록 없음",
"connection": "연결 문제 발생: ${code} ${message}",
"noSuchUser": "사용자를 찾을 수 없습니다",
"noSuchUserSub": "당신이 오타를 냈거나, 그 계정이 사라졌을 수 있습니다",
"discordNotAssigned": "주어진 Discord ID에 해당하는 사용자가 없습니다",
"discordNotAssignedSub": "알맞은 ID를 입력하셨는지 다시 한번 확인해 주세요",
"history": "기록 찾기 실패",
"actionSuggestion": "이것을 찾으셨나요?",
"p1nkl0bst3rTLmatches": "테트라 리그 기록 없음",
"clientException": "인터넷 연결 없음",
"forbidden": "당신의 IP주소가 차단되었습니다",
"forbiddenSub": "만약 VPN이나 프록시 우회를 사용하고 계신다면 꺼 주세요. 그래도 문제가 발생하면, $nickname 에게 문의해 주세요",
"tooManyRequests": "레이트 리밋에 걸렸습니다.",
"tooManyRequestsSub": "잠시 기다렸다가 다시 시도해주세요",
"internal": "TETR.IO측에 문제가 일어났습니다",
"internalSub": "(osk는 이 문제에 대해 이미 알고 있을 것입니다)",
"internalWebVersion": "TETR.IO측 (또는 oskware_bridge, 솔직히 잘은 모르겠네요)에 문제가 일어났습니다",
"internalWebVersionSub": "만약 osk의 서버 상태 페이지(status.osk.sh)에 오류가 없다고 나온다면, dan63047에게 이 문제를 알려주세요",
"oskwareBridge": "oskware_bridge에 문제가 일어났습니다",
"oskwareBridgeSub": "dan63047에게 이 문제를 알려주세요",
"p1nkl0bst3rForbidden": "서드 파티 API가 당신의 IP 주소를 차단했습니다",
"p1nkl0bst3rTooManyRequests": "서드 파티 API에 너무 많은 요청이 들어왔습니다. 나중에 다시 시도해 주세요",
"p1nkl0bst3rinternal": "p1nkl0bst3r측에 문제가 일어났습니다",
"p1nkl0bst3rinternalWebVersion": "p1nkl0bst3r 측 (또는 oskware_bridge, 솔직히 잘은 모르겠네요)에 문제가 일어났습니다",
"replayAlreadySaved": "리플레이가 이미 저장됨",
"replayExpired": "리플레이가 만료되었으며 더 이상 볼 수 없습니다",
"replayRejected": "서드 파티 API가 당신의 IP 주소를 차단했습니다"
},
"actions": {
"cancel": "취소",
"submit": "제출",
"ok": "확인",
"apply": "적용",
"refresh": "새로고침"
},
"graphsDestination": {
"fetchAndsaveTLHistory": "기록 불러오기",
"fetchAndSaveOldTLmatches": "테트라 리그 경기 기록 불러오기",
"fetchAndsaveTLHistoryResult": "${number}개 상태가 발견됨",
"fetchAndSaveOldTLmatchesResult": "${number} 개의 경기를 찾았습니다",
"gamesPlayed": "$games 판 플레이함",
"dateAndTime": "날짜 및 시간",
"filterModaleTitle": "랭크별로 그래프 필터링하기"
},
"filterModale": {
"all": "모두"
},
"cutoffsDestination": {
"title": "테트라 리그 상황",
"relevance": "$timestamp 기준",
"actual": "실제",
"target": "목표",
"cutoffTR": "현재 커트라인",
"targetTR": "의도된 커트라인",
"state": "인플레이션/디플레이션",
"advanced": "고급",
"players": "플레이어 수 ($n)",
"moreInfo": "추가 정보",
"NumberOne": "현재 1위: $tr TR",
"inflated": "$tr TR 인플레이션",
"notInflated": "인플레이션 없음",
"deflated": "$tr TR 디플레이션",
"notDeflated": "디플레이션 없음",
"wellDotDotDot": "음...",
"fromPlace": "$n위까지",
"viewButton": "보기"
},
"rankView": {
"rankTitle": "$rank 랭크 정보",
"everyoneTitle": "전체 리더보드",
"trRange": "TR 범위",
"supposedToBe": "의도된 범위",
"gap": "$value 범위",
"trGap": "$value TR 범위",
"deflationGap": "디플레이션 범위",
"inflationGap": "인플레이션 범위",
"LBposRange": "리더보드 순위 구간",
"overpopulated": "실제로는 $players 더 많음",
"underpopulated": "실제로는 $players 더 적음",
"PlayersEqualSupposedToBe": "귀엽다",
"avgStats": "평균 스탯",
"avgForRank": "$rank 랭크 평균",
"avgNerdStats": "평균 세부 스탯",
"minimums": "최소",
"maximums": "최대"
},
"stateView": {
"title": "$date 당시 상태"
},
"tlMatchView": {
"match": "경기",
"vs": "vs",
"winner": "승자",
"roundNumber": "라운드 $n",
"statsFor": "스탯의 분야:",
"numberOfRounds": "라운드 수",
"matchLength": "경기 길이",
"roundLength": "라운드 길이",
"matchStats": "경기 스탯",
"downloadReplay": ".ttrm 리플레이 다운로드",
"openReplay": "TETR.IO에서 리플레이 열기"
},
"calcDestination": {
"placeholders": "당신의 $stat을 입력하세요",
"tip": "값을 입력하고 \"계산\" 버튼을 눌러 세부 스탯을 확인하세요",
"statsCalcButton": "계산",
"damageCalcTip": "왼쪽에서 줄 클리어를 눌러 여기 추가하세요",
"actions": "줄 클리어",
"results": "결과",
"rules": "규칙",
"noSpinClears": "스핀이 아닌 줄 클리어",
"spins": "스핀",
"miniSpins": "스핀 미니",
"noLineclear": "줄 클리어 없음 (콤보 끊김)",
"custom": "직접 입력",
"multiplier": "멀티플라이어",
"pcDamage": "퍼펙트 클리어 데미지",
"comboTable": "콤보 테이블",
"b2bChaining": "백투백 체인",
"surgeStartAtB2B": "서지가 시작되는 백투백",
"surgeStartAmount": "서지 시작 시 대미지",
"totalDamage": "총 대미지",
"lineclears": "지운 줄",
"combo": "콤보",
"surge": "서지",
"pcs": "퍼펙트 클리어"
},
"infoDestination": {
"title": "정보",
"sprintAndBlitzAverages": "40 라인 & 블리츠 랭크별 평균치",
"sprintAndBlitzAveragesDescription": "40 라인과 블리츠 평균을 계산하는 것은 고된 작업이기 때문에 가끔씩 업데이트됩니다. 전체 40 라인과 블리츠 평균 표를 보려면 제목을 클릭하세요",
"tetraStatsWiki": "Tetra Stats 위키 (영어)",
"tetraStatsWikiDescription": "Tetra Stats가 제공하는 기능과 통계에 대한 더 자세한 정보를 알아보세요",
"about": "Tetra Stats에 대해",
"aboutDescription": "dan63에 의해 제작됨\n"
},
"leaderboardsDestination": {
"title": "리더보드",
"tl": "테트라 리그 (현재 시즌)",
"fullTL": "테트라 리그 (현재 시즌, 전체 스탯)",
"ar": "업적 점수"
},
"savedDataDestination": {
"title": "저장된 정보",
"tip": "왼쪽의 닉네임을 누르시면 정보가 표시됩니다",
"seasonTLstates": "시즌 $s 테트라 리그 상황",
"TLrecords": "테트라 리그 기록"
},
"settingsDestination": {
"title": "설정",
"general": "일반",
"customization": "사용자 설정",
"database": "로컬 데이터베이스",
"checking": "확인 중...",
"enterToSubmit": "Enter 키를 눌러 제출하세요",
"account": "당신의 TETR.IO 계정",
"accountDescription": "앱이 실행되면 해당 플레이어의 스탯이 불러와집니다. 나의 (dan63) 스탯을 불러오는 게 기본값입니다. 바꾸려면, 당신의 닉네임을 입력하세요.",
"done": "완료!",
"noSuchAccount": "그런 계정이 없음",
"language": "언어",
"languageDescription": "Tetra Stats는 $languages로 번역되었습니다. 기본적으로 이 앱은 사용자의 시스템 언어를 고르지만, 만약 시스템 언어 번역이 지원되지 않는다면 영어를 고릅니다.",
"languages(plural)": {
"zero": "0개의 언어",
"one": "$n개의 언어",
"two": "$n개의 언어",
"few": "$n개의 언어",
"many": "$n개의 언어",
"other": "$n개의 언어"
},
"updateInTheBackground": "백그라운드에서 정보 업데이트",
"updateInTheBackgroundDescription": "켜져 있다면, Tetra Stats는 캐시가 만료될 때마다 새로운 정보를 받으려고 시도할 것입니다. 주로 이는 5분마다 일어납니다.",
"compareStats": "테트라 리그 스탯을 랭크 평균과 비교하기",
"compareStatsDescription": "켜져 있다면, Tetra Stats는 당신이 당신의 랭크의 평균적인 플레이어와 스탯을 비교할 수 있도록 당신의 스탯을 알맞은 색으로 강조할 것입니다. 스탯 위에 커서를 올려 더 많은 정보를 확인하세요.",
"showPosition": "리더보드에서 스탯별 순위 표시",
"showPositionDescription": "켜져 있다면, 로딩 시간이 더 길어지지만 당신의 스탯별 순위를 볼 수 있도록 합니다",
"accentColor": "강조 색",
"accentColorDescription": "강조 색은 앱 곳곳에서 주로 상호작용 가능한 요소를 강조하기 위해 사용됩니다.",
"accentColorModale": "강조 색 고르기",
"timestamps": "시간 표시 형식",
"timestampsDescriptionPart1": "시각 표시 형식을 고릅니다. 기본 설정은 협정 세계시 (UTC)기준 시각을 언어에 맞는 형식으로 표시하는 것입니다. 예시: $d.",
"timestampsDescriptionPart2": "또한 다음과 같은 시간 표시 형식도 고를 수 있습니다:\n• 언어에 맞는 형식, 사용자의 시간대: $y\n• 상대적인 시간 표시: $r",
"timestampsAbsoluteGMT": "협정 세계시 (UTC) 기준",
"timestampsAbsoluteLocalTime": "사용자의 시간대 기준",
"timestampsRelative": "상대적인 시간 표시",
"sheetbotLikeGraphs": "레이더 그래프를 Sheetbot의 형식으로 표시",
"sheetbotLikeGraphsDescription": "저는 Sheetbot 형식의 레이더 그래프가 별로 정확하지 않다고 판단하였지만, 몇몇 사람들은 -0.5 스트라이딩 스탯이 Sheetbot 그래프에서처럼 표시되지 않는 것을 보고 혼란스러워 했습니다. 따라서, 이 설정이 켜져 있다면, 레이더 그래프의 점들은 스탯이 음수일 때 반대쪽에 나타날 것입니다.",
"oskKagariGimmick": "Osk-Kagari 기믹",
"oskKagariGimmickDescription": "켜져 있다면, osk의 랭크 대신 :kagari:가 표시됩니다.",
"bytesOfDataStored": "만큼의 데이터가 저장됨",
"TLrecordsSaved": "테트라 리그 기록 저장됨",
"TLplayerstatesSaved": "테트라 리그 플레이어스탯 저장됨",
"fixButton": "수정",
"compressButton": "압축",
"exportDB": "로컬 저장소로 내보내기",
"desktopExportAlertTitle": "데스크탑용 내보내기",
"desktopExportText": "데스크탑 버전으로 앱을 사용하시는 것 같군요. 문서 폴더로 들어가서, \"TetraStats.db\"를 찾고, 어딘가로 복사하세요",
"androidExportAlertTitle": "안드로이드용 내보내기",
"androidExportText": "내보내기 완료.\n${exportedDB}",
"importDB": "로컬 저장소에서 가져오기",
"importDBDescription": "백업을 복구합니다. 저장되어 있던 데이터베이스가 덮어씌워질 것임을 알려드립니다.",
"importWrongFileType": "잘못된 파일 형식"
},
"homeNavigation": {
"overview": "둘러보기",
"standing": "순위",
"seasons": "시즌",
"mathces": "매치",
"pb": "개인 최고 기록",
"normal": "일반",
"expert": "전문가",
"expertRecords": "기록 내보내기"
},
"graphsNavigation": {
"history": "플레이어 기록",
"league": "리그 현황",
"cutoffs": "커트라인 기록"
},
"calcNavigation": {
"stats": "스탯 계산기",
"damage": "데미지 계산기"
},
"firstTimeView": {
"welcome": "Tetra Stats에 오신 것을 환영합니다",
"description": "TETR.IO에 대한 다양한 통계를 추적할 수 있는 서비스",
"nicknameQuestion": "당신의 TETR.IO 닉네임은 무엇인가요?",
"inpuntHint": "여기 입력해주세요...(3-16자)",
"emptyInputError": "닉네임을 입력해 주세요",
"niceToSeeYou": "반갑습니다, $n",
"letsTakeALook": "당신의 통계를 살펴보겠습니다...",
"skip": "건너뛰기"
},
"aboutView": {
"title": "Tetra Stats에 대해",
"about": "Tetra Stats는 TETR.IO 테트라 채널의 API를 활용하여 정보를 제공하고, 이 정보에 따른 추가적인 수치를 계산하는 서비스입니다. 이 서비스는 사용자가 테트라 리그에서 어떻게 발전하는지 추적할 수 있는 \"추적\" 기능을 제공합니다. 이 기능은 모든 테트라 리그에서의 변화를 로컬 데이터베이스에 기록하여(실시간으로 기록되지는 않습니다) 사용자가 이를 그래프로 볼 수 있도록 합니다. \n\nBeanserver Blaster는 Tetra Stats의 일부이며, 서버 사이드 스크립트로 떨어져 나왔습니다. Beanserver Blaster는 테트라 리그의 완전한 리더보드와 랭크 컷 등의 정보를 제공하여 Tetra Stats가 리더보드를 원하는 방식으로 정렬하고, 산점도 그래프를 그릴 수 있도록 돕는 역할을 합니다. 이를 통해 사용자는 테트라 리그의 추세를 분석할 수 있습니다. \n\n앞으로 리플레이 분석과 대회 기록 기능을 추가할 계획이 있으니, 계속해서 이 프로젝트에 관심을 기울여 주세요!\n\n이 서비스는 어떠한 방식으로도 TETR.IO 또는 osk와 직접적으로 연관되어 있지 않습니다.",
"appVersion": "앱 버전",
"build": "빌드 $build",
"GHrepo": "깃헙 리포지트리",
"submitAnIssue": "문제 보고하기",
"credits": "크레딧",
"authorAndDeveloper": "제작 & 개발",
"providedFormulas": "공식 제공",
"providedS1history": "테트라 리그 시즌 1 기록 제공",
"inoue": "Inoue (리플레이 그래버)",
"zhCNlocale": "중국어 간체 번역",
"deDElocale": "독일어 번역",
"koKRlocale": "한국어 번역",
"supportHim": "후원하기"
},
"stats": {
"registrationDate": "가입일",
"gametime": "플레이 시간",
"ogp": "온라인 게임을 플레이함",
"ogw": "온라인 게임을 이김",
"followers": "팔로워",
"xp": {
"short": "XP",
"full": "경험치"
},
"tr": {
"short": "TR",
"full": "테트라 레이팅"
},
"glicko": {
"short": "Glicko",
"full": "글리코"
},
"rd": {
"short": "RD",
"full": "레이팅 편차"
},
"glixare": {
"short": "GXE",
"full": "GLIXARE"
},
"s1tr": {
"short": "시즌 1 TR",
"full": "시즌 1 기준 TR"
},
"gp": {
"short": "GP",
"full": "게임을 플레이함"
},
"gw": {
"short": "GW",
"full": "게임을 이김"
},
"winrate": {
"short": "WR%",
"full": "승률"
},
"apm": {
"short": "APM",
"full": "분당 공격"
},
"pps": {
"short": "PPS",
"full": "초당 미노"
},
"vs": {
"short": "VS",
"full": "대결 점수"
},
"app": {
"short": "APP",
"full": "미노당 공격"
},
"vsapm": {
"short": "VS/APM",
"full": "VS / APM"
},
"dss": {
"short": "DS/S",
"full": "초당 깎기"
},
"dsp": {
"short": "DS/P",
"full": "미노당 깎기"
},
"appdsp": {
"short": "APP+DSP",
"full": "APP + DSP"
},
"cheese": {
"short": "치즈",
"full": "치즈 지수"
},
"gbe": {
"short": "GbE",
"full": "쓰레기줄 효율"
},
"nyaapp": {
"short": "wAPP",
"full": "가중 APP"
},
"area": {
"short": "Area",
"full": "영역"
},
"etr": {
"short": "eTR",
"full": "예상 TR"
},
"etracc": {
"short": "±eTR",
"full": "예상 TR 오차"
},
"opener": {
"short": "Opener",
"full": "오프너"
},
"plonk": {
"short": "Plonk",
"full": "플롱크"
},
"stride": {
"short": "Stride",
"full": "스트라이드"
},
"infds": {
"short": "Inf. DS",
"full": "지속 깎기"
},
"altitude": {
"short": "m",
"full": "고도"
},
"climbSpeed": {
"short": "등반 속도",
"full": "등반 속도",
"gaugetTitle": "등반\n속도"
},
"peakClimbSpeed": {
"short": "최고 등반 속도",
"full": "최고 등반 속도",
"gaugetTitle": "고점"
},
"kos": {
"short": "처치",
"full": "처치한 플레이어"
},
"b2b": {
"short": "B2B",
"full": "백투백"
},
"finesse": {
"short": "F",
"full": "피네스",
"widgetTitle": "inesse"
},
"finesseFaults": {
"short": "FF",
"full": "피네스 오류"
},
"totalTime": {
"short": "시간",
"full": "총 시간",
"widgetTitle": "otal Time"
},
"level": {
"short": "레벨",
"full": "레벨"
},
"pieces": {
"short": "P",
"full": "미노"
},
"spp": {
"short": "SPP",
"full": "미노당 점수"
},
"kp": {
"short": "KP",
"full": "키 입력"
},
"kpp": {
"short": "KPP",
"full": "미노당 키 입력"
},
"kps": {
"short": "KPS",
"full": "초당 키 입력"
},
"blitzScore": "$p점",
"levelUpRequirement": "레벨업까지 $p점",
"piecesTotal": "놓은 미노 수",
"piecesWithPerfectFinesse": "피네스를 지킨 미노",
"score": "점수",
"lines": "줄",
"linesShort": "줄",
"pcs": "퍼펙트 클리어",
"holds": "홀드",
"spike": "최고 스파이크",
"top": "상위 $percentage",
"topRank": "최고 랭크: $rank",
"floor": "층수",
"split": "부분",
"total": "전체",
"sent": "보낸 줄",
"received": "받은 줄",
"placement": "위치",
"peak": "고점",
"qpWithMods(plural)": {
"one": "1개 모드 사용",
"two": "$n개 모드 사용",
"few": "$n개 모드 사용",
"many": "$n개 모드 사용",
"other": "$n개 모드 사용"
},
"inputs(plural)": {
"zero": "키를 $n번 누름",
"one": "키를 $n번 누름",
"two": "키를 $n번 누름",
"few": "키를 $n번 누름",
"many": "키를 $n번 누름",
"other": "키를 $n번 누름"
},
"tspinsTotal(plural)": {
"zero": "총 $n번의 T스핀 수행",
"one": "총 $n번의 T스핀 수행",
"two": "총 $n번의 T스핀 수행",
"few": "총 $n번의 T스핀 수행",
"many": "총 $n번의 T스핀 수행",
"other": "총 $n번의 T스핀 수행"
},
"linesCleared(plural)": {
"zero": "$n줄 제거",
"one": "$n줄 제거",
"two": "$n줄 제거",
"few": "$n줄 제거",
"many": "$n줄 제거",
"other": "$n줄 제거"
},
"graphs": {
"attack": "공격",
"speed": "속도",
"defense": "수비",
"cheese": "치즈"
},
"players(plural)": {
"zero": "$n 플레이어",
"one": "$n 플레이어",
"two": "$n 플레이어",
"few": "$n 플레이어",
"many": "$n 플레이어",
"other": "$n 플레이어"
},
"games(plural)": {
"zero": "$n 게임",
"one": "$n 게임",
"two": "$n 게임",
"few": "$n 게임",
"many": "$n 게임",
"other": "$n 게임"
},
"lineClear": {
"single": "싱글",
"double": "더블",
"triple": "트리플",
"quad": "쿼드",
"penta": "펜타",
"hexa": "헥사",
"hepta": "헵타",
"octa": "옥타",
"ennea": "에니아",
"deca": "데카",
"hendeca": "헨데카",
"dodeca": "도데카",
"triadeca": "트라이아데카",
"tessaradeca": "테사라데카",
"pentedeca": "펜타데카",
"hexadeca": "헥사데카",
"heptadeca": "헵타데카",
"octadeca": "옥타데카",
"enneadeca": "에니아데카",
"eicosa": "아이코사",
"kagaris": "카가리스"
},
"lineClears": {
"zero": "제로스",
"single": "싱글",
"double": "더블",
"triple": "트리플",
"quad": "쿼드",
"penta": "펜타"
},
"mini": "미니",
"tSpin": "T스핀",
"tSpins": "T스핀",
"spin": "스핀",
"spins": "스핀"
},
"countries(map)": {
"": "전 세계",
"AF": "아프가니스탄",
"AX": "올란드 제도",
"AL": "알바니아",
"DZ": "알제리",
"AS": "미국령 사모아",
"AD": "안도라",
"AO": "앙골라",
"AI": "앵귈라",
"AQ": "남극",
"AG": "앤티가 바부다",
"AR": "아르헨티나",
"AM": "아르메니아",
"AW": "아루바",
"AU": "호주",
"AT": "오스트리아",
"AZ": "아제르바이잔",
"BS": "바하마",
"BH": "바레인",
"BD": "방글라데시",
"BB": "바베이도스",
"BY": "벨라루스",
"BE": "벨기에",
"BZ": "벨리즈",
"BJ": "베냉",
"BM": "버뮤다",
"BT": "부탄",
"BO": "볼리비아",
"BA": "보스니아 헤르체고비나",
"BW": "보츠와나",
"BV": "부베섬",
"BR": "브라질",
"IO": "영국령 인도양 지역",
"BN": "브루나이",
"BG": "불가리아",
"BF": "부르키나파소",
"BI": "부룬디",
"KH": "캄보디아",
"CM": "카메룬",
"CA": "캐나다",
"CV": "카보베르데",
"BQ": "네덜란드령 카리브섬",
"KY": "케이맨 제도",
"CF": "중앙아프리카 공화국",
"TD": "차드",
"CL": "칠레",
"CN": "중국",
"CX": "크리스마스섬",
"CC": "코코스(킬링)제도",
"CO": "콜롬비아",
"KM": "코모로",
"CG": "콩고",
"CD": "콩고 민주 공화국",
"CK": "쿡 제도",
"CR": "코스타리카",
"CI": "코트디부아르",
"HR": "크로아티아",
"CU": "쿠바",
"CW": "퀴라소",
"CY": "키프로스",
"CZ": "체코",
"DK": "덴마크",
"DJ": "지부티",
"DM": "도미니카",
"DO": "도미니카 공화국",
"EC": "에콰도르",
"EG": "이집트",
"SV": "엘살바도르",
"GB-ENG": "잉글랜드",
"GQ": "적도 기니",
"ER": "에리트레아",
"EE": "에스토니아",
"ET": "에티오피아",
"EU": "유럽 연합",
"FK": "포클랜드 제도",
"FO": "페로 제도",
"FJ": "피지",
"FI": "핀란드",
"FR": "프랑스",
"GF": "프랑스령 기아나",
"PF": "프랑스령 폴리네시아",
"TF": "프랑스령 남방",
"GA": "가봉",
"GM": "감비아",
"GE": "조지아",
"DE": "독일",
"GH": "가나",
"GI": "지브롤터",
"GR": "그리스",
"GL": "그린란드",
"GD": "그레나다",
"GP": "과들루프",
"GU": "괌",
"GT": "과테말라",
"GG": "건지섬",
"GN": "기니",
"GW": "기니비사우",
"GY": "가이아나",
"HT": "아이티",
"HM": "허드 맥도널드 제도",
"VA": "교황청 (바티칸 시국)",
"HN": "온두라스",
"HK": "홍콩",
"HU": "헝가리",
"IS": "아이슬란드",
"IN": "인도",
"ID": "인도네시아",
"IR": "이란",
"IQ": "이라크",
"IE": "아일랜드",
"IM": "맨섬",
"IL": "이스라엘",
"IT": "이탈리아",
"JM": "자메이카",
"JP": "일본",
"JE": "저지섬",
"JO": "요르단",
"KZ": "카자흐스탄",
"KE": "케냐",
"KI": "키리바시",
"KP": "조선민주주의인민공화국",
"KR": "대한민국",
"XK": "코소보",
"KW": "쿠웨이트",
"KG": "키르기스스탄",
"LA": "라오스",
"LV": "라트비아",
"LB": "레바논",
"LS": "레소토",
"LR": "라이베리아",
"LY": "리비아",
"LI": "리히텐슈타인",
"LT": "리투아니아",
"LU": "룩셈부르크",
"MO": "마카오",
"MK": "북마케도니아",
"MG": "마다가스카르",
"MW": "말라위",
"MY": "말레이시아",
"MV": "몰디브",
"ML": "말리",
"MT": "몰타",
"MH": "마셜 제도",
"MQ": "마르티니크",
"MR": "모리타니",
"MU": "모리셔스",
"YT": "마요트",
"MX": "멕시코",
"FM": "미크로네시아 연방",
"MD": "몰도바",
"MC": "모나코",
"ME": "몬테네그로",
"MA": "모로코",
"MN": "몽골",
"MS": "몬트세랫",
"MZ": "모잠비크",
"MM": "미얀마",
"NA": "나미비아",
"NR": "나우루",
"NP": "네팔",
"NL": "네덜란드",
"AN": "네덜란드령 안틸레스",
"NC": "뉴칼레도니아",
"NZ": "뉴질랜드",
"NI": "니카라과",
"NE": "니제르",
"NG": "나이지리아",
"NU": "니우에",
"NF": "노퍽섬",
"GB-NIR": "북아일랜드",
"MP": "북마리아나 제도",
"NO": "노르웨이",
"OM": "오만",
"PK": "파키스탄",
"PW": "팔라우",
"PS": "팔레스타인",
"PA": "파나마",
"PG": "파푸아뉴기니",
"PY": "파라과이",
"PE": "페루",
"PH": "필리핀",
"PN": "핏케언 제도",
"PL": "폴란드",
"PT": "포르투갈",
"PR": "푸에르토리코",
"QA": "카타르",
"RE": "레위니옹",
"RO": "루마니아",
"RU": "러시아",
"RW": "르완다",
"BL": "생바르텔레미",
"SH": "세인트헬레나 어센션 트리스탄다쿠냐",
"KN": "세인트키츠 네비스",
"LC": "세인트 루시아",
"MF": "생마르탱",
"PM": "생피에르 미클롱",
"VC": "세인트 빈센트 그레나딘",
"WS": "사모아",
"SM": "산마리노",
"ST": "상투메 프린시페",
"SA": "사우디아라비아",
"GB-SCT": "스코틀랜드",
"SN": "세네갈",
"RS": "세르비아",
"SC": "세이셸",
"SL": "시에라리온",
"SG": "싱가포르",
"SX": "신트마르턴 (네덜란드령)",
"SK": "슬로바키아",
"SI": "슬로베니아",
"SB": "솔로몬 제도",
"SO": "소말리아",
"ZA": "남아프리카 공화국",
"GS": "사우스조지아 사우스샌드위치 제도",
"SS": "남수단",
"ES": "스페인",
"LK": "스리랑카",
"SD": "수단",
"SR": "수리남",
"SJ": "스발바르 얀마옌 제도",
"SZ": "에스와티니",
"SE": "스웨덴",
"CH": "스위스",
"SY": "시리아",
"TW": "대만",
"TJ": "타지키스탄",
"TZ": "탄자니아",
"TH": "태국",
"TL": "동티모르",
"TG": "토고",
"TK": "토켈라우",
"TO": "통가",
"TT": "트리니다드 토바고",
"TN": "튀니지",
"TR": "튀르키예",
"TM": "투르크메니스탄",
"TC": "터크스 케이커스 제도",
"TV": "투발루",
"UG": "우간다",
"UA": "우크라이나",
"AE": "아랍에미리트",
"GB": "영국",
"US": "미국",
"UY": "우루과이",
"UM": "미국령 군소 제도",
"UZ": "우즈베키스탄",
"VU": "바누아투",
"VE": "볼리비아 베네수엘라",
"VN": "베트남",
"VG": "영국령 버진아일랜드",
"VI": "미국령 버진아일랜드",
"GB-WLS": "웨일스",
"WF": "왈리스 푸투나 제도",
"EH": "서사하라",
"YE": "예멘",
"ZM": "잠비아",
"ZW": "짐바브웨",
"XX": "국적 정보 없음",
"XM": "달"
}
}

View File

@ -2,6 +2,7 @@
"locales(map)": { "locales(map)": {
"en": "Английский (English)", "en": "Английский (English)",
"ru-RU": "Русский", "ru-RU": "Русский",
"ko-KR": "Корейский (한국인)",
"zh-CN": "Упрощенный Китайский (简体中文)", "zh-CN": "Упрощенный Китайский (简体中文)",
"de-DE": "Немецкий (Deutsch)" "de-DE": "Немецкий (Deutsch)"
}, },
@ -309,7 +310,7 @@
"updateInTheBackground": "Обновлять данные в фоновом режиме", "updateInTheBackground": "Обновлять данные в фоновом режиме",
"updateInTheBackgroundDescription": "Пока Tetra Stats работает, он может обновлять статистику самостоятельно когда кэш истекает. Обычно это происходит каждые 5 минут", "updateInTheBackgroundDescription": "Пока Tetra Stats работает, он может обновлять статистику самостоятельно когда кэш истекает. Обычно это происходит каждые 5 минут",
"compareStats": "Сравнивать статистику со средними значениями ранга", "compareStats": "Сравнивать статистику со средними значениями ранга",
"compareStatsDescription": "Если включено, Tetra Stats загрузит средние значения и будет сравнивать вас со средними значениями вашего ранга. В результате этого почти каждый пункт статистики обретёт цвет, наводите курсор, что-бы узнать больше.", "compareStatsDescription": "Если включено, Tetra Stats загрузит средние значения и будет сравнивать вас со средними значениями вашего ранга. В результате этого почти каждый пункт статистики обретёт цвет, наводите курсор, чтобы узнать больше.",
"showPosition": "Показывать позиции по статам", "showPosition": "Показывать позиции по статам",
"showPositionDescription": "На загрузку потребуется немного времени (и трафика), но зато вы сможете видеть своё положение в таблице Тетра Лиги, отсортированной по статам", "showPositionDescription": "На загрузку потребуется немного времени (и трафика), но зато вы сможете видеть своё положение в таблице Тетра Лиги, отсортированной по статам",
"accentColor": "Цветовой акцент", "accentColor": "Цветовой акцент",
@ -382,6 +383,7 @@
"inoue": "Inoue (достаёт повторы)", "inoue": "Inoue (достаёт повторы)",
"zhCNlocale": "Перевёл на упрощённый китайский", "zhCNlocale": "Перевёл на упрощённый китайский",
"deDElocale": "Перевёл на немецкий", "deDElocale": "Перевёл на немецкий",
"koKRlocale": "Перевели на корейский",
"supportHim": "Поддержите его!" "supportHim": "Поддержите его!"
}, },
"stats": { "stats": {

View File

@ -2,6 +2,7 @@
"locales(map)": { "locales(map)": {
"en": "英语 (English)", "en": "英语 (English)",
"ru-RU": "俄语 (Русский)", "ru-RU": "俄语 (Русский)",
"ko-KR": "韩语 (한국인)",
"zh-CN": "简体中文", "zh-CN": "简体中文",
"de-DE": "德语 (Deutsch)" "de-DE": "德语 (Deutsch)"
}, },
@ -54,7 +55,7 @@
"dateAndTime": "日期和时间:", "dateAndTime": "日期和时间:",
"TLfullLBnote": "很大,但允许你通过玩家的数据对玩家进行排序,还可以按段位筛选玩家", "TLfullLBnote": "很大,但允许你通过玩家的数据对玩家进行排序,还可以按段位筛选玩家",
"rank": "段位", "rank": "段位",
"verdictGeneral": "比 $rank 段平均数据$n $verdict", "verdictGeneral": "比 $rank 段平均数据$verdict $n",
"verdictBetter": "好", "verdictBetter": "好",
"verdictWorse": "差", "verdictWorse": "差",
"localStanding": "本地", "localStanding": "本地",
@ -100,7 +101,7 @@
}, },
"distinguishments": { "distinguishments": {
"noHeader": "缺少标题", "noHeader": "缺少标题",
"noFooter": "缺少标题", "noFooter": "缺少页脚",
"twc": "TETR.IO 世界冠军", "twc": "TETR.IO 世界冠军",
"twcYear": "$year TETR.IO 世界杯" "twcYear": "$year TETR.IO 世界杯"
}, },
@ -121,7 +122,7 @@
"refresh": "刷新数据", "refresh": "刷新数据",
"searchButton": "搜索", "searchButton": "搜索",
"trackedPlayers": "跟踪的玩家", "trackedPlayers": "跟踪的玩家",
"standing": "名次", "standing": "排行",
"previousSeasons": "上赛季", "previousSeasons": "上赛季",
"recent": "最近", "recent": "最近",
"top": "前", "top": "前",
@ -196,10 +197,10 @@
"players": "玩家($n", "players": "玩家($n",
"moreInfo": "更多信息", "moreInfo": "更多信息",
"NumberOne": "№ 1 is $tr TR", "NumberOne": "№ 1 is $tr TR",
"inflated": "高于目标 $tr", "inflated": "标 $tr",
"notInflated": "不偏高", "notInflated": "未超标",
"deflated": "低于目标 $tr", "deflated": "未达标 $tr",
"notDeflated": "不偏低", "notDeflated": "达标",
"wellDotDotDot": "嗯…", "wellDotDotDot": "嗯…",
"fromPlace": "自 № $n", "fromPlace": "自 № $n",
"viewButton": "查看" "viewButton": "查看"
@ -360,7 +361,7 @@
}, },
"firstTimeView": { "firstTimeView": {
"welcome": "欢迎使用 Tetra Stats", "welcome": "欢迎使用 Tetra Stats",
"description": "服务,允许您跟踪TETR.IO的各种数据", "description": "您跟踪TETR.IO的各种数据的好帮手",
"nicknameQuestion": "您的昵称是?", "nicknameQuestion": "您的昵称是?",
"inpuntHint": "在此处输入... (3-16个符号)", "inpuntHint": "在此处输入... (3-16个符号)",
"emptyInputError": "不能提交空字符串", "emptyInputError": "不能提交空字符串",
@ -381,7 +382,8 @@
"providedS1history": "提供的 S1 历史", "providedS1history": "提供的 S1 历史",
"inoue": "Inoue (回放抓取器)", "inoue": "Inoue (回放抓取器)",
"zhCNlocale": "简中翻译员", "zhCNlocale": "简中翻译员",
"deDElocale": "德国语言环境", "deDElocale": "德语翻译员",
"koKRlocale": "韩语翻译员",
"supportHim": "为他提供支持!" "supportHim": "为他提供支持!"
}, },
"stats": { "stats": {
@ -487,12 +489,12 @@
"full": "定式" "full": "定式"
}, },
"plonk": { "plonk": {
"short": "太极", "short": "低速",
"full": "太极" "full": "低速"
}, },
"stride": { "stride": {
"short": "", "short": "速",
"full": "" "full": "速"
}, },
"infds": { "infds": {
"short": "挖掘", "short": "挖掘",
@ -508,7 +510,7 @@
"gaugetTitle": "爬行速度" "gaugetTitle": "爬行速度"
}, },
"peakClimbSpeed": { "peakClimbSpeed": {
"short": "最高CSP", "short": "最高",
"full": "最高爬行速度", "full": "最高爬行速度",
"gaugetTitle": "最高" "gaugetTitle": "最高"
}, },
@ -523,7 +525,7 @@
"finesse": { "finesse": {
"short": "极", "short": "极",
"full": "极简率", "full": "极简率",
"widgetTitle": "简率" "widgetTitle": "简率"
}, },
"finesseFaults": { "finesseFaults": {
"short": "非极简", "short": "非极简",

View File

@ -131,7 +131,7 @@
} }
</style> </style>
<!-- This script adds the flutter initialization JS code --> <!-- This script adds the flutter initialization JS code -->
<script src="flutter.js?version=2.0.5" defer></script> <script src="flutter.js?version=2.0.6" defer></script>
</head> </head>
<body> <body>
<div id="preloader"> <div id="preloader">