Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion packages/helpdesk/src/translations/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ export const en: TranslationData = {
label: 'AI Sentiment',
options: { positive: 'Positive', neutral: 'Neutral', frustrated: 'Frustrated', angry: 'Angry' },
},
ai_priority_suggestion: { label: 'AI Suggested Priority' },
ai_priority_suggestion: {
label: 'AI Suggested Priority',
options: { low: 'Low', normal: 'Normal', high: 'High', urgent: 'Urgent' },
},
ai_language: { label: 'AI Detected Language' },
ai_suggested_reply: { label: 'AI Suggested Reply' },
ai_suggested_kb_ids: { label: 'AI Suggested KB Articles' },
Expand Down
5 changes: 4 additions & 1 deletion packages/helpdesk/src/translations/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ export const zhCN: TranslationData = {
label: 'AI 情感',
options: { positive: '积极', neutral: '中性', frustrated: '不满', angry: '愤怒' },
},
ai_priority_suggestion: { label: 'AI 建议优先级' },
ai_priority_suggestion: {
label: 'AI 建议优先级',
options: { low: '低', normal: '普通', high: '高', urgent: '紧急' },
},
ai_language: { label: 'AI 识别语言' },
ai_suggested_reply: { label: 'AI 建议回复' },
ai_suggested_kb_ids: { label: 'AI 推荐知识库' },
Expand Down
13 changes: 11 additions & 2 deletions packages/procurement/src/translations/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,13 @@ export const en: TranslationData = {
request_number: { label: 'PR Number' },
requester: { label: 'Requester' },
vendor: { label: 'Preferred Vendor' },
category: { label: 'Category' },
category: {
label: 'Category',
options: {
saas: 'Software / SaaS', hardware: 'Hardware', services: 'Professional Services',
marketing: 'Marketing', facilities: 'Facilities', other: 'Other',
},
},
status: {
label: 'Status',
options: {
Expand Down Expand Up @@ -100,7 +106,10 @@ export const en: TranslationData = {
owner: { label: 'Buyer' },
total_amount: { label: 'Total Amount' },
received_amount: { label: 'Received Amount' },
payment_terms: { label: 'Payment Terms' },
payment_terms: {
label: 'Payment Terms',
options: { net_15: 'Net 15', net_30: 'Net 30', net_45: 'Net 45', net_60: 'Net 60', upfront: 'Upfront' },
},
is_fully_received: { label: 'Fully Received' },
order_date: { label: 'Order Date' },
expected_delivery: { label: 'Expected Delivery' },
Expand Down
13 changes: 11 additions & 2 deletions packages/procurement/src/translations/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,13 @@ export const zhCN: TranslationData = {
request_number: { label: '申请单号' },
requester: { label: '申请人' },
vendor: { label: '建议供应商' },
category: { label: '类别' },
category: {
label: '类别',
options: {
saas: '软件 / SaaS', hardware: '硬件', services: '专业服务',
marketing: '市场营销', facilities: '行政设施', other: '其他',
},
},
status: {
label: '状态',
options: {
Expand Down Expand Up @@ -88,7 +94,10 @@ export const zhCN: TranslationData = {
owner: { label: '采购员' },
total_amount: { label: '订单金额' },
received_amount: { label: '已收货金额' },
payment_terms: { label: '付款条款' },
payment_terms: {
label: '付款条款',
options: { net_15: '15 天', net_30: '30 天', net_45: '45 天', net_60: '60 天', upfront: '预付' },
},
is_fully_received: { label: '已全部收货' },
order_date: { label: '下单日期' },
expected_delivery: { label: '预计到货' },
Expand Down
154 changes: 112 additions & 42 deletions packages/project/src/translations/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,99 +3,169 @@
import type { TranslationData } from '@objectstack/spec/system';

/**
* English translations for Project Management template.
* English translations for the AI Project Management template.
*
* Shape follows `TranslationData`: field labels live under
* `objects.<obj>.fields.<field>`, plural labels use `pluralLabel`, and the app
* shell is translated under `apps.<app>`.
* Shape follows `TranslationData`: per-object label/pluralLabel/description,
* field labels + select options under `objects.<obj>.fields.<field>`, list-view
* labels under `objects.<obj>._views.<view>`, and the app shell under `apps.pm`.
* Field names mirror the `*.object.ts` definitions exactly.
*/
export const en: TranslationData = {
objects: {
pm_project: {
label: 'Project',
pluralLabel: 'Projects',
description: 'A time-bound initiative with milestones, resources, and AI-powered risk prediction.',
fields: {
code: { label: 'Project Code' },
name: { label: 'Project Name' },
description: { label: 'Description' },
status: { label: 'Status' },
priority: { label: 'Priority' },
health: { label: 'Health' },
status: {
label: 'Status',
options: {
planning: 'Planning', active: 'Active', at_risk: 'At Risk',
on_hold: 'On Hold', completed: 'Completed', cancelled: 'Cancelled',
},
},
priority: {
label: 'Priority',
options: { low: 'Low', medium: 'Medium', high: 'High', critical: 'Critical' },
},
project_type: {
label: 'Type',
options: { internal: 'Internal', client: 'Client', rnd: 'R&D', maintenance: 'Maintenance' },
},
start_date: { label: 'Start Date' },
target_end_date: { label: 'Target End Date' },
planned_end_date: { label: 'Planned End Date' },
actual_end_date: { label: 'Actual End Date' },
progress_percent: { label: 'Progress %' },
ai_completion_probability: { label: 'AI Completion Probability %' },
ai_delay_days: { label: 'AI Delay Days' },
ai_completion_probability: { label: 'AI Completion Probability' },
ai_delay_days: { label: 'AI Predicted Delay (Days)' },
ai_risk_score: { label: 'AI Risk Score' },
ai_budget_variance_percent: { label: 'AI Budget Variance %' },
ai_budget_variance_forecast: { label: 'AI Budget Variance %' },
ai_resource_bottleneck: { label: 'AI Resource Bottleneck' },
ai_recommended_action: { label: 'AI Recommended Action' },
ai_recommended_action: { label: 'AI Recommended Actions' },
ai_last_prediction_at: { label: 'Last AI Prediction' },
planned_budget: { label: 'Planned Budget' },
actual_cost: { label: 'Actual Cost' },
forecast_cost: { label: 'Forecast Cost' },
project_manager: { label: 'Project Manager' },
sponsor: { label: 'Sponsor' },
team_size: { label: 'Team Size' },
progress_percent: { label: 'Progress %' },
},
_views: { all_projects: { label: 'All Projects' } },
},
pm_milestone: {
label: 'Milestone',
pluralLabel: 'Milestones',
description: 'A key delivery point or decision gate in a project timeline.',
fields: {
name: { label: 'Milestone Name' },
description: { label: 'Description' },
project: { label: 'Project' },
status: { label: 'Status' },
due_date: { label: 'Due Date' },
completed_at: { label: 'Completed At' },
is_critical_path: { label: 'Critical Path' },
status: {
label: 'Status',
options: {
not_started: 'Not Started', in_progress: 'In Progress',
completed: 'Completed', missed: 'Missed',
},
},
planned_date: { label: 'Planned Date' },
actual_date: { label: 'Actual Date' },
owner: { label: 'Owner' },
deliverables: { label: 'Deliverables' },
},
_views: { all_milestones: { label: 'All Milestones' } },
},
pm_risk: {
label: 'Risk',
pluralLabel: 'Risks',
description: 'A potential threat or uncertainty that could impact project delivery.',
fields: {
risk_id: { label: 'Risk ID' },
name: { label: 'Risk Name' },
name: { label: 'Risk Title' },
description: { label: 'Description' },
project: { label: 'Project' },
category: { label: 'Category' },
status: { label: 'Status' },
impact: { label: 'Impact' },
likelihood: { label: 'Likelihood' },
priority: { label: 'Priority' },
status: {
label: 'Status',
options: {
identified: 'Identified', assessing: 'Assessing', mitigating: 'Mitigating',
monitoring: 'Monitoring', closed: 'Closed', realized: 'Realized',
},
},
category: {
label: 'Category',
options: {
technical: 'Technical', resource: 'Resource', schedule: 'Schedule',
budget: 'Budget', external: 'External', scope: 'Scope',
},
},
impact: {
label: 'Impact (Manual)',
options: { very_low: 'Very Low', low: 'Low', medium: 'Medium', high: 'High', very_high: 'Very High' },
},
likelihood: {
label: 'Likelihood (Manual)',
options: { very_low: 'Very Low', low: 'Low', medium: 'Medium', high: 'High', very_high: 'Very High' },
},
priority: { label: 'Risk Priority (Impact × Likelihood)' },
ai_impact_score: { label: 'AI Impact Score' },
ai_likelihood: { label: 'AI Likelihood' },
ai_mitigation_suggestion: { label: 'AI Mitigation Suggestion' },
ai_similar_risks: { label: 'AI Similar Risks' },
response_strategy: { label: 'Response Strategy' },
response_plan: { label: 'Response Plan' },
response_owner: { label: 'Response Owner' },
response_cost: { label: 'Response Cost' },
ai_similar_risks: { label: 'AI Similar Past Risks' },
mitigation_plan: { label: 'Mitigation Plan' },
contingency_plan: { label: 'Contingency Plan' },
owner: { label: 'Risk Owner' },
},
_views: { all_risks: { label: 'All Risks' } },
},
pm_issue: {
label: 'Issue',
pluralLabel: 'Issues',
description: 'A current problem that requires resolution.',
fields: {
issue_number: { label: 'Issue #' },
name: { label: 'Issue Name' },
name: { label: 'Issue Title' },
description: { label: 'Description' },
project: { label: 'Project' },
type: { label: 'Type' },
status: { label: 'Status' },
priority: { label: 'Priority' },
reported_by: { label: 'Reported By' },
status: {
label: 'Status',
options: {
open: 'Open', in_progress: 'In Progress', blocked: 'Blocked',
resolved: 'Resolved', closed: 'Closed',
},
},
severity: {
label: 'Severity',
options: { low: 'Low', medium: 'Medium', high: 'High', critical: 'Critical' },
},
assigned_to: { label: 'Assigned To' },
reported_at: { label: 'Reported At' },
resolved_at: { label: 'Resolved At' },
related_risk: { label: 'Related Risk' },
resolution: { label: 'Resolution' },
},
_views: { all_issues: { label: 'All Issues' } },
},
pm_resource: {
label: 'Resource',
pluralLabel: 'Resources',
description: 'Team member or budget allocated to a project.',
fields: {
project: { label: 'Project' },
person: { label: 'Person' },
role: { label: 'Role' },
allocated_hours_per_week: { label: 'Allocated Hours/Week' },
start_date: { label: 'Allocation Start' },
end_date: { label: 'Allocation End' },
},
},
pm_timesheet: {
label: 'Timesheet Entry',
pluralLabel: 'Timesheet Entries',
description: 'Daily time tracking entry for a project.',
fields: {
project: { label: 'Project' },
person: { label: 'Person' },
work_date: { label: 'Work Date' },
hours: { label: 'Hours' },
description: { label: 'Description' },
billable: { label: 'Billable' },
},
},
pm_resource: { label: 'Resource', pluralLabel: 'Resources' },
pm_timesheet: { label: 'Timesheet', pluralLabel: 'Timesheets' },
},

apps: {
Expand Down
Loading
Loading