Merge pull request #298 from Worklenz/feature/holiday-calendar-integration

feat(localization): update and enhance localization files for multipl…
This commit is contained in:
Chamika J
2025-07-28 10:01:33 +05:30
committed by GitHub
315 changed files with 9955 additions and 6115 deletions

View File

@@ -7,7 +7,9 @@
"Bash(npm run:*)",
"Bash(mkdir:*)",
"Bash(cp:*)",
"Bash(ls:*)"
"Bash(ls:*)",
"WebFetch(domain:www.npmjs.com)",
"WebFetch(domain:github.com)"
],
"deny": []
}

View File

@@ -349,7 +349,7 @@ export default class HolidayController extends WorklenzControllerBase {
}
}
} catch (error: any) {
errors.push(`${country.name}: ${error.message}`);
errors.push(`${country.name}: ${error?.message || "Unknown error"}`);
}
}

View File

@@ -5,7 +5,7 @@
<link rel="icon" href="./favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#2b2b2b" />
<!-- PWA Meta Tags -->
<meta name="application-name" content="Worklenz" />
<meta name="apple-mobile-web-app-capable" content="yes" />
@@ -17,27 +17,45 @@
<meta name="msapplication-config" content="/browserconfig.xml" />
<meta name="msapplication-TileColor" content="#2b2b2b" />
<meta name="msapplication-tap-highlight" content="no" />
<!-- Apple Touch Icons -->
<link rel="apple-touch-icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="152x152" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="167x167" href="/favicon.ico" />
<!-- PWA Manifest -->
<link rel="manifest" href="/manifest.json" />
<!-- Resource hints for better loading performance -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="dns-prefetch" href="https://www.googletagmanager.com" />
<link rel="dns-prefetch" href="https://js.hs-scripts.com" />
<!-- Preload critical resources -->
<link rel="preload" href="/locales/en/common.json" as="fetch" type="application/json" crossorigin />
<link rel="preload" href="/locales/en/auth/login.json" as="fetch" type="application/json" crossorigin />
<link rel="preload" href="/locales/en/navbar.json" as="fetch" type="application/json" crossorigin />
<link
rel="preload"
href="/locales/en/common.json"
as="fetch"
type="application/json"
crossorigin
/>
<link
rel="preload"
href="/locales/en/auth/login.json"
as="fetch"
type="application/json"
crossorigin
/>
<link
rel="preload"
href="/locales/en/navbar.json"
as="fetch"
type="application/json"
crossorigin
/>
<!-- Optimized font loading with font-display: swap -->
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
@@ -51,12 +69,12 @@
rel="stylesheet"
/>
</noscript>
<title>Worklenz</title>
<!-- Environment configuration -->
<script src="/env-config.js"></script>
<!-- Analytics Module -->
<script src="/js/analytics.js"></script>
</head>

View File

@@ -66,7 +66,7 @@ class AnalyticsManager {
// Add event listener to button
const btn = notice.querySelector('#analytics-notice-btn');
btn.addEventListener('click', (e) => {
btn.addEventListener('click', e => {
e.preventDefault();
localStorage.setItem('privacyNoticeShown', 'true');
notice.remove();
@@ -77,7 +77,7 @@ class AnalyticsManager {
* Check if privacy notice should be shown
*/
checkPrivacyNotice() {
const isProduction =
const isProduction =
window.location.hostname === 'worklenz.com' ||
window.location.hostname === 'app.worklenz.com';
const noticeShown = localStorage.getItem('privacyNoticeShown') === 'true';
@@ -94,4 +94,4 @@ document.addEventListener('DOMContentLoaded', () => {
const analytics = new AnalyticsManager();
analytics.init();
analytics.checkPrivacyNotice();
});
});

View File

@@ -24,10 +24,10 @@ class HubSpotManager {
script.async = true;
script.defer = true;
script.src = this.scriptSrc;
// Configure dark mode after script loads
script.onload = () => this.setupDarkModeSupport();
document.body.appendChild(script);
};
@@ -45,26 +45,26 @@ class HubSpotManager {
setupDarkModeSupport() {
const applyTheme = () => {
const isDark = document.documentElement.classList.contains('dark');
// Remove existing theme styles
const existingStyle = document.getElementById(this.styleId);
if (existingStyle) {
existingStyle.remove();
}
if (isDark) {
this.injectDarkModeCSS();
}
};
// Apply initial theme after delay to ensure widget is loaded
setTimeout(applyTheme, 1000);
// Watch for theme changes
const observer = new MutationObserver(applyTheme);
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class']
attributeFilter: ['class'],
});
}
@@ -121,7 +121,7 @@ class HubSpotManager {
cleanup() {
const script = document.getElementById(this.scriptId);
const style = document.getElementById(this.styleId);
if (script) script.remove();
if (style) style.remove();
}
@@ -131,7 +131,7 @@ class HubSpotManager {
document.addEventListener('DOMContentLoaded', () => {
const hubspot = new HubSpotManager();
hubspot.init();
// Make available globally for potential cleanup
window.HubSpotManager = hubspot;
});
});

View File

@@ -14,4 +14,4 @@
"saveButton": "Ruaj",
"saved": "Cilësimet u ruajtën me sukses",
"errorSaving": "Gabim gjatë ruajtjes së cilësimeve"
}
}

View File

@@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}

View File

@@ -12,4 +12,4 @@
"pinTab": "Fikso si tab i parazgjedhur",
"unpinTab": "Hiqe fiksimin e tab-it të parazgjedhur",
"finance": "Finance"
}
}

