@geekron/strapi 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,79 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // i18n/index.ts
30
+ var exports_i18n = {};
31
+ __export(exports_i18n, {
32
+ translations: () => exports_translations
33
+ });
34
+ module.exports = __toCommonJS(exports_i18n);
35
+
36
+ // i18n/translations/index.ts
37
+ var exports_translations = {};
38
+ __export(exports_translations, {
39
+ default: () => translations_default
40
+ });
41
+ var loadTranslations = (locale) => {
42
+ const allModules = import.meta.glob("./*/**/*.json", { eager: true, import: "default" });
43
+ const handlePrefix = (translations, prefix) => {
44
+ return Object.keys(translations).reduce((acc, key) => {
45
+ acc[`${prefix}.${key}`] = translations[key];
46
+ return acc;
47
+ }, {});
48
+ };
49
+ const processModules = (modules) => {
50
+ return Object.keys(modules).reduce((acc, modulePath) => {
51
+ if (!modulePath.startsWith(`./${locale}/`)) {
52
+ return acc;
53
+ }
54
+ const fileNameMatch = modulePath.match(/\/([^/]+)\.json$/);
55
+ const fileName = fileNameMatch?.[1] || "";
56
+ if (fileName) {
57
+ console.log();
58
+ const isPrefixFile = modulePath.split("/").length > 3;
59
+ if (isPrefixFile) {
60
+ return {
61
+ ...acc,
62
+ ...handlePrefix(modules[modulePath], fileName)
63
+ };
64
+ } else {
65
+ return {
66
+ ...acc,
67
+ ...modules[modulePath]
68
+ };
69
+ }
70
+ }
71
+ return acc;
72
+ }, {});
73
+ };
74
+ return processModules(allModules);
75
+ };
76
+ var translations_default = {
77
+ en: loadTranslations("en"),
78
+ "zh-Hans": loadTranslations("zh-Hans")
79
+ };
@@ -0,0 +1,58 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, {
5
+ get: all[name],
6
+ enumerable: true,
7
+ configurable: true,
8
+ set: (newValue) => all[name] = () => newValue
9
+ });
10
+ };
11
+
12
+ // i18n/translations/index.ts
13
+ var exports_translations = {};
14
+ __export(exports_translations, {
15
+ default: () => translations_default
16
+ });
17
+ var loadTranslations = (locale) => {
18
+ const allModules = import.meta.glob("./*/**/*.json", { eager: true, import: "default" });
19
+ const handlePrefix = (translations, prefix) => {
20
+ return Object.keys(translations).reduce((acc, key) => {
21
+ acc[`${prefix}.${key}`] = translations[key];
22
+ return acc;
23
+ }, {});
24
+ };
25
+ const processModules = (modules) => {
26
+ return Object.keys(modules).reduce((acc, modulePath) => {
27
+ if (!modulePath.startsWith(`./${locale}/`)) {
28
+ return acc;
29
+ }
30
+ const fileNameMatch = modulePath.match(/\/([^/]+)\.json$/);
31
+ const fileName = fileNameMatch?.[1] || "";
32
+ if (fileName) {
33
+ console.log();
34
+ const isPrefixFile = modulePath.split("/").length > 3;
35
+ if (isPrefixFile) {
36
+ return {
37
+ ...acc,
38
+ ...handlePrefix(modules[modulePath], fileName)
39
+ };
40
+ } else {
41
+ return {
42
+ ...acc,
43
+ ...modules[modulePath]
44
+ };
45
+ }
46
+ }
47
+ return acc;
48
+ }, {});
49
+ };
50
+ return processModules(allModules);
51
+ };
52
+ var translations_default = {
53
+ en: loadTranslations("en"),
54
+ "zh-Hans": loadTranslations("zh-Hans")
55
+ };
56
+ export {
57
+ exports_translations as translations
58
+ };
@@ -641,7 +641,7 @@ var refresh = async (ctx) => {
641
641
  };
