Optimize Chinese Localization, Add Time Units, and Fix Italic Bug (#796)

* add time unit to language file

* Fixed a bug where the font following a blocktype name was incorrectly rendered in italics.

* Collected time unit abbreviations

* Update pom.xml

---------

Co-authored-by: Intelli <6790859+Intelli@users.noreply.github.com>
This commit is contained in:
Halogly 2025-09-10 00:13:41 +08:00 committed by GitHub
parent 8b3e37774a
commit abb0ece3e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 156 additions and 147 deletions

View file

@ -194,6 +194,7 @@ TIME_HOURS: "{0} {hour|hours}"
TIME_MINUTES: "{0} {minute|minutes}"
TIME_MONTHS: "{0} {month|months}"
TIME_SECONDS: "{0} {second|seconds}"
TIME_UNITS: "{/m|/h|/d}"
TIME_WEEKS: "{0} {week|weeks}"
TIME_YEARS: "{0} {year|years}"
UPDATE_ERROR: "An error occurred while checking for updates."

View file

@ -1,202 +1,213 @@
# CoreProtect Language File (zh-CN)
# Origin: Intelli, Translator: DreamVoid, StarWishsama, YuanYuanOwO
# Origin: Intelli, Translator: DreamVoid, StarWishsama, YuanYuanOwO, Halogly
ACTION_NOT_SUPPORTED: "命令不支持该操作。"
ACTION_NOT_SUPPORTED: "命令不支持该操作。"
AMOUNT_BLOCK: "{0}个{方块|方块}"
AMOUNT_CHUNK: "{0}个{区块|区块}"
AMOUNT_ENTITY: "{0}个{实体|实体}"
AMOUNT_ITEM: "{0}个{物品|物品}"
API_TEST: "API 测试成功。"
CACHE_ERROR: "警告: 验证缓存 {0} 时出错。"
CACHE_RELOAD: "正在强制从数据库中重新加载{映射|世界}缓存。"
CACHE_ERROR: "警告验证缓存 {0} 时出错。"
CACHE_RELOAD: "正在强制从数据库中重新加载{映射|世界}缓存。"
CHECK_CONFIG: "请检查 config.yml 文件"
COMMAND_CONSOLE: "请在控制台中运行此命令。"
COMMAND_NOT_FOUND: "找不到命令 \"{0}\""
COMMAND_THROTTLED: "请稍等片刻,然后重试。"
COMMAND_NOT_FOUND: "命令 \"{0}\" 未找到。"
COMMAND_THROTTLED: "请稍后再试。"
CONSUMER_ERROR: "数据处理队列已经{暂停|恢复}。"
CONSUMER_TOGGLED: "数据处理队列已{暂停|恢复}。"
CONSUMER_TOGGLED: "数据处理队列已{暂停|恢复}。"
CONTAINER_HEADER: "容器物品变更记录"
DATABASE_BUSY: "数据库繁忙,请稍后重试。"
CPU_CORES: "CPU 核心。"
DATABASE_BUSY: "数据库繁忙,请稍后再试。"
DATABASE_INDEX_ERROR: "无法验证数据库索引。"
DATABASE_LOCKED_1: "数据库已被锁定,请等待至少15秒后重试..."
DATABASE_LOCKED_2: "数据库已在使用,请再试一次。"
DATABASE_LOCKED_3: "禁用数据库锁定,请在配置文件中设置 \"database-lock: false\"。"
DATABASE_LOCKED_1: "数据库已锁定,请等待约15秒后再试..."
DATABASE_LOCKED_2: "数据库正在使用中,请稍后再试。"
DATABASE_LOCKED_3: "禁用数据库锁定,请在配置文件中设置 \"database-lock: false\"。"
DATABASE_LOCKED_4: "禁用数据库锁定可能会导致数据损坏。"
DATABASE_UNREACHABLE: "数据库无法访问。正在丢弃数据并关闭。"
DATABASE_UNREACHABLE: "数据库连接失败,正在丢弃数据并关闭。"
DEVELOPMENT_BRANCH: "检测到正在使用开发分支的版本,跳过使用补丁脚本。"
DIRT_BLOCK: "已在你的下方放置了一个泥土。"
DISABLE_SUCCESS: "禁用 {0} 成功!"
ENABLE_FAILED: "无法启用 {0}!"
ENABLE_SUCCESS: "{0} 已成功启用!"
DISABLE_SUCCESS: "已成功禁用 {0}!"
DONATION_KEY_REQUIRED: "需要有效的捐赠密钥才能执行此命令。"
ENABLE_FAILED: "无法启用 {0}。"
ENABLE_SUCCESS: "已成功启用 {0}!"
ENJOY_COREPROTECT: "对 {0} 感到满意吗?请加入我们的 Discord 频道!"
FINISHING_CONVERSION: "正在完成数据转换,请稍..."
FINISHING_LOGGING: "正在完成数据记录,请稍..."
FIRST_VERSION: "初始化数据库: {0}"
FINISHING_CONVERSION: "正在完成数据转换,请稍..."
FINISHING_LOGGING: "正在完成数据记录,请稍..."
FIRST_VERSION: "初始化数据库{0}"
GLOBAL_LOOKUP: "请勿在执行全局查询时指定半径。"
GLOBAL_ROLLBACK: "使用 \"{0}\" 进行全局{回滚|恢复}操作"
HELP_ACTION_1: "将查询限制为一个作。"
HELP_ACTION_2: "例子: [a:block], [a:+block], [a:-block] [a:click], [a:container], [a:inventory], [a:item], [a:kill], [a:chat], [a:command], [a:sign], [a:session], [a:username]"
HELP_ACTION_1: "将查询限制为一个作。"
HELP_ACTION_2: "例子:[a:block],[a:+block],[a:-block],[a:click],[a:container],[a:inventory],[a:item],[a:kill],[a:chat],[a:command],[a:sign],[a:session],[a:username]"
HELP_COMMAND: "显示附加信息。"
HELP_EXCLUDE_1: "排除方块/玩家。"
HELP_EXCLUDE_2: "例子: [e:stone], [e:Notch], [e:stone,Notch]"
HELP_EXCLUDE_2: "例子:[e:stone],[e:Notch],[e:stone,Notch]"
HELP_HEADER: "{0} 帮助"
HELP_INCLUDE_1: "包括方块/实体。"
HELP_INCLUDE_2: "例子: [i:stone], [i:zombie], [i:stone,wood,bedrock]"
HELP_INSPECT_1: "启用检查器后,你可以:"
HELP_INCLUDE_2: "例子:[i:stone],[i:zombie],[i:stone,wood,bedrock]"
HELP_INSPECT_1: "启用检查器后,你可以"
HELP_INSPECT_2: "左键单击以查看方块放置记录。"
HELP_INSPECT_3: "右键单击以查看相邻方块破坏记录。"
HELP_INSPECT_4: "放置一个方块以查看放置位置的破坏记录。"
HELP_INSPECT_5: "在液体中放置一个方块以查看液体变更记录。"
HELP_INSPECT_6: "右键单击门、箱子等以查看交互记录。"
HELP_INSPECT_7: "提示: 你可以使用 \"/co i\" 进行快速查询。"
HELP_INSPECT_COMMAND: "开启或关闭方块检查状态。"
HELP_LIST: "显示所有命令的列表。"
HELP_INSPECT_7: "提示你可以使用 \"/co i\" 进行快速查询。"
HELP_INSPECT_COMMAND: "开启或关闭方块检查。"
HELP_LIST: "列出所有命令。"
HELP_LOOKUP_1: "命令快捷方式。"
HELP_LOOKUP_2: "在查询记录后使用以查看日志"
HELP_LOOKUP_2: "检查方块后使用以查看日志。"
HELP_LOOKUP_COMMAND: "高级方块数据查询。"
HELP_NO_INFO: "命令的信息 \"{0}\" 未找到。"
HELP_NO_INFO: "未找到命令 \"{0}\" 的信息。"
HELP_PARAMETER: "请参阅 \"{0}\" 了解详细的参数信息。"
HELP_PARAMS_1: "执行{查找|回滚|恢复}操作。"
HELP_PARAMS_2: "指定{查找|回滚|恢复}的玩家。"
HELP_PARAMS_3: "指定{查找|回滚|恢复}的时间。"
HELP_PARAMS_4: "限制{查找|回滚|恢复}的作用范围。"
HELP_PARAMS_5: "限制{查找|回滚|恢复}的动作。"
HELP_PARAMS_6: "{查找|回滚|恢复}时包括方块/实体。"
HELP_PARAMS_7: "{查找|回滚|恢复}时排除方块/玩家。"
HELP_PURGE_1: "删除指定时间的数据。"
HELP_PURGE_2: "例如,\"{0}\" 将删除超过一个月的所有数据,只保留最近30天的数据。"
HELP_PARAMS_2: "指定{查找|回滚|恢复}的玩家。"
HELP_PARAMS_3: "指定{查找|回滚|恢复}的时间。"
HELP_PARAMS_4: "指定一个半径区域以限制{查找|回滚|恢复}的范围。"
HELP_PARAMS_5: "将{查找|回滚|恢复}限制为一个操作。"
HELP_PARAMS_6: "{查找|回滚|恢复}时包括指定的方块/实体。"
HELP_PARAMS_7: "{查找|回滚|恢复}时排除指定的方块/玩家。"
HELP_PURGE_1: "删除早于指定时间的数据。"
HELP_PURGE_2: "例如,\"{0}\" 将删除超过一个月以上的所有数据,只保留最近30天的数据。"
HELP_PURGE_COMMAND: "删除旧的方块数据。"
HELP_RADIUS_1: "指定半径区域。"
HELP_RADIUS_2: "例子: [r:10] (只会影响你周围十格方块的范围)"
HELP_RADIUS_2: "例子:[r:10](只会影响你周围十格方块的范围)"
HELP_RELOAD_COMMAND: "重新加载配置文件。"
HELP_RESTORE_COMMAND: "恢复方块数据。"
HELP_ROLLBACK_COMMAND: "回滚方块数据。"
HELP_STATUS: "查看插件状态与版本信息。"
HELP_STATUS_COMMAND: "显示插件状态。"
HELP_TELEPORT: "传送到一个地点。"
HELP_TIME_1: "指定时间。"
HELP_TIME_2: "例子: [t:2w,5d,7h,2m,10s], [t:5d2h], [t:2.50h]"
HELP_USER_1: "指定玩家。"
HELP_USER_2: "例子: [u:Notch], [u:Notch,#enderman]"
INCOMPATIBLE_ACTION: "\"{0}\" 不能与那个作一起使用。"
INSPECTOR_ERROR: "检查器已经{启用|禁用}。"
HELP_TIME_1: "指定要查找的时间。"
HELP_TIME_2: "例子:[t:2w,5d,7h,2m,10s],[t:5d2h],[t:2.50h]"
HELP_USER_1: "指定要查找的玩家。"
HELP_USER_2: "例子:[u:Notch],[u:Notch,#enderman]"
INCOMPATIBLE_ACTION: "\"{0}\" 不能与那个作一起使用。"
INSPECTOR_ERROR: "检查器已经{启用|禁用}。"
INSPECTOR_TOGGLED: "检查器已{启用|禁用}。"
INTEGRATION_ERROR: "无法{初始化|禁用}与插件 {0} 的交互。"
INTEGRATION_SUCCESS: "与 {0} 的交互已成功{初始化|禁用}。"
INTEGRATION_VERSION: "发现 {0} 的版本不兼容。"
INTEGRATION_ERROR: "无法{初始化|禁用} {0} 的日志记录。"
INTEGRATION_SUCCESS: "已成功{初始化|禁用} {0} 的日志记录。"
INTEGRATION_VERSION: "{0} 版本无效。"
INTERACTIONS_HEADER: "玩家交互"
INVALID_ACTION: "这不是有效的动作。"
INVALID_BRANCH_1: "插件版本无效(未设置分支)。"
INVALID_BRANCH_2: "要继续,请将项目分支设置为 \"开发\"。"
INVALID_ACTION: "这不是一个有效的操作。"
INVALID_BRANCH_1: "插件版本无效(未设置分支)。"
INVALID_BRANCH_2: "请将项目分支设置为 \"development\" 以继续。"
INVALID_BRANCH_3: "运行开发版本的插件可能会导致数据损坏。"
INVALID_CONTAINER: "请检查有效的容器。"
INVALID_CONTAINER: "请检查一个有效的容器。"
INVALID_DONATION_KEY: "无效的捐赠密钥。"
INVALID_INCLUDE: "\"{0}\" 是无效的方块/实体名称。"
INVALID_INCLUDE_COMBO: "那是无效的方块/实体组合。"
INVALID_RADIUS: "请输入有效的半径。"
INVALID_SELECTION: "没有找到 {0} 的选择。"
INVALID_USERNAME: "玩家名 \"{0}\" 不存在或已离线。"
INVALID_SELECTION: "找到 {0} 的选择。"
INVALID_USERNAME: "玩家名 \"{0}\" 无效。"
INVALID_WORLD: "请指定一个有效的世界。"
LATEST_VERSION: "最新版本: {0}"
LINK_DISCORD: "Discord: {0}"
LINK_DOWNLOAD: "下载: {0}"
LINK_PATREON: "Patreon 页面: {0}"
LINK_WIKI_BLOCK: "方块名称: {0}"
LINK_WIKI_ENTITY: "实体名称: {0}"
LOGGING_ITEMS: "{0} 物品等待记录,请稍等..."
LOGGING_TIME_LIMIT: "已达到数据记录时间限制。正在丢弃剩余的数据并关闭。"
LOOKUP_BLOCK: "{0} {放置|破坏} {1}。"
LOOKUP_CONTAINER: "{0} {放入|取出} {1} {2}。"
LATEST_VERSION: "最新版本{0}"
LINK_DISCORD: "Discord{0}"
LINK_DOWNLOAD: "下载{0}"
LINK_PATREON: "Patreon{0}"
LINK_WIKI_BLOCK: "方块名称{0}"
LINK_WIKI_ENTITY: "实体名称{0}"
LOGGING_ITEMS: "{0}个物品等待记录,请稍候..."
LOGGING_TIME_LIMIT: "已达到日志时间限制,正在丢弃剩余的数据并关闭。"
LOOKUP_BLOCK: "{0} {放置|破坏} {1}。"
LOOKUP_CONTAINER: "{0} {放入|取出} {1} {2}。"
LOOKUP_HEADER: "{0} 查询结果"
LOOKUP_INTERACTION: "{0} {点击|击杀} {1}."
LOOKUP_ITEM: "{0} {拾起|丢弃} {1} {2}."
LOOKUP_LOGIN: "{0} {登入|离开}."
LOOKUP_INTERACTION: "{0} {点击|击杀}了 {1}。"
LOOKUP_ITEM: "{0} {拾起|丢弃}了 {1} {2}。"
LOOKUP_LOGIN: "{0} 已{登录|离开}。"
LOOKUP_PAGE: "第 {0} 页"
LOOKUP_PROJECTILE: "{0} {扔出|发射} {1} {2}."
LOOKUP_ROWS_FOUND: "已找到 {0}{行|行}。"
LOOKUP_SEARCHING: "正在搜索,请稍..."
LOOKUP_STORAGE: "{0} {放入|取出} {1} {2}."
LOOKUP_TIME: "{0} 前"
LOOKUP_USERNAME: "{0} 已登入为 {1}."
MAXIMUM_RADIUS: "最大{查找|回滚|恢复}半径是 {0}."
LOOKUP_PROJECTILE: "{0} {扔出|发射}了 {1} {2}。"
LOOKUP_ROWS_FOUND: "{0} {行|行}已找到。"
LOOKUP_SEARCHING: "正在搜索,请稍..."
LOOKUP_STORAGE: "{0} {放入|取出}了 {1} {2}。"
LOOKUP_TIME: "{0}前"
LOOKUP_USERNAME: "{0} 已登录为 {1}。"
MAXIMUM_RADIUS: "最大{查找|回滚|恢复}半径是 {0}"
MISSING_ACTION_USER: "要使用该标识符,请指定玩家名。"
MISSING_LOOKUP_TIME: "请指定{查找|回滚|恢复}时间."
MISSING_LOOKUP_USER: "请指定查找玩家或查找{方块|半径}."
MISSING_LOOKUP_TIME: "请指定要{查找|回滚|恢复}的时间。"
MISSING_LOOKUP_USER: "请指定要查找的玩家或{方块|半径}。"
MISSING_PARAMETERS: "请使用 \"{0}\"。"
MISSING_ROLLBACK_RADIUS: "你没有指定{回滚|恢复}半径。"
MISSING_ROLLBACK_USER: "你没有指定{回滚|恢复}的玩家操作。"
MISSING_ROLLBACK_RADIUS: "你没有指定{回滚|恢复}半径。"
MISSING_ROLLBACK_USER: "你没有指定{回滚|恢复}的玩家。"
MYSQL_UNAVAILABLE: "无法连接到 MySQL 服务器。"
NO_DATA: "没有在 {0} 中找到数据"
NO_DATA_LOCATION: "此位置找不到任何{数据|存取|交互|消息}的记录。"
NETWORK_CONNECTION: "{0} 连接{成功|失败},正在使用 {1} {2}。"
NETWORK_TEST: "网络测试数据已成功发送。"
NO_DATA: "没有在 {0} 中找到数据。"
NO_DATA_LOCATION: "此位置找不到任何{数据|存取|交互|消息}记录。"
NO_PERMISSION: "你没有权限执行此操作。"
NO_RESULTS: "未找到结果。"
NO_RESULTS_PAGE: "没有在指定页面找到{结果|数据}。"
NO_ROLLBACK: "没有找到{等待的|上一个}回滚/恢复。"
NO_ROLLBACK: "未找到{待处理的|上一个}回滚/恢复。"
PATCH_INTERRUPTED: "升级已中断,将在服务器重新启动时重试。"
PATCH_OUTDATED_1: "无法升级早于 {0} 的数据库。"
PATCH_OUTDATED_2: "请升级到受支持的 CoreProtect 版本。"
PATCH_PROCESSING: "正在处理新数据,请稍..."
PATCH_SKIP_UPDATE: "在 {0} 跳过{表|索引}的{更新|创建|删除}。"
PATCH_STARTED: "正在准备更新到版本 {0},请稍等..."
PATCH_SUCCESS: "成功升级到版本 {0}。"
PATCH_UPGRADING: "正在进行数据库升级,请稍..."
PLEASE_SELECT: "请选择: \"{0}\"或\"{1}\"。"
PATCH_PROCESSING: "正在处理新数据,请稍..."
PATCH_SKIP_UPDATE: "正在跳过 {0} 的{表格|索引}{更新|创建|删除}操作。"
PATCH_STARTED: "正在进行 {0} 升级,请稍候..."
PATCH_SUCCESS: "成功升级到 {0}。"
PATCH_UPGRADING: "正在进行数据库升级,请稍..."
PLEASE_SELECT: "请选择:\"{0}\" 或 \"{1}\"。"
PREVIEW_CANCELLED: "预览已取消。"
PREVIEW_CANCELLING: "正在取消预览..."
PREVIEW_IN_GAME: "你只能在游戏中预览回滚操作。"
PREVIEW_TRANSACTION: "你不能预览{容器|背包}物品交换。"
PRIMARY_THREAD_ERROR: "该 API 方法不能在主线程上使用。"
PURGE_ABORTED: "清除失败,数据库可能已损坏。"
PURGE_ERROR: "无法处理 {0} 数据!"
PURGE_FAILED: "数据清除失败,请稍后再试。"
PURGE_FAILED: "清除失败,请稍后再试。"
PURGE_IN_PROGRESS: "正在清除数据,请稍后再试。"
PURGE_MINIMUM_TIME: "你只能清除早于 {0} {天|小时}的数据."
PURGE_MINIMUM_TIME: "你只能清除{0}{天|小时}之前的数据。"
PURGE_NOTICE_1: "请注意,这可能需要一些时间。"
PURGE_NOTICE_2: "完成前不要重新启动服务器。"
PURGE_OPTIMIZING: "正在优化数据库,请稍等..."
PURGE_PROCESSING: "正在处理表 {0} 中的数据..."
PURGE_REPAIRING: "正在尝试修复,这可能需要一定的时间..."
PURGE_ROWS: "已删除 {0} {行|行}数据。"
PURGE_STARTED: "数据清除开始于\"{0}\"。"
PURGE_SUCCESS: "数据清除成功。"
PURGE_NOTICE_2: "完成前请勿重新启动服务器。"
PURGE_OPTIMIZING: "正在优化数据库,请稍候..."
PURGE_PROCESSING: "正在处理 {0} 的数据..."
PURGE_REPAIRING: "正在尝试修复。这可能需要一些时间..."
PURGE_ROWS: "{0}{行|行}数据已删除。"
PURGE_STARTED: "数据清除开始于 \"{0}\"。"
PURGE_SUCCESS: "数据已清除。"
RAM_STATS: "{0}GB / {1}GB 内存"
RELOAD_STARTED: "正在重新加载配置文件 - 请稍候。"
RELOAD_SUCCESS: "配置文件已重新加载成功。"
RELOAD_SUCCESS: "配置文件已重新加载。"
ROLLBACK_ABORTED: "回滚或恢复已中止。"
ROLLBACK_CHUNKS_FOUND: "找到 {0} 个{区块|区块}需要更改。"
ROLLBACK_CHUNKS_MODIFIED: "已修改 {0}/{1} 个{区块|区块}."
ROLLBACK_COMPLETED: "{回滚|恢复|预览}已对以下对象完成: {0}。"
ROLLBACK_EXCLUDED_USERS: "已排除{玩家|玩家}: \"{0}\"。"
ROLLBACK_INCLUDE: "{包括|不包括}{方块|实体|目标}{类型|类型}: \"{0}\"。"
ROLLBACK_CHUNKS_FOUND: "找到{0}个待修改的{区块|区块}。"
ROLLBACK_CHUNKS_MODIFIED: "{0}/{1}个{区块|区块}已修改。"
ROLLBACK_COMPLETED: "{0} 的{回滚|恢复|预览}操作已完成。"
ROLLBACK_EXCLUDED_USERS: "已排除{玩家|玩家}\"{0}\"。"
ROLLBACK_INCLUDE: "{包括|不包括}的{方块|实体|目标}{类型|类型}:\"{0}\"。"
ROLLBACK_IN_PROGRESS: "一个回滚/恢复操作已在进行。"
ROLLBACK_LENGTH: "花费时间: {0}{秒|秒}."
ROLLBACK_MODIFIED: "{已修改|正在修改}{0}."
ROLLBACK_RADIUS: "半径: {0}个{方块|方块}."
ROLLBACK_SELECTION: "半径设置为\"{0}\"。"
ROLLBACK_STARTED: "{回滚|恢复|预览}于 \"{0}\" 开始。"
ROLLBACK_TIME: "时间范围: {0}."
ROLLBACK_WORLD_ACTION: "限制{世界|动作}为 \"{0}\"。"
SIGN_HEADER: "木牌消息"
STATUS_CONSUMER: "数据处理器: {0}个{数据|数据}待处理。"
STATUS_DATABASE: "数据库: 正在使用 {0}."
STATUS_INTEGRATION: "{0}: 合并{启用|禁用}."
STATUS_LICENSE: "协议: {0}"
STATUS_VERSION: "版本: {0}"
TELEPORTED: "传送到 {0}."
TELEPORTED_SAFETY: "将你传送到安全地点。"
ROLLBACK_LENGTH: "花费时间:{0}{秒|秒}。"
ROLLBACK_MODIFIED: "{已修改|正在修改} {0}。"
ROLLBACK_RADIUS: "半径:{0}个{方块|方块}。"
ROLLBACK_SELECTION: "半径设置为 {0}\"。"
ROLLBACK_STARTED: "{回滚|恢复|预览}开始于 \"{0}\"。"
ROLLBACK_TIME: "时间范围:{0}。"
ROLLBACK_WORLD_ACTION: "限制为{世界|操作} \"{0}\"。"
SIGN_HEADER: "告示牌消息"
STATUS_CONSUMER: "数据处理器:{0}个{数据|数据}待处理。"
STATUS_DATABASE: "数据库:正在使用 {0}。"
STATUS_INTEGRATION: "{0}:{启用|禁用}合并。"
STATUS_LICENSE: "协议:{0}"
STATUS_SYSTEM: "系统:{0}"
STATUS_VERSION: "版本:{0}"
TELEPORTED: "传送到 {0}。"
TELEPORTED_SAFETY: "将你传送到安全的位置。"
TELEPORT_PLAYERS: "只有玩家才能使用传送命令。"
TIME_DAYS: "{0}{天|天}"
TIME_HOURS: "{0}{小时|小时}"
TIME_MINUTES: "{0}{分钟|分钟}"
TIME_MONTHS: "{0} {月|月}"
TIME_SECONDS: "{0}{秒|秒}"
TIME_UNITS: "{分钟|小时|天}"
TIME_WEEKS: "{0}{周|周}"
TIME_YEARS: "{0} {年|年}"
UPDATE_ERROR: "检查更新时出错。"
UPDATE_HEADER: "{0} 更新"
UPDATE_NOTICE: "注意: {0} 现在可用。"
UPDATE_NOTICE: "注意{0} 现在可用。"
UPGRADE_IN_PROGRESS: "正在进行升级,请稍后再试。"
USER_NOT_FOUND: "玩家\"{0}\"未找到。"
USER_OFFLINE: "玩家\"{0}\"不在线。"
USER_NOT_FOUND: "玩家 \"{0}\" 未找到。"
USER_OFFLINE: "玩家 \"{0}\" 不在线。"
USING_MYSQL: "使用 MySQL 用于数据存储。"
USING_SQLITE: "使用 SQLite 用于数据存储。"
VALID_DONATION_KEY: "有效的捐赠密钥。"
VERSION_INCOMPATIBLE: "{0} {1} 不受支持。"
VERSION_NOTICE: "版本 {0} 现在可用。"
VERSION_REQUIRED: "{0} 需要使用 {1} 或更高版本。"
WORLD_NOT_FOUND: "找不到世界 \"{0}\"。"
WORLD_NOT_FOUND: "世界 \"{0}\" 未找到。"

View file

@ -306,4 +306,4 @@
<scope>test</scope>
</dependency>
</dependencies>
</project>
</project>

View file

@ -1,25 +1,18 @@
package net.coreprotect.database.lookup;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Locale;
import org.bukkit.Material;
import org.bukkit.block.BlockState;
import org.bukkit.command.CommandSender;
import net.coreprotect.config.ConfigHandler;
import net.coreprotect.database.statement.UserStatement;
import net.coreprotect.language.Phrase;
import net.coreprotect.language.Selector;
import net.coreprotect.listener.channel.PluginChannelListener;
import net.coreprotect.utility.ChatUtils;
import net.coreprotect.utility.Color;
import net.coreprotect.utility.EntityUtils;
import net.coreprotect.utility.MaterialUtils;
import net.coreprotect.utility.StringUtils;
import net.coreprotect.utility.Util;
import net.coreprotect.utility.WorldUtils;
import net.coreprotect.utility.*;
import org.bukkit.Material;
import org.bukkit.block.BlockState;
import org.bukkit.command.CommandSender;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Locale;
public class BlockLookup {
@ -157,7 +150,7 @@ public class BlockLookup {
// resultText = Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Color.WHITE + "No block data found at " + Color.ITALIC + "x" + x + "/y" + y + "/z" + z + ".";
resultText = Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Phrase.build(Phrase.NO_DATA_LOCATION, Selector.FIRST);
if (!blockName.equals("air") && !blockName.equals("cave_air")) {
resultText = Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Phrase.build(Phrase.NO_DATA, Color.ITALIC + block.getType().name().toLowerCase(Locale.ROOT)) + "\n";
resultText = Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Phrase.build(Phrase.NO_DATA, Color.ITALIC + block.getType().name().toLowerCase(Locale.ROOT) + Color.WHITE) + "\n";
}
}
}

View file

@ -223,6 +223,7 @@ public class Language {
phrases.put(Phrase.TIME_MINUTES, "{0} {minute|minutes}");
phrases.put(Phrase.TIME_MONTHS, "{0} {month|months}");
phrases.put(Phrase.TIME_SECONDS, "{0} {second|seconds}");
phrases.put(Phrase.TIME_UNITS, "{/m|/h|/d}");
phrases.put(Phrase.TIME_WEEKS, "{0} {week|weeks}");
phrases.put(Phrase.TIME_YEARS, "{0} {year|years}");
phrases.put(Phrase.UPDATE_ERROR, "An error occurred while checking for updates.");

View file

@ -1,15 +1,15 @@
package net.coreprotect.language;
import net.coreprotect.utility.ChatMessage;
import net.coreprotect.utility.Color;
import net.coreprotect.utility.StringUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.coreprotect.utility.ChatMessage;
import net.coreprotect.utility.Color;
import net.coreprotect.utility.StringUtils;
public enum Phrase {
ACTION_NOT_SUPPORTED,
@ -206,6 +206,7 @@ public enum Phrase {
TIME_MINUTES,
TIME_MONTHS,
TIME_SECONDS,
TIME_UNITS,
TIME_WEEKS,
TIME_YEARS,
UPDATE_ERROR,

View file

@ -1,15 +1,15 @@
package net.coreprotect.utility;
import net.coreprotect.language.Phrase;
import net.coreprotect.language.Selector;
import org.bukkit.command.ConsoleCommandSender;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.bukkit.command.ConsoleCommandSender;
import net.coreprotect.language.Phrase;
public class ChatUtils {
private ChatUtils() {
@ -137,24 +137,26 @@ public class ChatUtils {
timeSince = 0.00;
}
DecimalFormat decimalFormat = new DecimalFormat("0.00");
// minutes
timeSince = timeSince / 60;
if (timeSince < 60.0) {
message.append(Phrase.build(Phrase.LOOKUP_TIME, new DecimalFormat("0.00").format(timeSince) + "/m"));
message.append(Phrase.build(Phrase.LOOKUP_TIME, decimalFormat.format(timeSince) + Phrase.build(Phrase.TIME_UNITS, Selector.FIRST)));
}
// hours
if (message.length() == 0) {
timeSince = timeSince / 60;
if (timeSince < 24.0) {
message.append(Phrase.build(Phrase.LOOKUP_TIME, new DecimalFormat("0.00").format(timeSince) + "/h"));
message.append(Phrase.build(Phrase.LOOKUP_TIME, decimalFormat.format(timeSince) + Phrase.build(Phrase.TIME_UNITS, Selector.SECOND)));
}
}
// days
if (message.length() == 0) {
timeSince = timeSince / 24;
message.append(Phrase.build(Phrase.LOOKUP_TIME, new DecimalFormat("0.00").format(timeSince) + "/d"));
message.append(Phrase.build(Phrase.LOOKUP_TIME, decimalFormat.format(timeSince) + Phrase.build(Phrase.TIME_UNITS, Selector.THIRD)));
}
if (component) {