View File

@@ -49,4 +49,4 @@
"jobTitleCreateError": "Dështoi të krijohet titulli i punës",
"createButton": "Krijo",
"cancelButton": "Anulo"
}
}

View File

@@ -13,4 +13,4 @@
"namePlaceholder": "Emri",
"nameRequired": "Ju lutem shkruani një Emër",
"updateFailed": "Ndryshimi i emrit të ekipit dështoi!"
}
}

View File

@@ -31,4 +31,4 @@
"intervalWeeks": "Intervali (javë)",
"intervalMonths": "Intervali (muaj)",
"saveChanges": "Ruaj ndryshimet"
}
}

View File

@@ -87,7 +87,7 @@
"peopleField": "Fusha e njerëzve",
"noDate": "Asnjë datë",
"unsupportedField": "Lloj fushe i pambështetur",
"modal": {
"addFieldTitle": "Shto fushë",
"editFieldTitle": "Redakto fushën",
@@ -108,7 +108,7 @@
"createErrorMessage": "Dështoi në krijimin e kolonës së personalizuar",
"updateErrorMessage": "Dështoi në përditësimin e kolonës së personalizuar"
},
"fieldTypes": {
"people": "Njerëz",
"number": "Numër",

View File

@@ -14,4 +14,4 @@
"saveButton": "Speichern",
"saved": "Einstellungen erfolgreich gespeichert",
"errorSaving": "Fehler beim Speichern der Einstellungen"
}
}

View File

@@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}

View File

@@ -12,4 +12,4 @@
"pinTab": "Als Standard-Registerkarte festsetzen",
"unpinTab": "Standard-Registerkarte lösen",
"finance": "Finance"
}
}

View File

@@ -49,4 +49,4 @@
"jobTitleCreateError": "Berufsbezeichnung konnte nicht erstellt werden",
"createButton": "Erstellen",
"cancelButton": "Abbrechen"
}
}

View File

@@ -13,4 +13,4 @@
"namePlaceholder": "Name",
"nameRequired": "Bitte geben Sie einen Namen ein",
"updateFailed": "Änderung des Team-Namens fehlgeschlagen!"
}
}

View File

@@ -31,4 +31,4 @@
"intervalWeeks": "Intervall (Wochen)",
"intervalMonths": "Intervall (Monate)",
"saveChanges": "Änderungen speichern"
}
}

View File

@@ -87,7 +87,7 @@
"peopleField": "Personenfeld",
"noDate": "Kein Datum",
"unsupportedField": "Nicht unterstützter Feldtyp",
"modal": {
"addFieldTitle": "Feld hinzufügen",
"editFieldTitle": "Feld bearbeiten",
@@ -108,7 +108,7 @@
"createErrorMessage": "Fehler beim Erstellen der benutzerdefinierten Spalte",
"updateErrorMessage": "Fehler beim Aktualisieren der benutzerdefinierten Spalte"
},
"fieldTypes": {
"people": "Personen",
"number": "Zahl",

View File

@@ -14,4 +14,4 @@
"saveButton": "Save",
"saved": "Settings saved successfully",
"errorSaving": "Error saving settings"
}
}

