Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

更新: ec套件多语言支持 #490

Merged
merged 8 commits into from
Sep 30, 2024
Merged
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
24 changes: 24 additions & 0 deletions scripts/i18n.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
param(
[Parameter(Mandatory)]
[string]$t
)

$ext = [System.IO.Path]::GetExtension($t)
Write-Host $ext
if($t -eq "*"){
foreach ($p in @(Get-ChildItem src/**/*.csproj)) {
$pot = [System.IO.Path]::Combine($p.DirectoryName, "i18n", "template.pot")
New-Item -Path $p.DirectoryName -Name i18n -ItemType Directory -Force
dotnet tool run GetText.Extractor -u -o -s $p.FullName -t $pot
}
}elseif((Test-Path $t) -and $ext -eq ".csproj"){
$FullName = [System.IO.Path]::GetFullPath($t)
$dirName = [System.IO.Path]::GetDirectoryName($t)
$pot = [System.IO.Path]::Combine($dirName, "i18n", "template.pot")
New-Item -Path $dirName -Name i18n -ItemType Directory -Force
dotnet tool run GetText.Extractor -u -o -s $FullName -t $pot
}else{
Write-Host "csproj file Path Not Exist!"
}


16 changes: 16 additions & 0 deletions src/BedSet/i18n/template.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
msgid ""
msgstr ""
"Project-Id-Version: BedSet\n"
"POT-Creation-Date: 2024-09-30 15:29:00+0800\n"
"PO-Revision-Date: 2024-09-30 15:29:01+0800\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: GetText.NET Extractor\n"

#: ..\..\Plugin.cs:42
msgid "出生点位置设置成功!"
msgstr ""

