// ─── Dictionary ───────────────────────────────────────────────────────────────

const en = {
  nav: {
    dashboard:      'Dashboard',
    clients:        'Clients',
    matters:        'Matters',
    annualCompliance: 'Annual Compliance',
    calendar:       'Calendar',
    documents:      'Documents',
    billing:        'Billing',
    email:          'Email',
    communications: 'Communications',
    compare:        'Compare Plans',
    agentActivity:  'Agent Activity',
    migrate:        'Migrate Data',
    formTemplates:  'Form Templates',
    workflows:      'Workflows',
    firmName:       'Soi96 Legal',
    settings:       'Settings',
    darkMode:       'Dark mode',
    lightMode:      'Light mode',
    logout:         'Log out',
    language:       'ภาษาไทย',
  },

  common: {
    save:          'Save',
    cancel:        'Cancel',
    close:         'Close',
    edit:          'Edit',
    delete:        'Delete',
    add:           'Add',
    create:        'Create',
    update:        'Update',
    upload:        'Upload',
    download:      'Download',
    search:        'Search',
    newBtn:        'New',
    back:          'Back',
    open:          'Open',
    copy:          'Copy',
    translate:     'Translate',
    retry:         'Retry',
    done:          'Done',
    viewAll:       'View All',
    view:          'View',
    request:       'Request',
    saving:        'Saving…',
    loading:       'Loading…',
    uploading:     'Uploading…',
    translating:   'Translating with Claude AI…',
    noResults:     'No results found',
    today:         'Today',
    overdue:       'Overdue',
    days:          'd',
    hours:         'h',
    minutes:       'm',
    allClear:      'All clear',
    room:          'Room',
    now:           'Now',
    required:      'Required',
    optional:      'Optional',
    confirmed:     'confirmed',
    pending:       'pending',
    adjourned:     'adjourned',
  },

  status: {
    active:         'Active',
    prospect:       'Prospect',
    conflictCheck:  'Conflict Check',
    closed:         'Closed',
    rejected:       'Rejected',
    open:           'Open',
    archived:       'Archived',
  },

  clientList: {
    title:              'Client Folders',
    subtitle:           (n: number) => `${n} folder${n !== 1 ? 's' : ''} on file`,
    retainerAlert:      (n: number) => `· ${n} retainer${n !== 1 ? 's' : ''} below threshold`,
    newClient:          'New Client',
    listView:           'List view',
    folderView:         'Folder view',
    searchPlaceholder:  'Search by name, folder number, email…',
    shown:              'shown',
    filterAll:          'All',
    folderToolbarTitle: 'Client Folders',
    foldersCount:       (n: number) => `· ${n} folders`,
    searchFolders:      'Search folders…',
    noFoldersMatch:     (q: string) => `No folders match "${q}"`,
    openFolder:         'Open folder',
    clickHint:          'Single-click to select · Double-click to open',
    noClientsFound:     'No client folders found',
    attorney:           'Attorney',
    retainer:           'Retainer',
    updated:            'Updated',
    belowThreshold:     'Below retainer threshold',
    colFolderNo:        'Folder #',
    colClient:          'Client',
    colType:            'Type',
    colStatus:          'Status',
    colRetainer:        'Retainer',
    colAttorney:        'Attorney',
    colLastUpdated:     'Last Updated',
    individual:         'Individual',
    corporate:          'Corporate',
  },

  clientForm: {
    createTitle:         'New Client',
    editTitle:           'Edit Client',
    createSubtitle:      'Create a new client folder',
    editSubtitle:        'Update client record',
    clientType:          'Client Type',
    individual:          'Individual',
    corporate:           'Corporate',
    sectionBasic:        'Basic Information',
    sectionContact:      'Contact Information',
    sectionTeam:         'Legal Team',
    sectionBilling:      'Retainer & Billing',
    sectionNotes:        'Notes',
    sectionAddresses:    'Addresses',
    firstName:           'First Name',
    lastName:            'Last Name',
    nationality:         'Nationality',
    idType:              'ID Type',
    passportNumber:      'Passport / ID Number',
    visaType:            'Visa Type',
    visaNumber:          'Visa Number',
    visaExpiry:          'Visa Expiry',
    dateOfBirth:         'Date of Birth',
    companyName:         'Company Name',
    registrationNumber:  'Registration Number',
    boiStatus:           'BOI Status',
    lineId:              'LINE ID',
    region:              'Region',
    originatingAttorney: 'Originating Attorney',
    responsibleAttorney: 'Responsible Attorney',
    retainerThreshold:   'Retainer Threshold',
    currency:            'Currency',
    notes:               'Notes',
    phoneLabel:          'Phone',
    emailLabel:          'Email',
    addPhone:            'Add Phone',
    addEmail:            'Add Email',
    addAddress:          'Add Address',
    submitCreate:        'Create Client',
    submitEdit:          'Save Changes',
    errFirstName:        'First name is required',
    errLastName:         'Last name is required',
    errCompany:          'Company name is required',
    errPhone:            'At least one phone number is required',
    errPhoneInvalid:     'Please fix invalid phone numbers',
    errEmailInvalid:     'Please fix invalid email addresses',
    convertToActive:     'Convert to Active Client',
    engagementLetterRef: 'Engagement Letter Reference',
    statusUpdateNote:    'Converting from Prospect to Active — please attach the signed engagement letter.',
    createFolderTitle:        'New Client Folder',
    createFolderSubtitle:     'Opens as Prospect — conflict check required before activation',
    editFolderSubtitle:       (n: string) => `Folder ${n}`,
    sectionPersonal:          'Personal Details',
    sectionCompany:           'Company Details',
    sectionPhones:            'Phone Numbers',
    sectionEmails:            'Email Addresses',
    sectionOtherContact:      'Other Contact',
    sectionAttorneys:         'Attorneys',
    clientStatusTitle:        'Client Status',
    statusNoteProspect:       'This folder is currently a Prospect. Toggle to convert to an active client when the engagement is confirmed.',
    activeClient:             'Active Client',
    engagementLetterRefHint:  'Optional — reference number for the signed engagement letter',
    idNumber:                 'ID Number',
    notSpecified:             'Not specified',
    noneOption:               'None',
    addAddressHint:           'First entry is the primary address. Add additional entries for foreign residences, mailing or billing addresses.',
    addPhoneHint:             'First entry is the primary contact number',
    addEmailHint:             'First entry is the primary contact email',
    emailAddress:             'Email Address',
    emailType:                'Type',
    businessRegion:           'Business Region',
    regionHint:               'Geographic classification for reporting',
    originatingHint:          'Attorney who brought in this client',
    responsibleHint:          'Day-to-day attorney of record',
    retainerHint:             'Alert when balance drops below this amount',
    internalNotes:            'Internal notes',
    notesPlaceholder:         'Intake notes, referral source, special instructions…',
    errConversionFailed:      'Conversion to active client failed',
    errGeneric:               'Something went wrong',
  },

  clientDetail: {
    tabOverview:        'Overview',
    tabMatters:         'Matters',
    tabDocuments:       'Documents',
    tabBilling:         'Billing',
    tabCommunications:  'Communications',
    tabCompliance:      'Compliance',
    tabTeam:            'Team',
    tabParties:         'Parties',
    editClient:         'Edit',
    activate:           'Activate',
    closeFolder:        'Close Folder',
    reactivate:         'Re-activate',
    reject:             'Reject',
    statusUpdated:      'Status Updated',
    sectionContact:     'Contact',
    sectionLegalTeam:   'Legal Team',
    sectionRetainer:    'Retainer',
    sectionMatters:     'Matter Summary',
    sectionAddresses:   'Addresses',
    sectionEngagement:  'Engagement',
    sectionNotes:       'Notes',
    sectionPersonal:    'Personal Details',
    sectionCompany:     'Company Details',
    sectionInternalTeam: 'Internal Team',
    sectionExternalCounsel: 'External Counsel',
    sectionOpposing:    'Opposing',
    sectionJudicial:    'Judicial / Government',
    sectionAgencies:    'Agencies & Intermediaries',
    labelPhone:         'Phone',
    labelEmail:         'Email',
    labelAddress:       'Address',
    labelLineId:        'LINE ID',
    labelResponsible:   'Responsible',
    labelOriginating:   'Originating',
    labelBalance:       'Balance',
    labelThreshold:     'Threshold',
    labelEngagement:    'Engagement Date',
    labelLastUpdated:   'Last Updated',
    labelRegion:        'Region',
    labelOpenMatters:   'Open Matters',
    labelTotalMatters:  'Total Matters',
    labelNotes:         'Notes',
    labelFolder:        'Folder',
    labelRetainerBalance: 'Retainer Balance',
    labelResponsibleAtty: 'Responsible Atty',
    labelOriginatingAtty: 'Originating Atty',
    labelEngagementLetter: 'Engagement Letter',
    labelEngagementLetterRef: 'Engagement Letter Ref',
    labelClosedDate:    'Closed Date',
    labelClosedReason:  'Closed Reason',
    noNotes:            'No notes on record.',
    uploadDocuments:    'Upload Documents',
    uploadDocument:     'Upload Document',
    noPhone:            'No phone on record',
    noEmail:            'No email on record',
    noAddress:          'No address on record',
    belowThreshold:     'Below threshold',
    billingLedger:      'Billing Ledger',
    billingSettings:    'Billing Settings',
    editClientBtn:      'Edit Client',
    activateTitle:      'Activate Client Folder',
    activateConfirm:    'Confirm conflict check is clear. Enter the engagement letter reference to activate.',
    activating:         'Activating…',
    closeFileTitle:     'Close Client File',
    closeConfirm:       'Record the outcome or reason for closing this file.',
    closing:            'Closing…',
    closeFileBtn:       'Close File',
    outcomeReason:      'Outcome / Reason',
    clientSince:        'Client since',
    noneOnRecord:       'None on record',
    noOpposing:         'No opposing parties or counsel on record',
    noJudicial:         'No judicial or government parties on record',
    addMember:          'Add Member',
    addExternal:        'Add External',
    addOpposing:        'Add Opposing',
    addParty:           'Add Party',
    editMemberTitle:    'Edit Team Member',
    addMemberTitle:     'Add Team Member',
    editPartyTitle:     'Edit Party',
    addPartyTitle:      'Add Party',
    colName:            'Name',
    colType:            'Type',
    colRole:            'Role',
    colFirm:            'Firm',
    colContact:         'Contact',
    colOrganization:    'Organization',
    colRoleBar:         'Role / Bar No.',
    labelFirmOrg:       'Firm / Organization',
    labelOrgFirmCourt:  'Organization / Firm / Court',
    labelRolePosition:  'Role / Position',
    labelBarLicense:    'Bar / License No.',
    addrPrimary:        'Primary',
    addrMailing:        'Mailing',
    addrBilling:        'Billing',
    addrHome:           'Home',
    addrForeign:        'Foreign Residence',
    addrOther:          'Other',
    teamRoles: {
      responsible_attorney: 'Responsible Attorney',
      originating_attorney: 'Originating Attorney',
      associate_attorney:   'Associate Attorney',
      paralegal:            'Paralegal',
      secretary:            'Secretary',
      translator:           'Translator',
      external_counsel:     'External Counsel',
      other:                'Other',
    },
    partyTypes: {
      opposing_party:     'Opposing Party',
      opposing_counsel:   'Opposing Counsel',
      judge:              'Judge',
      prosecutor:         'Prosecutor',
      government_counsel: 'Government Counsel',
      court_officer:      'Court Officer',
      government_agency:  'Government Agency',
      other:              'Other',
    },
  },

  docFolders: {
    correspondence: 'Correspondence',
    contracts:      'Contracts & Agreements',
    courtFilings:   'Court Filings',
    identity:       'Identity Documents',
    financial:      'Financial Records',
    reports:        'Reports & Opinions',
    evidence:       'Evidence',
    misc:           'Miscellaneous',
    inbox:          'Inbox — Unclassified',
  },

  docTypes: {
    contract:          'Contract',
    agreement:         'Agreement',
    court_filing:      'Court Filing',
    pleading:          'Pleading',
    affidavit:         'Affidavit',
    correspondence:    'Correspondence',
    identity:          'Identity Document',
    financial:         'Financial Record',
    evidence:          'Evidence',
    deed:              'Deed / Title',
    power_of_attorney: 'Power of Attorney',
    report:            'Report',
    opinion:           'Legal Opinion',
    permit:            'Permit / Licence',
    other:             'Other',
  },

  aiStatus: {
    pending:    'Queued',
    processing: 'Classifying',
    classified: 'Classified',
    failed:     'AI Failed',
  },

  privilege: {
    privileged:     'Privileged',
    non_privileged: 'Non-privileged',
    work_product:   'Work Product',
  },

  documentsTab: {
    inbox:              'Inbox — Unclassified',
    needsReview:        'Needs review',
    newFolder:          'New Folder',
    buildBundle:        'Build Bundle',
    uploadHere:         'Upload Here',
    emptyFolder:        'No documents in this folder',
    emptyFolderHint:    'Upload documents or the AI agent will classify files here',
    importDocuments:    'Import Documents',
    dragHere:           'Drag files or folders here',
    dropHere:           'Drop files or folders here',
    selectFiles:        'Select Files',
    selectFolder:       'Select Folder',
    fileTypes:          'PDF, Word, Excel, images — any file type accepted',
    filesTotal:         (n: number, size: string) => `${n} FILE${n !== 1 ? 'S' : ''} · ${size} TOTAL`,
    clearAll:           'Clear all',
    destinationFolder:  'Destination folder',
    letAiClassify:      'Let AI classify',
    aiWillFile:         'AI will read each file and file it in the right folder',
    uploadDoneMsg:      (n: number) => `${n} file${n !== 1 ? 's' : ''} uploaded`,
    aiRunning:          'AI classification is running in the background — type, parties, and summary will appear shortly.',
    createFolder:       'Create Folder',
    creating:           'Creating…',
    folderNamePlaceholder: 'e.g. Court Orders, Visa Applications…',
    aiCanCreate:        'The AI classification agent can also create folders automatically based on document content.',
    folderNameRequired: 'Name is required',
    bundleTitle:        'Build Hearing Bundle',
    bundleSoon:         'Hearing bundle compilation is coming in the next build.',
    bundleStep1:        'Set hearing details',
    bundleStep1desc:    'Date, court, case number, judge, hearing type',
    bundleStep2:        'Select documents',
    bundleStep2desc:    'Pick from any folder — AI suggests relevant documents for the hearing type',
    bundleStep3:        'Order & label tabs',
    bundleStep3desc:    'Drag to reorder, assign exhibit labels (Exhibit A / สิ่งที่ส่งมาด้วย ๑)',
    bundleStep4:        'Auto table of contents',
    bundleStep4desc:    'Generated from Bates numbers, tab labels, and AI-extracted metadata',
    bundleStep5:        'Compile & print',
    bundleStep5desc:    'Single PDF: cover page, TOC, divider sheets, all documents — Bates-stamped and paginated',
    previewEmpty:       'Select a document to preview it here',
    previewEmptyHint:   'PDFs and images render inline at full width. Word and Excel files show the AI-extracted summary and metadata with a download link.',
    bundleHint:         'Use Build Bundle to gather selected documents into a hearing file with a table of contents and compiled PDF.',
    previewNA:          'Inline preview not available for this file type',
    downloadToView:     'Download to View',
    colBates:           'Bates No.',
    colDocument:        'Document',
    colType:            'Type',
    colAiStatus:        'AI Status',
    colDate:            'Date',
    colSize:            'Size',
    sectionDetails:     'DOCUMENT DETAILS',
    sectionSummary:     'AI SUMMARY',
    labelDocDate:       'Doc date',
    labelUploaded:      'Uploaded',
    labelUploadedBy:    'Uploaded by',
    labelMatter:        'Matter',
    labelParties:       'Parties',
    labelTags:          'Tags',
    batesNote:          (prefix: string) => `Each file gets a unique Bates number (${prefix}-XXXXX) and is queued for AI classification — type, parties, dates, and a summary are extracted automatically.`,
    classifying:        (n: number) => `${n} classifying…`,
    documentsCount:     (n: number) => `${n} document${n !== 1 ? 's' : ''}`,
    docsCount:          (n: number) => `${n} doc${n !== 1 ? 's' : ''}`,
    batesPrefix:        'Bates prefix',
    moveToFolder:       'Move to folder',
    addToBundle:        'Add to hearing bundle',
    customFolder:       'Custom',
    inboxLabel:         'Inbox — Unclassified',
    uploadingN:         (n: number) => `Upload${n > 1 ? ` ${n} Files` : ''}`,
    errSelectFile:      'Select at least one file',
    errUploadFailed:    'Upload failed',
    errSaveFailed:      'Save failed',
    errTranslateFailed: 'Translation failed',
    folderFallback:     'Folder',
  },

  documentsFiling: {
    title:           'Filing Cabinet',
    subtitle:        'All client documents in one searchable, Bates-numbered index.',
    totalDocs:       (n: number) => `${n} document${n !== 1 ? 's' : ''} across all client folders`,
    searchPlaceholder: 'Search by Bates #, title, filename, client…',
    filterPrivilege: 'Privilege',
    filterDocType:   'Document Type',
    filterClient:    'All Clients',
    filterLang:      'Language',
    allTypes:        'All Types',
    allClients:      'All Clients',
    allLang:         'All',
    allPrivilege:    'All Privilege',
    allAi:           'All AI',
    langEn:          'English',
    langTh:          'Thai',
    langMixed:       'Mixed',
    langOther:       'Other',
    filterTranslated:'Translated',
    filterSource:    'Source Documents',
    results:         (n: number) => `${n} result${n !== 1 ? 's' : ''}`,
    shown:           'shown',
    sortNewest:      'Newest First',
    sortOldest:      'Oldest First',
    sortNameAZ:      'Name A–Z',
    sortBatesAsc:    'Bates Asc',
    sortBy:          'Sort by',
    colBates:        'Bates No.',
    colBatesShort:   'Bates #',
    colDocument:     'Document / Client',
    colDocumentShort:'Document',
    colType:         'Type',
    colClient:       'Client',
    colPrivilege:    'Privilege',
    colAi:           'AI',
    colLang:         'Language',
    colDate:         'Date',
    colSize:         'Size',
    colUploaded:     'Uploaded',
    detectedLang:    'Detected Language',
    isTranslation:   'Translation',
    noDocuments:     'No documents found',
    translateDoc:    'Translate document',
    downloadView:    'Download / view',
    uploadViaFolder: 'Upload via Client Folder',
    statTotal:       'Total Documents',
    statClassified:  'AI Classified',
    statPending:     'Pending Review',
    statPrivileged:  'Privileged',
    sectionSummary:  'AI Summary',
    sectionDetails:  'Details',
    labelClient:     'Client',
    labelDocDate:    'Doc Date',
    labelLanguage:   'Language',
    labelUploadedBy: 'Uploaded by',
    labelParties:    'Parties',
    labelTags:       'Tags',
    noSummary:       'No summary generated',
    awaitingAi:      'Awaiting AI classification',
    aiConfidence:    'AI Confidence',
    signed:          'Signed',
  },

  translationDialog: {
    title:         'Translate Document',
    enToTh:        'English → Thai',
    thToEn:        'Thai → English',
    idleHint:      (from: string, to: string) => `Translate this document from ${from} to ${to} using Claude AI.`,
    pdfHint:       ' Full document text will be extracted and translated.',
    summaryHint:   ' Summary will be translated (PDF required for full text extraction).',
    translating:   'Translating with Claude AI…',
    summaryOnly:   'Full text extraction is not available for this file type — showing translated summary only.',
    savedSuccess:  'Translation saved to client folder as a new document.',
    translationLabel: (lang: string) => `${lang} Translation`,
    summaryLabel:  (lang: string) => `${lang} Summary`,
    saveToFolder:  'Save to folder',
    thai:          'Thai',
    english:       'English',
  },

  matters: {
    title:           'Matters',
    newMatter:       'New Matter',
    searchPlaceholder: 'Search matters…',
    filterAll:       'All Status',
    filterOpen:      'Open',
    filterPending:   'Pending',
    filterClosed:    'Closed',
    filterArchived:  'Archived',
    areaAll:         'All Areas',
    areaImmigration: 'Immigration',
    areaCorporate:   'Corporate',
    areaCivil:       'Civil Litigation',
    areaProperty:    'Property',
    areaFamily:      'Family',
    areaEmployment:  'Employment',
    areaCriminal:    'Criminal',
    areaOther:       'Other',
    billingHourly:   'Hourly',
    billingFixed:    'Fixed Fee',
    billingRetainer: 'Retainer',
    billingContingency: 'Contingency',
    billingHybrid:   'Hybrid',
    colNumber:       'Number',
    colTitle:        'Title / Client',
    colArea:         'Practice Area',
    colStatus:       'Status',
    colBilling:      'Billing',
    colOpened:       'Opened',
    colNextAction:   'Next Action',
    colCourtRef:     'Court Ref',
    noMatters:       'No matters found',
    addFirst:        'Add First Matter',
    matterNumberAuto: 'Matter number assigned automatically',
    closeMatter:     'Close matter',
    reopenMatter:    'Re-open matter',
    closedOutcome:   'Closed Outcome',
    confirmClose:    'Close this matter?',
    nextAction:      'Next Action',
    nextActionDate:  'Next Action Date',
    actionHearing:   'Hearing',
    actionDeadline:  'Deadline',
    actionFiling:    'Filing',
    actionReview:    'Review',
    labelTitle:      'Title',
    labelClient:     'Client',
    labelArea:       'Practice Area',
    labelBilling:    'Billing Type',
    labelHourly:     'Hourly Rate',
    labelFixed:      'Fixed Fee',
    labelAttorney:   'Responsible Attorney',
    labelCourtRef:   'Court Reference',
    labelOpenDate:   'Opened Date',
    results:         (n: number) => `${n} matter${n !== 1 ? 's' : ''}`,
    subtitle:        (n: number) => `${n} matter${n !== 1 ? 's' : ''} on record`,
    overdueSubtitle: (n: number) => `· ${n} overdue action${n !== 1 ? 's' : ''}`,
    statOpen:        'Open Matters',
    statPending:     'Pending',
    statOverdue:     'Overdue Actions',
    statBilled:      'Total Billed',
    statBilledSub:   'across all active matters',
    searchPlaceholderFull: 'Search matters, clients, attorneys…',
    shown:           'shown',
    colMatterNumber: 'Matter #',
    colClient:       'Client',
    colAttorney:     'Attorney',
    colBilled:       'Billed',
    openMatterTooltip:  'Open matter',
    openNewMatterTitle: 'Open New Matter',
    labelMatterTitle:   'Matter Title',
    labelCurrency:      'Currency',
    courtAgencyRef:     'Court / Agency Reference',
    labelNotes:         'Notes',
    creating:           'Creating…',
    openMatterBtn:      'Open Matter',
    closeDialogTitle:   'Close Matter',
    closingNote:        (title: string, num: string) => `Closing ${title} (${num})`,
    outcomeNotes:       'Outcome / Notes',
    closingStatus:      'Closing…',
    closeMatterBtn:     'Close Matter',
    errSelectClient:    'Select a client',
    errTitleRequired:   'Title is required',
    errAttorneyRequired: 'Responsible attorney is required',
    errCreateFailed:    'Failed to create matter',
    paid:               'paid',
  },

  dashboard: {
    greeting:           'Good morning, Counsel',
    statActiveMatters:  'Active Matters',
    statAllAreas:       'All practice areas',
    statHearings:       'Hearings This Week',
    statHearingsSub:    'Confirmed + pending',
    statUnbilled:       'Unbilled Hours',
    statUnbilledSub:    'Ready to invoice',
    statRevenue:        'Monthly Revenue',
    statRevenueSub:     '+12% vs last month',
    urgentAlerts:       'Urgent Alerts',
    nextHearing:        'Next Hearing',
    noHearings:         'No hearings scheduled',
    viewMatter:         'View Matter',
    aiBrief:            'AI Brief',
    upcomingHearings:   'Upcoming Hearings',
    addHearing:         'Add Hearing',
    colDateTime:        'Date & Time',
    colMatter:          'Matter',
    colClient:          'Client',
    colCourt:           'Court',
    colJudge:           'Judge',
    colStatus:          'Status',
    noUpcomingHearings: 'No upcoming hearings',
    activeMatters:      'Active Matters',
    agentActivity:      'Agent Activity',
    billingSnapshot:    'Billing Snapshot',
    thisMonth:          'This Month',
    outstanding:        'Outstanding',
    overdueLabel:       'Overdue',
    lowRetainers:       'Low Retainers',
    allRetainersOk:     'All retainers healthy',
    fullReport:         'Full Report',
    inbox:              'Inbox',
    unread:             (n: number) => `${n} unread`,
    openInbox:          'Open Inbox',
    targetProgress:     (pct: number, target: string) => `${pct}% of ${target} target`,
    nextEvent:          'Next Appointment',
    in:                 'In',
    aiTitle:            'Ask the AI Assistant',
    aiPlaceholder:      'e.g. Any pending emails that need routing?',
    aiFollowUp:         'Follow up…',
    aiSend:             'Send',
    aiThinking:         'Thinking…',
    aiClearConv:        'Clear conversation',
    aiAttach:           'Attach document (PDF, image)',
    aiError:            'Connection error — please try again.',
    aiQuick1:           'Any pending emails?',
    aiQuick2:           'Upcoming hearings this week',
    aiQuick3:           'Summarise open matters',
    aiQuick4:           'Check overdue invoices',
    emailTagOpposing:   'opposing',
    emailTagGovernment: 'government',
    emailTagClient:     'client',
    emailTagCourt:      'court',
    calFullView:        'Full View',
    calFullscreen:      'Fullscreen',
    calExitFullscreen:  'Exit fullscreen',
    calReviewFolder:    'Review Client Folder',
    calNextPrefix:      'Next',
  },

  calendar: {
    title:        'Calendar',
    hearing:      'Hearing',
    deadline:     'Deadline',
    filing:       'Filing',
    review:       'Review',
    consultation: 'Consultation',
    meeting:      'Meeting',
    call:         'Call',
    signing:      'Signing',
  },

  billing: {
    title:          'Billing',
    timeEntries:    'Time Entries',
    invoices:       'Invoices',
    retainers:      'Retainers',
    outstanding:    'Outstanding',
    overdue:        'Overdue',
    hours:          'hrs',
  },

  compare: {
    title:            'Platform Comparison',
    subtitle:         'Soi96 Legal vs TABS3 vs LegalTrek vs LexRing — across practice management, AI, communications, billing, documents, security, and pricing.',
    thisPlatform:     'This platform',
    usBillingPm:      'US billing/PM',
    thaiSaas:         'Thai SaaS',
    mostPopular:      'MOST POPULAR',
    pricingTitle:     'Soi96 Legal — Pricing',
    pricingSubtitle:  'Flat monthly — one price per firm, not per seat. Add attorneys freely.',
    perMonth:         '/month',
    seatAtty1:        '1 attorney',
    seatUpTo5:        'Up to 5 seats',
    seatUnlimited:    'Unlimited seats',
    costTitle:        "Cost comparison — what you'd actually pay",
    costSubtitle:     'TABS3 Cloud billing-only rate ($89/user/month). LegalTrek and LexRing per-seat rates. Exchange rate ~฿36/USD used for TABS3 conversion.',
    costFootnote:     'TABS3 OnSite starts at $40/user/month (billing only) + $32/user for PracticeMaster. TABS3 Cloud full suite (Billing + Financials + PracticeMaster): $124/user/month. LegalTrek setup fee ฿15,000–30,000 not included above.',
    colFirmSize:      'Firm size',
    badgeYes:         'Yes',
    badgePartial:     'Partial',
    badgeNo:          'No',
    badgePlanned:     'Planned',
    legendYes:        'Fully supported',
    legendPartial:    'Partial / limited',
    legendPlanned:    'On roadmap',
    legendNo:         'Not available',
    hoverHint:        'Hover any badge for detail notes',
    catPractice:      'Practice Management',
    catAi:            'AI & Automation',
    catComms:         'Communications',
    catBilling:       'Billing & Finance',
    catDocuments:     'Documents',
    catSecurity:      'Security & Deployment',
    catPricing:       'Pricing',
    planSolo:         'Solo',
    planFirm:         'Firm',
    planComplete:     'Complete',
    soloF1: 'Clients, matters & calendar',
    soloF2: 'Filing cabinet (documents)',
    soloF3: 'Billing & invoicing',
    soloF4: 'Multi-currency',
    soloF5: 'Trust / retainer ledger',
    soloF6: 'Encrypted at rest',
    soloF7: 'Full REST API',
    soloNI1: 'AI agents',
    soloNI2: 'Comms agent',
    soloNI3: 'Judicial / adversary intelligence',
    firmF1: 'Everything in Solo',
    firmF2: 'AI document classification',
    firmF3: 'Bilingual Thai / English AI',
    firmF4: 'AI-generated billing quotes',
    firmF5: 'Proactive deadline alerts',
    firmF6: 'Unlimited staff seats',
    firmNI1: 'Comms agent (Phase 2)',
    firmNI2: 'Judicial / adversary intel (Phase 2)',
    completeF1: 'Everything in Firm',
    completeF2: 'Comms agent (email + LINE)',
    completeF3: 'Judicial intelligence profiles',
    completeF4: 'Adversary intelligence profiles',
    completeF5: 'Cross-matter strategic brief',
    completeF6: 'Google Calendar sync',
    completeF7: 'Client portal',
    fMatterTracking:       'Matter / case tracking',
    fClientFolderMgmt:     'Client folder management',
    fMatterStatusWorkflow: 'Matter status workflow with flowchart builder',
    fWorkflowBuilder:      'Visual workflow builder (flowchart / node editor)',
    fObligationTimeline:   'Obligation timeline & compliance calendar',
    fPracticeAreaTemplates:'Practice-area templates',
    fThaiCourtMgmt:        'Thai court case management',
    fConflictCheck:        'Conflict of interest checking',
    fCourtHearingCalendar: 'Court hearing calendar',
    fPartyDirectory:       'Party & opposing counsel directory',
    fJudicialIntel:        'Judicial intelligence (career profiles)',
    fAdversaryIntel:       'Adversary intelligence (opposing counsel & firms)',
    fMultiMatterView:      'Multi-matter view per client',
    fCrossMatterIntel:     'Cross-matter intelligence at new matter open',
    fBoiImmigration:       'BOI / immigration workflow specifics',
    fMatterRefInComms:     'Matter reference in all outbound comms',
    fAiAssistant:          'AI assistant (natural language)',
    fMultiAgentHierarchy:  'Multi-agent hierarchy',
    fEmailTriageRouting:   'Automatic email triage & routing',
    fDocClassification:    'Document classification (type + matter ref + practice area)',
    fRagLookup:            'Statute & case law lookup (RAG)',
    fPerClientAgent:       'Per-client AI agent (Client Manager)',
    fAiMatterBrief:        'AI-generated matter brief at case open',
    fAiBillingQuote:       'AI-generated billing quote',
    fProactiveAlerts:      'Proactive deadline & retainer alerts',
    fOnboardingAgent:      'Onboarding agent for new data intake',
    fAttorneyApproval:     'Attorney approval gate on AI actions',
    fForecastConfirmLearn: 'Forecast → Confirm → Learn training loop',
    fIntelligenceCompounds:'Intelligence compounds over time',
    fThaiAiHandling:       'Thai-language AI handling',
    fImapPolling:          'Inbound email (IMAP polling)',
    fSmtpRelay:            'Outbound SMTP relay',
    fSmtpListener:         'Embedded SMTP listener (receive to platform)',
    fEmailThreadedToMatter:'Email threaded to client + matter',
    fFirmInbox:            'Firm-wide inbox with routing queue',
    fPerClientCommsTab:    'Per-client communications tab',
    fComposeReply:         'Compose & reply within platform',
    fEmailAssocEngine:     'Email association engine',
    fLineIntegration:      'LINE messaging integration',
    fGoogleCalendarSync:   'Google Calendar bidirectional sync',
    fClientPortal:         'Client portal (secure messaging)',
    fTimeEntryLogging:     'Time entry logging',
    fExpenseTracking:      'Expense tracking',
    fInvoicePdf:           'Invoice generation (PDF)',
    fMultiBillingTypes:    'Multiple billing types per client',
    fTrustRetainerMgmt:    'Trust / retainer account management',
    fMultiCurrencyBilling: 'Multi-currency billing',
    fArOverdueTracking:    'AR / overdue tracking',
    fBillingSchedule:      'Billing schedule (manual dates)',
    fRetainerTopupAlerts:  'Retainer top-up alerts',
    fAiBillingAgent:       'AI-generated quote (Billing Agent)',
    fClientBillingNotes:   'Client-specific billing notes per matter',
    fGeneralLedger:        'General ledger / accounting',
    fChequeWriting:        'Check / cheque writing',
    fBankReconciliation:   'Bank reconciliation',
    fDocUpload:            'Document upload & storage',
    fDocLinkedToMatter:    'Document linked to matter',
    fDocTypesMetadata:     'Document types & metadata',
    fAiDocClassification:  'AI document classification',
    fThaiDocSupport:       'Thai-language document support',
    fPdfGeneration:        'PDF generation (invoices, briefs)',
    fDocTemplates:         'Document templates',
    fVersionControl:       'Version control',
    fFullTextSearch:       'Full-text search across documents',
    fSelfHosted:           'Self-hosted / on-premise option',
    fCloudSaas:            'Cloud / SaaS option',
    fDataJurisdiction:     'Data stays in your jurisdiction',
    fRbac:                 'Role-based access control',
    fAuditTrail:           'Audit trail / activity log',
    fCustomDomain:         'Custom domain',
    fRestApi:              'Full REST API',
    fOpenCodebase:         'Open codebase (no vendor lock-in)',
    fMobileApp:            'Mobile app',
    fMultiLangUi:          'Multi-language UI (EN + TH)',
    fFieldLevelEncryption: 'Field-level PII encryption at rest',
    fSearchOnEncrypted:    'Search works on encrypted data',
    fKeysSeparateFromData: 'Encryption keys separate from data',
    fPricingModel:         'Pricing model',
    fSoloEntryPrice:       'Entry price (solo attorney)',
    fThreeAttorneyCost:    '3-attorney firm — monthly cost',
    fFiveAttorneyCost:     '5-attorney firm — monthly cost',
    fPerSeatFees:          'Per-seat / per-user fees',
    fAiIncluded:           'AI included in base price',
    fSetupFee:             'Setup / onboarding fee',
    fAnnualContract:       'Annual contract required',
    fDataMigration:        'Data migration assistance',
    fVendorLockIn:         'Vendor lock-in risk',
    fLocalThaiSupport:     'Local Thai support',
  },

  migrate: {
    title:                'Data Migration',
    subtitle:             'Import clients and matters from TABS3, LegalTrek, or LexRing. Upload your CSV exports, confirm the column mapping, and import in one step.',
    sourceSystem:         'Source system',
    srcTabs3Desc:         'US legal billing & PM software',
    srcLegalTrekDesc:     'Thai legal SaaS',
    srcLexRingDesc:       'Thai law-firm platform',
    uploadTitle:          'Upload CSV exports',
    uploadSubtitle:       (src: string) => `Export your client list and matter list from ${src} as CSV files, then upload both here.`,
    clientsLabel:         'Clients',
    mattersLabel:         'Matters',
    mattersOptional:      '(optional)',
    dropClient:           'Drop client CSV here',
    dropMatter:           'Drop matter / case CSV here',
    clientPathTabs3:      'TABS3 → Reports → Client List → Export CSV',
    clientPathLegalTrek:  'LegalTrek → Clients → Export',
    clientPathLexRing:    'LexRing → ลูกความ → ส่งออก CSV',
    matterPathTabs3:      'TABS3 → Reports → Matter List → Export CSV',
    matterPathLegalTrek:  'LegalTrek → Cases → Export',
    matterPathLexRing:    'LexRing → คดี → ส่งออก CSV',
    changeFile:           'Change',
    rowsInfo:             (rows: number, cols: number) => `${rows} rows · ${cols} columns`,
    defaultAttorneyLabel: 'Default responsible attorney',
    defaultAttorneyHint:  'Used when the source data has no attorney assigned',
    mappingTitle:         'Column mapping',
    mappingSubtitle:      (src: string) => `Auto-detected from ${src} export headers. Adjust any mismatches below.`,
    mappingHide:          'Hide',
    mappingReview:        'Review',
    colSoiField:          'Soi96 field',
    colSourceColumn:      'Source column',
    colStatus:            'Status',
    skipColumn:           '— skip —',
    clientRows:           (n: number) => `Clients — ${n} rows`,
    matterRows:           (n: number) => `Matters — ${n} rows`,
    readyTitle:           (clients: number, matters: number | null) =>
      `Ready to import: ${clients} clients${matters !== null ? ` + ${matters} matters` : ''}`,
    readyHint:            'Duplicates are skipped. This operation can be run multiple times safely.',
    importing:            'Importing…',
    importBtn:            (src: string) => `Import from ${src}`,
    resultTitle:          'Import complete',
    clientsImported:      'Clients imported',
    clientsSkipped:       'Clients skipped',
    mattersImported:      'Matters imported',
    mattersSkipped:       'Matters skipped',
    errTitle:             (n: number) => `Errors (${n})`,
    warnTitle:            (n: number) => `Warnings (${n})`,
    warnMore:             (n: number) => `…and ${n} more`,
    networkError:         'Network error — please try again.',
    allSuccess:           'All records imported successfully with no issues.',
    // Client field labels
    cfExternalId:         'Client ID (source)',
    cfClientType:         'Client type',
    cfFirstName:          'First name',
    cfLastName:           'Last name',
    cfCompanyName:        'Company name',
    cfEmail:              'Email',
    cfPhone:              'Phone',
    cfAddress:            'Address',
    cfNationality:        'Nationality',
    cfPassportNumber:     'Passport / ID number',
    cfResponsibleAttorney:'Responsible attorney',
    cfOriginatingAttorney:'Originating attorney',
    cfStatus:             'Status',
    cfEngagementDate:     'Engagement date',
    cfNotes:              'Notes',
    // Matter field labels
    mfExternalClientId:   'Client ID (source)',
    mfExternalMatterId:   'Matter ID (source)',
    mfTitle:              'Matter title',
    mfPracticeArea:       'Practice area',
    mfSubType:            'Sub-type',
    mfStatus:             'Status',
    mfResponsibleAttorney:'Responsible attorney',
    mfOpenedAt:           'Date opened',
    mfClosedAt:           'Date closed',
    mfNotes:              'Notes',
  },

  formTemplates: {
    // Page
    title:                'Form Templates',
    subtitle:             'Auto-fill government and standard legal forms using client & matter data',
    // Template list
    allAreas:             'All practice areas',
    noTemplates:          'No form templates found',
    noTemplatesHint:      'Add templates via the admin panel to enable auto-fill generation',
    templateActive:       'Active',
    templateInactive:     'Inactive',
    fields:               (n: number) => `${n} field${n === 1 ? '' : 's'}`,
    // Generate
    generateBtn:          'Generate Form',
    generating:           'Generating…',
    generateSuccess:      'Form generated and downloaded successfully',
    generateError:        'Failed to generate form',
    // Upload
    uploadTemplateBtn:    'Upload Template PDF',
    uploadTitle:          'Upload Blank PDF Template',
    uploadHint:           'Upload the blank government or standard form PDF. Field coordinates are mapped after upload.',
    // Field mapper
    mapFieldsTitle:       'Map Fields',
    mapFieldsSubtitle:    'Click a position on the PDF preview to place a field, then configure its data source',
    addFieldBtn:          'Add Field',
    fieldLabel:           'Label',
    fieldDataSource:      'Data source',
    fieldPage:            'Page',
    fieldX:               'X (pts)',
    fieldY:               'Y (pts)',
    fieldFontSize:        'Font size',
    fieldMaxLength:       'Max length',
    fieldDateFormat:      'Date format',
    fieldStaticValue:     'Static value',
    // Data source options
    dsClientFirstName:    'Client — First name',
    dsClientLastName:     'Client — Last name',
    dsClientCompany:      'Client — Company name',
    dsClientPassport:     'Client — Passport / ID number',
    dsClientNationality:  'Client — Nationality',
    dsClientDOB:          'Client — Date of birth',
    dsClientVisaType:     'Client — Visa type',
    dsClientVisaNumber:   'Client — Visa number',
    dsClientVisaExpiry:   'Client — Visa expiry',
    dsClientEmail:        'Client — Email',
    dsClientPhone:        'Client — Phone',
    dsClientAddress:      'Client — Address',
    dsMatterTitle:        'Matter — Title',
    dsMatterNumber:       'Matter — Matter number',
    dsMatterPracticeArea: 'Matter — Practice area',
    dsMatterOpenedDate:   'Matter — Date opened',
    dsStatic:             'Static text',
    // Generation log
    logTitle:             'Generation History',
    logEmpty:             'No forms generated for this matter yet',
    logGenerated:         'Generated',
    logDownload:          'Download',
    // Template cards
    practiceAreaUniversal:'Universal',
    previewBtn:           'Preview',
    editFieldsBtn:        'Edit Fields',
    // Stock library
    stockLibraryTab:      'Standard Library',
    customTab:            'Custom Forms',
    stockBadge:           'Stock',
    calibrationWarning:   'Coordinates not yet verified',
    calibrationNote:      'Field positions are estimated. Verify against the official PDF before sending to government offices.',
    sourceUrl:            'Official source',
    refreshPdfBtn:        'Re-download PDF',
    stockCount:           (n: number) => `${n} standard government & legal forms included`,
    isSystemNote:         'System form — cannot be deleted',
    // Calibration agent
    calibrateBtn:         'Run Calibration Agent',
    calibrateRunning:     'Agent running…',
    calibrateStatus:      'Calibration Status',
    calibrateStarted:     'Started',
    calibrateFinished:    'Finished',
    calAcroform:          'AcroForm (exact)',
    calCoordinate:        'Coordinate (estimated)',
    calSkipped:           'Skipped',
    calErrors:            'Errors',
    calForce:             'Re-calibrate all',
  },

  workflows: {
    // Page
    title:                'Workflows & Checklists',
    subtitle:             'Procedural step-by-step guides to ensure nothing is missed',
    // Template list
    noTemplates:          'No workflow templates found',
    allAreas:             'All practice areas',
    steps:                (n: number) => `${n} step${n === 1 ? '' : 's'}`,
    mandatoryBadge:       'Mandatory',
    // Apply workflow
    applyBtn:             'Apply Workflow',
    applyTitle:           'Apply Workflow to Matter',
    applySubtitle:        'Select a workflow template to instantiate as a checklist for this matter',
    applySelectLabel:     'Select template',
    applyConfirm:         'Apply',
    applySuccess:         (name: string) => `"${name}" workflow applied`,
    applyError:           'Failed to apply workflow',
    // Checklist
    checklistTitle:       'Active Workflows',
    noWorkflows:          'No workflows active for this matter',
    noWorkflowsHint:      'Apply a workflow template to get started',
    workflowCompleted:    'Completed',
    workflowActive:       'In progress',
    // Step statuses
    statusPending:        'Pending',
    statusInProgress:     'In progress',
    statusCompleted:      'Completed',
    statusSkipped:        'Skipped',
    // Step actions
    markComplete:         'Mark complete',
    markInProgress:       'Mark in progress',
    skipStep:             'Skip',
    generateFormBtn:      'Generate Form',
    stepNotes:            'Notes',
    stepDue:              'Due',
    stepCompletedBy:      'Completed by',
    // Overdue widget
    overdueTitle:         'Overdue Steps',
    overdueEmpty:         'No overdue steps',
    overdueViewMatter:    'View matter',
    // Template management
    createTemplateBtn:    'New Template',
    createTemplateTitle:  'Create Workflow Template',
    editTemplateTitle:    'Edit Workflow Template',
    templateName:         'Template name',
    templateDescription:  'Description',
    templatePracticeArea: 'Practice area',
    templateIsSystem:     'System template (cannot be deleted)',
    addStepBtn:           'Add Step',
    stepTitle:            'Step title',
    stepDescription:      'Step description',
    stepOrder:            'Order',
    stepMandatory:        'Mandatory',
    stepDeadlineDays:     'Deadline (days from matter open)',
    stepLinkedForm:       'Linked form template',
    saveTemplate:         'Save Template',
    deleteTemplate:       'Delete Template',
    deleteConfirm:        'Are you sure you want to delete this template? This cannot be undone.',
  },
}