View File

@@ -12,4 +12,4 @@
"pinTab": "Pin as default tab",
"unpinTab": "Unpin default tab",
"finance": "Finance"
}
}

View File

@@ -13,4 +13,4 @@
"namePlaceholder": "Name",
"nameRequired": "Please enter a Name",
"updateFailed": "Team name change failed!"
}
}

View File

@@ -87,7 +87,7 @@
"peopleField": "People field",
"noDate": "No date",
"unsupportedField": "Unsupported field type",
"modal": {
"addFieldTitle": "Add field",
"editFieldTitle": "Edit field",
@@ -108,7 +108,7 @@
"createErrorMessage": "Failed to create custom column",
"updateErrorMessage": "Failed to update custom column"
},
"fieldTypes": {
"people": "People",
"number": "Number",

View File

@@ -14,4 +14,4 @@
"saveButton": "Guardar",
"saved": "Configuración guardada exitosamente",
"errorSaving": "Error al guardar la configuración"
}
}

View File

@@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}

View File

@@ -12,4 +12,4 @@
"pinTab": "Fijar como pestaña predeterminada",
"unpinTab": "Desfijar pestaña predeterminada",
"finance": "Finance"
}
}

View File

@@ -49,4 +49,4 @@
"jobTitleCreateError": "No se pudo crear el título de trabajo",
"createButton": "Crear",
"cancelButton": "Cancelar"
}
}

View File

@@ -13,4 +13,4 @@
"namePlaceholder": "Nombre",
"nameRequired": "Por favor ingresa un Nombre",
"updateFailed": "¡Falló el cambio de nombre del equipo!"
}
}

View File

@@ -87,7 +87,7 @@
"peopleField": "Campo de personas",
"noDate": "Sin fecha",
"unsupportedField": "Tipo de campo no compatible",
"modal": {
"addFieldTitle": "Agregar campo",
"editFieldTitle": "Editar campo",
@@ -108,7 +108,7 @@
"createErrorMessage": "Error al crear la columna personalizada",
"updateErrorMessage": "Error al actualizar la columna personalizada"
},
"fieldTypes": {
"people": "Personas",
"number": "Número",

View File

@@ -14,4 +14,4 @@
"saveButton": "Salvar",
"saved": "Configurações salvas com sucesso",
"errorSaving": "Erro ao salvar configurações"
}
}

View File

@@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}

View File

@@ -12,4 +12,4 @@
"pinTab": "Fixar como aba padrão",
"unpinTab": "Desfixar aba padrão",
"finance": "Finance"
}
}

View File

@@ -49,4 +49,4 @@
"jobTitleCreateError": "Falha ao criar cargo",
"createButton": "Criar",
"cancelButton": "Cancelar"
}
}

View File

@@ -13,4 +13,4 @@
"namePlaceholder": "Nome",
"nameRequired": "Por favor digite um Nome",
"updateFailed": "Falha na alteração do nome da equipe!"
}
}

View File

@@ -87,7 +87,7 @@
"peopleField": "Campo de pessoas",
"noDate": "Sem data",
"unsupportedField": "Tipo de campo não suportado",
"modal": {
"addFieldTitle": "Adicionar campo",
"editFieldTitle": "Editar campo",
@@ -108,7 +108,7 @@
"createErrorMessage": "Falha ao criar a coluna personalizada",
"updateErrorMessage": "Falha ao atualizar a coluna personalizada"
},
"fieldTypes": {
"people": "Pessoas",
"number": "Número",

View File

@@ -1,4 +1,4 @@
{
"doesNotExistText": "抱歉,您访问的页面不存在。",
"backHomeButton": "返回首页"
}
}

View File

@@ -24,4 +24,4 @@
"step3Title": "邀请您的团队一起工作",
"maxMembers": "您最多可以邀请5名成员",
"maxTasks": "您最多可以创建5个任务"
}
}

View File

