Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,5 @@ app.*.map.json

# FVM Version Cache
.fvm/
.fvmrc
.fvmrc
pubspec.lock
26 changes: 23 additions & 3 deletions arb/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
"years": "{count, plural, one{year} other{years}}",
"months": "{count, plural, one{month} other{months}}",
"hours": "{count, plural, one{hour} other{hours}}",
"days": "{count, plural, one{day} other{days}}",
"days": "{count, plural, one{day} other{years}}",
"minutes": "{count, plural, one{minute} other{minutes}}",
"seconds": "Seconds",
"ago": " ago",
Expand Down Expand Up @@ -650,6 +650,26 @@
"agePublicKeyLabel": "Age Public Key",
"generateFromPrivateKey": "Generate from Age private key",
"ageKeyPairGeneratedSuccess": "X25519 Key pair generated, please keep it safe",
"agePrivateKeyRequired": "Please enter a correct Age private key first"
"agePrivateKeyRequired": "Please enter a correct Age private key first",
"bulkImport": "Bulk Import",
"bulkImportDesc": "Paste any text containing URLs to import multiple profiles at once",
"bulkImportTitle": "Bulk Import Profiles",
"bulkImportPaste": "Paste text here — any URLs will be auto-detected...",
"bulkImportDetected": "{count} URL(s) detected",
"@bulkImportDetected": {
"placeholders": {
"count": { "type": "String" }
}
},
"bulkImportNoUrls": "No valid URLs found in the text",
"bulkImportStart": "Import Selected",
"bulkImportAdding": "Importing...",
"bulkImportDone": "Done",
"bulkImportResult": "{success} imported, {fail} failed",
"@bulkImportResult": {
"placeholders": {
"success": { "type": "String" },
"fail": { "type": "String" }
}
}
}

23 changes: 22 additions & 1 deletion arb/intl_ru.arb
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,27 @@
"agePublicKeyLabel": "Открытый ключ",
"generateFromPrivateKey": "Создать из закрытого ключа",
"ageKeyPairGeneratedSuccess": "Пара ключей X25519 создана, сохраните её в надёжном месте",
"agePrivateKeyRequired": "Пожалуйста, сначала введите корректный закрытый ключ Age"
"agePrivateKeyRequired": "Пожалуйста, сначала введите корректный закрытый ключ Age",
"bulkImport": "Массовый импорт",
"bulkImportDesc": "Вставьте текст с URL для массового импорта профилей",
"bulkImportTitle": "Массовый импорт профилей",
"bulkImportPaste": "Вставьте текст сюда — все URL будут автоматически обнаружены...",
"bulkImportDetected": "Обнаружено {count} URL",
"@bulkImportDetected": {
"placeholders": {
"count": { "type": "String" }
}
},
"bulkImportNoUrls": "В тексте не найдено действительных URL",
"bulkImportStart": "Импортировать выбранные",
"bulkImportAdding": "Импорт...",
"bulkImportDone": "Готово",
"bulkImportResult": "Импортировано: {success}, ошибок: {fail}",
"@bulkImportResult": {
"placeholders": {
"success": { "type": "String" },
"fail": { "type": "String" }
}
}
}

23 changes: 22 additions & 1 deletion arb/intl_zh_CN.arb
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,27 @@
"agePublicKeyLabel": "Age 公钥",
"generateFromPrivateKey": "从Age私钥生成",
"ageKeyPairGeneratedSuccess": "已生成X25519密钥对, 请妥善保存",
"agePrivateKeyRequired": "请先输入正确的Age 私钥"
"agePrivateKeyRequired": "请先输入正确的Age 私钥",
"bulkImport": "批量导入",
"bulkImportDesc": "粘贴包含URL的文本,一次性导入多个配置",
"bulkImportTitle": "批量导入配置",
"bulkImportPaste": "在此粘贴文本 — 任何URL将被自动检测...",
"bulkImportDetected": "检测到 {count} 个URL",
"@bulkImportDetected": {
"placeholders": {
"count": { "type": "String" }
}
},
"bulkImportNoUrls": "文本中未找到有效的URL",
"bulkImportStart": "导入选中项",
"bulkImportAdding": "导入中...",
"bulkImportDone": "完成",
"bulkImportResult": "成功导入 {success} 个,失败 {fail} 个",
"@bulkImportResult": {
"placeholders": {
"success": { "type": "String" },
"fail": { "type": "String" }
}
}
}