50 changes: 25 additions & 25 deletions src/Economics.Deal/Command.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,27 +25,27 @@ void Show(List<string> line)
new PaginationTools.Settings
{
MaxLinesPerPage = Deal.Config.PageMax,
NothingToDisplayString = "当前没有交易物品",
HeaderFormat = "交易列表 ({0}/{1}):",
FooterFormat = "输入 {0}deal list {{0}} 查看更多".SFormat(Commands.Specifier)
NothingToDisplayString = GetString("当前没有交易物品"),
HeaderFormat = GetString("交易列表 ({0}/{1}):"),
FooterFormat = GetString("输入 {0}deal list {{0}} 查看更多").SFormat(Commands.Specifier)
}
);
}
if (args.Parameters.Count == 2 && args.Parameters[0].ToLower() == "push")
{
if (args.Player.SelectedItem.stack == 0)
{
args.Player.SendErrorMessage("你手持物品为空!");
args.Player.SendErrorMessage(GetString("你手持物品为空!"));
return;
}
if (!long.TryParse(args.Parameters[1], out var cost) || cost < 0)
{
args.Player.SendErrorMessage("请输入一个正确的价格!");
args.Player.SendErrorMessage(GetString("请输入一个正确的价格!"));
return;
}
Deal.Config.PushItem(args.Player, cost);
args.Player.SendSuccessMessage("发布成功");
TShock.Utils.Broadcast($"玩家`{args.Player.Name}`发布了一个交易物品: [i/s{args.Player.SelectedItem.stack}:{args.Player.SelectedItem.netID}] 价格: {cost}", Color.DarkGreen);
args.Player.SendSuccessMessage(GetString("发布成功"));
TShock.Utils.Broadcast(GetString($"玩家`{args.Player.Name}`发布了一个交易物品: [i/s{args.Player.SelectedItem.stack}:{args.Player.SelectedItem.netID}] 价格: {cost}"), Color.DarkGreen);
args.Player.SelectedItem.stack = 0;
args.Player.SendData(PacketTypes.PlayerSlot, "", args.Player.Index, args.Player.TPlayer.selectedItem);
}
Expand All @@ -55,7 +55,7 @@ void Show(List<string> line)
var index = 1;
foreach (var DealContext in Deal.Config.DealContexts)
{
lines.Add(string.Format("{0}:{1} 发布者:{2} 价格{3}"
lines.Add(string.Format(GetString("{0}:{1} 发布者:{2} 价格{3}")
, index.Color(TShockAPI.Utils.RedHighlight)
, DealContext.Item.ToString()
, DealContext.Publisher.Color(TShockAPI.Utils.PinkHighlight)
Expand All @@ -69,70 +69,70 @@ void Show(List<string> line)
{
if (!int.TryParse(args.Parameters[1], out var index) || index <= 0)
{
args.Player.SendErrorMessage("请输入一个正确的ID");
args.Player.SendErrorMessage(GetString("请输入一个正确的ID"));
return;
}
var context = Deal.Config.GetDealContext(index);
if (context == null)
{
args.Player.SendErrorMessage("不存在此交易!");
args.Player.SendErrorMessage(GetString("不存在此交易!"));
return;
}
if (!EconomicsAPI.Economics.CurrencyManager.DelUserCurrency(args.Player.Name, context.Cost))
{
args.Player.SendErrorMessage($"你的{EconomicsAPI.Economics.Setting.CurrencyName}不足,无法购买!");
args.Player.SendErrorMessage(GetString($"你的{EconomicsAPI.Economics.Setting.CurrencyName}不足,无法购买!"));
return;
}
EconomicsAPI.Economics.CurrencyManager.AddUserCurrency(context.Publisher, context.Cost);
args.Player.GiveItem(context.Item.netID, context.Item.Stack, context.Item.Prefix);
args.Player.SendSuccessMessage("交易成功!");
TShock.Utils.Broadcast(string.Format("玩家{0}购买了{1}发布的物品{2}!", args.Player.Name, context.Publisher, context.Item.ToString()), Color.OrangeRed);
args.Player.SendSuccessMessage(GetString("交易成功!"));
TShock.Utils.Broadcast(string.Format(GetString("玩家{0}购买了{1}发布的物品{2}!"), args.Player.Name, context.Publisher, context.Item.ToString()), Color.OrangeRed);
Deal.Config.RemoveItem(index - 1);
}
else if (args.Parameters.Count == 2 && args.Parameters[0].ToLower() == "recall")
{
if (!int.TryParse(args.Parameters[1], out var index) || index <= 0)
{
args.Player.SendErrorMessage("请输入一个正确的ID");
args.Player.SendErrorMessage(GetString("请输入一个正确的ID"));
return;
}
var context = Deal.Config.GetDealContext(index);
if (context == null)
{
args.Player.SendErrorMessage("不存在此交易!");
args.Player.SendErrorMessage(GetString("不存在此交易!"));
return;
}
if (context.Publisher != args.Player.Name)
{
args.Player.SendErrorMessage("该交易不是你发布的无法撤回!");
args.Player.SendErrorMessage(GetString("该交易不是你发布的无法撤回!"));
return;
}
args.Player.SendSuccessMessage("撤回成功!");
TShock.Utils.Broadcast(string.Format("玩家{0}撤回了发布的物品{1}!", args.Player.Name, context.Item.ToString()), Color.OrangeRed);
args.Player.SendSuccessMessage(GetString("撤回成功!"));
TShock.Utils.Broadcast(string.Format(GetString("玩家{0}撤回了发布的物品{1}!"), args.Player.Name, context.Item.ToString()), Color.OrangeRed);
args.Player.GiveItem(context.Item.netID, context.Item.Stack, context.Item.Prefix);
Deal.Config.RemoveItem(index - 1);
}
else if (args.Parameters.Count == 1 && args.Parameters[0].ToLower() == "help")
{
args.Player.SendInfoMessage("/deal push [价格]");
args.Player.SendInfoMessage("/deal buy [ID]");
args.Player.SendInfoMessage("/deal recall [ID]");
args.Player.SendInfoMessage("/deal list");
args.Player.SendInfoMessage(GetString("/deal push [价格]"));
args.Player.SendInfoMessage(GetString("/deal buy [ID]"));
args.Player.SendInfoMessage(GetString("/deal recall [ID]"));
args.Player.SendInfoMessage(GetString("/deal list"));
}
else if (args.Parameters.Count == 1 && args.Parameters[0].ToLower() == "reset")
{
if (!args.Player.HasPermission("economics.deal.reset"))
{
args.Player.SendErrorMessage("你无权使用此命令!");
args.Player.SendErrorMessage(GetString("你无权使用此命令!"));
return;
}
Deal.Config.DealContexts.Clear();
ConfigHelper.Write(Deal.PATH, Deal.Config);
args.Player.SendInfoMessage("交易已重置!");
args.Player.SendInfoMessage(GetString("交易已重置!"));
}
else
{
args.Player.SendInfoMessage("输入/deal help 查看命令使用方法");
args.Player.SendInfoMessage(GetString("输入/deal help 查看命令使用方法"));
}
}
}
2 changes: 1 addition & 1 deletion src/Economics.Deal/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
## 更新日志

```
暂无
1. 支持多语言
```

## 指令
Expand Down
108 changes: 108 additions & 0 deletions src/Economics.Deal/i18n/en-US.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
msgid ""
msgstr ""
"Project-Id-Version: Economics.Deal\n"
"POT-Creation-Date: 2024-09-30 15:29:47+0800\n"
"PO-Revision-Date: 2024-09-30 15:29:48+0800\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: GetText.NET Extractor\n"

#: ..\..\Command.cs:58
msgid "{0}:{1} 发布者:{2} 价格{3}"
msgstr "{0}: {1} publisher: {2} price: {3}"

#: ..\..\Command.cs:118
msgid "/deal buy [ID]"
msgstr "/deal buy [ID]"

#: ..\..\Command.cs:120
msgid "/deal list"
msgstr "/deal buy list"

#: ..\..\Command.cs:117
msgid "/deal push [价格]"
msgstr "/deal push [price]"

#: ..\..\Command.cs:119
msgid "/deal recall [ID]"
msgstr "/deal recall [ID]"

#: ..\..\Command.cs:78
#: ..\..\Command.cs:102
msgid "不存在此交易!"
msgstr "This transaction does not exist!"

#: ..\..\Command.cs:110
msgid "撤回成功!"
msgstr "recall successfuly!"

#: ..\..\Command.cs:28
msgid "当前没有交易物品"
msgstr "There are no items currently for trade."

#: ..\..\Command.cs:47
msgid "发布成功"
msgstr "Post successful."

#: ..\..\Command.cs:107
msgid "该交易不是你发布的无法撤回!"
msgstr "This transaction was not initiated by you and cannot be retracted!"

#: ..\..\Command.cs:88
msgid "交易成功!"
msgstr "Transaction successful!"

#: ..\..\Command.cs:29
msgid "交易列表 ({0}/{1}):"
msgstr "Transaction List ({0}/{1}):"

#: ..\..\Command.cs:131
msgid "交易已重置!"
msgstr "Transaction has been reset!"

#: ..\..\Command.cs:83
#, csharp-format
msgid "你的{0}不足,无法购买!"
msgstr "You do not have enough {0}, unable to make the purchase!"

#: ..\..\Command.cs:38
msgid "你手持物品为空!"
msgstr "You have no items in hand!"

#: ..\..\Command.cs:126
msgid "你无权使用此命令!"
msgstr "You do not have permission to use this command!"

#: ..\..\Command.cs:43
msgid "请输入一个正确的价格!"
msgstr "Please enter a valid price!"

#: ..\..\Command.cs:72
#: ..\..\Command.cs:96
msgid "请输入一个正确的ID"
msgstr "Please enter a valid ID."

#: ..\..\Command.cs:30
msgid "输入 {0}deal list {{0}} 查看更多"
msgstr "Type {0}deal list {{0}} to see more"

#: ..\..\Command.cs:135
msgid "输入/deal help 查看命令使用方法"
msgstr "Type /deal help to view command usage instructions."

#: ..\..\Command.cs:111
msgid "玩家{0}撤回了发布的物品{1}!"
msgstr "Player {0} has retracted the posted item {1}!"

#: ..\..\Command.cs:89
msgid "玩家{0}购买了{1}发布的物品{2}!"
msgstr "Player {0} has purchased the item {2} posted by {1}!"

#: ..\..\Command.cs:48
#, csharp-format
msgid "玩家`{0}`发布了一个交易物品: [i/s{1}:{2}] 价格: {3}"
msgstr "Player `{0}` has posted a trade item: [i/s{1}:{2}] Price: {3}"

Loading
Loading