@@ -93,4 +93,4 @@
"expiredDaysAgo": "{{days}}天前",
"continueWith": "继续使用{{plan}}",
"changeToPlan": "更改为{{plan}}"
}
}

View File

@@ -29,4 +29,4 @@
"calculationMethodTooltip": "此设置适用于您组织中的所有项目",
"calculationMethodUpdated": "组织计算方法更新成功",
"calculationMethodUpdateError": "更新计算方法失败"
}
}

View File

@@ -9,4 +9,4 @@
"confirm": "确认",
"cancel": "取消",
"delete": "删除项目"
}
}

View File

@@ -14,4 +14,4 @@
"saveButton": "保存",
"saved": "设置保存成功",
"errorSaving": "保存设置时出错"
}
}

View File

@@ -6,4 +6,4 @@
"projects": "项目",
"settings": "设置",
"adminCenter": "管理中心"
}
}

View File

@@ -30,4 +30,4 @@
"owner": "所有者",
"admin": "管理员",
"member": "成员"
}
}

View File

@@ -6,4 +6,4 @@
"email": "电子邮件",
"lastActivity": "最后活动",
"refresh": "刷新用户"
}
}

View File

@@ -31,4 +31,4 @@
"client": "客户"
},
"noPermission": "您没有权限执行此操作"
}
}

View File

@@ -2,4 +2,4 @@
"loggingOut": "正在登出...",
"authenticating": "正在认证...",
"gettingThingsReady": "正在为您准备..."
}
}

View File

@@ -9,4 +9,4 @@
"orText": "或",
"successTitle": "重置指令已发送!",
"successMessage": "重置信息已发送到您的电子邮件。请检查您的电子邮件。"
}
}

View File

@@ -24,4 +24,4 @@
"loginErrorTitle": "登录失败",
"loginErrorMessage": "请检查您的电子邮件和密码并重试"
}
}
}

View File

@@ -28,4 +28,4 @@
"orText": "或",
"reCAPTCHAVerificationError": "reCAPTCHA验证错误",
"reCAPTCHAVerificationErrorMessage": "我们无法验证您的reCAPTCHA。请重试。"
}
}

View File

@@ -11,4 +11,4 @@
"returnToLoginButton": "返回登录",
"confirmPasswordRequired": "请确认您的新密码",
"passwordMismatch": "两次输入的密码不匹配"
}
}

View File

@@ -6,4 +6,4 @@
"reconnecting": "与服务器断开连接。",
"connection-lost": "无法连接到服务器。请检查您的互联网连接。",
"connection-restored": "成功连接到服务器"
}
}

View File

@@ -10,4 +10,4 @@
"create": "创建",
"templateDrawerTitle": "从模板中选择",
"createProject": "创建项目"
}
}

View File

@@ -4,4 +4,4 @@
"addAnother": "添加另一个",
"goBack": "返回",
"continue": "继续"
}
}

View File

@@ -43,4 +43,4 @@
"tasks": "任务",
"refresh": "刷新"
}
}
}

View File

@@ -5,4 +5,4 @@
"goBack": "返回",
"continue": "继续",
"skipForNow": "暂时跳过"
}
}

View File

@@ -26,4 +26,4 @@
"noSubtasks": "无子任务",
"showSubtasks": "显示子任务",
"hideSubtasks": "隐藏子任务"
}
}

View File

@@ -3,4 +3,4 @@
"subtitle": "请立即升级。",
"button": "立即升级",
"checking": "正在检查订阅状态..."
}
}

View File

@@ -28,4 +28,4 @@
"acceptAndJoin": "接受并加入",
"noNotifications": "没有通知"
}
}
}

View File

@@ -2,4 +2,4 @@
"nameYourOrganization": "命名您的组织。",
"worklenzAccountTitle": "为您的Worklenz账户选择一个名称。",
"continue": "继续"
}
}

View File

@@ -21,4 +21,4 @@
"selectColor": "选择颜色",
"managePhases": "管理阶段",
"close": "关闭"
}
}

View File

@@ -47,4 +47,4 @@
"weightedProgress": "加权进度",
"weightedProgressTooltip": "基于子任务权重计算进度",
"timeProgress": "基于时间的进度"
}
}

View File

