Files
layui/docs/i18n/detail/options.md
morning-star d96ad79960
Some checks failed
Issue Close Require / issue-close-require (push) Has been cancelled
feat(i18n): 国际化支持 (#2698)
* wip(i18n): laydate 国际化

* wip(i18n): colorpicker 国际化

* wip(i18n): laypage 国际化

* fix

* update code

* wip(i18n): 修改国际化消息对象结构

* wip(i18n): update

* wip(i18n): code 国际化

* wip(i18n): dropdown 国际化

* wip(i18n): flow 国际化

* wip(i18n): form 国际化

* wip(i18n): layer 国际化

* wip(i18n): table 国际化

* wip(i18n): transfer 国际化

* wip(i18n): tree 国际化

* wip(i18n): treeTable 控制台提示统一为英文

* wip(i18n): upload 国际化

* wip(i18n): util 国际化

* wip(i18n): update code

* wip(i18n): update code

* wip(i18n): fix

* wip(i18n): 优化 $t 代码细节

* wip(i18n): 修复 laydate lang

* wip(i18n): 改进 upload i18n key

* wip(i18n): 修复打包后 laydate 和 layer 异常

* wip(i18n): 移除国际化消息中的 `lay` 命名空间

* refactor(i18n): 改进国际化支持

* wip(i18n): 修复 table text.none 切换 locale 无效问题

* style(laydate): 优化逗号格式

* chore(laydate): 优化部分提示

* chore(i18n): 优化演示中部分国际化消息

* refactor: 剔除 laydate 单独版的判断逻辑

为接下来全面支持国际化做铺垫

* wip(i18n): 为 laydate 重新添加完整国际化的支持

* i18n(laydate): 优化 lang() 方法中的逻辑

* chore(util): 删除未使用的代码

* chore(i18n): 优化注释

* docs(i18n): 新增国际化文档(beta)

note: 由于时间关系,本次提交仅为初版,该文档尚未完成

* wip(docs): 完善 i18n 文档

* fix(i18n): 修复 laypage 变量定义前使用

* wip(i18n): 转义翻译结果

* fix(i18n): 修复 table 排序 key 无效

* wip(i18n): 优化获取对象中指定路径值的性能

* wip(i18n): 删除 $t 可变长参数重载

* chore(i18n): 删除不必要的注释

* refactor(i18n): laydate 国际化方案迁移至 i18n.$t (#2745)

* wip(i18n): 改进 laydate i18nMsg key

* update code

* wip(i18n): 改进 laydate 面板中的日期格式处理

* wip(i18n): 改进 util.toDateString meridiem

遵循 CLDR day periods 标准

* update code

* wip(docs): 优化 i18n 文档示例

* docs(i18n): 优化正式文档

* docs(i18n): 优化部分文案

* docs(i18n): 优化示例

---------

Co-authored-by: 贤心 <3277200+sentsim@users.noreply.github.com>
2025-09-08 10:31:02 +08:00

5.4 KiB
Raw Blame History

  i18n.set({
  locale: 'zh-CN', // 设置语言环境
  messages: { // 语言包
    'zh-CN': { // 简体中文语言包(内置)
      code: {
        copy: '复制代码',
        copied: '已复制',
        copyError: '复制失败',
        maximize: '最大化显示',
        restore: '还原显示',
        preview: '在新窗口预览'
      },
      colorpicker: {
        clear: '清除',
        confirm: '确定'
      },
      dropdown: {
        noData: '暂无数据'
      },
      flow: {
        loadMore: '加载更多',
        noMore: '没有更多了'
      },
      form: {
        select: {
          noData: '暂无数据',
          noMatch: '无匹配数据',
          placeholder: '请选择'
        },
        validateMessages: {
          required: '必填项不能为空',
          phone: '手机号格式不正确',
          email: '邮箱格式不正确',
          url: '链接格式不正确',
          number: '只能填写数字',
          date: '日期格式不正确',
          identity: '身份证号格式不正确'
        },
        verifyErrorPromptTitle: '提示'
      },
      laydate: {
        months: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
        weeks: ['日', '一', '二', '三', '四', '五', '六'],
        time: ['时', '分', '秒'],
        literal: {
          year: '年'
        },
        selectDate: '选择日期',
        selectTime: '选择时间',
        startTime: '开始时间',
        endTime: '结束时间',
        tools: {
          confirm: '确定',
          clear: '清空',
          now: '现在',
          reset: '重置'
        },
        rangeOrderPrompt: '结束时间不能早于开始时间\n请重新选择',
        invalidDatePrompt: '不在有效日期或时间范围内\n',
        formatErrorPrompt: '日期格式不合法\n必须遵循\n{format}\n',
        autoResetPrompt: '已自动重置',
        preview: '当前选中的结果'
      },
      layer: {
        confirm: '确定',
        cancel: '取消',
        defaultTitle: '信息',
        prompt: {
          InputLengthPrompt: '最多输入 {length} 个字符'
        },
        photos: {
          noData: '没有图片',
          tools:{
            rotate: '旋转',
            scaleX: '水平变换',
            zoomIn: '放大',
            zoomOut: '缩小',
            reset: '还原',
            close: '关闭'
          },
          viewPicture: '查看原图',
          urlError: {
            prompt: '当前图片地址异常,\n是否继续查看下一张',
            confirm: '下一张',
            cancel: '不看了'
          }
        }
      },
      laypage: {
        prev: '上一页',
        next: '下一页',
        first: '首页',
        last: '尾页',
        total: '共 {total} 条',
        pagesize: '条/页',
        goto: '到第',
        page: '页',
        confirm: '确定'
      },
      table: {
        sort: {
          asc: '升序',
          desc: '降序'
        },
        noData: '暂无数据',
        tools:{
          filter: {
            title: '筛选列'
          },
          export: {
            title: '导出',
            noDataPrompt: '当前表格无数据',
            compatPrompt: '导出功能不支持 IE请用 Chrome 等高级浏览器导出',
            csvText : '导出 CSV 文件'
          },
          print: {
            title: '打印',
            noDataPrompt: '当前表格无数据'
          }
        },
        dataFormatError: '返回的数据不符合规范,正确的成功状态码应为:"{statusName}": {statusCode}',
        xhrError: '请求异常,错误提示:{msg}'
      },
      transfer: {
        noData: '暂无数据',
        noMatch: '无匹配数据',
        title: ['列表一', '列表二'],
        searchPlaceholder: '关键词搜索'
      },
      tree: {
        defaultNodeName: '未命名',
        noData: '暂无数据',
        deleteNodePrompt: '确认删除"{name}"节点吗?'
      },
      upload: {
        fileType: {
          file: '文件',
          image: '图片',
          video: '视频',
          audio: '音频'
        },
        validateMessages: {
          fileExtensionError: '选择的{fileType}中包含不支持的格式',
          filesOverLengthLimit: '同时最多只能上传: {length} 个文件',
          currentFilesLength: '当前已经选择了: {length} 个文件',
          fileOverSizeLimit: '文件大小不能超过 {size}'
        },
        chooseText: '{length} 个文件'
      },
      util: {
        timeAgo: {
          days: '{days} 天前',
          hours: '{hours} 小时前',
          minutes: '{minutes} 分钟前',
          future: '未来',
          justNow: '刚刚'
        },
        toDateString: {
          // https://www.unicode.org/cldr/charts/47/supplemental/day_periods.html
          meridiem: function(hours, minutes){
            var hm = hours * 100 + minutes;
            if (hm < 500) {
              return '凌晨';
            } else if (hm < 800) {
              return '早上';
            } else if (hm < 1200) {
              return '上午';
            } else if (hm < 1300) {
              return '中午';
            } else if (hm < 1900) {
              return '下午';
            }
            return '晚上';
          }
        }
      }
    }
  }
});