mirror of
https://github.com/wgh136/pixes.git
synced 2025-09-27 12:57:24 +00:00
translation
This commit is contained in:
@@ -89,7 +89,24 @@
|
|||||||
"The first tag of the artwork": "作品的第一个标签",
|
"The first tag of the artwork": "作品的第一个标签",
|
||||||
"The second tag of the artwork": "作品的第二个标签",
|
"The second tag of the artwork": "作品的第二个标签",
|
||||||
"Follow": "关注",
|
"Follow": "关注",
|
||||||
"Save to": "保存到"
|
"Save to": "保存到",
|
||||||
|
"Filled with tags. The tags should be separated by a space. The tag in front has higher weight.": "填写标签, 标签应该用空格分隔, 前面的标签权重更高. ",
|
||||||
|
"It is required to use the original name instead of the translated name.": "必须使用原始名称而不是翻译后的名称",
|
||||||
|
"Some keywords will be replaced by the following rule:": "一些关键词将按照以下规则替换:",
|
||||||
|
"Subpath": "子路径",
|
||||||
|
"Tags partial match": "标签部分匹配",
|
||||||
|
"Tags exact match": "标签完全匹配",
|
||||||
|
"Title or description search": "标题或描述搜索",
|
||||||
|
"Unlimited": "无限制",
|
||||||
|
"New to old": "新到旧",
|
||||||
|
"Old to new": "旧到新",
|
||||||
|
"Popular": "热门",
|
||||||
|
"Popular(limited)": "热门(受限)",
|
||||||
|
"Popular(Male)": "热门(男性向)",
|
||||||
|
"Popular(Female)": "热门(女性向)",
|
||||||
|
"Start Time": "开始时间",
|
||||||
|
"End Time": "结束时间",
|
||||||
|
"Max parallels": "最大并行数"
|
||||||
},
|
},
|
||||||
"zh_TW": {
|
"zh_TW": {
|
||||||
"Search": "搜索",
|
"Search": "搜索",
|
||||||
@@ -181,6 +198,23 @@
|
|||||||
"The first tag of the artwork": "作品的第一個標籤",
|
"The first tag of the artwork": "作品的第一個標籤",
|
||||||
"The second tag of the artwork": "作品的第二個標籤",
|
"The second tag of the artwork": "作品的第二個標籤",
|
||||||
"Follow": "關注",
|
"Follow": "關注",
|
||||||
"Save to": "保存到"
|
"Save to": "保存到",
|
||||||
|
"Filled with tags. The tags should be separated by a space. The tag in front has higher weight.": "填寫標籤, 標籤應該用空格分隔, 前面的標籤權重更高. ",
|
||||||
|
"It is required to use the original name instead of the translated name.": "必須使用原始名稱而不是翻譯後的名稱",
|
||||||
|
"Some keywords will be replaced by the following rule:": "一些關鍵詞將按照以下規則替換:",
|
||||||
|
"Subpath": "子路徑",
|
||||||
|
"Tags partial match": "標籤部分匹配",
|
||||||
|
"Tags exact match": "標籤完全匹配",
|
||||||
|
"Title or description search": "標題或描述搜索",
|
||||||
|
"Unlimited": "無限制",
|
||||||
|
"New to old": "新到舊",
|
||||||
|
"Old to new": "舊到新",
|
||||||
|
"Popular": "熱門",
|
||||||
|
"Popular(limited)": "熱門(受限)",
|
||||||
|
"Popular(Male)": "熱門(男性)",
|
||||||
|
"Popular(Female)": "熱門(女性)",
|
||||||
|
"Start Time": "開始時間",
|
||||||
|
"End Time": "結束時間",
|
||||||
|
"Max parallels": "最大並行數"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -18,7 +18,7 @@ class _Appdata {
|
|||||||
"downloadSubPath": r"/${id}-p${index}.${ext}",
|
"downloadSubPath": r"/${id}-p${index}.${ext}",
|
||||||
"tagsWeight": "",
|
"tagsWeight": "",
|
||||||
"useTranslatedNameForDownload": false,
|
"useTranslatedNameForDownload": false,
|
||||||
"maxDownloadParallelism": 3
|
"maxDownloadParallels": 3
|
||||||
};
|
};
|
||||||
|
|
||||||
bool lock = false;
|
bool lock = false;
|
||||||
|
@@ -263,7 +263,7 @@ class DownloadManager {
|
|||||||
_currentBytes += bytes;
|
_currentBytes += bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get maxConcurrentTasks => 3;
|
int get maxConcurrentTasks => appdata.settings["maxDownloadParallels"];
|
||||||
|
|
||||||
void run() {
|
void run() {
|
||||||
_loop ??= Timer.periodic(const Duration(seconds: 1), (timer) {
|
_loop ??= Timer.periodic(const Duration(seconds: 1), (timer) {
|
||||||
|
@@ -217,7 +217,7 @@ class TrendingTag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum KeywordMatchType {
|
enum KeywordMatchType {
|
||||||
tagsPartialMatches("Tags partial matches"),
|
tagsPartialMatches("Tags partial match"),
|
||||||
tagsExactMatch("Tags exact match"),
|
tagsExactMatch("Tags exact match"),
|
||||||
titleOrDescriptionSearch("Title or description search");
|
titleOrDescriptionSearch("Title or description search");
|
||||||
|
|
||||||
|
@@ -57,7 +57,7 @@ class _RankingPageState extends State<RankingPage> {
|
|||||||
BatchDownloadButton(request: () => Network().getRanking(type)),
|
BatchDownloadButton(request: () => Network().getRanking(type)),
|
||||||
const SizedBox(width: 8,),
|
const SizedBox(width: 8,),
|
||||||
DropDownButton(
|
DropDownButton(
|
||||||
title: Text(types[type]!),
|
title: Text(types[type]!.tl),
|
||||||
items: types.entries.map((e) => MenuFlyoutItem(
|
items: types.entries.map((e) => MenuFlyoutItem(
|
||||||
text: Text(e.value.tl),
|
text: Text(e.value.tl),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
@@ -267,10 +267,10 @@ class _SearchSettingsState extends State<SearchSettings> {
|
|||||||
child: Text("Search Settings".tl, style: const TextStyle(fontSize: 18),),
|
child: Text("Search Settings".tl, style: const TextStyle(fontSize: 18),),
|
||||||
).toAlign(Alignment.centerLeft),
|
).toAlign(Alignment.centerLeft),
|
||||||
buildItem(title: "Match".tl, child: DropDownButton(
|
buildItem(title: "Match".tl, child: DropDownButton(
|
||||||
title: Text(appdata.searchOptions.matchType.toString()),
|
title: Text(appdata.searchOptions.matchType.toString().tl),
|
||||||
items: KeywordMatchType.values.map((e) =>
|
items: KeywordMatchType.values.map((e) =>
|
||||||
MenuFlyoutItem(
|
MenuFlyoutItem(
|
||||||
text: Text(e.toString()),
|
text: Text(e.toString().tl),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if(appdata.searchOptions.matchType != e) {
|
if(appdata.searchOptions.matchType != e) {
|
||||||
setState(() => appdata.searchOptions.matchType = e);
|
setState(() => appdata.searchOptions.matchType = e);
|
||||||
@@ -281,10 +281,10 @@ class _SearchSettingsState extends State<SearchSettings> {
|
|||||||
).toList(),
|
).toList(),
|
||||||
)),
|
)),
|
||||||
buildItem(title: "Favorite number".tl, child: DropDownButton(
|
buildItem(title: "Favorite number".tl, child: DropDownButton(
|
||||||
title: Text(appdata.searchOptions.favoriteNumber.toString()),
|
title: Text(appdata.searchOptions.favoriteNumber.toString().tl),
|
||||||
items: FavoriteNumber.values.map((e) =>
|
items: FavoriteNumber.values.map((e) =>
|
||||||
MenuFlyoutItem(
|
MenuFlyoutItem(
|
||||||
text: Text(e.toString()),
|
text: Text(e.toString().tl),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if(appdata.searchOptions.favoriteNumber != e) {
|
if(appdata.searchOptions.favoriteNumber != e) {
|
||||||
setState(() => appdata.searchOptions.favoriteNumber = e);
|
setState(() => appdata.searchOptions.favoriteNumber = e);
|
||||||
@@ -295,10 +295,10 @@ class _SearchSettingsState extends State<SearchSettings> {
|
|||||||
).toList(),
|
).toList(),
|
||||||
)),
|
)),
|
||||||
buildItem(title: "Sort".tl, child: DropDownButton(
|
buildItem(title: "Sort".tl, child: DropDownButton(
|
||||||
title: Text(appdata.searchOptions.sort.toString()),
|
title: Text(appdata.searchOptions.sort.toString().tl),
|
||||||
items: SearchSort.values.map((e) =>
|
items: SearchSort.values.map((e) =>
|
||||||
MenuFlyoutItem(
|
MenuFlyoutItem(
|
||||||
text: Text(e.toString()),
|
text: Text(e.toString().tl),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if(appdata.searchOptions.sort != e) {
|
if(appdata.searchOptions.sort != e) {
|
||||||
setState(() => appdata.searchOptions.sort = e);
|
setState(() => appdata.searchOptions.sort = e);
|
||||||
@@ -315,7 +315,7 @@ class _SearchSettingsState extends State<SearchSettings> {
|
|||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
const Text("Start Time", style: TextStyle(fontSize: 16),)
|
Text("Start Time".tl, style: const TextStyle(fontSize: 16),)
|
||||||
.paddingVertical(8)
|
.paddingVertical(8)
|
||||||
.toAlign(Alignment.centerLeft)
|
.toAlign(Alignment.centerLeft)
|
||||||
.paddingLeft(16),
|
.paddingLeft(16),
|
||||||
@@ -339,7 +339,7 @@ class _SearchSettingsState extends State<SearchSettings> {
|
|||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
const Text("End Time", style: TextStyle(fontSize: 16),)
|
Text("End Time".tl, style: const TextStyle(fontSize: 16),)
|
||||||
.paddingVertical(8)
|
.paddingVertical(8)
|
||||||
.toAlign(Alignment.centerLeft)
|
.toAlign(Alignment.centerLeft)
|
||||||
.paddingLeft(16),
|
.paddingLeft(16),
|
||||||
@@ -357,10 +357,10 @@ class _SearchSettingsState extends State<SearchSettings> {
|
|||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
buildItem(title: "Age limit".tl, child: DropDownButton(
|
buildItem(title: "Age limit".tl, child: DropDownButton(
|
||||||
title: Text(appdata.searchOptions.ageLimit.toString()),
|
title: Text(appdata.searchOptions.ageLimit.toString().tl),
|
||||||
items: AgeLimit.values.map((e) =>
|
items: AgeLimit.values.map((e) =>
|
||||||
MenuFlyoutItem(
|
MenuFlyoutItem(
|
||||||
text: Text(e.toString()),
|
text: Text(e.toString().tl),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if(appdata.searchOptions.ageLimit != e) {
|
if(appdata.searchOptions.ageLimit != e) {
|
||||||
setState(() => appdata.searchOptions.ageLimit = e);
|
setState(() => appdata.searchOptions.ageLimit = e);
|
||||||
|
@@ -115,7 +115,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
buildItem(
|
buildItem(
|
||||||
title: "Download Path",
|
title: "Download Path".tl,
|
||||||
subtitle: appdata.settings["downloadPath"],
|
subtitle: appdata.settings["downloadPath"],
|
||||||
action: Button(
|
action: Button(
|
||||||
child: Text("Manage".tl).fixWidth(64),
|
child: Text("Manage".tl).fixWidth(64),
|
||||||
@@ -128,7 +128,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
buildItem(
|
buildItem(
|
||||||
title: "Subpath",
|
title: "Subpath".tl,
|
||||||
subtitle: appdata.settings["downloadSubPath"],
|
subtitle: appdata.settings["downloadSubPath"],
|
||||||
action: Button(
|
action: Button(
|
||||||
child: Text("Manage".tl).fixWidth(64),
|
child: Text("Manage".tl).fixWidth(64),
|
||||||
@@ -136,6 +136,23 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
context.to(() => const _SetDownloadSubPathPage());
|
context.to(() => const _SetDownloadSubPathPage());
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
buildItem(
|
||||||
|
title: "Max parallels".tl,
|
||||||
|
action: SizedBox(
|
||||||
|
width: 64,
|
||||||
|
height: 32,
|
||||||
|
child: NumberBox<int>(
|
||||||
|
value: appdata.settings["maxParallels"],
|
||||||
|
autofocus: false,
|
||||||
|
onChanged: (value) {
|
||||||
|
appdata.settings["maxParallels"] = value;
|
||||||
|
appdata.writeSettings();
|
||||||
|
},
|
||||||
|
clearButton: false,
|
||||||
|
mode: SpinButtonPlacementMode.none,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -289,7 +306,7 @@ class __SetDownloadSubPathPageState extends State<_SetDownloadSubPathPage> {
|
|||||||
${"Edit the rule for where to save an image.".tl}
|
${"Edit the rule for where to save an image.".tl}
|
||||||
${"Note: The rule should include the filename.".tl}
|
${"Note: The rule should include the filename.".tl}
|
||||||
|
|
||||||
${"Some keywords will be replaced by the following rule:"}
|
${"Some keywords will be replaced by the following rule:".tl}
|
||||||
\${title} -> ${"Title of the work".tl}
|
\${title} -> ${"Title of the work".tl}
|
||||||
\${author} -> ${"Name of the author".tl}
|
\${author} -> ${"Name of the author".tl}
|
||||||
\${id} -> ${"Artwork ID".tl}
|
\${id} -> ${"Artwork ID".tl}
|
||||||
@@ -303,7 +320,7 @@ ${"The final text will be affected by the \"Use translated tag name\" setting.".
|
|||||||
...
|
...
|
||||||
|
|
||||||
${"Weights of the tags".tl}:
|
${"Weights of the tags".tl}:
|
||||||
Filled with tags. The tags should be separated by a space. The tag in front has higher weight.
|
${"Filled with tags. The tags should be separated by a space. The tag in front has higher weight.".tl}
|
||||||
It is required to use the original name instead of the translated name.
|
${"It is required to use the original name instead of the translated name.".tl}
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user