@@ -11,4 +11,4 @@
"deleteConfirmationCancel": "取消",
"segmentedTooltip": "即将推出!在列表视图和缩略图视图之间切换。",
"emptyText": "项目中没有附件。"
}
}

View File

@@ -111,4 +111,4 @@
"totalActual": "Total actual cost including time-based cost + Fixed Costs.",
"variance": "Cost variance: Total Budgeted Costs - Total Actual Cost. Positive values indicate under-budget, negative values indicate over-budget."
}
}
}

View File

@@ -38,4 +38,4 @@
"includeArchivedTasks": "包含已归档任务",
"export": "导出"
}
}
}

View File

@@ -14,4 +14,4 @@
"memberCount": "成员",
"membersCountPlural": "成员",
"emptyText": "项目中没有附件。"
}
}

View File

@@ -3,4 +3,4 @@
"addButton": "添加",
"cancelButton": "取消",
"deleteButton": "删除"
}
}

View File

@@ -12,4 +12,4 @@
"pinTab": "固定为默认标签页",
"unpinTab": "取消固定默认标签页",
"finance": "财务"
}
}

View File

@@ -1,11 +1,11 @@
{
"importTaskTemplate": "导入任务模板",
"templateName": "模板名称",
"templateDescription": "模板描述",
"selectedTasks": "已选任务",
"tasks": "任务",
"templates": "模板",
"remove": "移除",
"cancel": "取消",
"import": "导入"
}
"importTaskTemplate": "导入任务模板",
"templateName": "模板名称",
"templateDescription": "模板描述",
"selectedTasks": "已选任务",
"tasks": "任务",
"templates": "模板",
"remove": "移除",
"cancel": "取消",
"import": "导入"
}

View File

@@ -1,7 +1,7 @@
{
"title": "项目成员",
"searchLabel": "通过添加名称或电子邮件添加成员",
"searchPlaceholder": "输入名称或电子邮件",
"inviteAsAMember": "邀请为成员",
"inviteNewMemberByEmail": "通过电子邮件邀请新成员"
}
"title": "项目成员",
"searchLabel": "通过添加名称或电子邮件添加成员",
"searchPlaceholder": "输入名称或电子邮件",
"inviteAsAMember": "邀请为成员",
"inviteNewMemberByEmail": "通过电子邮件邀请新成员"
}

View File

@@ -28,4 +28,4 @@
"projectDatesInfo": "项目时间线信息",
"projectCategoryTooltip": "项目类别",
"defaultTaskName": "无标题任务"
}
}

View File

@@ -24,4 +24,4 @@
"cancel": "取消",
"save": "保存",
"templateNamePlaceholder": "输入模板名称"
}
}

View File

@@ -73,4 +73,4 @@
"needsAttentionText": "需要关注",
"atRiskText": "有风险",
"goodText": "良好"
}
}

View File

@@ -28,4 +28,4 @@
"todoText": "待办",
"doingText": "进行中",
"doneText": "已完成"
}
}

View File

@@ -30,4 +30,4 @@
"overdueTasksColumn": "逾期任务",
"completedTasksColumn": "已完成任务",
"ongoingTasksColumn": "进行中任务"
}
}

View File

@@ -19,4 +19,4 @@
"nameColumn": "名称",
"projectsColumn": "项目",
"membersColumn": "成员"
}
}

View File

@@ -49,4 +49,4 @@
"statusText": "状态",
"priorityText": "优先级",
"phaseText": "阶段"
}
}

View File

@@ -28,4 +28,4 @@
"projectUpdateText": "项目更新",
"clientText": "客户",
"teamText": "团队"
}
}

View File

@@ -41,4 +41,4 @@
"setCategoryText": "设置类别",
"searchByNameInputPlaceholder": "按名称搜索",
"todayText": "今天"
}
}

View File

@@ -5,4 +5,4 @@
"timeReports": "用时报告",
"estimateVsActual": "预计用时 vs 实际用时",
"currentOrganizationTooltip": "当前的组织"
}
}

View File

@@ -31,4 +31,4 @@
"totalLogged": "总记录",
"loggedBillable": "已记录可计费",
"loggedNonBillable": "已记录不可计费"
}
}

View File

