diff --git a/.gitignore b/.gitignore
index 83f8abf8..af8e87d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -402,4 +402,5 @@ FodyWeavers.xsd
dist/
*.[Dd]esigner.cs
*.db
-cache
\ No newline at end of file
+cache
+/assets/res/Ln.resx
diff --git a/NetAdmin.sln b/NetAdmin.sln
index 0da79da4..ba2149e6 100644
--- a/NetAdmin.sln
+++ b/NetAdmin.sln
@@ -28,6 +28,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
ProjectSection(SolutionItems) = preProject
+ clean.ln.csx = scripts/clean.ln.csx
code.clean.csx = scripts/code.clean.csx
code.clean.ps1 = scripts/code.clean.ps1
gen.cs.tt = scripts/gen.cs.tt
diff --git a/assets/res/Enums.ln b/assets/res/Enums.ln
new file mode 100644
index 00000000..e60b78e5
--- /dev/null
+++ b/assets/res/Enums.ln
@@ -0,0 +1,86 @@
+不为其中之一
+不以什么开始
+不以什么结束
+不包含
+不等于
+业务模块
+丧偶
+中专
+中共党员
+为其中之一
+以什么开始
+以什么结束
+保密
+信息
+倒序排序
+全部数据
+公告
+共青团员
+出生证
+初中
+删除
+包含
+博士
+博士后
+发送失败
+同步数据库结构
+外国人居留证
+大专
+大于
+大于等于
+女
+宕机
+小于
+小于等于
+小学
+已发送
+已婚
+已校验
+已读
+并且
+意外错误
+成功
+或者
+手机
+护照
+指定部门数据
+按钮
+插入种子数据
+无效操作
+无效输入
+日期范围
+未婚
+未读
+本人数据
+本科
+本部门和下级部门数据
+本部门数据
+框架
+比较数据库结构
+注册
+港澳台通行证
+电子邮箱
+男
+登录
+硕士
+离异
+私信
+等于
+等待发送
+系统模块
+绑定手机号
+结果非预期
+群众
+自定义
+范围
+菜单
+解绑手机号
+警告
+调试
+跟踪
+身份证
+重设密码
+链接
+错误
+顺序排序
+高中
\ No newline at end of file
diff --git a/assets/res/Ln.resx b/assets/res/Ln.resx
deleted file mode 100644
index 8c976a44..00000000
--- a/assets/res/Ln.resx
+++ /dev/null
@@ -1,255 +0,0 @@
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
- PublicKeyToken=b77a5c561934e089
-
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
- PublicKeyToken=b77a5c561934e089
-
-
- // ReSharper disable DuplicateResource
- 1分钟内只能发送1次
- 6位数字
- 8位以上数字字母组合
- XML注释文件不存在
- 不为其中之一
- 不以什么开始
- 不以什么结束
- 不包含
- 不等于
- 业务模块
- 东乡族
- 丧偶
- 中专
- 中共党员
- 中文姓名
- 为其中之一
- 乌孜别克族
- 事务已回滚
- 事务已提交
- 京族
- 人机校验请求不能为空
- 人机验证未通过
- 仡佬族
- 以什么开始
- 以什么结束
- 仫佬族
- 佤族
- 侗族
- 俄罗斯族
- 保安族
- 保密
- 信息
- 倒序排序
- 傈僳族
- 傣族
- 允许的文件大小
- 允许的文件格式
- 全部数据
- 公告
- 共青团员
- 出生证
- 初中
- 删除
- 包含
- 区号电话号码分机号
- 博士
- 博士后
- 参数格式不正确
- 发送失败
- 同步数据库结构
- 哈尼族
- 哈萨克族
- 唯一编码不能为空
- 回族
- 图标代码不能为空
- 图标名称不能为空
- 土家族
- 土族
- 基诺族
- 塔吉克族
- 塔塔尔族
- 壮族
- 外国人居留证
- 大专
- 大于
- 大于等于
- 女
- 字典名称不能为空
- 字典目录不存在
- 字典目录编号不能为空
- 字典编码不能为空
- 宕机
- 密码不能为空
- 小于
- 小于等于
- 小学
- 已发送
- 已婚
- 已完成
- 已校验
- 已读
- 布依族
- 布朗族
- 并且
- 开始事务
- 彝族
- 德昂族
- 怒族
- 意外错误
- 成功
- 或者
- 手机
- 手机号码
- 手机号码不正确
- 护照
- 拉祜族族
- 指定部门数据
- 按钮
- 插入种子数据
- 撒拉族
- 支付宝账号
- 数据库同步开始
- 数据库服务器时钟偏移
- 数据库结构同步完成
- 数据版本不能为空
- 文件不能为空
- 新密码不能为空
- 新手机号码
- 新手机号码验证码不正确
- 无效操作
- 无效端口号
- 无效证件号码
- 无效输入
- 日志长度超过限制
- 日期范围
- 旧密码不正确
- 旧密码不能为空
- 旧手机号码
- 旧手机号码不正确
- 旧手机号码验证码不正确
- 时间戳缺失或误差过大
- 普米族
- 景颇族
- 朝鲜族
- 未婚
- 未指定部门
- 未读
- 本人数据
- 本科
- 本部门和下级部门数据
- 本部门数据
- 柯尔克孜族
- 框架
- 模块名称不能为空
- 模块说明不能为空
- 比较数据库结构
- 毛南族
- 水族
- 汉族
- 注册
- 消息主题不能为空
- 消息内容不能为空
- 港澳台通行证
- 满族
- 父节点不存在
- 独龙族
- 珞巴族
- 瑶族
- 用户不存在
- 用户名不能为空
- 用户名不能是手机号
- 用户名或密码错误
- 用户名长度4位以上
- 用户头像不能为空
- 用户档案不能为空
- 电子邮箱
- 男
- 畲族
- 登录
- 白族
- 目标设备不能为空
- 短信验证请求不能为空
- 硕士
- 离异
- 私信
- 站内信不存在
- 等于
- 等待发送
- 签名缺失
- 系统模块
- 纳西族
- 绑定手机号
- 结果非预期
- 维吾尔族
- 羌族
- 群众
- 自定义
- 苗族
- 范围
- 菜单
- 菜单名称不能为空
- 菜单标题不能为空
- 菜单编号不能为空
- 蒙古族
- 藏族
- 裕固族
- 角色不存在
- 角色名称不能为空
- 角色编号不能为空
- 角色编号列表不能为空
- 解绑手机号
- 警告
- 设备类型不能为空
- 该角色下存在用户
- 该部门下存在子部门
- 该部门下存在用户
- 请求
- 请求对象不能为空
- 请联系管理员激活账号
- 读取用户令牌出错
- 调试
- 账号不能为空
- 赫哲族
- 跟踪
- 身份证
- 达斡尔族
- 邀请码不正确
- 邮箱验证码不正确
- 部门不存在
- 部门名称不能为空
- 鄂伦春族
- 鄂温克族
- 配置文件初始化完毕
- 重设密码
- 链接
- 错误
- 锡伯族
- 键值不能为空
- 键名称不能为空
- 门巴族
- 阿昌族
- 顺序排序
- 验证数据不能为空
- 验证码不正确
- 验证码不能为空
- 验证码类型不能为空
- 高中
- 高山族
- 黎族
-
\ No newline at end of file
diff --git a/assets/res/Nations.ln b/assets/res/Nations.ln
new file mode 100644
index 00000000..865ccd29
--- /dev/null
+++ b/assets/res/Nations.ln
@@ -0,0 +1,56 @@
+东乡族
+乌孜别克族
+京族
+仡佬族
+仫佬族
+佤族
+侗族
+俄罗斯族
+保安族
+傈僳族
+傣族
+哈尼族
+哈萨克族
+回族
+土家族
+土族
+基诺族
+塔吉克族
+塔塔尔族
+壮族
+布依族
+布朗族
+彝族
+德昂族
+怒族
+拉祜族族
+撒拉族
+普米族
+景颇族
+朝鲜族
+柯尔克孜族
+毛南族
+水族
+汉族
+满族
+独龙族
+珞巴族
+瑶族
+畲族
+白族
+纳西族
+维吾尔族
+羌族
+苗族
+蒙古族
+藏族
+裕固族
+赫哲族
+达斡尔族
+鄂伦春族
+鄂温克族
+锡伯族
+门巴族
+阿昌族
+高山族
+黎族
\ No newline at end of file
diff --git a/assets/res/Ln.txt b/assets/res/Statements.ln
similarity index 54%
rename from assets/res/Ln.txt
rename to assets/res/Statements.ln
index 2168768e..ce23cf65 100644
--- a/assets/res/Ln.txt
+++ b/assets/res/Statements.ln
@@ -2,102 +2,26 @@
6位数字
8位以上数字字母组合
XML注释文件不存在
-不为其中之一
-不以什么开始
-不以什么结束
-不包含
-不等于
-业务模块
-东乡族
-丧偶
-中专
-中共党员
中文姓名
-为其中之一
-乌孜别克族
事务已回滚
事务已提交
-京族
人机校验请求不能为空
人机验证未通过
-仡佬族
-以什么开始
-以什么结束
-仫佬族
-佤族
-侗族
-俄罗斯族
-保安族
-保密
-信息
-倒序排序
-傈僳族
-傣族
允许的文件大小
允许的文件格式
-全部数据
-公告
-共青团员
-出生证
-初中
-删除
-包含
区号电话号码分机号
-博士
-博士后
参数格式不正确
-发送失败
-同步数据库结构
-哈尼族
-哈萨克族
唯一编码不能为空
-回族
图标代码不能为空
图标名称不能为空
-土家族
-土族
-基诺族
-塔吉克族
-塔塔尔族
-壮族
-外国人居留证
-大专
-大于
-大于等于
-女
字典名称不能为空
字典目录不存在
字典目录编号不能为空
字典编码不能为空
-宕机
密码不能为空
-小于
-小于等于
-小学
-已发送
-已婚
-已完成
-已校验
-已读
-布依族
-布朗族
-并且
+已处理完毕
开始事务
-彝族
-德昂族
-怒族
-意外错误
-成功
-或者
-手机
-手机号码
手机号码不正确
-护照
-拉祜族族
-指定部门数据
-按钮
-插入种子数据
-撒拉族
支付宝账号
数据库同步开始
数据库服务器时钟偏移
@@ -105,47 +29,21 @@ XML注释文件不存在
数据版本不能为空
文件不能为空
新密码不能为空
-新手机号码
新手机号码验证码不正确
-无效操作
无效端口号
无效证件号码
-无效输入
日志长度超过限制
-日期范围
旧密码不正确
旧密码不能为空
-旧手机号码
旧手机号码不正确
旧手机号码验证码不正确
时间戳缺失或误差过大
-普米族
-景颇族
-朝鲜族
-未婚
未指定部门
-未读
-本人数据
-本科
-本部门和下级部门数据
-本部门数据
-柯尔克孜族
-框架
模块名称不能为空
模块说明不能为空
-比较数据库结构
-毛南族
-水族
-汉族
-注册
消息主题不能为空
消息内容不能为空
-港澳台通行证
-满族
父节点不存在
-独龙族
-珞巴族
-瑶族
用户不存在
用户名不能为空
用户名不能是手机号
@@ -153,77 +51,33 @@ XML注释文件不存在
用户名长度4位以上
用户头像不能为空
用户档案不能为空
-电子邮箱
-男
-畲族
-登录
-白族
目标设备不能为空
短信验证请求不能为空
-硕士
-离异
-私信
站内信不存在
-等于
-等待发送
签名缺失
-系统模块
-纳西族
-绑定手机号
-结果非预期
-维吾尔族
-羌族
-群众
-自定义
-苗族
-范围
-菜单
菜单名称不能为空
菜单标题不能为空
菜单编号不能为空
-蒙古族
-藏族
-裕固族
角色不存在
角色名称不能为空
角色编号不能为空
角色编号列表不能为空
-解绑手机号
-警告
设备类型不能为空
该角色下存在用户
该部门下存在子部门
该部门下存在用户
-请求
请求对象不能为空
请联系管理员激活账号
读取用户令牌出错
-调试
账号不能为空
-赫哲族
-跟踪
-身份证
-达斡尔族
邀请码不正确
邮箱验证码不正确
部门不存在
部门名称不能为空
-鄂伦春族
-鄂温克族
配置文件初始化完毕
-重设密码
-链接
-错误
-锡伯族
键值不能为空
键名称不能为空
-门巴族
-阿昌族
-顺序排序
验证数据不能为空
验证码不正确
验证码不能为空
-验证码类型不能为空
-高中
-高山族
-黎族
\ No newline at end of file
+验证码类型不能为空
\ No newline at end of file
diff --git a/build/prebuild.targets b/build/prebuild.targets
index c88b9185..fe986614 100644
--- a/build/prebuild.targets
+++ b/build/prebuild.targets
@@ -10,8 +10,14 @@
StdOutEncoding="utf-8" />
-
- Languages/Ln.txt
+
+ Languages/Statements.ln
+
+
+ Languages/Nations.ln
+
+
+ Languages/Enums.ln
Languages/Ln.resx
diff --git a/scripts/clean.ln.csx b/scripts/clean.ln.csx
new file mode 100644
index 00000000..f77913d9
--- /dev/null
+++ b/scripts/clean.ln.csx
@@ -0,0 +1,26 @@
+using System.Text.RegularExpressions;
+
+var csFiles = Directory.EnumerateFiles(@"../src/backend", $"*.cs", new EnumerationOptions { RecurseSubdirectories = true });
+foreach (var lnFile in Directory.EnumerateFiles("../assets/res", "*.ln"))
+{
+ var newLines = new List();
+ foreach (var line in File.ReadAllLines(lnFile))
+ {
+ var found = false;
+ foreach (var csFile in csFiles)
+ {
+ if (File.ReadAllText(csFile).Contains($"Ln.{(Regex.IsMatch(line, @"^\d") ? "_" : "") + line}"))
+ {
+ found = true;
+ newLines.Add(line);
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ Console.WriteLine(line);
+ }
+ }
+ File.WriteAllLines(lnFile, newLines);
+}
\ No newline at end of file
diff --git a/scripts/gen.resx.tt b/scripts/gen.resx.tt
index 5c98968f..ba5cf23f 100644
--- a/scripts/gen.resx.tt
+++ b/scripts/gen.resx.tt
@@ -26,14 +26,16 @@
PublicKeyToken=b77a5c561934e089
-// ReSharper disable DuplicateResource
<#
var regex = new Regex(@"^\d", RegexOptions.Compiled);
- foreach (var line in File.ReadLines("../assets/res/ln.txt"))
+ foreach (var file in Directory.GetFiles("../assets/res/", "*.ln"))
{
+ foreach (var line in File.ReadLines(file))
+ {
#>
<#= line #>" xml:space="preserve"><#= line #>
<#
+ }
}
#>
\ No newline at end of file
diff --git a/src/backend/NetAdmin.Domain/Attributes/DataValidation/MobileAttribute.cs b/src/backend/NetAdmin.Domain/Attributes/DataValidation/MobileAttribute.cs
index f37e34bf..80b056d9 100644
--- a/src/backend/NetAdmin.Domain/Attributes/DataValidation/MobileAttribute.cs
+++ b/src/backend/NetAdmin.Domain/Attributes/DataValidation/MobileAttribute.cs
@@ -12,7 +12,7 @@ public sealed class MobileAttribute : RegexAttribute
public MobileAttribute() //
: base(Chars.RGX_MOBILE)
{
- ErrorMessageResourceName = nameof(Ln.手机号码);
+ ErrorMessageResourceName = nameof(Ln.手机号码不正确);
ErrorMessageResourceType = typeof(Ln);
}
}
\ No newline at end of file
diff --git a/src/backend/NetAdmin.Infrastructure/Extensions/HttpRequestMessageExtensions.cs b/src/backend/NetAdmin.Infrastructure/Extensions/HttpRequestMessageExtensions.cs
index f2c34c56..7a2ab462 100644
--- a/src/backend/NetAdmin.Infrastructure/Extensions/HttpRequestMessageExtensions.cs
+++ b/src/backend/NetAdmin.Infrastructure/Extensions/HttpRequestMessageExtensions.cs
@@ -19,7 +19,7 @@ public static class HttpRequestMessageExtensions
///
public static async Task LogAsync(this HttpRequestMessage me, ILogger logger)
{
- logger.Info($"{Ln.请求}: {await me.BuildJsonAsync().ConfigureAwait(false)}");
+ logger.Info($"HTTP Request: {await me.BuildJsonAsync().ConfigureAwait(false)}");
return me;
}
}
\ No newline at end of file
diff --git a/src/backend/NetAdmin.SysComponent.Host/Subscribers/ApiSynchronizer.cs b/src/backend/NetAdmin.SysComponent.Host/Subscribers/ApiSynchronizer.cs
index 4009baf8..1cfa6bc6 100644
--- a/src/backend/NetAdmin.SysComponent.Host/Subscribers/ApiSynchronizer.cs
+++ b/src/backend/NetAdmin.SysComponent.Host/Subscribers/ApiSynchronizer.cs
@@ -16,6 +16,6 @@ public sealed class ApiSynchronizer(ILogger logger) : IEventSub
{
var logService = App.GetService();
await logService.SyncAsync().ConfigureAwait(false);
- logger.Info($"{nameof(IApiService)}.{nameof(IApiService.SyncAsync)} {Ln.已完成}");
+ logger.Info($"{nameof(IApiService)}.{nameof(IApiService.SyncAsync)} {Ln.已处理完毕}");
}
}
\ No newline at end of file
diff --git a/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs b/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs
index d63f94da..1e598b6c 100644
--- a/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs
+++ b/src/backend/NetAdmin.SysComponent.Host/Subscribers/EmailCodeSender.cs
@@ -28,6 +28,6 @@ public sealed class EmailCodeSender(ILogger logger) : IEventSub
Status = VerifyCodeStatues.Sent
})
.ConfigureAwait(false);
- logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.UpdateAsync)} {Ln.已完成}");
+ logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.UpdateAsync)} {Ln.已处理完毕}");
}
}
\ No newline at end of file
diff --git a/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs b/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs
index 6665b580..d0e4903c 100644
--- a/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs
+++ b/src/backend/NetAdmin.SysComponent.Host/Subscribers/SmsCodeSender.cs
@@ -28,6 +28,6 @@ public sealed class SmsCodeSender(ILogger logger) : IEventSubscri
Status = VerifyCodeStatues.Sent
})
.ConfigureAwait(false);
- logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.UpdateAsync)} {Ln.已完成}");
+ logger.Info($"{nameof(IVerifyCodeService)}.{nameof(IVerifyCodeService.UpdateAsync)} {Ln.已处理完毕}");
}
}
\ No newline at end of file