Skip to content

Commit 07d2e29

Browse files
committed
fixup: address Copilot PR review on #4
5 inline comments resolved: 1. network.dart bypass-domain count uses Intl.plural now (was string concatenation that produced "1 default domains active" for n=1) 2. clash_config.dart FallbackFilter CN→RU defaults — already covered by previous fixup commit (RU geoip-code, RU-blocked domains, typical spoof ipcidr); updating PR description to mention this 3. task.dart find-process-mode comment fixed — FlClash enum is {always, off} (no 'strict'); upstream mihomo allows 'strict' but FlClash UI only toggles always/off 4. messages_ja.dart + messages_zh_CN.dart now include the new keys (advanced, detailsSection, dns* sections, geoDatabases*, ipv6Mode*, legalAndDisclaimer, generalSettings, diagnostics) so JA and ZH-CN locales no longer fall back to English 5. UnifiedIpv6Item label "IPv6" wrapped in Intl.message(name: 'ipv6') to flow through l10n (term itself is universal but the lookup is now consistent) Also remove the now-unused 'defaultDomainsActive' l10n key (replaced by Intl.plural inline).
1 parent 6a3fec6 commit 07d2e29

10 files changed

Lines changed: 49 additions & 16 deletions

File tree

arb/intl_en.arb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@
9797
"advanced": "Advanced",
9898
"detailsSection": "Details",
9999
"diagnostics": "Diagnostics",
100-
"defaultDomainsActive": "default domains active",
101100
"dnsCoreSection": "Core",
102101
"dnsServersSection": "Servers",
103102
"dnsFakeIpSection": "Fake-IP",

arb/intl_ja.arb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@
9797
"advanced": "詳細設定",
9898
"detailsSection": "詳細",
9999
"diagnostics": "診断",
100-
"defaultDomainsActive": "ドメイン",
101100
"dnsCoreSection": "コア",
102101
"dnsServersSection": "サーバー",
103102
"dnsFakeIpSection": "Fake-IP",

arb/intl_ru.arb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@
9797
"advanced": "Дополнительно",
9898
"detailsSection": "Подробности",
9999
"diagnostics": "Диагностика",
100-
"defaultDomainsActive": "доменов в списке",
101100
"dnsCoreSection": "Ядро",
102101
"dnsServersSection": "Серверы",
103102
"dnsFakeIpSection": "Fake-IP",

arb/intl_zh_CN.arb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@
9797
"advanced": "高级",
9898
"detailsSection": "详细",
9999
"diagnostics": "诊断",
100-
"defaultDomainsActive": "个默认域名生效",
101100
"dnsCoreSection": "核心",
102101
"dnsServersSection": "服务器",
103102
"dnsFakeIpSection": "Fake-IP",