23 changes: 22 additions & 1 deletion arb/intl_zh_TC.arb
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,27 @@
"agePublicKeyLabel": "Age 公鑰",
"generateFromPrivateKey": "從Age私鑰生成",
"ageKeyPairGeneratedSuccess": "已生成X25519密鑰對, 請妥善保存",
"agePrivateKeyRequired": "請先輸入正確的Age 私鑰"
"agePrivateKeyRequired": "請先輸入正確的Age 私鑰",
"bulkImport": "批次匯入",
"bulkImportDesc": "貼上包含URL的文本,一次匯入多個設定檔",
"bulkImportTitle": "批次匯入設定檔",
"bulkImportPaste": "在此貼上文本 — 任何URL將被自動偵測...",
"bulkImportDetected": "偵測到 {count} 個URL",
"@bulkImportDetected": {
"placeholders": {
"count": { "type": "String" }
}
},
"bulkImportNoUrls": "文本中未找到有效的URL",
"bulkImportStart": "匯入選取項目",
"bulkImportAdding": "匯入中...",
"bulkImportDone": "完成",
"bulkImportResult": "成功匯入 {success} 個,失敗 {fail} 個",
"@bulkImportResult": {
"placeholders": {
"success": { "type": "String" },
"fail": { "type": "String" }
}
}
}

83 changes: 53 additions & 30 deletions lib/l10n/intl/messages_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,40 +20,45 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'en';

static String m0(count) => "${Intl.plural(count, one: 'day', other: 'days')}";
static String m0(count) => "${count} URL(s) detected";

static String m1(label) => "Delete selected ${label}?";
static String m1(success, fail) => "${success} imported, ${fail} failed";

static String m2(label) => "Delete current ${label}?";
static String m2(count) =>
"${Intl.plural(count, one: 'day', other: 'years')}";

static String m3(label) => "${label} cannot be empty";
static String m3(label) => "Delete selected ${label}?";

static String m4(label) => "${label} already exists";
static String m4(label) => "Delete current ${label}?";

static String m5(count) =>
static String m5(label) => "${label} cannot be empty";

static String m6(label) => "${label} already exists";

static String m7(count) =>
"${Intl.plural(count, one: 'hour', other: 'hours')}";

static String m6(count) =>
static String m8(count) =>
"${Intl.plural(count, one: 'minute', other: 'minutes')}";

static String m7(count) =>
static String m9(count) =>
"${Intl.plural(count, one: 'month', other: 'months')}";

static String m8(label) => "No ${label}";
static String m10(label) => "No ${label}";

static String m9(label) => "${label} must be a number";
static String m11(label) => "${label} must be a number";

static String m10(label) =>
static String m12(label) =>
"${label} must be between 1024 and 49151, 0 to disable";

static String m11(statusCode) =>
static String m13(statusCode) =>
"Failed to import profile. Please check your network status or try resetting the subscription link ( HTTP error code: ${statusCode} )";

static String m12(count) => "${count} items selected";
static String m14(count) => "${count} items selected";

static String m13(label) => "${label} must be a URL";
static String m15(label) => "${label} must be a URL";

static String m14(count) =>
static String m16(count) =>
"${Intl.plural(count, one: 'year', other: 'years')}";