642
642
  var dashboard = async (ctx) => {
643
643
  try {
644
- return await fetchWebsite("/api/common/dashboard");
644
+ return await fetchWebsite("/api/site/dashboard");
645
645
  } catch (error) {
646
646
  return handleError(ctx, error, "Failed to fetch dashboard stats");
647
647
  }
@@ -606,7 +606,7 @@ var refresh = async (ctx) => {
606
606
  };
607
607
  var dashboard = async (ctx) => {
608
608
  try {
609
- return await fetchWebsite("/api/common/dashboard");
609
+ return await fetchWebsite("/api/site/dashboard");
610
610
  } catch (error) {
611
611
  return handleError(ctx, error, "Failed to fetch dashboard stats");
612
612
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "app.components.NpsSurvey.banner-title": "您有多大可能会向朋友或同事推荐极客领航?",
3
+ "app.components.NpsSurvey.feedback-response": "非常感谢您的反馈!",
4
+ "app.components.NpsSurvey.feedback-question": "您有任何改进建议吗?",
5
+ "app.components.NpsSurvey.submit-feedback": "提交反馈",
6
+ "app.components.NpsSurvey.dismiss-survey-label": "关闭问卷",
7
+ "app.components.NpsSurvey.no-recommendation": "完全不可能",
8
+ "app.components.NpsSurvey.happy-to-recommend": "非常愿意",
9
+ "app.components.NpsSurvey.select-rating": "选择评分"
10
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "Auth.form.welcome.subtitle": "Log in to your account",
3
+ "Auth.form.welcome.title": "Hello, Welcome!",
4
+ "Auth.form.register.subtitle": "Credentials are only used to authenticate in Admin panel. All saved data will be stored in your database.",
5
+ "Auth.form.register.news.label": "By doing this you accept the {terms} and the {policy}."
6
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "Auth.form.register.subtitle": "Credentials are only used to authenticate in Admin panel. All saved data will be stored in your database.",
3
+ "Auth.form.register.news.label": "By doing this you accept the {terms} and the {policy}."
4
+ }
@@ -0,0 +1,53 @@
1
+ // 通用翻译加载器
2
+ const loadTranslations = (locale: string) => {
3
+ // @ts-ignore
4
+ // 一次性导入所有语言目录下的所有 JSON 文件(静态 glob 模式)
5
+ const allModules = import.meta.glob('./*/**/*.json', { eager: true, import: 'default' });
6
+
7
+ const handlePrefix = (translations: Record<string, any>, prefix: string) => {
8
+ return Object.keys(translations).reduce((acc, key) => {
9
+ acc[`${prefix}.${key}`] = translations[key];
10
+ return acc;
11
+ }, {} as Record<string, any>);
12
+ };
13
+
14
+ // 处理动态导入的模块
15
+ const processModules = (modules: Record<string, any>) => {
16
+ return Object.keys(modules).reduce((acc, modulePath) => {
17
+ // 只处理指定语言目录下的文件
18
+ if (!modulePath.startsWith(`./${locale}/`)) {
19
+ return acc;
20
+ }
21
+
22
+ // 从路径中提取文件名作为 prefix
23
+ const fileNameMatch = modulePath.match(/\/([^/]+)\.json$/);
24
+ const fileName = fileNameMatch?.[1] || '';
25
+ if (fileName) {
26
+ console.log();
27
+ // 判断是否为子目录文件
28
+ const isPrefixFile = modulePath.split('/').length > 3;
29
+ if (isPrefixFile) {
30
+ return {
31
+ ...acc,
32
+ ...handlePrefix(modules[modulePath] as Record<string, any>, fileName)
33
+ };
34
+ } else {
35
+ // 根目录文件,不添加前缀
36
+ return {
37
+ ...acc,
38
+ ...modules[modulePath] as Record<string, any>
39
+ };
40
+ }
41
+ }
42
+ return acc;
43
+ }, {} as Record<string, any>);
44
+ };
45
+
46
+ // 处理所有模块
47
+ return processModules(allModules);
48
+ };
49
+
50
+ export default {
51
+ en: loadTranslations('en'),
52
+ 'zh-Hans': loadTranslations('zh-Hans'),
53
+ }
@@ -0,0 +1,213 @@
1
+ {
2
+ "HomePage.header.title": "你好 {name}",
3
+ "HomePage.header.subtitle": "欢迎使用 Geekron CMS,这里可以展示您的网站概览、快捷入口或统计信息。",
4
+ "HomePage.widget.loading": "正在加载组件内容",
5
+ "HomePage.widget.error": "无法加载组件内容。",
6
+ "HomePage.widget.no-data": "未找到内容。",
7
+ "HomePage.widget.no-permissions": "您没有查看此组件的权限",
8
+ "Settings.apiTokens.copy.lastWarning": "复制您的 API 令牌",
9
+ "Settings.application.strapi-version": "CMS版本",
10
+ "Settings.application.strapiVersion": "CMS版本",
11
+ "Settings.permissions.auditLogs.not-available": "审计日志仅在付费计划中提供。升级以获取所有活动的可搜索和可筛选显示。",
12
+ "Settings.profile.form.section.experience.mode.option-system-label": "使用系统设置",
13
+ "Settings.sso.not-available": "SSO 仅在付费计划中提供。升级以为您的管理面板配置其他登录与注册方式。",
14
+ "Settings.content-history.title": "内容历史",
15
+ "Settings.content-history.description": "让您更好地控制内容生命周期中的每一步。",
16
+ "Settings.content-history.not-available": "内容历史仅在付费计划中提供。升级即可完全掌控内容生命周期。",
17
+ "Settings.tokens.copy.title": "令牌",
18
+ "Settings.page.PurchaseAudit-logs.description": "与团队一起跟踪并审阅更改",
19
+ "Settings.page.PurchaseAudit-logs.perks1": "轻松跟踪更改",
20
+ "Settings.page.PurchaseAudit-logs.perks2": "轻松审阅更改",
21
+ "Settings.page.PurchaseAudit-logs.perks3": "保持安全与合规",
22
+ "Settings.page.PurchaseContent-history.description": "即时撤销内容更改",
23
+ "Settings.page.PurchaseContent-history.perks1": "浏览内容历史",
24
+ "Settings.page.PurchaseContent-history.perks2": "一键回滚更改",
25
+ "Settings.page.PurchaseContent-history.perks3": "跟踪跨语言的更改",
26
+ "Settings.page.PurchaseSSO.description": "为您的团队简化身份认证",
27
+ "Settings.page.PurchaseSSO.perks1": "统一身份认证",
28
+ "Settings.page.PurchaseSSO.perks2": "增强的安全性",
29
+ "Settings.page.PurchaseSSO.perks3": "支持 Webhooks",
30
+ "Settings.page.purchase.upgrade.cta": "升级",
31
+ "Settings.page.purchase.learn-more.cta": "了解更多",
32
+ "noPreview": "暂无预览",
33
+ "app.components.FreeTrialEndedModal.button.downgrade": "降级到社区版",
34
+ "app.components.FreeTrialEndedModal.button.upgrade": "继续使用成长计划",
35
+ "app.components.FreeTrialEndedModal.description": "您对成长计划功能(如内容历史、版本发布和单点登录(SSO))的访问已过期。",
36
+ "app.components.FreeTrialEndedModal.notice.item1": "降级后将无法使用上述功能。",
37
+ "app.components.FreeTrialEndedModal.notice.item2": "文档版本历史将被删除。",
38
+ "app.components.FreeTrialEndedModal.notice.item3": "所有发布版本将被清除。",
39
+ "app.components.FreeTrialEndedModal.notice.item4": "如果要降级,请确保设置根管理员密码以保留对管理面板的访问。",
40
+ "app.components.FreeTrialEndedModal.notice.title": "重要须知:",
41
+ "app.components.FreeTrialEndedModal.title": "您的试用已结束",
42
+ "app.components.FreeTrialWelcomeModal.button": "开始探索",
43
+ "app.components.FreeTrialWelcomeModal.description1": "接下来的 30 天,您将可以完全访问高级功能,如内容历史、版本发布和单点登录(SSO)——尽情探索 Strapi CMS 的强大能力。",
44
+ "app.components.FreeTrialWelcomeModal.description2": "利用这段时间自由构建、定制并测试您的内容工作流!",
45
+ "app.components.FreeTrialWelcomeModal.title": "很高兴您加入我们",
46
+ "app.components.LeftMenu.trialCountdown.endedAt": "您的试用已于 {date} 结束。",
47
+ "app.components.LeftMenu.trialCountdown.endsAt": "您的试用将于 {date} 结束。",
48
+ "app.components.NpsSurvey.banner-title": "您有多大可能会向朋友或同事推荐极客领航?",
49
+ "app.components.NpsSurvey.feedback-response": "非常感谢您的反馈!",
50
+ "app.components.NpsSurvey.feedback-question": "您有任何改进建议吗?",
51
+ "app.components.NpsSurvey.submit-feedback": "提交反馈",
52
+ "app.components.NpsSurvey.dismiss-survey-label": "关闭问卷",
53
+ "app.components.NpsSurvey.no-recommendation": "完全不可能",
54
+ "app.components.NpsSurvey.happy-to-recommend": "非常愿意",
55
+ "app.components.NpsSurvey.select-rating": "选择评分",
56
+ "app.components.ToggleCheckbox.enabled-label": "已启用",
57
+ "app.components.ToggleCheckbox.disabled-label": "已禁用",
58
+ "app.components.UpsellBanner.button": "立即升级",
59
+ "app.components.UpsellBanner.intro": "可访问成长计划功能: ",
60
+ "app.components.UpsellBanner.text": "在试用期间,您可以探索高级工具,如内容历史、版本发布和单点登录(SSO)。",
61
+ "app.utils.refresh": "刷新",
62
+ "app.utils.published": "已发布",
63
+ "app.utils.ready-to-publish": "准备发布",
64
+ "app.utils.already-published": "已发布",
65
+ "app.utils.ready-to-publish-changes": "有待发布的更改",
66
+ "app.utils.ready-to-unpublish-changes": "准备取消发布",
67
+ "app.confirm.body": "确定执行此操作?",
68
+ "components.FilterOptions.FILTER_TYPES.$containsi": "包含(不区分大小写)",
69
+ "components.FilterOptions.FILTER_TYPES.$endsWithi": "以…结尾(不区分大小写)",
70
+ "components.FilterOptions.FILTER_TYPES.$eqi": "等于(不区分大小写)",
71
+ "components.FilterOptions.FILTER_TYPES.$nei": "不等于(不区分大小写)",
72
+ "components.FilterOptions.FILTER_TYPES.$notContainsi": "不包含(不区分大小写)",
73
+ "components.FilterOptions.FILTER_TYPES.$startsWithi": "以…开头(不区分大小写)",
74
+ "components.Input.error.contain.maxBytes": "密码必须少于 73 字节",
75
+ "components.Input.error.validation.combobox.invalid": "提供的值无效",
76
+ "components.Input.error.validation.string": "这不是有效的字符串。",
77
+ "components.Input.error.validation.email.withField": "{field} 不是有效的邮箱",
78
+ "components.Input.error.validation.json.withField": "{field} 与 JSON 格式不匹配",
79
+ "components.Input.error.validation.lowercase.withField": "{field} 必须为小写字符串",
80
+ "components.Input.error.validation.max.withField": "{field} 太大。",
81
+ "components.Input.error.validation.maxLength.withField": "{field} 太长。",
82
+ "components.Input.error.validation.min.withField": "{field} 太小。",
83
+ "components.Input.error.validation.minLength.withField": "{field} 太短。",
84
+ "components.Input.error.validation.minSupMax.withField": "{field} 不能超过最大值",
85
+ "components.Input.error.validation.regex.withField": "{field} 与正则不匹配。",
86
+ "components.Input.error.validation.required.withField": "必须填写 {field}。",
87
+ "components.Input.error.validation.unique.withField": "{field} 已被使用。",
88
+ "components.ViewSettings.tooltip": "视图设置",
89
+ "components.Blocks.modifiers.bold": "加粗",
90
+ "components.Blocks.modifiers.italic": "斜体",
91
+ "components.Blocks.modifiers.underline": "下划线",
92
+ "components.Blocks.modifiers.strikethrough": "删除线",
93
+ "components.Blocks.modifiers.code": "行内代码",
94
+ "components.Blocks.link": "链接",
95
+ "components.Blocks.expand": "展开",
96
+ "components.Blocks.collapse": "收起",
97
+ "components.Blocks.popover.text": "文本",
98
+ "components.Blocks.popover.text.placeholder": "输入链接文本",
99
+ "components.Blocks.popover.link": "链接",
100
+ "components.Blocks.popover.link.placeholder": "粘贴链接",
101
+ "components.Blocks.popover.link.rel": "Rel(可选)",
102
+ "components.Blocks.popover.link.rel.placeholder": "noopener, nofollow, noreferrer",
103
+ "components.Blocks.popover.link.target": "Target(可选)",
104
+ "components.Blocks.popover.link.target.placeholder": "_blank, _self, _parent, _top",
105
+ "components.Blocks.popover.link.error": "请输入有效链接",
106
+ "components.Blocks.popover.remove": "移除",
107
+ "components.Blocks.popover.edit": "编辑",
108
+ "components.Blocks.blocks.selectBlock": "选择一个块",
109
+ "components.Blocks.blocks.text": "文本",
110
+ "components.Blocks.blocks.heading1": "标题 1",
111
+ "components.Blocks.blocks.heading2": "标题 2",
112
+ "components.Blocks.blocks.heading3": "标题 3",
113
+ "components.Blocks.blocks.heading4": "标题 4",
114
+ "components.Blocks.blocks.heading5": "标题 5",
115
+ "components.Blocks.blocks.heading6": "标题 6",
116
+ "components.Blocks.blocks.code": "代码块",
117
+ "components.Blocks.blocks.quote": "引用",
118
+ "components.Blocks.blocks.image": "图片",
119
+ "components.Blocks.blocks.unorderedList": "项目符号列表",
120
+ "components.Blocks.blocks.orderedList": "编号列表",
121
+ "components.Blocks.blocks.code.languageLabel": "选择语言",
122
+ "components.Blocks.dnd.instruction": "要重新排序块,请按住 Command 或 Control,并配合 Shift 与上下箭头键",
123
+ "components.Blocks.dnd.reorder": "{item} 已移动。编辑器中的新位置:{position}。",
124
+ "components.Wysiwyg.blocks.code": "代码",
125
+ "components.premiumFeature.title": "高级功能",
126
+ "global.home": "首页",
127
+ "global.error": "出错了",
128
+ "global.last-change.redo": "重做上一次更改",
129
+ "global.last-change.undo": "撤销上一次更改",
130
+ "global.last-changes.discard": "放弃最近更改",
131
+ "global.more": "更多",
132
+ "global.new": "新建",
133
+ "global.profile.settings": "个人资料设置",
134
+ "global.fullname": "{firstname} {lastname}",
135
+ "global.learn-more": "了解更多",
136
+ "tours.contentTypeBuilder.Introduction.title": "欢迎使用内容类型构建器!",
137
+ "tours.contentTypeBuilder.Introduction.content": "在这里,您可以通过集合类型、单类型和可复用组件来创建并管理应用结构。开始吧!",
138
+ "tours.contentTypeBuilder.AIChat.title": "准备开始!",
139
+ "tours.contentTypeBuilder.AIChat.content": "<p>如果您对内容类型构建器或 Strapi 有任何问题,请在此提出。</p><p>Strapi AI 可以根据您的需求生成模式。请准确描述您的需求,例如:<ul><li>日期选择器</li><li>邮箱和密码字段</li><li>任意类型的媒体</li><li>UID</li></ul></p><p>不要害羞,试试看!</p>",
140
+ "tours.contentTypeBuilder.CollectionTypes.title": "集合类型",
141
+ "tours.contentTypeBuilder.CollectionTypes.content": "用于管理多条记录——例如博客文章或产品。",
142
+ "tours.contentTypeBuilder.SingleTypes.title": "单类型",
143
+ "tours.contentTypeBuilder.SingleTypes.content": "适合一次性条目,如首页或站点设置。",
144
+ "tours.contentTypeBuilder.Components.title": "组件",
145
+ "tours.contentTypeBuilder.Components.content": "一次构建,随处复用。用于按钮、卡片或轮播等。",
146
+ "tours.contentTypeBuilder.YourTurn.title": "轮到您——动手构建!",
147
+ "tours.contentTypeBuilder.YourTurn.content": "请创建一个集合类型或单类型。点击“+”按钮,选择名称,点击“继续”,我们将引导您完成后续步骤。",
148
+ "tours.contentTypeBuilder.AddFields.title": "添加字段让它鲜活起来",
149
+ "tours.contentTypeBuilder.AddFields.content": "先添加您的第一个字段——例如名称、图片或关系。内容类型需要先有结构才能承载内容。",
150
+ "tours.contentTypeBuilder.Save.title": "离开前别忘了保存!",
151
+ "tours.contentTypeBuilder.Save.content": "点击“保存”按钮以锁定您的内容类型,避免丢失工作。快完成了!",
152
+ "tours.contentTypeBuilder.Finish.title": "第一步:完成!🎉",
153
+ "tours.contentTypeBuilder.Finish.content": "您已构建了第一个内容类型!现在前往内容管理器开始添加条目吧!",
154
+ "tours.apiTokens.Introduction.title": "最后但同样重要,API 令牌",
155
+ "tours.apiTokens.Introduction.content": "通过高度可定制的权限控制 API 访问。",
156
+ "tours.apiTokens.ManageAPIToken.title": "管理 API 令牌",
157
+ "tours.apiTokens.ManageAPIToken.content": "点击“铅笔”图标查看并更新现有 API 令牌。",
158
+ "tours.apiTokens.ViewAPIToken.title": "查看 API 令牌",
159
+ "tours.apiTokens.ViewAPIToken.content": "点击“查看令牌”按钮以查看您的 API 令牌。",
160
+ "tours.apiTokens.CopyAPIToken.title": "复制您的 API 令牌",
161
+ "tours.apiTokens.CopyAPIToken.content": "点击“复制”按钮以保存您的 API 令牌,您将需要它来向应用发出请求。{spacer} 还有疑问?了解更多关于 <a>API 令牌</a> 的信息。",
162
+ "tours.apiTokens.FinalStep.title": "恭喜,是时候部署您的应用了!",
163
+ "tours.apiTokens.FinalStep.content": "您已具备部署应用并与世界分享内容的一切准备。",
164
+ "tours.contentManager.Introduction.title": "内容管理器",
165
+ "tours.contentManager.Introduction.content": "从您的集合类型和单类型中创建和管理内容。",
166
+ "tours.contentManager.CreateNewEntry.title": "创建新条目",
167
+ "tours.contentManager.CreateNewEntry.content": "点击“创建新条目”按钮,为此集合类型创建并发布新条目。",
168
+ "tours.contentManager.Fields.title": "字段",
169
+ "tours.contentManager.Fields.content": "首先填写您在内容类型构建器中创建的字段。",
170
+ "tours.contentManager.Publish.title": "发布",
171
+ "tours.contentManager.Publish.content": "然后点击“发布”按钮,让您的内容通过内容 API 可用。",
172
+ "tours.contentManager.FinalStep.title": "是时候设置 API 令牌了!",
173
+ "tours.contentManager.FinalStep.content": "现在您已经创建并发布了一个条目,让我们设置一个 API 令牌来管理内容访问。",
174
+ "tours.stepCount": "第 {currentStep} 步,共 {tourLength} 步",
175
+ "tours.skip": "跳过",
176
+ "tours.next": "下一步",
177
+ "tours.gotIt": "知道了",
178
+ "tours.overview.title": "发现您的应用!",
179
+ "tours.overview.subtitle": "跟随引导,充分学习的网站后台系统的使用。",
180
+ "tours.overview.close": "关闭引导",
181
+ "tours.overview.tasks": "您的任务",
182
+ "tours.overview.contentTypeBuilder.label": "创建您的架构",
183
+ "tours.overview.contentManager.label": "创建并发布内容",
184
+ "tours.overview.apiTokens.label": "复制一个 API 令牌",
185
+ "tours.overview.strapiCloud.label": "将应用部署到服务器",
186
+ "tours.overview.strapiCloud.link": "阅读文档",
187
+ "tours.overview.tour.link": "开始",
188
+ "tours.overview.tour.done": "完成",
189
+ "tours.overview.close.description": "确定要关闭引导吗?",
190
+ "tours.profile.title": "引导教程",
191
+ "tours.profile.description": "您可以随时重置引导教程。",
192
+ "tours.profile.reset": "重置引导教程",
193
+ "tours.profile.notification.success.reset": "引导教程已重置",
194
+ "tours.overview.completed": "已完成 {completed}%",
195
+ "widget.key-statistics.title": "项目统计",
196
+ "widget.key-statistics.list.admins": "管理员",
197
+ "widget.key-statistics.list.apiTokens": "API 令牌",
198
+ "widget.key-statistics.list.assets": "资源",
199
+ "widget.key-statistics.list.components": "组件",
200
+ "widget.key-statistics.list.contentTypes": "内容类型",
201
+ "widget.key-statistics.list.entries": "条目",
202
+ "widget.key-statistics.list.locales": "语言",
203
+ "widget.key-statistics.list.webhooks": "Webhook",
204
+ "widget.last-activity.link": "打开审计日志",
205
+ "widget.last-activity.no-activity": "暂无活动",
206
+ "widget.last-activity.title": "最近活动",
207
+ "widget.profile.title": "个人资料",
208
+ "HomePage.addWidget.title": "添加组件",
209
+ "HomePage.addWidget.noWidgetsAvailable": "暂无可添加的组件",
210
+ "HomePage.addWidget.button": "添加组件",
211
+ "HomePage.widget.delete": "删除",
212
+ "HomePage.widget.drag": "拖动以移动"
213
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "Auth.form.welcome.subtitle": "请登录你的账号",
3
+ "Auth.form.welcome.title": "欢迎使用管理员面板",
4
+ "Auth.form.register.subtitle": "凭证仅用于在管理后台中进行身份验证。所有保存的数据都将存储在您的数据库中。",
5
+ "Auth.form.register.news.label": "使用本管理后台表示您接受{terms}和{policy}"
6
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "User": "用户",
3
+ "Article": "文章",
4
+ "Article Category": "文章分类",
5
+ "About": "关于",
6
+ "Author": "作者",
7
+ "Global": "全局",
8
+ "Category": "分类",
9
+ "Visitor": "访客",
10
+ "Tag": "标签",
11
+ "Home": "首页",
12
+ "Menu": "主菜单",
13
+ "Keyword": "关键词",
14
+ "Translation": "翻译",
15
+ "Common": "公用信息",
16
+ "Site": "网站设置",
17
+ "Page": "页面",
18
+ "FAQ": "常见问题",
19
+ "Case": "案例",
20
+ "Case Category": "案例分类",
21
+ "Service": "服务子项",
22
+ "Service Category": "服务大类",
23
+ "Solution": "应用场景",
24
+ "Solution Category": "解决方案",
25
+ "Contact": "联系我们",
26
+ "Search": "搜索",
27
+ "Product": "产品",
28
+ "Product Item": "产品子项",
29
+ "Product Category": "产品类型",
30
+ "menu": "菜单",
31
+ "menu.items": "菜单项",
32
+ "menu.base": "基础菜单",
33
+ "menu.children-one": "一级子菜单",
34
+ "menu.children-two": "二级子菜单",
35
+ "menu.page": "页面",
36
+ "shared.contact": "联系方式",
37
+ "dashboard.widget.title": "仪表盘总览",
38
+ "dashboard.widget.link": "前往内容管理",
39
+ "api::common.common": "通用",
40
+ "api::menu.menu": "主菜单",
41
+ "api::home.home": "首页",
42
+ "api::article.article": "文章",
43
+ "api::author.author": "作者",
44
+ "api::category.category": "分类",
45
+ "api::tag.tag":"标签",
46
+ "api::visitor.visitor":"访客",
47
+ "api::about.about": "关于",
48
+ "api::global.global": "全局",
49
+ "api::keyword.keyword": "关键词",
50
+ "api::translation.translation": "翻译",
51
+ "api::article-category.article-category": "文章分类",
52
+ "api::site.site":"网站设置",
53
+ "home":"首页用",
54
+ "shared": "共享",
55
+ "home.customers":"合作客户",
56
+ "home.testimonials":"客户评价",
57
+ "shared.image":"图片",
58
+ "shared.block": "区块",
59
+ "shared.rich-text": "富文本",
60
+ "shared.slider": "滑块",
61
+ "shared.media": "媒体文件",
62
+ "shared.quote": "引用",
63
+ "shared.seo": "SEO",
64
+ "shared.resource": "资源",
65
+ "shared.social-media": "社交媒体",
66
+ "shared.link": "链接",
67
+ "shared.link-list": "链接列表",
68
+ "shared.menu": "菜单",
69
+ "shared.menu-2": "菜单2",
70
+ "shared.menu-3": "菜单3",
71
+ "shared.dataset": "数据集",
72
+ "dashboard.plugin.name": "网站数据",
73
+ "api::case.case": "案例",
74
+ "api::case-category.case-category": "案例分类",
75
+ "api::faq.faq": "常见问题",
76
+ "api::page.page": "页面",
77
+ "api::service.service": "服务子项",
78
+ "api::service-category.service-category": "服务大类",
79
+ "api::solution.solution": "应用场景",
80
+ "api::solution-category.solution-category": "解决方案",
81
+ "api::contact.contact": "联系我们",
82
+ "api::search.search": "搜索",
83
+ "api::product.product": "产品",
84
+ "api::product-category.product-category": "产品类型",
85
+ "blocks": "区块",
86
+ "blocks.cases": "案例区块",
87
+ "home.cases": "首页案例",
88
+ "shared.file": "文件",
89
+ "shared.office": "办公室",
90
+ "shared.youtube": "YouTube",
91
+ "api::product-item.product-item": "产品子项",
92
+ "view-switch.list": "列表视图"
93
+ }