lib/common/task.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ Future<Map<String, dynamic>> _makeRealProfileTask(
115115
rawConfig['socks-port'] = realPatchConfig.socksPort;
116116
rawConfig['redir-port'] = realPatchConfig.redirPort;
117117
rawConfig['tproxy-port'] = realPatchConfig.tproxyPort;
118-
// YAML-set find-process-mode wins; fall back to UI value (default 'strict' per mihomo upstream).
118+
// YAML-set find-process-mode wins; fall back to UI value (FlClash enum is {always, off}, default always).
119119
rawConfig['find-process-mode'] ??= realPatchConfig.findProcessMode.name;
120120
rawConfig['allow-lan'] = realPatchConfig.allowLan;
121121
rawConfig['mode'] = realPatchConfig.mode.name;

lib/l10n/intl/messages_en.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,6 @@ class MessageLookup extends MessageLookupByLibrary {
335335
"defaultNameserverDesc": MessageLookupByLibrary.simpleMessage(
336336
"For resolving DNS server",
337337
),
338-
"defaultDomainsActive": MessageLookupByLibrary.simpleMessage(
339-
"default domains active",
340-
),
341338
"defaultText": MessageLookupByLibrary.simpleMessage("Default"),
342339
"delay": MessageLookupByLibrary.simpleMessage("Delay"),
343340
"delayTest": MessageLookupByLibrary.simpleMessage("Delay Test"),

lib/l10n/intl/messages_ja.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ class MessageLookup extends MessageLookupByLibrary {
116116
"accessControlSettings": MessageLookupByLibrary.simpleMessage("アクセス制御設定"),
117117
"account": MessageLookupByLibrary.simpleMessage("アカウント"),
118118
"action": MessageLookupByLibrary.simpleMessage("アクション"),
119+
"advanced": MessageLookupByLibrary.simpleMessage("詳細設定"),
119120
"action_mode": MessageLookupByLibrary.simpleMessage("モード切替"),
120121
"action_proxy": MessageLookupByLibrary.simpleMessage("システムプロキシ"),
121122
"action_start": MessageLookupByLibrary.simpleMessage("開始/停止"),
@@ -285,6 +286,14 @@ class MessageLookup extends MessageLookupByLibrary {
285286
"delete": MessageLookupByLibrary.simpleMessage("削除"),
286287
"deleteMultipTip": m1,
287288
"deleteTip": m2,
289+
"detailsSection": MessageLookupByLibrary.simpleMessage("詳細"),
290+
"diagnostics": MessageLookupByLibrary.simpleMessage("診断"),
291+
"dnsCoreSection": MessageLookupByLibrary.simpleMessage("コア"),
292+
"dnsFakeIpSection": MessageLookupByLibrary.simpleMessage("Fake-IP"),
293+
"dnsFallbackLegacy": MessageLookupByLibrary.simpleMessage(
294+
"中国 / フォールバック (レガシー)",
295+
),
296+
"dnsServersSection": MessageLookupByLibrary.simpleMessage("サーバー"),
288297
"desc": MessageLookupByLibrary.simpleMessage(
289298
"ClashMetaベースのマルチプラットフォームプロキシクライアント。シンプルで使いやすく、オープンソースで広告なし。",
290299
),
@@ -350,6 +359,10 @@ class MessageLookup extends MessageLookupByLibrary {
350359
"fruitSaladScheme": MessageLookupByLibrary.simpleMessage("フルーツサラダ"),
351360
"general": MessageLookupByLibrary.simpleMessage("一般"),
352361
"generalSettings": MessageLookupByLibrary.simpleMessage("一般設定"),
362+
"geoDatabases": MessageLookupByLibrary.simpleMessage("Geo データベース"),
363+
"geoDatabasesDesc": MessageLookupByLibrary.simpleMessage(
364+
"GeoIP, GeoSite, MMDB, ASN の更新",
365+
),
353366
"geodataLoader": MessageLookupByLibrary.simpleMessage("Geo低メモリモード"),
354367
"geodataLoaderDesc": MessageLookupByLibrary.simpleMessage(
355368
"有効化するとGeo低メモリローダーを使用",
@@ -395,6 +408,9 @@ class MessageLookup extends MessageLookupByLibrary {
395408
"ipcidr": MessageLookupByLibrary.simpleMessage("IPCIDR"),
396409
"ipv6Desc": MessageLookupByLibrary.simpleMessage("有効化するとIPv6トラフィックを受信可能"),
397410
"ipv6InboundDesc": MessageLookupByLibrary.simpleMessage("IPv6インバウンドを許可"),
411+
"ipv6ModeCustom": MessageLookupByLibrary.simpleMessage("カスタム"),
412+
"ipv6ModeOff": MessageLookupByLibrary.simpleMessage("オフ"),
413+
"ipv6ModeSyncOn": MessageLookupByLibrary.simpleMessage("同期 ON"),
398414
"ja": MessageLookupByLibrary.simpleMessage("日本語"),
399415
"justNow": MessageLookupByLibrary.simpleMessage("たった今"),
400416
"keepAliveIntervalDesc": MessageLookupByLibrary.simpleMessage(
@@ -403,6 +419,7 @@ class MessageLookup extends MessageLookupByLibrary {
403419
"key": MessageLookupByLibrary.simpleMessage("キー"),
404420
"language": MessageLookupByLibrary.simpleMessage("言語"),
405421
"layout": MessageLookupByLibrary.simpleMessage("レイアウト"),
422+
"legalAndDisclaimer": MessageLookupByLibrary.simpleMessage("法務と免責事項"),
406423
"light": MessageLookupByLibrary.simpleMessage("ライト"),
407424
"list": MessageLookupByLibrary.simpleMessage("リスト"),
408425
"listen": MessageLookupByLibrary.simpleMessage("リスン"),

lib/l10n/intl/messages_ru.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,9 +354,6 @@ class MessageLookup extends MessageLookupByLibrary {
354354
"delete": MessageLookupByLibrary.simpleMessage("Удалить"),
355355
"deleteMultipTip": m1,
356356
"deleteTip": m2,
357-
"defaultDomainsActive": MessageLookupByLibrary.simpleMessage(
358-
"доменов в списке",
359-
),
360357
"detailsSection": MessageLookupByLibrary.simpleMessage("Подробности"),
361358
"diagnostics": MessageLookupByLibrary.simpleMessage("Диагностика"),
362359
"dnsCoreSection": MessageLookupByLibrary.simpleMessage("Ядро"),

lib/l10n/intl/messages_zh_CN.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ class MessageLookup extends MessageLookupByLibrary {
112112
"accessControlSettings": MessageLookupByLibrary.simpleMessage("访问控制设置"),
113113
"account": MessageLookupByLibrary.simpleMessage("账号"),
114114
"action": MessageLookupByLibrary.simpleMessage("操作"),
115+
"advanced": MessageLookupByLibrary.simpleMessage("高级"),
115116
"action_mode": MessageLookupByLibrary.simpleMessage("切换模式"),
116117
"action_proxy": MessageLookupByLibrary.simpleMessage("系统代理"),
117118
"action_start": MessageLookupByLibrary.simpleMessage("启动/停止"),
@@ -257,6 +258,14 @@ class MessageLookup extends MessageLookupByLibrary {
257258
"delete": MessageLookupByLibrary.simpleMessage("删除"),
258259
"deleteMultipTip": m1,
259260
"deleteTip": m2,
261+
"detailsSection": MessageLookupByLibrary.simpleMessage("详细"),
262+
"diagnostics": MessageLookupByLibrary.simpleMessage("诊断"),
263+
"dnsCoreSection": MessageLookupByLibrary.simpleMessage("核心"),
264+
"dnsFakeIpSection": MessageLookupByLibrary.simpleMessage("Fake-IP"),
265+
"dnsFallbackLegacy": MessageLookupByLibrary.simpleMessage(
266+
"中国 / Fallback (遗留)",
267+
),
268+
"dnsServersSection": MessageLookupByLibrary.simpleMessage("服务器"),
260269
"desc": MessageLookupByLibrary.simpleMessage(
261270
"基于ClashMeta的多平台代理客户端,简单易用,开源无广告。",
262271
),
@@ -314,6 +323,10 @@ class MessageLookup extends MessageLookupByLibrary {
314323
"fruitSaladScheme": MessageLookupByLibrary.simpleMessage("果缤纷"),
315324
"general": MessageLookupByLibrary.simpleMessage("常规"),
316325
"generalSettings": MessageLookupByLibrary.simpleMessage("通用设置"),
326+
"geoDatabases": MessageLookupByLibrary.simpleMessage("地理数据库"),
327+
"geoDatabasesDesc": MessageLookupByLibrary.simpleMessage(
328+
"GeoIP、GeoSite、MMDB、ASN 更新",
329+
),
317330
"geodataLoader": MessageLookupByLibrary.simpleMessage("Geo低内存模式"),
318331
"geodataLoaderDesc": MessageLookupByLibrary.simpleMessage("开启将使用Geo低内存加载器"),
319332
"geoipCode": MessageLookupByLibrary.simpleMessage("Geoip代码"),
@@ -355,12 +368,16 @@ class MessageLookup extends MessageLookupByLibrary {
355368
"ipcidr": MessageLookupByLibrary.simpleMessage("IP/掩码"),
356369
"ipv6Desc": MessageLookupByLibrary.simpleMessage("开启后将可以接收IPv6流量"),
357370
"ipv6InboundDesc": MessageLookupByLibrary.simpleMessage("允许IPv6入站"),
371+
"ipv6ModeCustom": MessageLookupByLibrary.simpleMessage("自定义"),
372+
"ipv6ModeOff": MessageLookupByLibrary.simpleMessage("关"),
373+
"ipv6ModeSyncOn": MessageLookupByLibrary.simpleMessage("同步开"),
358374
"ja": MessageLookupByLibrary.simpleMessage("日语"),
359375
"justNow": MessageLookupByLibrary.simpleMessage("刚刚"),
360376
"keepAliveIntervalDesc": MessageLookupByLibrary.simpleMessage("TCP保持活动间隔"),
361377
"key": MessageLookupByLibrary.simpleMessage("键"),
362378
"language": MessageLookupByLibrary.simpleMessage("语言"),
363379
"layout": MessageLookupByLibrary.simpleMessage("布局"),
380+
"legalAndDisclaimer": MessageLookupByLibrary.simpleMessage("法律声明"),
364381
"light": MessageLookupByLibrary.simpleMessage("浅色"),
365382
"list": MessageLookupByLibrary.simpleMessage("列表"),
366383
"listen": MessageLookupByLibrary.simpleMessage("监听"),

lib/views/config/network.dart

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,13 @@ class UnifiedIpv6Item extends ConsumerWidget {
105105
patchClashConfigProvider.select((state) => state.dns.ipv6),
106106
);
107107
final mode = _resolveMode(inbound, engine, dns);
108+
final ipv6Label = Intl.message('IPv6', name: 'ipv6');
108109
return ListItem.options(
109110
leading: const Icon(Icons.public),
110-
title: const Text('IPv6'),
111+
title: Text(ipv6Label),
111112
subtitle: Text(_label(mode)),
112113
delegate: OptionsDelegate<Ipv6Mode>(
113-
title: 'IPv6',
114+
title: ipv6Label,
114115
options: Ipv6Mode.values,
115116
textBuilder: _label,
116117
value: mode,
@@ -164,6 +165,16 @@ class TunStackItem extends ConsumerWidget {
164165
}
165166
}
166167

168+
String _bypassDomainCountLabel(int count) {
169+
return Intl.plural(
170+
count,
171+
one: '$count default domain active',
172+
other: '$count default domains active',
173+
name: '_bypassDomainCountLabel',
174+
args: [count],
175+
);
176+
}
177+
167178
class BypassDomainItem extends ConsumerWidget {
168179
const BypassDomainItem({super.key});
169180

@@ -174,9 +185,7 @@ class BypassDomainItem extends ConsumerWidget {
174185
);
175186
return ListItem.open(
176187
title: Text(appLocalizations.bypassDomain),
177-
subtitle: Text(
178-
'${bypassDomain.length} ${Intl.message('default domains active', name: 'defaultDomainsActive')}',
179-
),
188+
subtitle: Text(_bypassDomainCountLabel(bypassDomain.length)),
180189
delegate: OpenDelegate(
181190
widget: ListInputPage(
182191
title: appLocalizations.bypassDomain,

0 commit comments

Comments
 (0)