// ─── Thai dictionary ───────────────────────────────────────────────────────────

const th: typeof en = {
  nav: {
    dashboard:      'แดชบอร์ด',
    clients:        'ลูกความ',
    matters:        'คดีความ',
    annualCompliance: 'การปฏิบัติตามกฎหมายประจำปี',
    calendar:       'ปฏิทิน',
    documents:      'เอกสาร',
    billing:        'การเรียกเก็บค่าธรรมเนียม',
    email:          'อีเมล',
    communications: 'การสื่อสาร',
    compare:        'เปรียบเทียบแผน',
    agentActivity:  'กิจกรรม AI Agent',
    migrate:        'นำเข้าข้อมูล',
    formTemplates:  'แบบฟอร์มอัตโนมัติ',
    workflows:      'เวิร์กโฟลว์',
    firmName:       'Soi96 Legal',
    settings:       'ตั้งค่า',
    darkMode:       'โหมดมืด',
    lightMode:      'โหมดสว่าง',
    logout:         'ออกจากระบบ',
    language:       'English',
  },

  common: {
    save:          'บันทึก',
    cancel:        'ยกเลิก',
    close:         'ปิด',
    edit:          'แก้ไข',
    delete:        'ลบ',
    add:           'เพิ่ม',
    create:        'สร้าง',
    update:        'อัปเดต',
    upload:        'อัปโหลด',
    download:      'ดาวน์โหลด',
    search:        'ค้นหา',
    newBtn:        'สร้างใหม่',
    back:          'กลับ',
    open:          'เปิด',
    copy:          'คัดลอก',
    translate:     'แปลภาษา',
    retry:         'ลองใหม่',
    done:          'เสร็จสิ้น',
    viewAll:       'ดูทั้งหมด',
    view:          'ดู',
    request:       'ขอ',
    saving:        'กำลังบันทึก…',
    loading:       'กำลังโหลด…',
    uploading:     'กำลังอัปโหลด…',
    translating:   'กำลังแปลด้วย Claude AI…',
    noResults:     'ไม่พบผลลัพธ์',
    today:         'วันนี้',
    overdue:       'เกินกำหนด',
    days:          'วัน',
    hours:         'ชม.',
    minutes:       'น.',
    allClear:      'ไม่มีการแจ้งเตือน',
    room:          'ห้อง',
    now:           'ขณะนี้',
    required:      'จำเป็น',
    optional:      'ไม่บังคับ',
    confirmed:     'ยืนยันแล้ว',
    pending:       'รอดำเนินการ',
    adjourned:     'เลื่อนออกไป',
  },

  status: {
    active:         'ใช้งานอยู่',
    prospect:       'ลูกค้าเป้าหมาย',
    conflictCheck:  'ตรวจสอบความขัดแย้ง',
    closed:         'ปิดแล้ว',
    rejected:       'ปฏิเสธ',
    open:           'เปิดอยู่',
    archived:       'เก็บถาวร',
  },

  clientList: {
    title:              'แฟ้มลูกความ',
    subtitle:           (n: number) => `มีแฟ้ม ${n} รายการ`,
    retainerAlert:      (n: number) => `· เงินประกัน ${n} รายการต่ำกว่าขั้นต่ำ`,
    newClient:          'เพิ่มลูกความ',
    listView:           'มุมมองรายการ',
    folderView:         'มุมมองโฟลเดอร์',
    searchPlaceholder:  'ค้นหาชื่อ, เลขที่แฟ้ม, อีเมล…',
    shown:              'รายการ',
    filterAll:          'ทั้งหมด',
    folderToolbarTitle: 'แฟ้มลูกความ',
    foldersCount:       (n: number) => `· ${n} แฟ้ม`,
    searchFolders:      'ค้นหาโฟลเดอร์…',
    noFoldersMatch:     (q: string) => `ไม่พบโฟลเดอร์ที่ตรงกับ "${q}"`,
    openFolder:         'เปิดแฟ้ม',
    clickHint:          'คลิกครั้งเดียวเพื่อเลือก · ดับเบิลคลิกเพื่อเปิด',
    noClientsFound:     'ไม่พบแฟ้มลูกความ',
    attorney:           'ทนายความ',
    retainer:           'เงินประกัน',
    updated:            'อัปเดต',
    belowThreshold:     'เงินประกันต่ำกว่าขั้นต่ำ',
    colFolderNo:        'เลขที่แฟ้ม',
    colClient:          'ลูกความ',
    colType:            'ประเภท',
    colStatus:          'สถานะ',
    colRetainer:        'เงินประกัน',
    colAttorney:        'ทนายความ',
    colLastUpdated:     'อัปเดตล่าสุด',
    individual:         'บุคคลธรรมดา',
    corporate:          'นิติบุคคล',
  },

  clientForm: {
    createTitle:         'เพิ่มลูกความใหม่',
    editTitle:           'แก้ไขข้อมูลลูกความ',
    createSubtitle:      'สร้างแฟ้มลูกความใหม่',
    editSubtitle:        'แก้ไขข้อมูลลูกความ',
    clientType:          'ประเภทลูกความ',
    individual:          'บุคคลธรรมดา',
    corporate:           'นิติบุคคล',
    sectionBasic:        'ข้อมูลพื้นฐาน',
    sectionContact:      'ข้อมูลติดต่อ',
    sectionTeam:         'ทีมกฎหมาย',
    sectionBilling:      'เงินประกันและค่าธรรมเนียม',
    sectionNotes:        'หมายเหตุ',
    sectionAddresses:    'ที่อยู่',
    firstName:           'ชื่อ',
    lastName:            'นามสกุล',
    nationality:         'สัญชาติ',
    idType:              'ประเภทบัตรประจำตัว',
    passportNumber:      'เลขที่หนังสือเดินทาง / บัตรประชาชน',
    visaType:            'ประเภทวีซ่า',
    visaNumber:          'เลขวีซ่า',
    visaExpiry:          'วันหมดอายุวีซ่า',
    dateOfBirth:         'วันเกิด',
    companyName:         'ชื่อบริษัท',
    registrationNumber:  'เลขทะเบียนนิติบุคคล',
    boiStatus:           'สถานะ BOI',
    lineId:              'LINE ID',
    region:              'ภูมิภาค',
    originatingAttorney: 'ทนายความผู้แนะนำ',
    responsibleAttorney: 'ทนายความผู้รับผิดชอบ',
    retainerThreshold:   'วงเงินขั้นต่ำค่าธรรมเนียม',
    currency:            'สกุลเงิน',
    notes:               'หมายเหตุ',
    phoneLabel:          'โทรศัพท์',
    emailLabel:          'อีเมล',
    addPhone:            'เพิ่มโทรศัพท์',
    addEmail:            'เพิ่มอีเมล',
    addAddress:          'เพิ่มที่อยู่',
    submitCreate:        'สร้างแฟ้มลูกความ',
    submitEdit:          'บันทึกการเปลี่ยนแปลง',
    errFirstName:        'กรุณากรอกชื่อ',
    errLastName:         'กรุณากรอกนามสกุล',
    errCompany:          'กรุณากรอกชื่อบริษัท',
    errPhone:            'กรุณาระบุหมายเลขโทรศัพท์อย่างน้อยหนึ่งหมายเลข',
    errPhoneInvalid:     'กรุณาแก้ไขหมายเลขโทรศัพท์ที่ไม่ถูกต้อง',
    errEmailInvalid:     'กรุณาแก้ไขที่อยู่อีเมลที่ไม่ถูกต้อง',
    convertToActive:     'เปลี่ยนเป็นลูกความถาวร',
    engagementLetterRef: 'เลขที่หนังสือแต่งตั้งทนาย',
    statusUpdateNote:    'เปลี่ยนสถานะจากลูกค้าเป้าหมายเป็นลูกความ — กรุณาแนบหนังสือแต่งตั้งที่ลงนามแล้ว',
    createFolderTitle:        'โฟลเดอร์ลูกความใหม่',
    createFolderSubtitle:     'เปิดเป็นผู้มีโอกาสเป็นลูกความ — ต้องตรวจสอบความขัดแย้งก่อนเปิดใช้งาน',
    editFolderSubtitle:       (n: string) => `โฟลเดอร์ ${n}`,
    sectionPersonal:          'ข้อมูลส่วนตัว',
    sectionCompany:           'ข้อมูลบริษัท',
    sectionPhones:            'หมายเลขโทรศัพท์',
    sectionEmails:            'ที่อยู่อีเมล',
    sectionOtherContact:      'ช่องทางติดต่ออื่น',
    sectionAttorneys:         'ทนายความ',
    clientStatusTitle:        'สถานะลูกความ',
    statusNoteProspect:       'โฟลเดอร์นี้ปัจจุบันเป็นผู้มีโอกาสเป็นลูกความ สลับเพื่อแปลงเป็นลูกความที่ใช้งานอยู่เมื่อยืนยันการว่าจ้างแล้ว',
    activeClient:             'ลูกความที่ใช้งานอยู่',
    engagementLetterRefHint:  'ไม่บังคับ — หมายเลขอ้างอิงสำหรับหนังสือว่าจ้างที่ลงนามแล้ว',
    idNumber:                 'หมายเลขบัตร/พาสปอร์ต',
    notSpecified:             'ไม่ระบุ',
    noneOption:               'ไม่มี',
    addAddressHint:           'รายการแรกคือที่อยู่หลัก เพิ่มรายการเพิ่มเติมสำหรับที่อยู่ต่างประเทศ จดหมาย หรือที่อยู่เรียกเก็บเงิน',
    addPhoneHint:             'รายการแรกคือหมายเลขติดต่อหลัก',
    addEmailHint:             'รายการแรกคืออีเมลติดต่อหลัก',
    emailAddress:             'ที่อยู่อีเมล',
    emailType:                'ประเภท',
    businessRegion:           'ภูมิภาคธุรกิจ',
    regionHint:               'การจัดประเภทตามภูมิภาคสำหรับการรายงาน',
    originatingHint:          'ทนายความที่นำลูกความรายนี้มา',
    responsibleHint:          'ทนายความประจำคดีประจำวัน',
    retainerHint:             'แจ้งเตือนเมื่อยอดคงเหลือต่ำกว่าจำนวนนี้',
    internalNotes:            'บันทึกภายใน',
    notesPlaceholder:         'บันทึกการรับลูกความ แหล่งที่มา คำแนะนำพิเศษ…',
    errConversionFailed:      'การแปลงเป็นลูกความที่ใช้งานอยู่ล้มเหลว',
    errGeneric:               'เกิดข้อผิดพลาด',
  },

  clientDetail: {
    tabOverview:        'ภาพรวม',
    tabMatters:         'คดีความ',
    tabDocuments:       'เอกสาร',
    tabBilling:         'ค่าธรรมเนียม',
    tabCommunications:  'การสื่อสาร',
    tabCompliance:      'การปฏิบัติตามกฎระเบียบ',
    tabTeam:            'ทีมงาน',
    tabParties:         'คู่กรณี',
    editClient:         'แก้ไข',
    activate:           'เปิดใช้งาน',
    closeFolder:        'ปิดแฟ้ม',
    reactivate:         'เปิดใช้งานอีกครั้ง',
    reject:             'ปฏิเสธ',
    statusUpdated:      'อัปเดตสถานะแล้ว',
    sectionContact:     'ข้อมูลติดต่อ',
    sectionLegalTeam:   'ทีมกฎหมาย',
    sectionRetainer:    'เงินประกัน',
    sectionMatters:     'สรุปคดีความ',
    sectionAddresses:   'ที่อยู่',
    sectionEngagement:  'การรับเป็นลูกความ',
    sectionNotes:       'หมายเหตุ',
    sectionPersonal:    'ข้อมูลส่วนตัว',
    sectionCompany:     'ข้อมูลบริษัท',
    sectionInternalTeam: 'ทีมภายใน',
    sectionExternalCounsel: 'ทนายความภายนอก',
    sectionOpposing:    'ฝ่ายตรงข้าม',
    sectionJudicial:    'ฝ่ายตุลาการ / ราชการ',
    sectionAgencies:    'หน่วยงานและตัวแทน',
    labelPhone:         'โทรศัพท์',
    labelEmail:         'อีเมล',
    labelAddress:       'ที่อยู่',
    labelLineId:        'LINE ID',
    labelResponsible:   'ผู้รับผิดชอบ',
    labelOriginating:   'ผู้แนะนำ',
    labelBalance:       'ยอดคงเหลือ',
    labelThreshold:     'วงเงินขั้นต่ำ',
    labelEngagement:    'วันที่รับเป็นลูกความ',
    labelLastUpdated:   'อัปเดตล่าสุด',
    labelRegion:        'ภูมิภาค',
    labelOpenMatters:   'คดีที่เปิดอยู่',
    labelTotalMatters:  'คดีทั้งหมด',
    labelNotes:         'หมายเหตุ',
    labelFolder:        'เลขที่แฟ้ม',
    labelRetainerBalance: 'ยอดเงินประกัน',
    labelResponsibleAtty: 'ทนายผู้รับผิดชอบ',
    labelOriginatingAtty: 'ทนายผู้แนะนำ',
    labelEngagementLetter: 'หนังสือแต่งตั้ง',
    labelEngagementLetterRef: 'เลขที่หนังสือแต่งตั้ง',
    labelClosedDate:    'วันที่ปิดแฟ้ม',
    labelClosedReason:  'เหตุผลที่ปิด',
    noNotes:            'ไม่มีหมายเหตุ',
    uploadDocuments:    'อัปโหลดเอกสาร',
    uploadDocument:     'อัปโหลดเอกสาร',
    noPhone:            'ไม่มีโทรศัพท์ในระบบ',
    noEmail:            'ไม่มีอีเมลในระบบ',
    noAddress:          'ไม่มีที่อยู่ในระบบ',
    belowThreshold:     'ต่ำกว่าขั้นต่ำ',
    billingLedger:      'บัญชีค่าธรรมเนียม',
    billingSettings:    'ตั้งค่าการเรียกเก็บ',
    editClientBtn:      'แก้ไขข้อมูลลูกความ',
    activateTitle:      'เปิดใช้งานแฟ้มลูกความ',
    activateConfirm:    'ยืนยันว่าผ่านการตรวจสอบความขัดแย้งแล้ว กรุณากรอกเลขที่หนังสือแต่งตั้งเพื่อเปิดใช้งาน',
    activating:         'กำลังเปิดใช้งาน…',
    closeFileTitle:     'ปิดแฟ้มลูกความ',
    closeConfirm:       'บันทึกผลหรือเหตุผลในการปิดแฟ้มนี้',
    closing:            'กำลังปิด…',
    closeFileBtn:       'ปิดแฟ้ม',
    outcomeReason:      'ผล / เหตุผล',
    clientSince:        'เป็นลูกความตั้งแต่',
    noneOnRecord:       'ไม่มีข้อมูล',
    noOpposing:         'ไม่มีข้อมูลฝ่ายตรงข้ามหรือทนายความฝ่ายตรงข้าม',
    noJudicial:         'ไม่มีข้อมูลฝ่ายตุลาการหรือราชการ',
    addMember:          'เพิ่มสมาชิก',
    addExternal:        'เพิ่มทนายภายนอก',
    addOpposing:        'เพิ่มฝ่ายตรงข้าม',
    addParty:           'เพิ่มคู่กรณี',
    editMemberTitle:    'แก้ไขสมาชิกทีม',
    addMemberTitle:     'เพิ่มสมาชิกทีม',
    editPartyTitle:     'แก้ไขคู่กรณี',
    addPartyTitle:      'เพิ่มคู่กรณี',
    colName:            'ชื่อ',
    colType:            'ประเภท',
    colRole:            'บทบาท',
    colFirm:            'สำนักงาน',
    colContact:         'ติดต่อ',
    colOrganization:    'องค์กร',
    colRoleBar:         'บทบาท / เลขทนาย',
    labelFirmOrg:       'สำนักงาน / องค์กร',
    labelOrgFirmCourt:  'องค์กร / สำนักงาน / ศาล',
    labelRolePosition:  'บทบาท / ตำแหน่ง',
    labelBarLicense:    'เลขทนายความ / ใบอนุญาต',
    addrPrimary:        'หลัก',
    addrMailing:        'ไปรษณีย์',
    addrBilling:        'เรียกเก็บเงิน',
    addrHome:           'บ้าน',
    addrForeign:        'ที่พักต่างประเทศ',
    addrOther:          'อื่นๆ',
    teamRoles: {
      responsible_attorney: 'ทนายความผู้รับผิดชอบ',
      originating_attorney: 'ทนายความผู้แนะนำ',
      associate_attorney:   'ทนายความอาวุโส',
      paralegal:            'ผู้ช่วยทนาย',
      secretary:            'เลขานุการ',
      translator:           'นักแปล',
      external_counsel:     'ทนายความภายนอก',
      other:                'อื่นๆ',
    },
    partyTypes: {
      opposing_party:     'คู่กรณีฝ่ายตรงข้าม',
      opposing_counsel:   'ทนายความฝ่ายตรงข้าม',
      judge:              'ผู้พิพากษา',
      prosecutor:         'อัยการ',
      government_counsel: 'ทนายรัฐ',
      court_officer:      'เจ้าหน้าที่ศาล',
      government_agency:  'หน่วยงานรัฐ',
      other:              'อื่นๆ',
    },
  },

  docFolders: {
    correspondence: 'หนังสือโต้ตอบ',
    contracts:      'สัญญาและข้อตกลง',
    courtFilings:   'เอกสารยื่นศาล',
    identity:       'เอกสารประจำตัว',
    financial:      'บันทึกทางการเงิน',
    reports:        'รายงานและความเห็น',
    evidence:       'พยานหลักฐาน',
    misc:           'เบ็ดเตล็ด',
    inbox:          'กล่องขาเข้า — ยังไม่จัดหมวดหมู่',
  },

  docTypes: {
    contract:          'สัญญา',
    agreement:         'ข้อตกลง',
    court_filing:      'เอกสารยื่นศาล',
    pleading:          'คำฟ้อง / คำให้การ',
    affidavit:         'คำให้การสาบาน',
    correspondence:    'หนังสือโต้ตอบ',
    identity:          'เอกสารประจำตัว',
    financial:         'บันทึกทางการเงิน',
    evidence:          'พยานหลักฐาน',
    deed:              'โฉนด / หนังสือกรรมสิทธิ์',
    power_of_attorney: 'หนังสือมอบอำนาจ',
    report:            'รายงาน',
    opinion:           'ความเห็นทางกฎหมาย',
    permit:            'ใบอนุญาต',
    other:             'อื่นๆ',
  },

  aiStatus: {
    pending:    'รอดำเนินการ',
    processing: 'กำลังจัดหมวดหมู่',
    classified: 'จัดหมวดหมู่แล้ว',
    failed:     'AI ล้มเหลว',
  },

  privilege: {
    privileged:     'ข้อมูลคุ้มครองทางกฎหมาย',
    non_privileged: 'ข้อมูลทั่วไป',
    work_product:   'ผลงานทนายความ',
  },

  documentsTab: {
    inbox:              'กล่องขาเข้า — ยังไม่จัดหมวดหมู่',
    needsReview:        'รอตรวจสอบ',
    newFolder:          'โฟลเดอร์ใหม่',
    buildBundle:        'สร้างชุดเอกสาร',
    uploadHere:         'อัปโหลดที่นี่',
    emptyFolder:        'ไม่มีเอกสารในโฟลเดอร์นี้',
    emptyFolderHint:    'อัปโหลดเอกสารหรือรอให้ AI จัดหมวดหมู่โดยอัตโนมัติ',
    importDocuments:    'นำเข้าเอกสาร',
    dragHere:           'ลากไฟล์หรือโฟลเดอร์มาวางที่นี่',
    dropHere:           'วางไฟล์หรือโฟลเดอร์ที่นี่',
    selectFiles:        'เลือกไฟล์',
    selectFolder:       'เลือกโฟลเดอร์',
    fileTypes:          'PDF, Word, Excel, รูปภาพ — ยอมรับทุกประเภทไฟล์',
    filesTotal:         (n: number, size: string) => `${n} ไฟล์ · รวม ${size}`,
    clearAll:           'ล้างทั้งหมด',
    destinationFolder:  'โฟลเดอร์ปลายทาง',
    letAiClassify:      'ให้ AI จัดหมวดหมู่',
    aiWillFile:         'AI จะอ่านไฟล์และจัดเก็บในโฟลเดอร์ที่เหมาะสม',
    uploadDoneMsg:      (n: number) => `อัปโหลด ${n} ไฟล์แล้ว`,
    aiRunning:          'AI กำลังจัดหมวดหมู่ในเบื้องหลัง — ประเภทเอกสาร คู่กรณี และสรุปจะปรากฏในไม่ช้า',
    createFolder:       'สร้างโฟลเดอร์',
    creating:           'กำลังสร้าง…',
    folderNamePlaceholder: 'เช่น คำสั่งศาล, การยื่นขอวีซ่า…',
    aiCanCreate:        'AI สามารถสร้างโฟลเดอร์โดยอัตโนมัติตามเนื้อหาของเอกสาร',
    folderNameRequired: 'กรุณากรอกชื่อโฟลเดอร์',
    bundleTitle:        'สร้างชุดเอกสารสำหรับการพิจารณา',
    bundleSoon:         'ฟีเจอร์นี้จะพร้อมใช้งานในเวอร์ชันถัดไป',
    bundleStep1:        'ระบุรายละเอียดการพิจารณา',
    bundleStep1desc:    'วันที่ ศาล หมายเลขคดี ผู้พิพากษา ประเภทการพิจารณา',
    bundleStep2:        'เลือกเอกสาร',
    bundleStep2desc:    'เลือกจากโฟลเดอร์ใดก็ได้ — AI แนะนำเอกสารที่เกี่ยวข้อง',
    bundleStep3:        'จัดลำดับและติดป้ายกำกับ',
    bundleStep3desc:    'ลากเพื่อจัดลำดับ กำหนดป้ายกำกับหลักฐาน (Exhibit A / สิ่งที่ส่งมาด้วย ๑)',
    bundleStep4:        'สารบัญอัตโนมัติ',
    bundleStep4desc:    'สร้างจากเลขที่ Bates ป้ายกำกับ และข้อมูลที่ AI ดึงออกมา',
    bundleStep5:        'รวบรวมและพิมพ์',
    bundleStep5desc:    'PDF เดียว: หน้าปก สารบัญ แผ่นแบ่ง เอกสารทั้งหมด — พร้อมเลขหน้า',
    previewEmpty:       'เลือกเอกสารเพื่อดูตัวอย่างที่นี่',
    previewEmptyHint:   'PDF และรูปภาพแสดงแบบ inline ได้ ไฟล์ Word และ Excel แสดงสรุปและข้อมูลของ AI พร้อมลิงก์ดาวน์โหลด',
    bundleHint:         'ใช้ "สร้างชุดเอกสาร" เพื่อรวบรวมเอกสารสำหรับการพิจารณาพร้อมสารบัญและ PDF รวม',
    previewNA:          'ไม่รองรับการแสดงตัวอย่างสำหรับประเภทไฟล์นี้',
    downloadToView:     'ดาวน์โหลดเพื่อดู',
    colBates:           'เลขที่ Bates',
    colDocument:        'เอกสาร',
    colType:            'ประเภท',
    colAiStatus:        'สถานะ AI',
    colDate:            'วันที่',
    colSize:            'ขนาด',
    sectionDetails:     'รายละเอียดเอกสาร',
    sectionSummary:     'สรุปโดย AI',
    labelDocDate:       'วันที่เอกสาร',
    labelUploaded:      'อัปโหลดเมื่อ',
    labelUploadedBy:    'อัปโหลดโดย',
    labelMatter:        'คดีความ',
    labelParties:       'คู่กรณี',
    labelTags:          'แท็ก',
    batesNote:          (prefix: string) => `ทุกไฟล์จะได้รับเลขที่ Bates เฉพาะ (${prefix}-XXXXX) และรอ AI จัดหมวดหมู่ — ประเภท คู่กรณี วันที่ และสรุปจะถูกดึงออกมาโดยอัตโนมัติ`,
    classifying:        (n: number) => `${n} รายการกำลังจัดหมวดหมู่…`,
    documentsCount:     (n: number) => `${n} เอกสาร`,
    docsCount:          (n: number) => `${n} ไฟล์`,
    batesPrefix:        'คำนำหน้า Bates',
    moveToFolder:       'ย้ายไปโฟลเดอร์',
    addToBundle:        'เพิ่มในชุดเอกสาร',
    customFolder:       'กำหนดเอง',
    inboxLabel:         'กล่องขาเข้า — ยังไม่จัดหมวดหมู่',
    uploadingN:         (n: number) => `${n > 1 ? `อัปโหลด ${n} ไฟล์` : 'อัปโหลด'}`,
    errSelectFile:      'กรุณาเลือกอย่างน้อยหนึ่งไฟล์',
    errUploadFailed:    'การอัปโหลดล้มเหลว',
    errSaveFailed:      'การบันทึกล้มเหลว',
    errTranslateFailed: 'การแปลล้มเหลว',
    folderFallback:     'โฟลเดอร์',
  },

  documentsFiling: {
    title:             'ตู้เก็บเอกสาร',
    subtitle:          'เอกสารของลูกความทั้งหมดในดัชนีที่ค้นหาได้พร้อมเลขที่ Bates',
    totalDocs:         (n: number) => `${n} เอกสารจากทุกแฟ้มลูกความ`,
    searchPlaceholder: 'ค้นหาเลขที่ Bates ชื่อ ไฟล์ ลูกความ…',
    filterPrivilege:   'การคุ้มครอง',
    filterDocType:     'ประเภทเอกสาร',
    filterClient:      'ลูกความทั้งหมด',
    filterLang:        'ภาษา',
    allTypes:          'ทุกประเภท',
    allClients:        'ลูกความทั้งหมด',
    allLang:           'ทั้งหมด',
    allPrivilege:      'ทุกระดับ',
    allAi:             'AI ทั้งหมด',
    langEn:            'ภาษาอังกฤษ',
    langTh:            'ภาษาไทย',
    langMixed:         'ผสม',
    langOther:         'อื่นๆ',
    filterTranslated:  'ฉบับแปล',
    filterSource:      'เอกสารต้นฉบับ',
    results:           (n: number) => `${n} รายการ`,
    shown:             'รายการ',
    sortNewest:        'ใหม่ก่อน',
    sortOldest:        'เก่าก่อน',
    sortNameAZ:        'ชื่อ ก–ฮ',
    sortBatesAsc:      'Bates จากน้อยไปมาก',
    sortBy:            'เรียงตาม',
    colBates:          'เลขที่ Bates',
    colBatesShort:     'Bates #',
    colDocument:       'เอกสาร / ลูกความ',
    colDocumentShort:  'เอกสาร',
    colType:           'ประเภท',
    colClient:         'ลูกความ',
    colPrivilege:      'การคุ้มครอง',
    colAi:             'AI',
    colLang:           'ภาษา',
    colDate:           'วันที่',
    colSize:           'ขนาด',
    colUploaded:       'อัปโหลด',
    detectedLang:      'ภาษาที่ตรวจพบ',
    isTranslation:     'ฉบับแปล',
    noDocuments:       'ไม่พบเอกสาร',
    translateDoc:      'แปลเอกสาร',
    downloadView:      'ดาวน์โหลด / ดู',
    uploadViaFolder:   'อัปโหลดผ่านแฟ้มลูกความ',
    statTotal:         'เอกสารทั้งหมด',
    statClassified:    'AI จัดหมวดหมู่แล้ว',
    statPending:       'รอตรวจสอบ',
    statPrivileged:    'ข้อมูลคุ้มครอง',
    sectionSummary:    'สรุปโดย AI',
    sectionDetails:    'รายละเอียด',
    labelClient:       'ลูกความ',
    labelDocDate:      'วันที่เอกสาร',
    labelLanguage:     'ภาษา',
    labelUploadedBy:   'อัปโหลดโดย',
    labelParties:      'คู่กรณี',
    labelTags:         'แท็ก',
    noSummary:         'ยังไม่มีสรุป',
    awaitingAi:        'รอการจัดหมวดหมู่โดย AI',
    aiConfidence:      'ความมั่นใจของ AI',
    signed:            'ลงนามแล้ว',
  },

  translationDialog: {
    title:         'แปลเอกสาร',
    enToTh:        'อังกฤษ → ไทย',
    thToEn:        'ไทย → อังกฤษ',
    idleHint:      (from: string, to: string) => `แปลเอกสารนี้จาก${from}เป็น${to}ด้วย Claude AI`,
    pdfHint:       ' ข้อความเต็มของเอกสารจะถูกดึงออกมาและแปล',
    summaryHint:   ' จะแปลเฉพาะสรุป (ต้องเป็นไฟล์ PDF เพื่อแปลข้อความเต็ม)',
    translating:   'กำลังแปลด้วย Claude AI…',
    summaryOnly:   'ไม่รองรับการดึงข้อความเต็มสำหรับประเภทไฟล์นี้ — แสดงเฉพาะสรุปที่แปลแล้ว',
    savedSuccess:  'บันทึกฉบับแปลลงในแฟ้มลูกความแล้ว',
    translationLabel: (lang: string) => `ฉบับแปล${lang}`,
    summaryLabel:  (lang: string) => `สรุป${lang}`,
    saveToFolder:  'บันทึกลงโฟลเดอร์',
    thai:          'ภาษาไทย',
    english:       'ภาษาอังกฤษ',
  },

  matters: {
    title:           'คดีความ',
    newMatter:       'คดีใหม่',
    searchPlaceholder: 'ค้นหาคดีความ…',
    filterAll:       'ทุกสถานะ',
    filterOpen:      'เปิดอยู่',
    filterPending:   'รอดำเนินการ',
    filterClosed:    'ปิดแล้ว',
    filterArchived:  'เก็บถาวร',
    areaAll:         'ทุกสาขา',
    areaImmigration: 'ตรวจคนเข้าเมือง',
    areaCorporate:   'กฎหมายบริษัท',
    areaCivil:       'คดีแพ่ง',
    areaProperty:    'กฎหมายที่ดิน',
    areaFamily:      'กฎหมายครอบครัว',
    areaEmployment:  'กฎหมายแรงงาน',
    areaCriminal:    'คดีอาญา',
    areaOther:       'อื่นๆ',
    billingHourly:   'รายชั่วโมง',
    billingFixed:    'ค่าธรรมเนียมคงที่',
    billingRetainer: 'เงินประกัน',
    billingContingency: 'ตามผลคดี',
    billingHybrid:   'ผสม',
    colNumber:       'หมายเลข',
    colTitle:        'ชื่อคดี / ลูกความ',
    colArea:         'สาขากฎหมาย',
    colStatus:       'สถานะ',
    colBilling:      'การเรียกเก็บ',
    colOpened:       'วันที่เปิด',
    colNextAction:   'การดำเนินการถัดไป',
    colCourtRef:     'อ้างอิงศาล',
    noMatters:       'ไม่พบคดีความ',
    addFirst:        'เพิ่มคดีแรก',
    matterNumberAuto: 'หมายเลขคดีจะถูกกำหนดโดยอัตโนมัติ',
    closeMatter:     'ปิดคดี',
    reopenMatter:    'เปิดคดีอีกครั้ง',
    closedOutcome:   'ผลของคดี',
    confirmClose:    'ปิดคดีนี้ใช่หรือไม่?',
    nextAction:      'การดำเนินการถัดไป',
    nextActionDate:  'วันที่ดำเนินการถัดไป',
    actionHearing:   'นัดพิจารณา',
    actionDeadline:  'กำหนดส่ง',
    actionFiling:    'การยื่น',
    actionReview:    'การตรวจสอบ',
    labelTitle:      'ชื่อคดี',
    labelClient:     'ลูกความ',
    labelArea:       'สาขากฎหมาย',
    labelBilling:    'ประเภทการเรียกเก็บ',
    labelHourly:     'อัตราค่าจ้างรายชั่วโมง',
    labelFixed:      'ค่าธรรมเนียมคงที่',
    labelAttorney:   'ทนายความผู้รับผิดชอบ',
    labelCourtRef:   'อ้างอิงศาล',
    labelOpenDate:   'วันที่เปิดคดี',
    results:         (n: number) => `${n} คดี`,
    subtitle:        (n: number) => `${n} คดีในระบบ`,
    overdueSubtitle: (n: number) => `· ${n} การดำเนินการเกินกำหนด`,
    statOpen:        'คดีที่เปิดอยู่',
    statPending:     'รอดำเนินการ',
    statOverdue:     'การดำเนินการเกินกำหนด',
    statBilled:      'ยอดเรียกเก็บรวม',
    statBilledSub:   'จากคดีที่ดำเนินอยู่ทั้งหมด',
    searchPlaceholderFull: 'ค้นหาคดีความ ลูกความ ทนายความ…',
    shown:           'แสดง',
    colMatterNumber: 'หมายเลขคดี',
    colClient:       'ลูกความ',
    colAttorney:     'ทนายความ',
    colBilled:       'เรียกเก็บแล้ว',
    openMatterTooltip:  'เปิดคดี',
    openNewMatterTitle: 'เปิดคดีใหม่',
    labelMatterTitle:   'ชื่อคดี',
    labelCurrency:      'สกุลเงิน',
    courtAgencyRef:     'อ้างอิงศาล / หน่วยงาน',
    labelNotes:         'หมายเหตุ',
    creating:           'กำลังสร้าง…',
    openMatterBtn:      'เปิดคดี',
    closeDialogTitle:   'ปิดคดี',
    closingNote:        (title: string, num: string) => `กำลังปิด ${title} (${num})`,
    outcomeNotes:       'ผลคดี / หมายเหตุ',
    closingStatus:      'กำลังปิด…',
    closeMatterBtn:     'ปิดคดี',
    errSelectClient:    'กรุณาเลือกลูกความ',
    errTitleRequired:   'กรุณากรอกชื่อคดี',
    errAttorneyRequired: 'กรุณากรอกชื่อทนายความผู้รับผิดชอบ',
    errCreateFailed:    'ไม่สามารถสร้างคดีได้',
    paid:               'ชำระแล้ว',
  },

  dashboard: {
    greeting:           'สวัสดีตอนเช้า ท่านทนาย',
    statActiveMatters:  'คดีที่ดำเนินอยู่',
    statAllAreas:       'ทุกสาขากฎหมาย',
    statHearings:       'นัดพิจารณาสัปดาห์นี้',
    statHearingsSub:    'ยืนยันแล้วและรอดำเนินการ',
    statUnbilled:       'ชั่วโมงที่ยังไม่ได้เรียกเก็บ',
    statUnbilledSub:    'พร้อมออกใบแจ้งหนี้',
    statRevenue:        'รายได้เดือนนี้',
    statRevenueSub:     '+12% จากเดือนก่อน',
    urgentAlerts:       'การแจ้งเตือนเร่งด่วน',
    nextHearing:        'นัดพิจารณาถัดไป',
    noHearings:         'ไม่มีนัดพิจารณา',
    viewMatter:         'ดูคดีความ',
    aiBrief:            'สรุปโดย AI',
    upcomingHearings:   'นัดพิจารณาที่กำลังจะมาถึง',
    addHearing:         'เพิ่มนัดพิจารณา',
    colDateTime:        'วันที่ & เวลา',
    colMatter:          'คดีความ',
    colClient:          'ลูกความ',
    colCourt:           'ศาล',
    colJudge:           'ผู้พิพากษา',
    colStatus:          'สถานะ',
    noUpcomingHearings: 'ไม่มีนัดพิจารณาที่กำลังจะมาถึง',
    activeMatters:      'คดีที่ดำเนินอยู่',
    agentActivity:      'กิจกรรม AI Agent',
    billingSnapshot:    'สรุปการเรียกเก็บค่าธรรมเนียม',
    thisMonth:          'เดือนนี้',
    outstanding:        'ค้างชำระ',
    overdueLabel:       'เกินกำหนด',
    lowRetainers:       'เงินประกันต่ำ',
    allRetainersOk:     'เงินประกันทุกรายการอยู่ในเกณฑ์ปกติ',
    fullReport:         'รายงานเต็ม',
    inbox:              'กล่องจดหมาย',
    unread:             (n: number) => `${n} ยังไม่ได้อ่าน`,
    openInbox:          'เปิดกล่องจดหมาย',
    targetProgress:     (pct: number, target: string) => `${pct}% ของเป้าหมาย ${target}`,
    nextEvent:          'นัดหมายถัดไป',
    in:                 'อีก',
    aiTitle:            'ถามผู้ช่วย AI',
    aiPlaceholder:      'เช่น มีอีเมลค้างที่ต้องตอบไหม?',
    aiFollowUp:         'ถามเพิ่มเติม…',
    aiSend:             'ส่ง',
    aiThinking:         'กำลังคิด…',
    aiClearConv:        'ล้างการสนทนา',
    aiAttach:           'แนบเอกสาร (PDF, รูปภาพ)',
    aiError:            'เกิดข้อผิดพลาดในการเชื่อมต่อ — กรุณาลองใหม่',
    aiQuick1:           'มีอีเมลค้างไหม?',
    aiQuick2:           'นัดพิจารณาสัปดาห์นี้',
    aiQuick3:           'สรุปคดีที่เปิดอยู่',
    aiQuick4:           'ตรวจสอบใบแจ้งหนี้เกินกำหนด',
    emailTagOpposing:   'คู่กรณี',
    emailTagGovernment: 'ราชการ',
    emailTagClient:     'ลูกความ',
    emailTagCourt:      'ศาล',
    calFullView:        'มุมมองเต็ม',
    calFullscreen:      'เต็มหน้าจอ',
    calExitFullscreen:  'ออกจากเต็มหน้าจอ',
    calReviewFolder:    'ดูโฟลเดอร์ลูกความ',
    calNextPrefix:      'ถัดไป',
  },

  calendar: {
    title:        'ปฏิทิน',
    hearing:      'นัดพิจารณา',
    deadline:     'กำหนดส่ง',
    filing:       'การยื่น',
    review:       'การตรวจสอบ',
    consultation: 'ปรึกษาหารือ',
    meeting:      'ประชุม',
    call:         'โทรศัพท์',
    signing:      'ลงนาม',
  },

  billing: {
    title:          'การเรียกเก็บค่าธรรมเนียม',
    timeEntries:    'บันทึกเวลา',
    invoices:       'ใบแจ้งหนี้',
    retainers:      'เงินประกัน',
    outstanding:    'ค้างชำระ',
    overdue:        'เกินกำหนด',
    hours:          'ชม.',
  },

  compare: {
    title:            'เปรียบเทียบแพลตฟอร์ม',
    subtitle:         'Soi96 Legal เทียบกับ TABS3, LegalTrek และ LexRing — ด้านการบริหารคดี, AI, การสื่อสาร, การเรียกเก็บ, เอกสาร, ความปลอดภัย และราคา',
    thisPlatform:     'แพลตฟอร์มนี้',
    usBillingPm:      'ระบบกฎหมายสหรัฐ',
    thaiSaas:         'Thai SaaS',
    mostPopular:      'ยอดนิยม',
    pricingTitle:     'Soi96 Legal — ราคา',
    pricingSubtitle:  'รายเดือนแบบ Flat — ราคาเดียวต่อสำนักงาน ไม่คิดต่อที่นั่ง เพิ่มทนายได้ไม่จำกัด',
    perMonth:         '/เดือน',
    seatAtty1:        '1 ทนายความ',
    seatUpTo5:        'สูงสุด 5 ที่นั่ง',
    seatUnlimited:    'ไม่จำกัดที่นั่ง',
    costTitle:        'เปรียบเทียบค่าใช้จ่ายจริง',
    costSubtitle:     'TABS3 Cloud อัตราแพ็กเกจ Billing เท่านั้น ($89/user/เดือน) LegalTrek และ LexRing คิดต่อที่นั่ง อัตราแลกเปลี่ยน ~฿36/USD',
    costFootnote:     'TABS3 OnSite เริ่มต้น $40/user/เดือน + $32/user สำหรับ PracticeMaster TABS3 Cloud แพ็กเกจเต็ม: $124/user/เดือน ค่าติดตั้ง LegalTrek ฿15,000–30,000 ไม่รวมด้านบน',
    colFirmSize:      'ขนาดสำนักงาน',
    badgeYes:         'รองรับ',
    badgePartial:     'บางส่วน',
    badgeNo:          'ไม่รองรับ',
    badgePlanned:     'อยู่ในแผน',
    legendYes:        'รองรับครบถ้วน',
    legendPartial:    'รองรับบางส่วน',
    legendPlanned:    'อยู่ใน Roadmap',
    legendNo:         'ไม่มีในระบบ',
    hoverHint:        'วางเมาส์บน badge เพื่อดูรายละเอียด',
    catPractice:      'การบริหารคดี',
    catAi:            'AI และระบบอัตโนมัติ',
    catComms:         'การสื่อสาร',
    catBilling:       'การเรียกเก็บและการเงิน',
    catDocuments:     'เอกสาร',
    catSecurity:      'ความปลอดภัยและการติดตั้ง',
    catPricing:       'ราคา',
    planSolo:         'Solo',
    planFirm:         'Firm',
    planComplete:     'Complete',
    soloF1: 'ลูกความ, คดี และปฏิทิน',
    soloF2: 'ตู้เอกสาร (ไฟล์)',
    soloF3: 'การเรียกเก็บและใบแจ้งหนี้',
    soloF4: 'หลายสกุลเงิน',
    soloF5: 'บัญชีเงินประกัน (Trust/Retainer)',
    soloF6: 'เข้ารหัสข้อมูลที่จัดเก็บ',
    soloF7: 'REST API ครบวงจร',
    soloNI1: 'AI Agents',
    soloNI2: 'Comms Agent',
    soloNI3: 'ข้อมูลเชิงลึกผู้พิพากษา / ฝ่ายตรงข้าม',
    firmF1: 'ทุกอย่างใน Solo',
    firmF2: 'จำแนกประเภทเอกสารด้วย AI',
    firmF3: 'AI ภาษาไทย / อังกฤษ',
    firmF4: 'ใบเสนอราคาจาก AI',
    firmF5: 'แจ้งเตือนกำหนดส่งล่วงหน้า',
    firmF6: 'ที่นั่งเจ้าหน้าที่ไม่จำกัด',
    firmNI1: 'Comms Agent (Phase 2)',
    firmNI2: 'ข้อมูลผู้พิพากษา / ฝ่ายตรงข้าม (Phase 2)',
    completeF1: 'ทุกอย่างใน Firm',
    completeF2: 'Comms Agent (อีเมล + LINE)',
    completeF3: 'โปรไฟล์เชิงลึกผู้พิพากษา',
    completeF4: 'โปรไฟล์เชิงลึกฝ่ายตรงข้าม',
    completeF5: 'สรุปกลยุทธ์ข้ามคดี',
    completeF6: 'ซิงค์ Google Calendar',
    completeF7: 'พอร์ทัลลูกความ',
    fMatterTracking:       'ติดตามคดี / งาน',
    fClientFolderMgmt:     'จัดการโฟลเดอร์ลูกความ',
    fMatterStatusWorkflow: 'ขั้นตอนสถานะคดีพร้อมตัวสร้าง Flowchart',
    fWorkflowBuilder:      'ตัวสร้าง Workflow แบบภาพ (Flowchart / Node Editor)',
    fObligationTimeline:   'ไทม์ไลน์พันธกรณีและปฏิทินการปฏิบัติตามกฎ',
    fPracticeAreaTemplates:'เทมเพลตตามสาขากฎหมาย',
    fThaiCourtMgmt:        'บริหารจัดการคดีในศาลไทย',
    fConflictCheck:        'ตรวจสอบความขัดแย้งทางผลประโยชน์',
    fCourtHearingCalendar: 'ปฏิทินนัดพิจารณาคดี',
    fPartyDirectory:       'ทะเบียนคู่กรณีและทนายความฝ่ายตรงข้าม',
    fJudicialIntel:        'ข้อมูลเชิงลึกผู้พิพากษา (ประวัติการทำงาน)',
    fAdversaryIntel:       'ข้อมูลเชิงลึกฝ่ายตรงข้าม (ทนาย / สำนักงาน)',
    fMultiMatterView:      'ดูหลายคดีต่อลูกความ',
    fCrossMatterIntel:     'ข้อมูลเชิงกลยุทธ์ข้ามคดีเมื่อเปิดคดีใหม่',
    fBoiImmigration:       'กระบวนการ BOI / ตรวจคนเข้าเมืองเฉพาะทาง',
    fMatterRefInComms:     'อ้างอิงคดีในหนังสือโต้ตอบทั้งหมด',
    fAiAssistant:          'ผู้ช่วย AI (ภาษาธรรมชาติ)',
    fMultiAgentHierarchy:  'ระบบหลาย Agent แบบลำดับชั้น',
    fEmailTriageRouting:   'คัดกรองและจัดเส้นทางอีเมลอัตโนมัติ',
    fDocClassification:    'จำแนกประเภทเอกสาร (ประเภท / อ้างอิงคดี / สาขา)',
    fRagLookup:            'ค้นหากฎหมายและคำพิพากษา (RAG)',
    fPerClientAgent:       'AI Agent รายลูกความ (Client Manager)',
    fAiMatterBrief:        'สรุปคดีจาก AI เมื่อเปิดคดีใหม่',
    fAiBillingQuote:       'ใบเสนอราคาจาก AI',
    fProactiveAlerts:      'แจ้งเตือนกำหนดส่งและเงินประกันล่วงหน้า',
    fOnboardingAgent:      'Agent รับข้อมูลใหม่ (Onboarding)',
    fAttorneyApproval:     'ด่านอนุมัติทนายความก่อนดำเนินการ AI',
    fForecastConfirmLearn: 'วงจรการเรียนรู้ Forecast → Confirm → Learn',
    fIntelligenceCompounds:'ความรู้เชิงลึกสะสมเพิ่มขึ้นเรื่อย ๆ',
    fThaiAiHandling:       'AI รองรับภาษาไทย',
    fImapPolling:          'รับอีเมลขาเข้า (IMAP)',
    fSmtpRelay:            'ส่งอีเมลขาออก (SMTP Relay)',
    fSmtpListener:         'รับอีเมลโดยตรงผ่าน SMTP Listener',
    fEmailThreadedToMatter:'เชื่อมอีเมลกับลูกความและคดีอัตโนมัติ',
    fFirmInbox:            'กล่องจดหมายรวมสำนักงาน พร้อมคิวจัดเส้นทาง',
    fPerClientCommsTab:    'แท็บสื่อสารรายลูกความ',
    fComposeReply:         'เขียน / ตอบอีเมลภายในแพลตฟอร์ม',
    fEmailAssocEngine:     'เครื่องมือจับคู่อีเมลอัตโนมัติ',
    fLineIntegration:      'รองรับ LINE',
    fGoogleCalendarSync:   'ซิงค์ Google Calendar แบบสองทิศทาง',
    fClientPortal:         'พอร์ทัลลูกความ (ข้อความปลอดภัย)',
    fTimeEntryLogging:     'บันทึกชั่วโมงการทำงาน',
    fExpenseTracking:      'ติดตามค่าใช้จ่าย',
    fInvoicePdf:           'ออกใบแจ้งหนี้ (PDF)',
    fMultiBillingTypes:    'หลายรูปแบบการเรียกเก็บต่อลูกความ',
    fTrustRetainerMgmt:    'บัญชีเงินประกัน (Trust / Retainer)',
    fMultiCurrencyBilling: 'เรียกเก็บหลายสกุลเงิน',
    fArOverdueTracking:    'ติดตามลูกหนี้ / ค้างชำระ',
    fBillingSchedule:      'กำหนดตารางออกบิล',
    fRetainerTopupAlerts:  'แจ้งเตือนเติมเงินประกัน',
    fAiBillingAgent:       'ใบเสนอราคาจาก AI (Billing Agent)',
    fClientBillingNotes:   'บันทึกการเรียกเก็บรายคดีต่อลูกความ',
    fGeneralLedger:        'บัญชีแยกประเภท / บัญชีสำนักงาน',
    fChequeWriting:        'เขียนเช็ค',
    fBankReconciliation:   'กระทบยอดบัญชีธนาคาร',
    fDocUpload:            'อัปโหลดและจัดเก็บเอกสาร',
    fDocLinkedToMatter:    'เชื่อมโยงเอกสารกับคดี',
    fDocTypesMetadata:     'ประเภทเอกสารและข้อมูลประกอบ',
    fAiDocClassification:  'จำแนกประเภทเอกสารด้วย AI',
    fThaiDocSupport:       'รองรับเอกสารภาษาไทย',
    fPdfGeneration:        'สร้าง PDF (ใบแจ้งหนี้ สรุปคดี)',
    fDocTemplates:         'เทมเพลตเอกสาร',
    fVersionControl:       'ควบคุมเวอร์ชันเอกสาร',
    fFullTextSearch:       'ค้นหาข้อความในเอกสารทั้งหมด',
    fSelfHosted:           'ติดตั้งบนเซิร์ฟเวอร์ของตัวเอง',
    fCloudSaas:            'ระบบคลาวด์ / SaaS',
    fDataJurisdiction:     'ข้อมูลอยู่ในประเทศของคุณ',
    fRbac:                 'ควบคุมสิทธิ์ตามบทบาท',
    fAuditTrail:           'ประวัติกิจกรรม / บันทึกการตรวจสอบ',
    fCustomDomain:         'โดเมนของตัวเอง',
    fRestApi:              'REST API ครบวงจร',
    fOpenCodebase:         'โค้ดเปิดเผย (ไม่ผูกมัดเวนเดอร์)',
    fMobileApp:            'แอปมือถือ',
    fMultiLangUi:          'ภาษา UI หลายภาษา (ไทย + อังกฤษ)',
    fFieldLevelEncryption: 'เข้ารหัสข้อมูลส่วนบุคคลระดับฟิลด์',
    fSearchOnEncrypted:    'ค้นหาบนข้อมูลที่เข้ารหัสได้',
    fKeysSeparateFromData: 'คีย์เข้ารหัสแยกจากข้อมูล',
    fPricingModel:         'รูปแบบราคา',
    fSoloEntryPrice:       'ราคาเริ่มต้น (ทนายเดี่ยว)',
    fThreeAttorneyCost:    'ทีม 3 ทนาย — ค่าใช้จ่าย/เดือน',
    fFiveAttorneyCost:     'ทีม 5 ทนาย — ค่าใช้จ่าย/เดือน',
    fPerSeatFees:          'ค่าธรรมเนียมต่อที่นั่ง',
    fAiIncluded:           'AI รวมอยู่ในราคา',
    fSetupFee:             'ค่าติดตั้ง / ออนบอร์ดดิ้ง',
    fAnnualContract:       'ต้องทำสัญญารายปี',
    fDataMigration:        'ช่วยเหลือการย้ายข้อมูล',
    fVendorLockIn:         'ความเสี่ยงจากการผูกมัดเวนเดอร์',
    fLocalThaiSupport:     'ทีมสนับสนุนภาษาไทย',
  },

  migrate: {
    title:                'นำเข้าข้อมูล',
    subtitle:             'นำเข้าลูกความและคดีจาก TABS3, LegalTrek หรือ LexRing อัปโหลด CSV ยืนยันการแมปคอลัมน์ และนำเข้าในขั้นตอนเดียว',
    sourceSystem:         'ระบบต้นทาง',
    srcTabs3Desc:         'ซอฟต์แวร์กฎหมายและการเรียกเก็บเงิน (สหรัฐ)',
    srcLegalTrekDesc:     'ระบบสำนักงานกฎหมายไทย (LegalTrek)',
    srcLexRingDesc:       'แพลตฟอร์มสำนักงานกฎหมายไทย (LexRing)',
    uploadTitle:          'อัปโหลดไฟล์ CSV',
    uploadSubtitle:       (src: string) => `ส่งออกรายชื่อลูกความและคดีจาก ${src} เป็น CSV แล้วอัปโหลดที่นี่`,
    clientsLabel:         'ลูกความ',
    mattersLabel:         'คดี',
    mattersOptional:      '(ไม่บังคับ)',
    dropClient:           'วางไฟล์ CSV ลูกความที่นี่',
    dropMatter:           'วางไฟล์ CSV คดีที่นี่',
    clientPathTabs3:      'TABS3 → Reports → Client List → Export CSV',
    clientPathLegalTrek:  'LegalTrek → Clients → Export',
    clientPathLexRing:    'LexRing → ลูกความ → ส่งออก CSV',
    matterPathTabs3:      'TABS3 → Reports → Matter List → Export CSV',
    matterPathLegalTrek:  'LegalTrek → Cases → Export',
    matterPathLexRing:    'LexRing → คดี → ส่งออก CSV',
    changeFile:           'เปลี่ยน',
    rowsInfo:             (rows: number, cols: number) => `${rows} แถว · ${cols} คอลัมน์`,
    defaultAttorneyLabel: 'ทนายความผู้รับผิดชอบ (ค่าเริ่มต้น)',
    defaultAttorneyHint:  'ใช้เมื่อข้อมูลต้นทางไม่ระบุทนายความ',
    mappingTitle:         'การแมปคอลัมน์',
    mappingSubtitle:      (src: string) => `ตรวจพบอัตโนมัติจากส่วนหัวของ ${src} ปรับแก้หากไม่ตรงด้านล่าง`,
    mappingHide:          'ซ่อน',
    mappingReview:        'ตรวจสอบ',
    colSoiField:          'ฟิลด์ Soi96',
    colSourceColumn:      'คอลัมน์ต้นทาง',
    colStatus:            'สถานะ',
    skipColumn:           '— ข้าม —',
    clientRows:           (n: number) => `ลูกความ — ${n} แถว`,
    matterRows:           (n: number) => `คดี — ${n} แถว`,
    readyTitle:           (clients: number, matters: number | null) =>
      `พร้อมนำเข้า: ${clients} ลูกความ${matters !== null ? ` + ${matters} คดี` : ''}`,
    readyHint:            'ระเบียนซ้ำจะถูกข้าม สามารถรันซ้ำได้อย่างปลอดภัย',
    importing:            'กำลังนำเข้า…',
    importBtn:            (src: string) => `นำเข้าจาก ${src}`,
    resultTitle:          'นำเข้าเสร็จสิ้น',
    clientsImported:      'ลูกความที่นำเข้า',
    clientsSkipped:       'ลูกความที่ข้าม',
    mattersImported:      'คดีที่นำเข้า',
    mattersSkipped:       'คดีที่ข้าม',
    errTitle:             (n: number) => `ข้อผิดพลาด (${n})`,
    warnTitle:            (n: number) => `คำเตือน (${n})`,
    warnMore:             (n: number) => `…และอีก ${n} รายการ`,
    networkError:         'เกิดข้อผิดพลาดเครือข่าย — กรุณาลองใหม่',
    allSuccess:           'นำเข้าทุกระเบียนสำเร็จโดยไม่มีปัญหา',
    cfExternalId:         'รหัสลูกความ (ต้นทาง)',
    cfClientType:         'ประเภทลูกความ',
    cfFirstName:          'ชื่อ',
    cfLastName:           'นามสกุล',
    cfCompanyName:        'ชื่อบริษัท',
    cfEmail:              'อีเมล',
    cfPhone:              'โทรศัพท์',
    cfAddress:            'ที่อยู่',
    cfNationality:        'สัญชาติ',
    cfPassportNumber:     'หนังสือเดินทาง / เลขบัตร',
    cfResponsibleAttorney:'ทนายผู้รับผิดชอบ',
    cfOriginatingAttorney:'ทนายผู้แนะนำ',
    cfStatus:             'สถานะ',
    cfEngagementDate:     'วันที่รับเป็นลูกความ',
    cfNotes:              'หมายเหตุ',
    mfExternalClientId:   'รหัสลูกความ (ต้นทาง)',
    mfExternalMatterId:   'รหัสคดี (ต้นทาง)',
    mfTitle:              'ชื่อคดี',
    mfPracticeArea:       'สาขากฎหมาย',
    mfSubType:            'ประเภทย่อย',
    mfStatus:             'สถานะ',
    mfResponsibleAttorney:'ทนายผู้รับผิดชอบ',
    mfOpenedAt:           'วันที่เปิดคดี',
    mfClosedAt:           'วันที่ปิดคดี',
    mfNotes:              'หมายเหตุ',
  },

  formTemplates: {
    title:                'แบบฟอร์มอัตโนมัติ',
    subtitle:             'กรอกแบบฟอร์มราชการและเอกสารมาตรฐานจากข้อมูลลูกความและคดีโดยอัตโนมัติ',
    allAreas:             'ทุกสาขากฎหมาย',
    noTemplates:          'ไม่พบเทมเพลตแบบฟอร์ม',
    noTemplatesHint:      'เพิ่มเทมเพลตผ่านแผงผู้ดูแลระบบเพื่อเปิดใช้งานการสร้างแบบฟอร์มอัตโนมัติ',
    templateActive:       'ใช้งานอยู่',
    templateInactive:     'ปิดใช้งาน',
    fields:               (n: number) => `${n} ฟิลด์`,
    generateBtn:          'สร้างแบบฟอร์ม',
    generating:           'กำลังสร้าง…',
    generateSuccess:      'สร้างและดาวน์โหลดแบบฟอร์มสำเร็จ',
    generateError:        'ไม่สามารถสร้างแบบฟอร์มได้',
    uploadTemplateBtn:    'อัปโหลดเทมเพลต PDF',
    uploadTitle:          'อัปโหลด PDF เทมเพลตเปล่า',
    uploadHint:           'อัปโหลด PDF แบบฟอร์มราชการหรือมาตรฐานที่ยังไม่ได้กรอก จะแมปพิกัดฟิลด์หลังอัปโหลด',
    mapFieldsTitle:       'แมปฟิลด์',
    mapFieldsSubtitle:    'คลิกตำแหน่งบน PDF เพื่อวางฟิลด์ จากนั้นกำหนดแหล่งข้อมูล',
    addFieldBtn:          'เพิ่มฟิลด์',
    fieldLabel:           'ป้ายกำกับ',
    fieldDataSource:      'แหล่งข้อมูล',
    fieldPage:            'หน้า',
    fieldX:               'X (จุด)',
    fieldY:               'Y (จุด)',
    fieldFontSize:        'ขนาดตัวอักษร',
    fieldMaxLength:       'ความยาวสูงสุด',
    fieldDateFormat:      'รูปแบบวันที่',
    fieldStaticValue:     'ข้อความคงที่',
    dsClientFirstName:    'ลูกความ — ชื่อ',
    dsClientLastName:     'ลูกความ — นามสกุล',
    dsClientCompany:      'ลูกความ — ชื่อบริษัท',
    dsClientPassport:     'ลูกความ — หนังสือเดินทาง / บัตรประชาชน',
    dsClientNationality:  'ลูกความ — สัญชาติ',
    dsClientDOB:          'ลูกความ — วันเกิด',
    dsClientVisaType:     'ลูกความ — ประเภทวีซ่า',
    dsClientVisaNumber:   'ลูกความ — เลขวีซ่า',
    dsClientVisaExpiry:   'ลูกความ — วันหมดอายุวีซ่า',
    dsClientEmail:        'ลูกความ — อีเมล',
    dsClientPhone:        'ลูกความ — โทรศัพท์',
    dsClientAddress:      'ลูกความ — ที่อยู่',
    dsMatterTitle:        'คดี — ชื่อคดี',
    dsMatterNumber:       'คดี — หมายเลขคดี',
    dsMatterPracticeArea: 'คดี — สาขากฎหมาย',
    dsMatterOpenedDate:   'คดี — วันที่เปิดคดี',
    dsStatic:             'ข้อความคงที่',
    logTitle:             'ประวัติการสร้างแบบฟอร์ม',
    logEmpty:             'ยังไม่มีแบบฟอร์มที่สร้างสำหรับคดีนี้',
    logGenerated:         'สร้างเมื่อ',
    logDownload:          'ดาวน์โหลด',
    practiceAreaUniversal:'ทั่วไป',
    previewBtn:           'ดูตัวอย่าง',
    editFieldsBtn:        'แก้ไขฟิลด์',
    stockLibraryTab:      'แบบฟอร์มมาตรฐาน',
    customTab:            'แบบฟอร์มกำหนดเอง',
    stockBadge:           'มาตรฐาน',
    calibrationWarning:   'ยังไม่ได้ตรวจสอบพิกัด',
    calibrationNote:      'ตำแหน่งฟิลด์เป็นการประมาณ กรุณาตรวจสอบกับ PDF ทางการก่อนส่งหน่วยงานราชการ',
    sourceUrl:            'แหล่งที่มาทางการ',
    refreshPdfBtn:        'ดาวน์โหลด PDF ใหม่',
    stockCount:           (n: number) => `มีแบบฟอร์มราชการและกฎหมายมาตรฐาน ${n} แบบ`,
    isSystemNote:         'แบบฟอร์มระบบ — ลบไม่ได้',
    calibrateBtn:         'รัน Calibration Agent',
    calibrateRunning:     'Agent กำลังทำงาน…',
    calibrateStatus:      'สถานะการ Calibrate',
    calibrateStarted:     'เริ่มเมื่อ',
    calibrateFinished:    'เสร็จเมื่อ',
    calAcroform:          'AcroForm (แม่นยำ)',
    calCoordinate:        'พิกัด (ประมาณ)',
    calSkipped:           'ข้าม',
    calErrors:            'ข้อผิดพลาด',
    calForce:             're-calibrate ทั้งหมด',
  },

  workflows: {
    title:                'เวิร์กโฟลว์และรายการตรวจสอบ',
    subtitle:             'คำแนะนำขั้นตอนเพื่อให้ไม่พลาดงานสำคัญ',
    noTemplates:          'ไม่พบเทมเพลตเวิร์กโฟลว์',
    allAreas:             'ทุกสาขากฎหมาย',
    steps:                (n: number) => `${n} ขั้นตอน`,
    mandatoryBadge:       'บังคับ',
    applyBtn:             'นำเวิร์กโฟลว์ไปใช้',
    applyTitle:           'นำเวิร์กโฟลว์ไปใช้กับคดี',
    applySubtitle:        'เลือกเทมเพลตเวิร์กโฟลว์เพื่อสร้างรายการตรวจสอบสำหรับคดีนี้',
    applySelectLabel:     'เลือกเทมเพลต',
    applyConfirm:         'นำไปใช้',
    applySuccess:         (name: string) => `นำเวิร์กโฟลว์ "${name}" ไปใช้แล้ว`,
    applyError:           'ไม่สามารถนำเวิร์กโฟลว์ไปใช้ได้',
    checklistTitle:       'เวิร์กโฟลว์ที่ใช้งานอยู่',
    noWorkflows:          'ไม่มีเวิร์กโฟลว์สำหรับคดีนี้',
    noWorkflowsHint:      'นำเทมเพลตเวิร์กโฟลว์ไปใช้เพื่อเริ่มต้น',
    workflowCompleted:    'เสร็จสิ้น',
    workflowActive:       'กำลังดำเนินการ',
    statusPending:        'รอดำเนินการ',
    statusInProgress:     'กำลังดำเนินการ',
    statusCompleted:      'เสร็จสิ้น',
    statusSkipped:        'ข้าม',
    markComplete:         'ทำเครื่องหมายเสร็จ',
    markInProgress:       'ทำเครื่องหมายกำลังดำเนินการ',
    skipStep:             'ข้าม',
    generateFormBtn:      'สร้างแบบฟอร์ม',
    stepNotes:            'หมายเหตุ',
    stepDue:              'กำหนด',
    stepCompletedBy:      'เสร็จโดย',
    overdueTitle:         'ขั้นตอนที่เกินกำหนด',
    overdueEmpty:         'ไม่มีขั้นตอนที่เกินกำหนด',
    overdueViewMatter:    'ดูคดี',
    createTemplateBtn:    'เทมเพลตใหม่',
    createTemplateTitle:  'สร้างเทมเพลตเวิร์กโฟลว์',
    editTemplateTitle:    'แก้ไขเทมเพลตเวิร์กโฟลว์',
    templateName:         'ชื่อเทมเพลต',
    templateDescription:  'คำอธิบาย',
    templatePracticeArea: 'สาขากฎหมาย',
    templateIsSystem:     'เทมเพลตระบบ (ลบไม่ได้)',
    addStepBtn:           'เพิ่มขั้นตอน',
    stepTitle:            'ชื่อขั้นตอน',
    stepDescription:      'รายละเอียดขั้นตอน',
    stepOrder:            'ลำดับ',
    stepMandatory:        'บังคับ',
    stepDeadlineDays:     'กำหนดเส้นตาย (วันนับจากวันเปิดคดี)',
    stepLinkedForm:       'เทมเพลตแบบฟอร์มที่เชื่อมโยง',
    saveTemplate:         'บันทึกเทมเพลต',
    deleteTemplate:       'ลบเทมเพลต',
    deleteConfirm:        'คุณแน่ใจหรือไม่ว่าต้องการลบเทมเพลตนี้? ไม่สามารถย้อนกลับได้',
  },
}

// ─── Exports ──────────────────────────────────────────────────────────────────

export type Dictionary = typeof en

const dictionaries: Record<string, Dictionary> = { en, th }

export function getDictionary(lang: string): Dictionary {
  return dictionaries[lang] ?? en
}
