다운로드 화면 시험을 언어 · 폭별로 · 설정 맨 위 글 · 영어 탐색기 배치 이름 (246 · 251 · 252)
- 246 시험: ko · en · ja × 폭 800 · 1200 (P11 확인에서 영어 · 일본어는 체크가 안 보였음) - 251 (기기 확인): 영어 설정 맨 위 글이 잘림 - 두 줄까지 · 'Saved automatically' - 252 (기기 확인): 영어 'Side ⇆' 뜻이 잘 오지 않음 - 'Side by side ⇆' · 'Side by side ⇆ / Stacked ⇅' Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>fix_mkv
parent
8bfcb7ceda
commit
e81fa6e5ba
|
|
@ -892,7 +892,7 @@
|
|||
"바꾸거나 끄려면 지금 마스터 비밀번호 (또는 최상 비밀번호) 를 넣으세요.": "To change or turn it off, enter the current master password (or the top password).",
|
||||
"바꾸기": "Change",
|
||||
"바꾸는 정도 {0}%": "Change amount {0}%",
|
||||
"바꾸면 바로 저장됩니다": "Changes are saved right away",
|
||||
"바꾸면 바로 저장됩니다": "Saved automatically",
|
||||
"바꾼 것이 없습니다 (원본 그대로)": "Nothing changed (original as is)",
|
||||
"바뀌는 것 없음 (양쪽이 같습니다)": "Nothing to change (both sides are the same)",
|
||||
"바뀐 것을 살펴보는 간격": "Interval for checking changes",
|
||||
|
|
@ -1728,8 +1728,8 @@
|
|||
"좌 ⇄ 우": "Left ⇄ right",
|
||||
"좌우": "Side by side",
|
||||
"좌우 (기본)": "Side by side (default)",
|
||||
"좌우 ⇆": "Side ⇆",
|
||||
"좌우 ⇆ / 위아래 ⇅": "Side by side ⇆ / Top and bottom ⇅",
|
||||
"좌우 ⇆": "Side by side ⇆",
|
||||
"좌우 ⇆ / 위아래 ⇅": "Side by side ⇆ / Stacked ⇅",
|
||||
"좌우 두 폴더 맞추기 (rsync) · 모니터링 · 실시간 동기화 (lsync)": "Sync two folders (rsync) · monitoring · live sync (lsync)",
|
||||
"좌우 맞추기 (세로로 밀어 봄)": "Fit width (scroll vertically)",
|
||||
"좌우로 밀어 화면 이동": "Swipe left/right to switch screens",
|
||||
|
|
|
|||
|
|
@ -317,8 +317,9 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
Text(tr('환경 설정'), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600)),
|
||||
const Spacer(),
|
||||
Flexible(
|
||||
// 251: 영어 등 긴 언어에서 잘리지 않게 두 줄까지
|
||||
child: Text(tr('바꾸면 바로 저장됩니다'),
|
||||
maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 12, color: JjColors.textDim)),
|
||||
maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 12, color: JjColors.textDim)),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
]),
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -12,6 +13,7 @@ import 'package:jj_mkvmaker/core/encode_options.dart';
|
|||
import 'package:jj_mkvmaker/core/models.dart';
|
||||
import 'package:jj_mkvmaker/core/output_paths.dart';
|
||||
import 'package:jj_mkvmaker/core/srt.dart';
|
||||
import 'package:jj_mkvmaker/l10n/tr.dart';
|
||||
import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart';
|
||||
import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart';
|
||||
import 'package:jj_mkvmaker/services/ai_services.dart';
|
||||
|
|
@ -404,28 +406,37 @@ void main() {
|
|||
d.dispose();
|
||||
});
|
||||
|
||||
testWidgets('246: 폰 가로 (약 800×411) 다운로드 화면 - 버튼 줄의 글이 잘리거나 "전체 선택" 과 겹치지 않는다', (tester) async {
|
||||
tester.view.physicalSize = const Size(800, 411);
|
||||
tester.view.devicePixelRatio = 1;
|
||||
addTearDown(tester.view.reset);
|
||||
final s = AppSettings();
|
||||
final d = DownloadManager(backends: [_Backend()], settings: () => s, readClipboard: () async => null);
|
||||
addTearDown(d.dispose);
|
||||
d.addToEditList = (files) async => files.length;
|
||||
d.setAutoAdd = (on) async => s.addFinishedDownloads = on;
|
||||
d.addPage('https://vimeo.com/1')!.title = '영상';
|
||||
await tester.pumpWidget(MaterialApp(home: DownloadsPage(d: d)));
|
||||
await tester.pump();
|
||||
expect(tester.takeException(), isNull);
|
||||
final all = tester.getRect(find.text('전체 선택'));
|
||||
final auto = tester.getRect(find.text('완료 시 자동 동영상 추가'));
|
||||
expect(auto.overlaps(all), isFalse, reason: '$auto · $all');
|
||||
expect([auto.left >= 0, auto.right <= 800], [true, true], reason: '화면 안에 다 보임 $auto');
|
||||
for (final t in ['일시정지', '재개', '다운로드 취소', '삭제', '완료 정리']) {
|
||||
final r = tester.getRect(find.text(t).first);
|
||||
expect([r.left >= 0, r.right <= 800], [true, true], reason: '$t $r');
|
||||
// 246 · P11 확인 (921): 영어 · 일본어는 글이 길어 체크가 아예 안 보였다 - 언어 · 폭마다
|
||||
for (final lang in ['ko', 'en', 'ja']) {
|
||||
for (final w in [800.0, 1200.0]) {
|
||||
testWidgets('246: 다운로드 화면 ($lang, 폭 $w) - 버튼 줄의 글이 잘리거나 "전체 선택" 과 겹치지 않는다', (tester) async {
|
||||
Map<String, String> dict(String code) =>
|
||||
Map<String, String>.from(jsonDecode(File('assets/l10n/$code.json').readAsStringSync()) as Map);
|
||||
setTranslations(lang, lang == 'ko' ? const {} : dict(lang), lang == 'ko' ? const {} : dict('en'));
|
||||
addTearDown(() => setTranslations('ko', const {}));
|
||||
tester.view.physicalSize = Size(w, 411);
|
||||
tester.view.devicePixelRatio = 1;
|
||||
addTearDown(tester.view.reset);
|
||||
final s = AppSettings();
|
||||
final d = DownloadManager(backends: [_Backend()], settings: () => s, readClipboard: () async => null);
|
||||
addTearDown(d.dispose);
|
||||
d.addToEditList = (files) async => files.length;
|
||||
d.setAutoAdd = (on) async => s.addFinishedDownloads = on;
|
||||
d.addPage('https://vimeo.com/1')!.title = '영상';
|
||||
await tester.pumpWidget(MaterialApp(home: DownloadsPage(d: d)));
|
||||
await tester.pump();
|
||||
expect(tester.takeException(), isNull);
|
||||
final all = tester.getRect(find.text(tr('전체 선택')));
|
||||
final auto = tester.getRect(find.text(tr('완료 시 자동 동영상 추가')));
|
||||
expect(auto.overlaps(all), isFalse, reason: '$auto · $all');
|
||||
expect([auto.left >= 0, auto.right <= w], [true, true], reason: '화면 안에 다 보임 $auto');
|
||||
for (final t in ['일시정지', '재개', '다운로드 취소', '삭제', '완료 정리']) {
|
||||
final r = tester.getRect(find.text(tr(t)).first);
|
||||
expect([r.left >= 0, r.right <= w], [true, true], reason: '$t $r');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
testWidgets('환경 설정 · 종료 버튼: 모든 화면에서 같은 자리', (tester) async {
|
||||
tester.view.physicalSize = const Size(1500, 900);
|
||||
|
|
|
|||
Loading…
Reference in New Issue