@@ -7,4 +7,4 @@
"searchPlaceholder": "按名称搜索",
"emptyText": "在更新或创建项目时可以创建类别。",
"colorChangeTooltip": "点击更改颜色"
}
}

View File

@@ -12,4 +12,4 @@
"passwordMismatch": "密码不匹配!",
"passwordRequirements": "新密码应至少包含8个字符包括一个大写字母、一个数字和一个符号。",
"updateButton": "更新密码"
}
}

View File

@@ -19,4 +19,4 @@
"createClientErrorMessage": "客户创建失败!",
"updateClientSuccessMessage": "客户更新成功!",
"updateClientErrorMessage": "客户更新失败!"
}
}

View File

@@ -17,4 +17,4 @@
"createJobTitleErrorMessage": "职位创建失败!",
"updateJobTitleSuccessMessage": "职位更新成功!",
"updateJobTitleErrorMessage": "职位更新失败!"
}
}

View File

@@ -8,4 +8,4 @@
"emptyText": "标签可以在更新或创建任务时创建。",
"pinTooltip": "点击将其固定到主菜单",
"colorChangeTooltip": "点击更改颜色"
}
}

View File

@@ -4,4 +4,4 @@
"time_zone": "时区",
"time_zone_required": "时区是必需的",
"save_changes": "保存更改"
}
}

View File

@@ -8,4 +8,4 @@
"popupDescription": "弹出通知可能会被您的浏览器禁用。更改您的浏览器设置以允许它们。",
"unreadItemsTitle": "显示未读项目的数量",
"unreadItemsDescription": "您将看到每个通知的计数。"
}
}

View File

@@ -11,4 +11,4 @@
"profileLastUpdatedText": "一个月前更新",
"avatarTooltip": "点击上传头像",
"title": "个人资料设置"
}
}

View File

@@ -5,4 +5,4 @@
"confirmText": "您确定吗?",
"okText": "是",
"cancelText": "取消"
}
}

View File

@@ -49,4 +49,4 @@
"jobTitleCreateError": "职位名称创建失败",
"createButton": "创建",
"cancelButton": "取消"
}
}

View File

@@ -12,4 +12,4 @@
"teams": "团队",
"change-password": "更改密码",
"language-and-region": "语言和地区"
}
}

View File

@@ -6,4 +6,4 @@
"confirmText": "您确定吗?",
"okText": "是",
"cancelText": "取消"
}
}

View File

@@ -44,4 +44,4 @@
"noResultFound": "输入电子邮件地址并按回车键...",
"jobTitlesFetchError": "获取职位失败",
"invitationResent": "邀请重新发送成功!"
}
}

View File

@@ -13,4 +13,4 @@
"namePlaceholder": "名称",
"nameRequired": "请输入名称",
"updateFailed": "团队名称更改失败!"
}
}

View File

@@ -26,4 +26,4 @@
"add-sub-task": "+ 添加子任务",
"refresh-sub-tasks": "刷新子任务"
}
}
}

View File

@@ -31,4 +31,4 @@
"intervalWeeks": "间隔(周)",
"intervalMonths": "间隔(月)",
"saveChanges": "保存更改"
}
}

View File

@@ -126,4 +126,4 @@
"cancelMarkAsDone": "否,保持当前状态",
"markAsDoneDescription": "您已将进度设置为 100%。您想将任务状态更新为\"完成\"吗?"
}
}
}

View File

@@ -80,4 +80,4 @@
"cannotMoveStatus": "无法移动状态",
"cannotMoveStatusMessage": "无法移动此状态,因为这会使\"{{categoryName}}\"类别为空。每个类别必须至少有一个状态。",
"ok": "确定"
}
}

View File

@@ -80,7 +80,7 @@
"peopleField": "人员字段",
"noDate": "无日期",
"unsupportedField": "不支持的字段类型",
"modal": {
"addFieldTitle": "添加字段",
"editFieldTitle": "编辑字段",
@@ -101,7 +101,7 @@
"createErrorMessage": "创建自定义列失败",
"updateErrorMessage": "更新自定义列失败"
},
"fieldTypes": {
"people": "人员",
"number": "数字",
@@ -127,4 +127,4 @@
"recurring": "重复任务"
}
}
}
}

View File

@@ -36,4 +36,4 @@
"recurring": "重复任务"
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More