final messages = _notInlinedMessages(_notInlinedMessages);
Expand Down Expand Up @@ -195,6 +200,24 @@ class MessageLookup extends MessageLookupByLibrary {
"bind": MessageLookupByLibrary.simpleMessage("Bind"),
"blacklist": MessageLookupByLibrary.simpleMessage("Blacklist"),
"blacklistMode": MessageLookupByLibrary.simpleMessage("Blacklist Mode"),
"bulkImport": MessageLookupByLibrary.simpleMessage("Bulk Import"),
"bulkImportAdding": MessageLookupByLibrary.simpleMessage("Importing..."),
"bulkImportDesc": MessageLookupByLibrary.simpleMessage(
"Paste any text containing URLs to import multiple profiles at once",
),
"bulkImportDetected": m0,
"bulkImportDone": MessageLookupByLibrary.simpleMessage("Done"),
"bulkImportNoUrls": MessageLookupByLibrary.simpleMessage(
"No valid URLs found in the text",
),
"bulkImportPaste": MessageLookupByLibrary.simpleMessage(
"Paste text here — any URLs will be auto-detected...",
),
"bulkImportResult": m1,
"bulkImportStart": MessageLookupByLibrary.simpleMessage("Import Selected"),
"bulkImportTitle": MessageLookupByLibrary.simpleMessage(
"Bulk Import Profiles",
),
"bypassDomain": MessageLookupByLibrary.simpleMessage("Bypass Domain"),
"bypassDomainDesc": MessageLookupByLibrary.simpleMessage(
"Active only when System Proxy is on",
Expand Down Expand Up @@ -301,7 +324,7 @@ class MessageLookup extends MessageLookupByLibrary {
"cut": MessageLookupByLibrary.simpleMessage("Cut"),
"dark": MessageLookupByLibrary.simpleMessage("Dark"),
"dashboard": MessageLookupByLibrary.simpleMessage("Dash"),
"days": m0,
"days": m2,
"defaultNameserver": MessageLookupByLibrary.simpleMessage(
"Default Nameserver",
),
Expand All @@ -317,8 +340,8 @@ class MessageLookup extends MessageLookupByLibrary {
),
"delaySort": MessageLookupByLibrary.simpleMessage("Sort by Delay"),
"delete": MessageLookupByLibrary.simpleMessage("Delete"),
"deleteMultipTip": m1,
"deleteTip": m2,
"deleteMultipTip": m3,
"deleteTip": m4,
"deleteTunnel": MessageLookupByLibrary.simpleMessage("Delete Forwarding"),
"desc": MessageLookupByLibrary.simpleMessage(
"Bettbox is based on the powerful and flexible Mihomo (Clash.Meta) proxy kernel, dedicated to a superior user experience. Forked from FlClash: Better Experience, Out of the box",
Expand Down Expand Up @@ -384,7 +407,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"edit": MessageLookupByLibrary.simpleMessage("Edit"),
"editTunnel": MessageLookupByLibrary.simpleMessage("Edit Forwarding"),
"emptyTip": m3,
"emptyTip": m5,
"en": MessageLookupByLibrary.simpleMessage("English"),
"enableCrashReport": MessageLookupByLibrary.simpleMessage(
"Crash Analytics",
Expand All @@ -411,7 +434,7 @@ class MessageLookup extends MessageLookupByLibrary {
"excludeDesc": MessageLookupByLibrary.simpleMessage(
"Hide app from recent tasks list",
),
"existsTip": m4,
"existsTip": m6,
"exit": MessageLookupByLibrary.simpleMessage("Exit"),
"expand": MessageLookupByLibrary.simpleMessage("Standard"),
"experimental": MessageLookupByLibrary.simpleMessage("Experimental"),
Expand Down Expand Up @@ -545,7 +568,7 @@ class MessageLookup extends MessageLookupByLibrary {
"hotkeyManagementDesc": MessageLookupByLibrary.simpleMessage(
"Control app via keyboard",
),
"hours": m5,
"hours": m7,
"httpPortSniffer": MessageLookupByLibrary.simpleMessage(
"HTTP Port Sniffing",
),
Expand Down Expand Up @@ -637,11 +660,11 @@ class MessageLookup extends MessageLookupByLibrary {
"minimizeOnExitDesc": MessageLookupByLibrary.simpleMessage(
"Override default exit behavior",
),
"minutes": m6,
"minutes": m8,
"mixedPort": MessageLookupByLibrary.simpleMessage("Mixed Port"),
"mode": MessageLookupByLibrary.simpleMessage("Mode"),
"monochromeScheme": MessageLookupByLibrary.simpleMessage("Monochrome"),
"months": m7,
"months": m9,
"more": MessageLookupByLibrary.simpleMessage("More"),
"name": MessageLookupByLibrary.simpleMessage("Name"),
"nameSort": MessageLookupByLibrary.simpleMessage("Sort by Name"),
Expand Down Expand Up @@ -723,8 +746,8 @@ class MessageLookup extends MessageLookupByLibrary {
"nullProfileDesc": MessageLookupByLibrary.simpleMessage(
"No profile. Please add one.",
),
"nullTip": m8,
"numberTip": m9,
"nullTip": m10,
"numberTip": m11,
"oneColumn": MessageLookupByLibrary.simpleMessage("1 Column"),
"onlinePanel": MessageLookupByLibrary.simpleMessage("Online Panel"),
"onlyIcon": MessageLookupByLibrary.simpleMessage("Icon Only"),
Expand Down Expand Up @@ -826,7 +849,7 @@ class MessageLookup extends MessageLookupByLibrary {
"portConflictTip": MessageLookupByLibrary.simpleMessage(
"Please enter a different port",
),
"portTip": m10,
"portTip": m12,
"powerSwitch": MessageLookupByLibrary.simpleMessage("Power"),
"preferH3Desc": MessageLookupByLibrary.simpleMessage(
"Prioritize DoH HTTP/3",
Expand All @@ -841,7 +864,7 @@ class MessageLookup extends MessageLookupByLibrary {
"profileHasUpdate": MessageLookupByLibrary.simpleMessage(
"Profile modified. Disable auto-update?",
),
"profileImportFailed": m11,
"profileImportFailed": m13,
"profileNameNullValidationDesc": MessageLookupByLibrary.simpleMessage(
"Please enter a profile name",
),
Expand Down Expand Up @@ -986,7 +1009,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"selectAll": MessageLookupByLibrary.simpleMessage("Select All"),
"selected": MessageLookupByLibrary.simpleMessage("Selected"),
"selectedCountTitle": m12,
"selectedCountTitle": m14,
"serviceReady": MessageLookupByLibrary.simpleMessage("Service Ready"),
"serviceRunning": MessageLookupByLibrary.simpleMessage("Service Running"),
"settings": MessageLookupByLibrary.simpleMessage("Settings"),
Expand Down Expand Up @@ -1160,7 +1183,7 @@ class MessageLookup extends MessageLookupByLibrary {
"upload": MessageLookupByLibrary.simpleMessage("Upload"),
"url": MessageLookupByLibrary.simpleMessage("URL"),
"urlDesc": MessageLookupByLibrary.simpleMessage("Get profile via URL"),
"urlTip": m13,
"urlTip": m15,
"useGlobalScriptOverride": MessageLookupByLibrary.simpleMessage(
"Use Global Script Override",
),
Expand Down Expand Up @@ -1193,7 +1216,7 @@ class MessageLookup extends MessageLookupByLibrary {
"writeToSystemDesc": MessageLookupByLibrary.simpleMessage(
"Requires administrator privileges",
),
"years": m14,
"years": m16,
"zh_CN": MessageLookupByLibrary.simpleMessage("Simplified Chinese"),
"zh_TC": MessageLookupByLibrary.simpleMessage("Traditional Chinese"),
};
Expand Down
Loading